增加/降低WAV文件Python的播放速度

时间:2014-03-31 07:12:59

标签: python audio signal-processing wav

我想使用python wave模块更改某个WAV音频文件的播放速度(增加或减少)。

我试过下面的事情:

  1. 读取输入文件的帧率。
  2. 加倍帧率。
  3. 使用output_wave.setparams()函数以增加的帧速率编写新的wave文件。
  4. 但它没有成功。

    请建议。

    先谢谢,

2 个答案:

答案 0 :(得分:8)

WOW!

如果你在增加或减少速度时改变音高,你可以改变采样率!

使用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

现在如果你需要保持音高不变,你需要做同样类型的重叠加法!

答案 1 :(得分:1)

如果更改采样频率,则不会影响可录制的播放速度。 您可以使用SoX Sound eXchange, the Swiss Army knife of audio manipulation

来解决这个问题

python的pySonic库看一下Song对象的UserSpeed方法。 pySonic Python wrapper of FMOD Sound library