是否可以使用PulseAudio进行实时噪声消除,所以输出的声音更平滑?
是否可以使用PulseAudio进行实时噪声消除,所以输出的声音更平滑?
Answers:
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
在这种情况下,我为source命名logitechsource
,但是您可以随便命名,只要重新启动pulseaudio。
最后,如果您不想在“声音设置”上使用超长名称(当您想选择输入/输出设备时)。我的建议是像这样重命名输入设备:
load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD
再次,重新启动pulseaudio。最终结果如下所示:
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
按照gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224
这是一个老问题,但是我遇到了同样的问题,经过一番谷歌搜索(我发现大多数人都同意这是不可能的)并阅读了一些手册页之后,我现在根据user2330377的想法开发了一个解决方案。
首先,您需要为SoX创建噪声配置文件。只需使用任何音频记录程序记录几秒钟的噪音,然后cd
将其保存到目录中并执行sox noise.wav -n noiseprof noise.prof
。
然后,您需要创建一个ALSA环回设备:
sudo modprobe snd_aloop
这是必需的,因为Pulseaudio与Jack不同,不能直接将音频软件连接在一起;因此,我们将使用环回设备作为代理。
现在,您需要启动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调用的输入设备,第二个pacat调用的环回设备输出。)
到了,您快完成了!最后一步,使用您选择的应用程序开始录制声音,然后启动pavucontrol
,切换到“ Recording”选项卡,并将用于录制的音频设备(显示为右侧的灰色按钮)设置为“ Loopback Audio的监视器”。设备”。现在,您应该获得清晰无噪音的录音!
调查表明,没有已知的方法可以对任何Linux子系统进行实时降噪过滤。一些网站指向您可以购买的硬件,与使用软件过滤器相比,可以更好地解决问题。
或者,如果这是用于录音,则可以使声音通过Audacity并在其中使用噪音过滤器。
module-echo-cancel
,它有多种实现,例如webrtc | speex。
这是一种简单的方法,可以在其中实现webrtc-aec
http://wiki.gentoo.org/wiki/PulseAudio
webrtc-aec是使用webrtc.org AudioProcessing库通过执行回声消除,模拟增益控制,噪声抑制和其他处理,在支持VoIP的应用程序中极大地增强了VoIP呼叫。
这是一篇日期为2013年的主题论文(使用pulseaudio进行除噪,而不是专门针对webrtc-aec) http://lac.linuxaudio.org/2013/papers/37.pdf
“我们已经展示了基于PulseAudio的多通道降噪/回声降低解决方案的第一个结果,并激发了设计决策。这项工作对PulseAudio回声消除和信号处理框架进行了许多改进,在版本3.0 / 4.0的开发周期中做出了贡献,并将为将来的嵌入式Linux音频解决方案提供便利。进一步的工作包括优化音频流混合的代码,更有效的重采样方法以及在多通道处理管道中实现有效的AEC。”
模块文档页面上没有任何有关噪声消除的信息。模块-echo-cancel内部只有AEC(声学回声消除)算法,该算法具有多种实现方式,例如webrtc | speex。
因此,您应尽可能购买具有集成噪音消除功能的耳机。
当我在ubuntu中测试录音时,我发现了一些特殊的品质:
Skype,Telegram使用默认设备(在我的情况下为front-in-mic | backward-mic插孔)的原始输入。如果您需要在此应用中消除噪音,则应购买仅具有集成噪音消除功能的耳机|麦克风
如果需要在浏览器中使用语音呼叫,则应记住,浏览器具有自己的语音处理算法实现,例如WebRTC。
此外,Web应用程序(如Talky,Hangouts,appear.in等网站)也可以拥有自己的语音处理算法实现,尽管事实上它们可以基于WebRTC 环聊分析