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


3

我需要从音频源中消除噪音,但它需要实时发生。由此产生的声音不需要听起来完美,它只是不能包含太多的噪音。

我已经阅读了关于sox的内容,但它似乎需要一个类型的配置文件,这需要我通过sox两次。

那么有谁知道如何通过sox或ffmpeg live等传递音频源并进行一些基本的风/噪声过滤?


1
无论何时谈论处理音频(现场或其他)我都会想到Gstreamer。请参阅audioiirfilter(不确定它是否符合您的要求
allquixotic

Answers:


1

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

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

然后,您可以使用配置文件过滤录制内容:

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

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

此外,您可以使用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过滤的记录中提取配置文件。

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.