python 绘制音频的波形图,不报错,图形也不显示出来

田申酉 田申酉 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码如下

控制台不报错,也不显示图形



import wave
import numpy as np
import pylab as plt
#打开wav文件 ,open返回一个的是一个Wave_read类的实例,通过调用它的方法读取WAV文件的格式和数据。
f = wave.open(r"D:\\img\\hello.wav", "rb")
#读取格式信息
#一次性返回所有的WAV文件的格式信息,它返回的是一个组元(tuple):声道数, 量化位数(byte单位), 采样频率, 采样点数, 压缩类型, 压缩类型的描述。wave模块只支持非压缩的数据,因此可以忽略最后两个信息
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
#读取波形数据
#读取声音数据,传递一个参数指定需要读取的长度(以取样点为单位)
str_data = f.readframes(nframes)
f.close()
#将波形数据转换成数组
#需要根据声道数和量化单位,将读取的二进制数据转换为一个可以计算的数组
wave_data = np.frombuffer(str_data,dtype = np.short)
wave_data = wave_data*1.0/(max(abs(wave_data)))#wave幅值归一化
print("wave",len(wave_data))
print("nframes",nframes)
print("framerate",framerate)
#通过取样点数和取样频率计算出每个取样的时间。
time=np.arange(0,nframes)/framerate
len_time = 14239
am = time[0:len_time]
#time 也是一个数组,与wave_data[0]或wave_data[1]配对形成系列点坐标
plt.figure()
plt.subplot(5,1,1)
plt.plot(am,wave_data)
plt.show()




...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
田申酉
脚本语言 37,737 成员 34,208 内容