使用matplotlib创建wavfile的频谱图

时间:2016-11-26 23:02:57

标签: python numpy matplotlib scipy

import scipy.io.wavfile as wav
import matplotlib.pyplot as plt
import scipy
sample_rate, X = wav.read("/Users/sinaastani/Downloads/partynextdoor.wav")
X = scipy.mean(X, axis=1)
plt.specgram(X, Fs=sample_rate, xextent=(0,30))

每当我运行上面的代码时,我都会收到错误:

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/matplotlib/axes/_axes.py:7017: RuntimeWarning: divide by zero encountered in log10
  Z = 10. * np.log10(spec)

我尝试了几个wav文件。我只是试图复制一个例子来自#34;使用Python构建机器学习系统 - 第二版"。

wavfile.read函数返回一个numpy数组。看起来在这个数组的开头和结尾,有一堆0值,所以当它试图计算log(0)时,它是未定义的。什么是适当的处理?我应该简单地从数组中删除0值吗?

0 个答案:

没有答案