通过Python增加/减少WAV文件的播放速度
我想用Python的wave模块来改变一个WAV音频文件的播放速度(加快或减慢)。
我尝试了以下步骤:
- 读取输入文件的帧率。
- 将帧率翻倍。
- 使用output_wave.setparams()函数写一个新的波形文件,帧率增加。
但是这样做没有成功。
请给我一些建议。
提前谢谢你!
2 个回答
1
如果你改变采样频率,这对可听的播放速度没有影响。你可以用 SoX 来试试这个,SoX 是一个非常强大的音频处理工具,就像瑞士军刀一样,功能多得很。
还有一个叫 pySonic 的 Python 库,你可以看看 Song 对象里的 UserSpeed 方法。这个库是 FMOD 音频库的 Python 封装。
14
哇!
如果你不在乎在加速或减速时音调会变化的话,你只需要改变采样率就可以了!
用Python来做这件事其实很简单:
import wave
CHANNELS = 1
swidth = 2
Change_RATE = 2
spf = wave.open('VOZ.wav', 'rb')
RATE=spf.getframerate()
signal = spf.readframes(-1)
wf = wave.open('changed.wav', 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(swidth)
wf.setframerate(RATE*Change_RATE)
wf.writeframes(signal)
wf.close()
只要增加或减少变量 Change_RATE
的值就行了!
不过如果你想保持音调不变,那就需要用一种叫做重叠相加的方法来处理!