tom*_*omm 1 python audio pitch-shifting librosa
我尝试使用librosa 中的librosa 和pitch_shift。我录制了一些声音并使用了以下代码:
sampling_rate= 44100
y, sr = librosa.load(directory, sr=sampling_rate) # y is a numpy array of the wav file, sr = sample rate
y_shifted = librosa.effects.pitch_shift(y, sr, n_steps=4, bins_per_octave=24) # shifted by 4 half steps
librosa.output.write_wav(directory, y_shifted, sr=sampling_rate, norm=False)
Run Code Online (Sandbox Code Playgroud)
它工作得很好 - 几乎。
我在新声音中听到一些噪音(在变调之后)
有什么我需要使用的东西吗?
不带平移:
https://vocaroo.com/i/s1qEEDvzcUHN
使用平移(n_steps = 4):
音高移动通常涉及STFT,即沿频率轴的幅度谱的移动\xe2\x80\x94,然后通过Griffin-Lim算法(Quora-关于 Griffin-Lim 工作原理的解释)进行信号重建。
\n\n问题是,当我们移动幅度谱时,我们只是这样做\xe2\x80\x94并忽略相位!Griffin-Lim 试图找到一种合理的解决方案,以在重建时域信号时找到正确的相位,但通常只是这样:一种合理的解决方案,而不是完美的解决方案。这就是为什么你会听到金属声。这就是信号的相位不太正确(也称为“相位”)。
\n\n我相信你的函数调用librosa是完全没问题的。它可能不是地球上最伟大的实施。尝试一下PyRubberband。它基于Rubberband(一个C++库)并享有良好的声誉。
| 归档时间: |
|
| 查看次数: |
5981 次 |
| 最近记录: |