使用PulseAudio实时去除噪音?

是否可以使用PulseAudio进行实时噪声消除,因此输出的声音输出更平滑?

Pulseaudio模块module-echo-cancel

我开始阅读很多关于PulseAudio和它所拥有的“隐藏”选项,所以我找到了一个类似于这个问题的选项。 我发现的是噪音消除模块,它可以大大降低麦克风上的静电噪音,甚至可以降低大量的背景噪音,基本上只为您提供录制自己语音的优势(音频录制)例如)。 为此,请按照以下步骤操作:

  1. sudo nano /etc/pulse/default.pa

  2. 在文件的任何位置添加以下行,但我建议几乎在最后您将找到有关回声消除内容的注释(〜第140行):

     load-module module-echo-cancel 
  3. 重新加载PulseAudio( pulseaudio -k )或只是重新启动计算机。 您应该能够从输入设备部分选择新的噪声消除选项:

    截图

您可以在Echo Cancel Module页面上找到有关它的更多信息

将输入设置为默认值

如果您希望将回声消除设备设置为默认值 ,只需将以上行转换为:

 load-module module-echo-cancel source_name=logitechsource 

然后在文件底部添加

 set-default-source logitechsource 

在这种情况下,我将源命名为logitechsource ,但您可以根据需要为其命名,只需重新启动pulseaudio即可。

重命名设备

最后,如果您不想在声音设置上使用超长名称(当您想要选择输入/输出设备时)。 我的建议是重命名输入设备,如下所示:

 load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD 

再次,重新启动pulseaudio。 最终结果如下:

截图

这是一个古老的问题,但我遇到了同样的问题,经过一些谷歌搜索(我大多数人认为人们不同意这一点)和阅读一些手册页,我现在已经开发了一个基于user2330377的想法的解决方案。

首先,您需要为SoX创建噪声配置文件。 只需使用任何录音程序记录几秒钟的噪音,然后cd进入你保存的目录并执行sox noise.wav -n noiseprof noise.prof

然后你需要创建一个ALSA环回设备:

 sudo modprobe snd_aloop 

这是必需的,因为与Jack不同,pulseaudio无法将音频软件直接连接在一起; 因此我们将使用环回设备作为代理。

现在你需要启动paman并找到你的麦克风(或其他录音设备)和我们刚刚创建的环回设备的名称。 找到这些后,您可以执行以下命令开始录制麦克风的声音,通过SoX管道,然后在环回设备上播放:

 pacat -r -d alsa_input.pci-0000_00_14.2.analog-stereo --latency=1msec|sox -b 16 -e signed -c 2 -r 44100 -t raw - -b 16 -e signed -c 2 -r 44100 -t raw - noisered noise.prof 0.2|pacat -p -d alsa_output.2.analog-stereo --latency=1msec 

(您需要将正确的设备名称替换为-d参数 – 第一个pacat调用的输入设备和第二个的环回设备输出。)

你走了,差​​不多完成了! 最后一步,使用您选择的应用程序开始录制声音,然后启动pavucontrol ,切换到“录制”选项卡并将用于录制的音频设备(显示为右侧的灰色按钮)设置为“Loopback监视器”音频设备”。 你现在应该有一个清晰无噪音的录音!

调查显示,没有已知的方法可以使用任何Linux子系统进行实时降噪过滤。 有些网站指出你可以购买的硬件应该比做软件filter更好。

或者,如果这是用于录制,您可以通过Audacity传递声音并在那里使用噪声滤波器。

这是以l​​eas音调的方式,实现webrtc-aec

http://wiki.gentoo.org/wiki/PulseAudio

webrtc-aec是使用webrtc.org AudioProcessing库,通过执行声学回声消除,模拟增益控制,噪声抑制和其他处理,在支持它的应用程序中大大增强VoIP呼叫。

这是一篇关于这个主题的2013年的论文(使用pulseaudio而不是webrtc-aec专门去除噪音) http://lac.linuxaudio.org/2013/papers/37.pdf

“我们已经提出了基于PulseAudio构建的多通道噪声/回声降低解决方案的第一个结果,并推动了设计决策。这项工作使PulseAudio回声消除和信号处理框架得到了一些改进,在版本3.0 / 4.0开发周期中做出了贡献,应该有助于未来的嵌入式Linux音频解决方案。进一步的工作包括优化音频流混合代码,更有效的重采样方法,以及在多通道处理流程中实现高效的AEC。

关于噪声消除的模块文档页面没有任何信息。 在module-echo-cancel中只有AEC(声学回声消除)算法,它有几个实现,比如webrtc | Speex语音。

因此,您应该尽可能购买具有集成降噪function的耳机麦克风。

当我在ubuntu中测试录音时,我发现了一些特殊的品质:

  • Skype,Telegram使用默认设备的原始输入(在我的情况下是前置麦克风|后置麦克风插孔)。 如果您需要在此应用程序中取消噪音,您应该只使用集成的噪音消除function购买耳机麦克风

  • 如果您需要在浏览器中使用语音呼叫,那么您应该记住浏览器拥有自己的语音处理算法实现,例如WebRTC。

  • 此外,Web应用程序(诸如talky,hangouts,appear.in等网站)可以拥有自己的语音处理算法实现,尽管它们可以基于webrtc 环聊分析

Interesting Posts