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()
绘制图形展示:2019-07-06 11:39:41
以上是关于Python绘制语谱图+时域波形的主要内容,如果未能解决你的问题,请参考以下文章