问题描述
是否可以使用PulseAudio进行实时noise-removal,因此输出的声音输出更平滑?
最佳解决办法
Pulseaudio模块module-echo-cancel
我开始阅读它有很多关于它的PulseAudio和”hidden”选项,所以我找到了一个类似于这个问题的选项。我发现的是noise-cancellation模块,它可以显著降低麦克风上的静电噪声甚至很多背景噪音,基本上可以让您只录制自己优质音质(例如音频录制) )。为此,请按照以下步骤操作:
-
sudo nano /etc/pulse/default.pa
-
在文件的任何位置添加以下行,但我建议几乎在最后您将找到有关回声消除内容的注释(〜第140行):
load-module module-echo-cancel
-
重新加载PulseAudio(
pulseaudio -k
)或只是重新启动计算机。您应该能够从输入设备部分选择新的噪声消除选项:
您可以在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。最终结果如下:
次佳解决办法
这是一个老问题,但我遇到了同样的问题,经过一些谷歌搜索(我大多数人发现那些不同意的人)并阅读了一些手册页,我现在开发了一个基于用户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传递声音并在那里使用噪声滤波器。