在 Linux 中使用噪声过滤器传输实时音频

在 Linux 中使用噪声过滤器传输实时音频

我需要去除音频源中的噪音,但这需要现场进行。最终的声音不需要听起来完美,但不能包含太多噪音。

我已经阅读了有关 sox 的信息,但它似乎需要某种配置文件,这需要我将其通过 sox 两次。

那么有人知道如何通过 sox 或 ffmpeg live 之类的程序传递音频源并进行一些基本的风/噪音过滤吗?

答案1

您可以使用以下方式生成 SoX 的噪声配置文件:

sox sample-input.wav --null noiseprof ~/noise.profile

然后您可以使用该配置文件来过滤您的录音:

sox recording.wav filtered.wav noisered ~/noise.profile

这是因为麦克风拾取的静态噪音通常取决于您的设置(接线),因此在相同环境中总是大致相同。请注意,SoX 比大胆消除噪音。:(

此外,您还可以使用 ffmpeg 的音频过滤器,例如高通/低通降低低于/高于某个阈值的频率,或使用压缩滤波器压缩录音的动态范围和/或制作噪声门

一旦获得了噪声概况,完整的流程管道就可以是:

ffmpeg -f alsa -i hw:0,0 -af 'highpass=300, lowpass=4000' -f wav - | sox -f wav -f wav - noisered ~/noise.profile | aplay

请注意,如果您使用这些过滤器,则应该从 ffmpeg 过滤的录音中提取配置文件。

相关内容