AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 18958
Accepted
Vadim Peretokin
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 9 个回答
  • 153690 Views

9 个回答

  • Voted
  1. Best Answer
    Luis Alvarado
    2016-04-30T07:41:38+08:002016-04-30T07:41:38+08:00

    脉冲音频模块module-echo-cancel

    我开始阅读很多关于 PulseAudio 和它所具有的“隐藏”选项的内容,因此我可以找到与这个问题类似的选项。我发现的一个是降噪模块,它可以显着降低麦克风上的任何静态噪音,甚至是大量的背景噪音,基本上让您可以只录制高质量的自己的声音(用于录音例如)。为此,请按照以下步骤操作:

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

    2. 在文件的任何位置添加以下行,但我建议几乎在最后您会找到关于回声消除内容的评论(~第 140 行):

      load-module module-echo-cancel
      
    3. 重新加载 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。最终结果如下所示:

    截屏

    更新 -在这里找到完整的文档感谢克莱门特

    • 194
  2. 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,切换到“录制”选项卡并将用于录制的音频设备(显示为右侧的灰色按钮)设置为“环回音频监视器设备”。您现在应该拥有清晰且无噪音的录音!

    • 18
  3. 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

    • 4
  4. 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
    
    • 4
  5. 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 上:

    1. 下载linux_rnnoise_bin_x64.tar.gz
    2. 从存档中,将bin/ladspa/librnnoise_ladspa.so例如复制到/usr/local/lib/librnnoise_ladspa.so其他任何地方。
    3. 使用 查找输入的名称pactl list sources short。例如我的麦克风被称为alsa_input.usb-046d_0994_4A365E20-02.mono-fallback
    4. 运行以下命令以激活噪声消除(在运行之前将/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
    
    1. 在您的录音应用程序中,您将配置来自Null outputor的音频输入Remapped monitor of null output并进行测试(我使用了 Skype Echo)

    2. 要使更改永久生效,请将步骤 4 中的命令附加到/etc/pulse/default.pa中,省略pacmd每行开头的 。

    • 2
  6. Martin Owens -doctormo-
    2011-01-08T17:24:34+08:002011-01-08T17:24:34+08:00

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

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

    • 1
  7. 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。”

    • 1
  8. 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
    

    希望有人会得到帮助

    • 0
  9. samNikzad
    2022-08-31T21:27:32+08:002022-08-31T21:27:32+08:00

    我NoiseTorch 在 Arch Linux 中使用,易于使用且易于安装 => NoiseTorch Github Link 在此处输入图像描述

    • 0

相关问题

  • 播放声音时延迟

  • 5.1环绕声[关闭]

  • 声音,在多个程序之间停止

  • 即使插入耳机,我的扬声器也会发出声音[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve