2016-08-12 108 views
1

This old thread似乎表明可以使用pydub的AudioSegment._data以某種方式計算聲音的音高;不幸的是,它似乎是通過分配給未公開的Mpm類的方法完成的。但是,如果可以從AudioSegment._data中提取音高數據,那麼是否有辦法使用pydub將AudioSegment的音高向上或向下移動?如果沒有,是否有另一個Python 2.7的庫可以?pydub是否支持音高調製?

回答

0

是的。今天花了大約6個小時處理這個問題之後,我纔開始工作。嘗試這個。注意我最初在最後遇到了一個爆裂噪音的問題,但這是由於我的特殊文件的特殊性,而不是其他原因。

import os 
from pydub import AudioSegment 
from pydub.playback import play 


cwd = os.getcwd() 

wavepath = cwd+"\\Soundfiles\\CritHit.WAV" 

sound = AudioSegment.from_file(wavepath, format="wav") 

play(sound) 
print(sound.frame_rate) 

# shift the pitch down by half an octave (speed will decrease proportionally) 
octaves = -0.5 

new_sample_rate = int(sound.frame_rate * (2.0 ** octaves)) 

lowpitch_sound = sound._spawn(sound.raw_data, overrides={'frame_rate': new_sample_rate}) 

#Play pitch changed sound 
play(lowpitch_sound)