通过Python增加/减少WAV文件的播放速度

6 投票
2 回答
16664 浏览
提问于 2025-04-18 00:38

我想用Python的wave模块来改变一个WAV音频文件的播放速度(加快或减慢)。

我尝试了以下步骤:

  1. 读取输入文件的帧率。
  2. 将帧率翻倍。
  3. 使用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 的值就行了!

不过如果你想保持音调不变,那就需要用一种叫做重叠相加的方法来处理!

撰写回答