WAV音频文件的频谱图

Har*_*rry 1 python audio matplotlib

我想在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))
Run Code Online (Sandbox Code Playgroud)

和错误

    ValueError: only 1-dimensional arrays can be used
Run Code Online (Sandbox Code Playgroud)

Imp*_*est 6

错误非常明显:ValueError: only 1-dimensional arrays can be used。你的情况X不是一维的。您将通过打印找出答案X.shape

虽然我无法确定这里没有完整的示例,但最好的猜测是您有一个立体声wav文件,该文件有2个通道。因此,您需要选择是否要绘制左声道或右声道的频谱图。例如,左声道:

plt.specgram(X[:,0], Fs=sample_rate, xextent=(0,30))
Run Code Online (Sandbox Code Playgroud)