我想在wav中绘制30s音频文件的频谱图。但是我在python中遇到错误。我怎样才能实现目标?
import scipy
import matplotlib.pyplot as plt
import scipy.io.wavfile
sample_rate, X = scipy.io.wavfile.read('595.wav')
print (sample_rate, X.shape )
plt.specgram(X, Fs=sample_rate, xextent=(0,30))
错误
ValueError: only 1-dimensional arrays can be used
答案 0 :(得分:4)
错误很明显:ValueError: only 1-dimensional arrays can be used
。
在您的情况下,X
不是一维的。您可以通过打印X.shape
找到答案。
虽然我不能在没有完整示例的情况下确定,但最好的猜测是你有一个立体声wav文件,它有2个通道。因此,您需要选择是否要绘制左声道或右声道的频谱图。例如。对于左声道:
plt.specgram(X[:,0], Fs=sample_rate, xextent=(0,30))