我想在 wav 中绘制 30 秒的音频文件的频谱图。但是我在 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
最佳答案
错误很明显:ValueError: only 1-dimensional arrays can be used
。
在您的情况下 X
不是一维的。你会通过打印 X.shape
找到答案。
虽然这里没有完整的示例我无法确定,但最好的猜测是您有一个立体声 wav 文件,它有 2 个声道。因此,您需要选择是否要绘制左声道或右声道的频谱图。例如。对于左声道:
plt.specgram(X[:,0], Fs=sample_rate, xextent=(0,30))
关于python - 绘制 wav 音频文件的频谱图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44879089/