我试过PyRubberband、librosa、praat-parselmouth和pysox。所有这些都可以工作,但我仍然在输出中听到一些噪音或小伪影。此外,他们将音频移动了大约 100 毫秒。我如何调整它们以获得最好的质量,或者你能推荐任何做得更好的库吗?
UPD: FFMPEG 方法:
ffmpeg -i input.wav -af asetrate=48000*1.1,aresample=48000,atempo=1/1.1 output.wav
我试过PyRubberband、librosa、praat-parselmouth和pysox。所有这些都可以工作,但我仍然在输出中听到一些噪音或小伪影。此外,他们将音频移动了大约 100 毫秒。我如何调整它们以获得最好的质量,或者你能推荐任何做得更好的库吗?
UPD: FFMPEG 方法:
ffmpeg -i input.wav -af asetrate=48000*1.1,aresample=48000,atempo=1/1.1 output.wav
我猜在提到的四个中,PyRubberband 可能是最好的算法。取决于你想要改变音高的程度,你永远不会达到完美的结果。这与(据我所知)它们都使用相位声码器这一事实有关,该相位声码器将信号转换为频域,使用不完美的Griffin-Lim 算法移动然后将其转换回时域。Griffin-Lim 倾向于引入小的相位伪影,从而导致轻微的金属声音。
要了解有关时间尺度修改/音高转换的更多信息,我推荐 Dredger 的这篇概述文章。