使用ffmpeg减少背景噪音并优化音频剪辑中的语音


30

我从视频文件中提取音频片段以进行语音识别。这些视频来自移动/其他手工设备,因此包含很多噪音。我想减少音频的背景噪音,以便清晰传达给语音识别引擎的语音。我正在使用ffmpeg来完成所有这些工作,但仍停留在降噪阶段。

到目前为止,我已经尝试过以下过滤器:

ffmpeg-20140324-git-63dbba6-win64-static\bin>ffmpeg -i i nput.wav -filter_complex "highpass=f=400,lowpass=f=1800" out2.wav

ffmpeg -i i nput.wav -af "equalizer=f=1000:width_type=h:width=900:g=-10" output.wav

ffmpeg -i i nput.wav -af "bandreject=f=1200:width_type=h:width=900:g=-10" output.wav

但是结果非常令人失望。我的理由是,由于语音低于300-3000 Hz的范围,我可以过滤掉所有其他频率以抑制任何背景噪声。我想念什么?

另外,我了解了可用于语音增强的weiner过滤器,发现了这一点,但不确定如何使用。

Answers:


35

如果您想隔离可听见的语音,请尝试将低通滤波器与高通滤波器结合使用。对于可用音频,我注意到过滤掉200hz及以下的内容,然后过滤掉3000hz及以上的内容,可以很好地保持可用的语音音频。

ffmpeg -i <input_file> -af "highpass=f=200, lowpass=f=3000" <output_file>

在此示例中,首先添加高通滤波器以削减较低的频率,然后使用低通滤波器来削减较高的频率。如果需要,您可以多次运行此文件,以清除削减频率范围内的较高db频率。


抱歉,但这对我来说并没有明显的降噪效果。
Angad

这样可以很好地降低背景噪音(风扇,嗡嗡声等),但可能会稍微影响音频质量,尽管之后可以通过应用其他滤波器来缓解这种情况。
伊恩·柯林斯

3
就我而言,原始音频太差了,几乎无法听到声音了,因为背景中有些水倒了。我使用了以下内容。它的质量不是很好,但是比原始质量好1000倍。-af "highpass=f=200, lowpass=f=1000"
艾瑞克(Eric)

我在ffmpeg上收到上述错误甚至警告:[Parsed_highpass_0 @ 0x1524780]裁剪52次。请减少增益。
shevy

6
您可以预览您的过滤器ffplay <input file> -af lowpass=3000,highpass=200
比约恩

11

FFmpeg现在具有2个本机过滤器来处理噪声背景:

同样,由于一段时间,人们可以将FFmpeg与ladspa(寻找降噪器)和/或lv2(寻找语音去噪器)滤波器一起使用。


9

ffmpeg没有内置任何可用于降低噪音的音频滤波器。Audacity具有相当有效的NR滤波器,但它设计用于2次通过操作,并且仅采样噪声,然后输入。

https://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cpp顶部的注释说明了其工作原理。(基本上是:抑制每个低于阈值的FFT箱。因此,它仅在信号大于该频带的本底噪声时才让信号通过。它可以做出色的事情而不会引起问题。这就像带通滤波器可以适应由于噪声的能量分布在整个频谱上,因此仅让其穿过几个窄带就可以降低总的噪声能量。

另请参见音频降噪:胆量与其他选项相比如何?有关其工作原理的更多详细信息,以及以一种或另一种方式对FFT阈值进行阈值处理也是典型的商用降噪滤波器的基础。

将该过滤器移植到ffmpeg会有点尴尬。也许将其实现为具有2个输入的滤波器,而不是2次通过滤波器,效果最好。由于只需要几秒钟即可获得噪声曲线,因此不必读取整个文件。而且,无论如何,您都不应将整个音频流作为噪声样本输入。它需要查看一个JUST噪声样本才能为每个FFT仓设置阈值。

是的,第二个输入而不是2pass才有意义。但这使它比大多数ffmpeg过滤器更不易使用。您需要一堆具有流拆分/时间范围提取的伏都教。当然,您需要手动干预,除非您在适合多个输入文件的单独文件中包含噪声样本。(来自同一麦克风/设置的一个噪声样本应适合该设置中的所有片段。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.