使用PulseAudio实时去除噪音?
是否可以使用PulseAudio进行实时噪声消除,因此输出的声音输出更平滑?
Pulseaudio模块module-echo-cancel
我开始阅读很多关于PulseAudio和它所拥有的“隐藏”选项,所以我找到了一个类似于这个问题的选项。 我发现的是噪音消除模块,它可以大大降低麦克风上的静电噪音,甚至可以降低大量的背景噪音,基本上只为您提供录制自己语音的优势(音频录制)例如)。 为此,请按照以下步骤操作:
-
sudo nano /etc/pulse/default.pa
-
在文件的任何位置添加以下行,但我建议几乎在最后您将找到有关回声消除内容的注释(〜第140行):
load-module module-echo-cancel
-
重新加载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传递声音并在那里使用噪声滤波器。
这是以leas音调的方式,实现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 环聊分析