我正在尝试使用python 2.7中的模块wave (而不是另一个)执行以下操作:
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()
我该怎么做?
答案 0 :(得分:1)
最好在这里提出单独的问题......
WAV格式通常在实际PCM音频二进制数据之前有一个44字节的标题,因此请记住您的读/写...
静默通常为零值,其中标准化音频从-1变为+1 ......取决于您正在读取的WAV的风格(您的标题值将告诉您)您的位深度通常为16位( 2 ^ 16个可能的值从0到2 ^ 16 ...或负2 ^ 15到正(2 ^ 15 - 1))
你说显示频谱......这可以是时域(横跨时间的幅度),所以简单地将音频曲线映射到情节 OR 频域(曲线的高度代表频率上的能量) )您需要首先通过傅里叶变换传递数据