☰
如何用 NoiseTorch 实现 Linux 麦克风实时降噪:安装、配置与进阶完整指南
2026/11/5 1:13:36 网站建设 项目流程

如何用 NoiseTorch 实现 Linux 麦克风实时降噪:安装、配置与进阶完整指南

【免费下载链接】NoiseTorchReal-time microphone noise suppression on Linux.项目地址: https://gitcode.com/gh_mirrors/no/NoiseTorch

NoiseTorch 是一款 Linux 实时麦克风降噪工具:它基于 PulseAudio 或 PipeWire 工作,装好后会创建出一个虚拟麦克风(即音频系统里凭空造出的一个假输入设备,任何应用都能把它当成真实麦克风来选择),声音在送出前由 RNNoise 算法实时过滤掉背景噪音。本文先说清降噪后到底听起来什么样,再倒推它是怎么实现的,然后按时间线带你装好并调优。

降噪后到底是什么效果

加载过滤器后,你在视频会议里的机械键盘敲击声、机箱风扇声、环境白噪基本听不见了;没有人说话时,远端听到的不是"房间噪音",而是静音。它有两个方向:

  • 输入降噪(主场景):选中你的物理麦克风后,系统里多出一个名为Filtered Microphone的虚拟设备。RNNoise 算法本身的处理延迟约 10ms,正常对话感觉不到不同步。
  • 输出降噪:同样可以生成Filtered Headphones输出设备,用来给进入你耳机的声音降噪。在 PulseAudio 下整条链路约 100ms 延迟,视频会议和语音没问题,竞技向使用则不建议。

整个程序是一个静态编译的单二进制文件,不依赖额外运行库,常驻内存占用远低于 10MB。

倒推原理:虚拟麦克风是怎么造出来的

PulseAudio 模块链

module.go 自己不做音频处理,而是在 PulseAudio 里拼装一条四模块的链:module-null-sink(内存里的虚拟声卡)→module-ladspa-sink(降噪插件所在环节)→module-loopback(回环)→module-remap-source(把它伪装成麦克风暴露给应用)。每一环都有固定的 sink_name,比如nui_mic_denoised_out,程序逐个检查它们来判断过滤器处于"已加载 / 部分加载 / 未加载"哪种状态——界面上那行橙色的 "Inconsistent state, please unload first" 就是检查发现缺环时给出的提示。

包着 RNNoise 的 LADSPA 插件

真正干活的是 c/ladspa/module.c 里的 C 插件。LADSPA 是 Linux 上的音频插件标准,可以类比为 VST;这里它把基于循环神经网络的降噪模型 RNNoise 封装成插件,每次处理 480 个采样点,在 48kHz 采样率下恰好是 10ms——这就是前面说"延迟约 10ms"的来源。

语音激活(VAD)

插件额外输出一路 VAD(语音活动检测)信号:判断当前帧里有没有人声,没有人声时把输出静音。界面上那个滑块的取值范围是 0%–95%,默认就是 95%。代码里还留了 20 帧的宽限期(VAD_GRACE_PERIOD),避免刚开口第一声被切成卡顿。

从源码到能用:10 分钟时间线

前提条件:64 位 Linux,音频后端是 PulseAudio 或 PipeWire(≥ 0.3.28);若从源码构建,需要 Go 编译器和一套 C++ 工具链。

第一步,克隆并构建(也可直接下载 release 版 tgz 解包到主目录,效果等同于下面两步):

git clone https://gitcode.com/gh_mirrors/no/NoiseTorch cd NoiseTorch make

第二步,把产物放到对应目录:

mkdir -p ~/.local/bin cp ./bin/noisetorch ~/.local/bin/ cp ./assets/noisetorch.desktop ~/.local/share/applications cp ./assets/icon/noisetorch.png ~/.local/share/icons/hicolor/256x256/apps

第三步,授予一个权限。程序要调整 PulseAudio 进程的实时资源上限,为此申请 CAP_SYS_RESOURCE capability(Linux 给单个程序授予的特权位):

sudo setcap 'CAP_SYS_RESOURCE=+ep' ~/.local/bin/noisetorch

如果~/.local/bin不在 PATH 里,把它写进~/.profile后重新登录。

首次使用只有三步:启动程序,在 "Select Microphone" 标签页勾选要降噪的麦克风,点 "Load Filter(s)";到会议应用(Discord、OBS、Mumble)里把输入设备切成Filtered Microphone;用完点 "Unload Filter(s)"。ui.go 顶部的状态色是最直观的仪表:绿色 Filtering active 表示虚拟设备正被应用使用,浅蓝色表示尚未配置,橙色表示状态不一致、先卸载再继续。注意过滤器加载成功后可以关掉窗口,虚拟麦克风会继续工作;参数会写进~/.config/noisetorch/config.toml,上次选的设备和阈值都会被记住,下次启动直接复用。

界面之外的进阶玩法

纯命令行完成全部操作

cli.go 提供了完整 CLI,日常最常用的四个参数是:

noisetorch -l # 列出所有设备的名称和 ID noisetorch -i -s <设备ID> # 给指定麦克风加载输入降噪 noisetorch -o # 加载输出(耳机)降噪 noisetorch -u # 卸载全部过滤器

-t直接设语音激活阈值(0–95,超过 95 会被钳制回 95),-c只检查是否有新版本而不安装。

开机自启

把 assets/noisetorch.desktop 复制到~/.config/autostart/,再把 Exec 一行改成noisetorch -i -s <你的麦克风ID>,开机即可免界面加载。

阈值怎么调

  • 90%–95%:安静环境,麦克风质量不错时可以直接拉满 95%,人声外的声音几乎全部被切掉。
  • 70%–85%:普通办公环境,灵敏度和抗噪的折中。
  • 70% 以下直至 0%:嘈杂环境防漏话;0% 表示只压低噪音、不再"没说话就静音",你的麦克风始终在线。

任何阈值修改都要点 "Reload Filter(s)" 才生效,界面会用橙色一行 "Reloading the filter(s) is required" 提醒你。

出问题时对照这里

  • 启动报权限错误:重跑一遍sudo setcap 'CAP_SYS_RESOURCE=+ep' ~/.local/bin/noisetorch;若提示"文件有权限但进程没有",通常是二进制所在文件系统挂载了 nosuid,换到主目录运行。
  • PipeWire 提示版本过旧:错误页会直接显示 "Require at least 0.3.28",先升级 PipeWire 再继续排查其他问题。
  • 应用里看不到虚拟麦克风:多数应用要重启后才会重新枚举设备;如果卸载时警告"虚拟设备正在被使用",先选 "Go back",让应用切回其他设备再卸载。
  • 想卸载:删掉~/.local/bin/noisetorch、~/.local/share/applications/noisetorch.desktop和对应图标即可,顺手把~/.config/noisetorch/一并清掉。

以上没覆盖的问题,先查项目 wiki 的 Troubleshooting 页,或直接提 Issue,附上noisetorch -log跑出来的调试输出会大大加快定位。

【免费下载链接】NoiseTorchReal-time microphone noise suppression on Linux.项目地址: https://gitcode.com/gh_mirrors/no/NoiseTorch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询