Python绘制语谱图+时域波形

Posted junlong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python绘制语谱图+时域波形相关的知识,希望对你有一定的参考价值。

技术图片
 1 """Python绘制语谱图"""
 2 """Python绘制时域波形"""
 3 
 4 # 导入相应的包
 5 import numpy, wave
 6 import matplotlib.pyplot as plt
 7 import numpy as np
 8 import os
 9 
10 filepath = G:/实战培训/Python生成语谱图/ReNoise/Prim10/  # 添加路径
11 filename = os.listdir(filepath)  # 得到文件夹下的所有文件名
12 
13 for i in range(len(filename)):
14     f = wave.open(filepath + filename[i], rb)  # 调用wave模块中的open函数,打开语音文件。
15     params = f.getparams()  # 得到语音参数
16     nchannels, sampwidth, framerate, nframes = params[:4]  # nchannels:音频通道数,sampwidth:每个音频样本的字节数,framerate:采样率,nframes:音频采样点数
17     strData = f.readframes(nframes)  # 读取音频,字符串格式
18     wavaData = np.fromstring(strData, dtype=np.int16)  # 得到的数据是字符串,将字符串转为int型
19     wavaData = wavaData * 1.0/max(abs(wavaData))  # wave幅值归一化
20     wavaData = np.reshape(wavaData, [nframes, nchannels]).T  # .T 表示转置
21     f.close()
22 
23     #(1)绘制语谱图
24     plt.figure()
25     plt.specgram(wavaData[0], Fs=framerate, scale_by_freq=True, sides=default)  # 绘制频谱
26     plt.xlabel(Time(s))
27     plt.ylabel(Frequency)
28     plt.title("Spectrogram_".format(i+1))
29     plt.savefig(G:/实战培训/Python生成语谱图/语谱图/.jpg.format(filename[i][:-4]))
30     plt.show()
31 
32     #(2)绘制时域波形
33     time = np.arange(0, nframes) * (1.0 / framerate)
34     time = np.reshape(time, [nframes, 1]).T
35     plt.plot(time[0, :nframes], wavaData[0, :nframes], c="b")
36     plt.xlabel("time(seconds)")
37     plt.ylabel("amplitude")
38     plt.title("Original wave")
39     plt.savefig(G:/实战培训/Python生成语谱图/语谱图/_.jpg.format(filename[i][:-4]))  # 保存绘制的图形
40     plt.show()
Python绘制语谱图+时域波形

绘制图形展示:2019-07-06 11:39:41

技术图片
技术图片

以上是关于Python绘制语谱图+时域波形的主要内容,如果未能解决你的问题,请参考以下文章

绘制语谱图

python生成语谱图

语音信号语谱图相关

语音信号语谱图相关

数字信号基于matlab GUI DTMF电话模拟系统(频谱图+时域图+语谱图)含Matlab源码 2092期

数字信号基于matlab GUI DTMF电话模拟系统(频谱图+时域图+语谱图)含Matlab源码 2092期