Vadim Peretokin Asked: 2010-12-27 18:46:32 +0800 CST2010-12-27 18:46:32 +0800 CST 2010-12-27 18:46:32 +0800 CST 使用 PulseAudio 实时降噪? 772 是否可以使用 PulseAudio 进行实时降噪,使输出的声音更流畅? sound pulseaudio noise 9 个回答 Voted Best Answer Luis Alvarado 2016-04-30T07:41:38+08:002016-04-30T07:41:38+08:00 脉冲音频模块module-echo-cancel 我开始阅读很多关于 PulseAudio 和它所具有的“隐藏”选项的内容,因此我可以找到与这个问题类似的选项。我发现的一个是降噪模块,它可以显着降低麦克风上的任何静态噪音,甚至是大量的背景噪音,基本上让您可以只录制高质量的自己的声音(用于录音例如)。为此,请按照以下步骤操作: sudo nano /etc/pulse/default.pa 在文件的任何位置添加以下行,但我建议几乎在最后您会找到关于回声消除内容的评论(~第 140 行): load-module module-echo-cancel 重新加载 PulseAudio ( pulseaudio -k) 或简单地重新启动计算机。您应该能够从输入设备部分选择新的降噪选项: 您可以在回声消除模块页面上找到有关它的更多信息 将输入设置为默认值 如果您希望将回声取消设备设置为默认值,只需将上面的行转换为: 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。最终结果如下所示: 更新 -在这里找到完整的文档感谢克莱门特 cemper93 2015-04-12T16:50:16+08:002015-04-12T16:50:16+08:00 这是一个老问题,但我遇到了同样的问题,经过一些谷歌搜索(我主要发现有人同意这是不可能的)并阅读了一些手册页,我现在已经根据 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 调用的输入设备和第二个调用的环回设备输出。) 好了,快完成了!最后一步,使用您选择的应用程序开始录制声音,然后启动pavucontrol,切换到“录制”选项卡并将用于录制的音频设备(显示为右侧的灰色按钮)设置为“环回音频监视器设备”。您现在应该拥有清晰且无噪音的录音! vskubriev 2018-02-15T00:35:58+08:002018-02-15T00:35:58+08:00 模块文档页面上没有任何关于降噪的信息。module-echo-cancel 内部只有 AEC(Acoustic Echo Cancellation)算法,它有几种实现,如 webrtc | 斯佩克斯。 因此,您应该尽可能购买具有集成降噪功能的耳机|麦克风。 当我在 ubuntu 中测试录音时,我发现了一些特殊的品质: Skype,Telegram 使用来自默认设备的原始输入(在我的例子中是前置麦克风|后置麦克风插孔)。如果您需要在此应用程序中消除噪音,您应该购买仅具有集成噪音消除功能的耳机|麦克风 如果你需要在浏览器中使用语音通话,那么你应该记住浏览器有它自己的语音处理算法实现,例如WebRTC。 Web 应用程序(如talky、hangouts、appear.in 等网站)也可以拥有自己的语音处理算法实现,尽管它们可以基于 webrtc hangout-analysis karim samir 2020-11-18T01:30:54+08:002020-11-18T01:30:54+08:00 在 ubuntu LTS 或基于 debian 的发行版上如此简单的解决方案,这是一个在线脚本,可激活脉冲音频(debian 上的默认音频)中已经存在的噪声消除功能。 wget -qO - https://gist.githubusercontent.com/grigio/cb93c3e8710a6f045a3dd9456ec01799/raw/94f07c7d75bcf5dd9b08a9c3034844223ec6fbe1/fix-microphone-background-noise.sh | sudo bash && pulseaudio -k 您也可以分段运行这些命令(它们是相同的) sudo cp /etc/pulse/default.pa /etc/pulse/default.pa.bak sudo cat <<EOT >> /etc/pulse/default.pa load-module module-echo-cancel source_name=noechosource sink_name=noechosink set-default-source noechosource set-default-sink noechosink EOT user1182474 2021-03-16T11:39:52+08:002021-03-16T11:39:52+08:00 module-ladspa-sink 有一个噪声抑制插件: https://github.com/werman/noise-suppression-for-voice 在这里您可以找到在 Fedora 上安装的教程,以及 2 个示例录音,以了解插件的效果: https://weblog.lkiesow.de/20200705-ladspa-realtime-noise-suppression-plugin/ https://fedoramagazine.org/real-time-noise-suppression-for-video-conferencing/ 在 Ubuntu 上: 下载linux_rnnoise_bin_x64.tar.gz 从存档中,将bin/ladspa/librnnoise_ladspa.so例如复制到/usr/local/lib/librnnoise_ladspa.so其他任何地方。 使用 查找输入的名称pactl list sources short。例如我的麦克风被称为alsa_input.usb-046d_0994_4A365E20-02.mono-fallback 运行以下命令以激活噪声消除(在运行之前将/usr/local/lib/librnnoise_ladspa.so和替换alsa_input.usb-046d_0994_4A365E20-02.mono-fallback为您在步骤 2. 和 3. 中确定的值): pacmd load-module module-null-sink sink_name=mic_denoised_out pacmd load-module module-ladspa-sink sink_name=mic_raw_in \ sink_master=mic_denoised_out label=noise_suppressor_mono \ plugin=/usr/local/lib/librnnoise_ladspa.so \ control=50 pacmd load-module module-loopback \ source=alsa_input.usb-046d_0994_4A365E20-02.mono-fallback \ sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true pacmd load-module module-remap-source source_name=denoised \ master=mic_denoised_out.monitor channels=1 在您的录音应用程序中,您将配置来自Null outputor的音频输入Remapped monitor of null output并进行测试(我使用了 Skype Echo) 要使更改永久生效,请将步骤 4 中的命令附加到/etc/pulse/default.pa中,省略pacmd每行开头的 。 Martin Owens -doctormo- 2011-01-08T17:24:34+08:002011-01-08T17:24:34+08:00 调查表明,没有已知的方法可以对任何 Linux 子系统进行实时降噪过滤。一些网站指出您可以购买的硬件应该比软件过滤器做得更好。 或者,如果这是用于录音,您可以通过 Audacity 传递声音并在那里使用噪音过滤器。 user2330377 2013-06-23T07:52:11+08:002013-06-23T07:52:11+08:00 这是至少音调的方式,在 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。” matinict 2021-04-13T18:10:22+08:002021-04-13T18:10:22+08:00 我的AMD笔记本电脑同样的问题下面的代码消除了我的噪音: sudo nano /etc/pulse/default.pa ## add below code on bottom ### Enable Echo/Noise-Cancelation load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1" source_name=echoCancel_source sink_name=echoCancel_sink set-default-source echoCancel_source set-default-sink echoCancel_sink ### 2nd tips .ifexists module-echo-cancel.so load-module module-echo-cancel aec_method=webrtc source_name=echocancel sink_name=echocancel1 set-default-source echocancel set-default-sink echocancel1 .endif 希望有人会得到帮助 samNikzad 2022-08-31T21:27:32+08:002022-08-31T21:27:32+08:00 我NoiseTorch 在 Arch Linux 中使用,易于使用且易于安装 => NoiseTorch Github Link
脉冲音频模块
module-echo-cancel
我开始阅读很多关于 PulseAudio 和它所具有的“隐藏”选项的内容,因此我可以找到与这个问题类似的选项。我发现的一个是降噪模块,它可以显着降低麦克风上的任何静态噪音,甚至是大量的背景噪音,基本上让您可以只录制高质量的自己的声音(用于录音例如)。为此,请按照以下步骤操作:
sudo nano /etc/pulse/default.pa
在文件的任何位置添加以下行,但我建议几乎在最后您会找到关于回声消除内容的评论(~第 140 行):
重新加载 PulseAudio (
pulseaudio -k
) 或简单地重新启动计算机。您应该能够从输入设备部分选择新的降噪选项:您可以在回声消除模块页面上找到有关它的更多信息
将输入设置为默认值
如果您希望将回声取消设备设置为默认值,只需将上面的行转换为:
然后在文件底部添加
在这种情况下,我将 source 命名为
logitechsource
,但您可以随意命名,然后只需重新启动 pulseaudio。重命名设备
最后,如果您不想在声音设置上使用超长名称(当您想要选择输入/输出设备时)。我的建议是像这样重命名输入设备:
再次,重新启动pulseaudio。最终结果如下所示:
更新 -在这里找到完整的文档感谢克莱门特
这是一个老问题,但我遇到了同样的问题,经过一些谷歌搜索(我主要发现有人同意这是不可能的)并阅读了一些手册页,我现在已经根据 user2330377 的想法开发了一个解决方案。
首先,您需要为 SoX 创建噪声配置文件。只需使用任何录音程序录制几秒钟的噪音,然后
cd
进入您保存它的目录并执行sox noise.wav -n noiseprof noise.prof
。然后你需要创建一个 ALSA 环回设备:
这是必需的,因为 pulseaudio 与 Jack 不同,不能直接将音频软件连接在一起;因此,我们将使用环回设备作为代理。
现在您需要开始
paman
并找到您的麦克风(或其他录音设备)和我们刚刚创建的环回设备的名称。一旦找到这些,您可以执行以下命令开始从麦克风录制声音,通过 SoX 管道,然后在环回设备上播放:(您需要将正确的设备名称替换为 -d 参数——第一个 pacat 调用的输入设备和第二个调用的环回设备输出。)
好了,快完成了!最后一步,使用您选择的应用程序开始录制声音,然后启动
pavucontrol
,切换到“录制”选项卡并将用于录制的音频设备(显示为右侧的灰色按钮)设置为“环回音频监视器设备”。您现在应该拥有清晰且无噪音的录音!模块文档页面上没有任何关于降噪的信息。module-echo-cancel 内部只有 AEC(Acoustic Echo Cancellation)算法,它有几种实现,如 webrtc | 斯佩克斯。
因此,您应该尽可能购买具有集成降噪功能的耳机|麦克风。
当我在 ubuntu 中测试录音时,我发现了一些特殊的品质:
Skype,Telegram 使用来自默认设备的原始输入(在我的例子中是前置麦克风|后置麦克风插孔)。如果您需要在此应用程序中消除噪音,您应该购买仅具有集成噪音消除功能的耳机|麦克风
如果你需要在浏览器中使用语音通话,那么你应该记住浏览器有它自己的语音处理算法实现,例如WebRTC。
Web 应用程序(如talky、hangouts、appear.in 等网站)也可以拥有自己的语音处理算法实现,尽管它们可以基于 webrtc hangout-analysis
在 ubuntu LTS 或基于 debian 的发行版上如此简单的解决方案,这是一个在线脚本,可激活脉冲音频(debian 上的默认音频)中已经存在的噪声消除功能。
您也可以分段运行这些命令(它们是相同的)
module-ladspa-sink 有一个噪声抑制插件:
在这里您可以找到在 Fedora 上安装的教程,以及 2 个示例录音,以了解插件的效果:
在 Ubuntu 上:
bin/ladspa/librnnoise_ladspa.so
例如复制到/usr/local/lib/librnnoise_ladspa.so
其他任何地方。pactl list sources short
。例如我的麦克风被称为alsa_input.usb-046d_0994_4A365E20-02.mono-fallback
/usr/local/lib/librnnoise_ladspa.so
和替换alsa_input.usb-046d_0994_4A365E20-02.mono-fallback
为您在步骤 2. 和 3. 中确定的值):在您的录音应用程序中,您将配置来自
Null output
or的音频输入Remapped monitor of null output
并进行测试(我使用了 Skype Echo)要使更改永久生效,请将步骤 4 中的命令附加到
/etc/pulse/default.pa
中,省略pacmd
每行开头的 。调查表明,没有已知的方法可以对任何 Linux 子系统进行实时降噪过滤。一些网站指出您可以购买的硬件应该比软件过滤器做得更好。
或者,如果这是用于录音,您可以通过 Audacity 传递声音并在那里使用噪音过滤器。
这是至少音调的方式,在
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。”
我的AMD笔记本电脑同样的问题下面的代码消除了我的噪音:
希望有人会得到帮助
我
NoiseTorch
在 Arch Linux 中使用,易于使用且易于安装 => NoiseTorch Github Link