pydub是否支持音调调制?

时间:2016-08-12 17:24:32

标签: python python-2.7 pitch pydub pitch-shifting

This old thread似乎表明pydub的AudioSegment._data可以用来以某种方式计算声音的音高;不幸的是,它似乎是使用分配给未公开的Mpm类的方法完成的。也就是说,如果可以从AudioSegment._data中提取音高数据,那么有没有办法使用pydub来向上或向下移动AudioSegment的音高?如果没有,是否有另一个Python 2.7库可以吗?

1 个答案:

答案 0 :(得分: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)