当前位置: 首页>>技术问答>>正文


带PulseAudio的实时noise-removal?

, , ,

问题描述

是否可以使用PulseAudio进行实时noise-removal,因此输出的声音输出更平滑?

最佳解决办法

Pulseaudio模块module-echo-cancel

我开始阅读它有很多关于它的PulseAudio和”hidden”选项,所以我找到了一个类似于这个问题的选项。我发现的是noise-cancellation模块,它可以显著降低麦克风上的静电噪声甚至很多背景噪音,基本上可以让您只录制自己优质音质(例如音频录制) )。为此,请按照以下步骤操作:

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

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

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

    sound,pulseaudio,noise,ubuntu

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

将输入设置为默认值

如果您希望set as default回声消除设备,只需将上述行转换为:

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。最终结果如下:

sound,pulseaudio,noise,ubuntu

次佳解决办法

这是一个老问题,但我遇到了同样的问题,经过一些谷歌搜索(我大多数人发现那些不同意的人)并阅读了一些手册页,我现在开发了一个基于用户2330377的想法的解决方案。

首先,您需要为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,切换到”Recording”选项卡并将用于录制的音频设备(显示为右侧的灰色按钮)设置为“Loopback Audio Device监视器” ”。你现在应该有一个清晰的noise-free录音!

第三种解决办法

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2228.html,未经允许,请勿转载。