【问题标题】:How to properly use pitch_shift (librosa)?如何正确使用 pitch_shift (librosa)?
【发布时间】:2019-08-05 16:24:37
【问题描述】:

我尝试使用 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)

它工作正常 - 几乎。

我在新声音中听到一些噪音(在 pitch_shifting 之后)

有什么我需要使用的吗?

不换班:

https://vocaroo.com/i/s1qEEDvzcUHN

有移位(n_steps = 4):

https://vocaroo.com/i/s0cOiC0cFJSB

【问题讨论】:

    标签: python audio librosa pitch-shifting


    【解决方案1】:

    音高偏移通常涉及STFT,偏移通常是沿频率轴的幅度谱,然后通过Griffin-Lim-算法进行信号重建(Quora-explanation 了解 Griffin-Lim 的工作原理)。

    问题在于,当我们移动幅度谱时,我们就是这样做的——而忽略了相位! Griffin-Lim 在重构时域信号时试图找到一个合理的解决方案来找到正确的相位,但通常只是:一个合理的解决方案,而不是一个完美的解决方案。这就是为什么你会听到这种金属音。那是您的信号相位不太正确(也称为“相位”)。

    我相信您对librosa 的函数调用完全没问题。它可能不是地球上最伟大的实现。试试PyRubberband。它基于Rubberband(一个C++ 库)并有一个good reputation

    【讨论】:

    • 好的,谢谢!您是否见过这样的错误:“RuntimeError: Failed to execute Rubberband。请验证是否安装了 Rubberband-cli。”?
    • 不,抱歉。我没有。
    猜你喜欢
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 2020-12-04
    • 2012-07-12
    相关资源
    最近更新 更多