python - 绘制 wav 音频文件的频谱图

标签 python audio matplotlib

我想在 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/

相关文章:

ios - 像 sleep 周期一样的闹钟 ios swift

python - 在 matplotlib 中使用动画的颜色图问题

python - 多个 if 和 else 语句

python - 无法从 Matplotlib 轴中删除流图箭头

python - 导入错误 : No module named xgboost

python - 将 html 表转换为 CSV 的脚本(最好是 python)

java - 播放 jar 文件中的音频

c# - AudioGraph DesiredSamplesPerQuantum属性被忽略

python - tkinter grid 和 pack 在不同类中的问题

python - 打印中调用函数 ("""""")