在wave中显示和编辑声音,python 2.7

时间:2015-02-10 17:12:48

标签: python-2.7 audio wav

我正在尝试使用python 2.7中的模块wave (而不是另一个)执行以下操作:

  • 显示wav文件的频谱
  • 在开头/结尾添加静音到wav文件

Wave的文档相当浅薄。

到目前为止,我已经尝试过:

def display(filename):
    file=wave.open(filename,'r')
    freq=file._framerate
    n=file._nframes
    Y=file.readframes(n)
    plt.close()
    plt.plot(Y)
    plt.show()
    file.close()

但似乎file.readframes返回二进制数据,我不知道如何使用它。

对于我添加静音的部分,我找到了一些关于如何使用wave 创建声音的教程,但我还需要复制旧声音,如下所示:

def addSilence(filename,length);
    fileR=wave.open(filename,'r')
    fileW=wave.open('_'+filename,'w')

    # add silence here to fileW

    for i in fileR.readframes(fileR._nframes):
        #copy frames from fileR to fileW

    fileR.close()
    fileW.close()

我该怎么做?

1 个答案:

答案 0 :(得分:1)

最好在这里提出单独的问题......

WAV格式通常在实际PCM音频二进制数据之前有一个44字节的标题,因此请记住您的读/写...

静默通常为零值,其中标准化音频从-1变为+1 ......取决于您正在读取的WAV的风格(您的标题值将告诉您)您的位深度通常为16位( 2 ^ 16个可能的值从0到2 ^ 16 ...或负2 ^ 15到正(2 ^ 15 - 1))

你说显示频谱......这可以是时域(横跨时间的幅度),所以简单地将音频曲线映射到情节 OR 频域(曲线的高度代表频率上的能量) )您需要首先通过傅里叶变换传递数据