蟒蛇| librosa:如何从音频 wav 文件中提取人声?

Ole*_*kov 5 python audio voice fft librosa

给定一个人类谈话录音的 wav 文件(单声道 16KHz 采样率),有没有办法只提取语音,从而滤除大部分机械和背景噪音?我正在尝试为此使用librosaPython 3.6 中的包,但无法弄清楚如何piptrack工作(或者是否有更简单的方法)。

当尝试使用 fft/ifft 将频率限制在300-3400 范围内时,产生的声音严重失真。

sr, y = scipy.io.wavfile.read(wav_file_path)
x = np.fft.rfft(y)[0:3400]
x[0:300] = 0
x = np.fft.irfft(x)
Run Code Online (Sandbox Code Playgroud)

5Ke*_*5Ke 0

提取音频文件中的人声是一个积极研究的问题。在科学文献中,它通常被称为“语音增强”。该领域的最新进展往往会在 Interspeech 和 IEEE ICASSP 会议上展示。您还可以查看 Microsoft 的深度噪声抑制挑战赛。

从语音录音中删除不需要的声音的复杂性很大程度上取决于不需要的声音以及您对它的了解程度。如果,正如您的尝试所建议的那样,您只对滤除低频噪声感兴趣,那么您可以使用适当的低通滤波器来降低一些噪声。Librosa 有一些过滤器实现,numpy/scipy 将为您提供更多选择。

简单地将 fft 系数归零会产生严重的失真。请参阅此 stackoverflow 答案,了解为什么这不是一个好主意。