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

qq_37591637 2019-10-31 01:49:19
代码如下

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



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()




...全文
81 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧