2016-08-12 106 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)