我想使用python wave模塊更改某個WAV音頻文件的播放速度(增加或減少)。增加/減少WAV文件的播放速度Python
我嘗試下面的事情:輸入文件的
- 讀幀速率。
- 雙倍的幀頻。
- 使用output_wave.setparams()函數編寫一個新的波形文件,增加幀速率。
但它沒有工作。
請建議。
在此先感謝,
我想使用python wave模塊更改某個WAV音頻文件的播放速度(增加或減少)。增加/減少WAV文件的播放速度Python
我嘗試下面的事情:輸入文件的
但它沒有工作。
請建議。
在此先感謝,
哇!
如果您在增加或減少速度時無論如何改變音高,只需更改採樣率即可!
可以使用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
!
現在,如果您需要保持音高不變,您需要做相同類型的重疊添加方法!
謝謝!這就是我一直在尋找的......非常感謝! –
另一個問題,如果我製作一個波形文件,總共20000幀,幀率爲500,那麼wav聲音的週期應該是40秒,但實際上它會變成1分19秒.. NUMBER_OF_FRAME = 20000 FRAME_RATE = 500 op = wave.open('random.wav','w') op.setparams((1,2,FRAME_RATE,NUMBER_OF_FRAME,'NONE','not compressed')) for i in range NUMBER_OF_FRAME): \t字節1 = struct.pack( 'H',randint(0255)) \t字節2 = struct.pack( 'H',randint(0255)) \t op.writeframes(字節1字節2 +) 運算。關閉() 爲什麼我發生什麼? –
如果更改採樣頻率,它對可聽播放速度沒有影響。 你可以玩這個使用SoX Sound eXchange, the Swiss Army knife of audio manipulation
Python的pySonic庫看看宋對象的UserSpeed方法。 pySonic Python wrapper of FMOD Sound library
如果您可以發佈a)您正在使用的代碼以及b)該問題的更詳細的描述 - 即* how'是不是正在解決問題? – lvc