900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python将批量音频信号(wav)转化为语谱图并保存(jpg/png)

python将批量音频信号(wav)转化为语谱图并保存(jpg/png)

时间:2021-05-14 21:47:39

相关推荐

python将批量音频信号(wav)转化为语谱图并保存(jpg/png)

python将批量音频信号(wav)转化为语谱图并保存(jpg/png)

1. 导入需要的函数库

import numpy as npimport waveimport matplotlib.pyplot as pltimport os

2. 读取wav格式的信号

COOKED_DIR = 'D:/proj1/Test1/cough/cough/'i = 0for root, dirs, files in os.walk(COOKED_DIR):print("Root = ", root, "dirs = ", dirs, "files = ", files)for filename in files:print(filename)path_one = COOKED_DIR + filenameprint(path_one)f = wave.open(path_one, 'rb')

3. 语音信号处理

params = f.getparams() # 一次性返回所有的音频参数,声道数、量化位数、采样频率、采样点数nchannels, sampwidth, framerate, nframes = params[:4] # 声道/量化数/采样频率/采样点数str_data = f.readframes(nframes) # 指定需要读取的长度(以取样点为单位),返回字符串类型数据waveData = np.frombuffer(str_data, dtype=np.int16) # 将字符串转化为intwaveData = waveData * 1.0 / (max(abs(waveData))) # wave幅值归一化

4.绘图

plt.specgram(waveData, NFFT=512, Fs=framerate, noverlap=500, scale_by_freq=True, sides='default')plt.ylabel('Frequency')plt.xlabel('Time(s)')

5. 保存绘图

plt.axis('off')name = str(i)# 做名字i += 1plt.savefig("filepath"+name+".jpg", bbox_inches='tight', pad_inches=0)# 后两项为去除白边plt.show()

6. 结果

另外:想要得到合适的图片像素做深度学习,可以设置:输出224的图片像素大小

plt.rcParams['figure.figsize'] = (4.48, 4.48) # 2.24, 2.24 设置figure_size尺寸plt.rcParams['savefig.dpi'] = 50 # 图片像素 这样输出的就是4.48*50=224

- 重点

params = f.getparams() 用于一次性返回音频文件的各项参数。plt.specgram()用于绘制语谱图。plt.savefig(“filepath”+name+".png", bbox_inches=‘tight’, pad_inches=0)用于保存图片。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。