当前位置:   article > 正文

使用python绘制wav 音频文件频谱图_python显示wav音频文件的波形图频谱图

python显示wav音频文件的波形图频谱图

1.wav 文件需要是Windows PCM 格式(未压缩),请参考

2.python 库的安装:

pip install pyaudio(可能会用到)    

pip install matplotlib(必需)

pip install scipy(可能会用到) 

3. 可以看一下,这里读取出来的有通道数,采样率,采样数等信息,和cool edit 显示的信息是一致

cool edit显示的文件信息,里面显示文件是PCM格式(在《信号与系统》的课里面我们应该学过的哈):

 

与cool edit显示的频谱图也是一致的: 

4. 接下来是最后比较激动的python代码部分(仅供参考),大家可以用wav文件试一下,绘制一下频谱图:

  1. import wave
  2. import struct,numpy
  3. from scipy import *
  4. from pylab import *
  5. def Plot_fft_freq_chart(filename,plot=False):
  6. wavefile = wave.open(filename, 'r') # open for writing
  7. nchannels = wavefile.getnchannels()
  8. sample_width = wavefile.getsampwidth()
  9. framerate = wavefile.getframerate()
  10. numframes = wavefile.getnframes()
  11. print("channel",nchannels)
  12. print("sample_width",sample_width)
  13. print("framerate",framerate)
  14. print("numframes",numframes)
  15. y = numpy.zeros(numframes)
  16. for i in range(numframes):
  17. val = wavefile.readframes(1)
  18. left = val[0:2]
  19. #right = val[2:4]
  20. v = struct.unpack('h', left )[0]
  21. y[i] = v
  22. Fs = framerate
  23. try:
  24. data, freqs, bins, im = specgram(y, NFFT=1024, Fs=Fs, noverlap=900)
  25. mm=data[127]
  26. mm=10. * np.log10(mm+1e-4)
  27. except Exception as e:
  28. print("error is: ",e)
  29. return -50
  30. freq1khz_value=mean(mm)
  31. print(freq1khz_value)
  32. if plot:
  33. show()
  34. return freq1khz_value
  35. filename1="20-20k.wav"
  36. Plot_fft_freq_chart(filename1,True)

好了,今天的使用python绘制wav 音频文件频谱图 的分享就到这里了,欢迎大家留言交流

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/967068
推荐阅读
相关标签
  

闽ICP备14008679号