使用 python 去除呼吸

信息处理 过滤器 声音的 Python 音频处理
2022-02-09 02:17:47

我的妻子正在尝试制作有声读物,并花了很多时间清理一些配音演员在他们“完成”的音频中的呼吸。我们在 Adob​​e Audition 中尝试了一些过滤器,它有所帮助,但并不完全。

这是我需要特别帮助的:我想制作一个 python(它是我唯一喜欢的语言)程序,它将查看音频文件并删除所有呼吸并用背景房间噪音替换它们。我从来没有在音频领域做过任何事情,我完全被所有不同的包和概念所淹没。有人可以指出我正确的方向吗?

1个回答

我打算将此作为评论发布,但后来它变得如此之长,以至于我想,这实际上构成了一个真正的答案。

你的问题让我想起了我在自适应过滤器理学硕士课程中的实验室工作。我们使用“维纳滤波器”从记录的输入中去除一些不需要的背景噪音(风和轮胎噪音),使语音更清晰。维纳滤波器一开始很简单。

您可以从python- scipy.signal.wiener的scipy包中查看wiener 过滤器

维纳滤波器的另一个优点可能是您不必执行任何额外的计算步骤来对输入进行傅里叶变换。也就是说,维纳滤波器可以直接应用于时域信号。

如何使用 Wiener 的一个简短示例是:

from scipy.signal import wiener
import matplotlib.pylab as plt
plt.plot(t,signal,'k')
plt.plot(t,wiener(signal,mysize=55),'r',linewidth=3)
plt.show()

假设您的音频输入中的“呼吸声”与实际语音信号完全不相关,就像我们为使音频数据中的语音清晰而去除的风噪声和轮胎噪声一样,我希望过滤器能够提供合理的输出。

(注意:有时会添加额外的处理步骤来改善音频输出,例如使滤波器的参数自适应。您必须稍微调整一下参数,因为在一种情况下,我记得 Wiener 滤波器产生了类似的输出如果您以特别错误的方式选择/修改参数,它来自空心管道。但作为开始,只需将 Wiener 滤波器应用于 Python 中的信号将是一个很好的第一步。您可以从它们开始改进, 一步步。)

如果您对这个过滤器的工作原理感到好奇,那么您可以在这里了解更多关于数学的知识。