rnnoise
RNNoise 是一款基于循环神经网络(RNN)的开源音频降噪库,专为实时全频段语音增强设计。它主要解决在嘈杂环境中录音或通话时背景噪音干扰清晰度的问题,能有效分离人声与各类环境噪声。
该工具特别适合开发者集成到通信软件、会议系统或录音应用中,同时也为研究人员提供了复现和训练深度学习音频模型的完整流程。虽然 RNNoise 核心定位为代码库,但其提供的命令行示例也让具备一定技术基础的用户能直接处理原始音频文件。
其独特亮点在于采用了混合数字信号处理(DSP)与深度学习的架构,既保留了传统算法的低延迟特性,又利用神经网络提升了降噪精度。项目支持 AVX2 等指令集加速,确保在普通硬件上也能流畅运行。此外,RNNoise 公开了详细的训练方法,允许用户利用自定义的语音和噪声数据集重新训练模型,以适应特定的应用场景,展现了极高的灵活性与可定制性。
使用场景
一位远程办公的客服代表需要在嘈杂的开放式办公室中,通过 VoIP 系统与客户进行清晰的语音沟通。
没有 rnnoise 时
- 背景中的键盘敲击声、同事交谈声和空调噪音被麦克风完整收录,严重干扰通话质量。
- 传统降噪算法往往采用固定阈值,容易误切人声高频部分,导致语音听起来沉闷或带有机械失真。
- 客户因听不清关键信息而频繁要求重复,不仅降低了沟通效率,还影响了服务专业度评分。
- 后期若需对录音进行质检或语音转文字(ASR),高噪环境会导致识别准确率大幅下降,增加人工复核成本。
使用 rnnoise 后
- rnnoise 基于循环神经网络(RNN)实时分离人声与噪声,有效滤除键盘声和环境杂音,仅保留清晰的人声。
- 得益于深度学习模型对人声特征的精准理解,rnnoise 在降噪的同时完美保留了语音的自然度和高频细节,无明显伪影。
- 客户能清晰听到每一个字,沟通流畅度显著提升,一次性解决率(FCR)随之提高,改善了用户体验。
- 纯净的音频流使得后续的自动语音识别系统准确率大幅提升,质检流程自动化成为可能,减少了人工干预。
rnnoise 通过将先进的深度学习算法嵌入实时音频流,以极低的计算成本实现了广播级的人声增强效果。
运行环境要求
- Linux
- macOS
- 不需要 GPU
- 训练和推理均基于 CPU 运行,编译时建议使用支持 AVX2 或 SSE4.1 指令集的 CPU 以优化性能
未说明(训练过程需处理大量音频序列,建议根据数据量配置充足内存)

快速开始
RNNoise 是一个基于循环神经网络的噪声抑制库。 该算法的详细描述见以下论文:
J.-M. Valin, 一种混合 DSP/深度学习方法用于实时全频带语音增强,IEEE 多媒体信号处理 (MMSP) 研讨会论文集,arXiv:1709.08243,2018 年。 https://arxiv.org/pdf/1709.08243.pdf
版本 0.1 的交互式演示可在以下网址查看:https://jmvalin.ca/demo/rnnoise/
编译时,只需执行: % ./autogen.sh % ./configure % make
可选步骤: % make install
建议在 CFLAGS 中设置 -march= 参数,指定支持 AVX2 指令集的架构,或者在 configure 脚本中添加 --enable-x86-rtcd 选项,以便至少可以将 AVX2(或 SSE4.1)作为可选优化启用。 请注意,autogen.sh 脚本会自动从 Xiph.Org 服务器下载模型文件,因为这些文件体积过大,不适合放入 Git 仓库。
尽管 RNNoise 主要作为一个库来使用,但也提供了一个简单的命令行工具作为示例。该工具处理采样率为 48 kHz、16 位机器字节序的单声道 PCM 原始文件。使用方法如下:
% ./examples/rnnoise_demo <含噪语音> <去噪后输出>
输出同样是 16 位原始 PCM 文件。 再次强调,输入和输出均为原始格式,而非 WAV 格式。
最新版本的源代码可在以下地址获取: https://gitlab.xiph.org/xiph/rnnoise 。GitHub 仓库仅为方便起见而设立的镜像。
== 训练 ==
目前随 RNNoise 发布的模型仅使用以下公开数据集,并按照此处描述的训练流程进行训练。具体的训练效果仍将取决于所使用的数据组合、训练时长以及随机种子等因素。
要训练 RNNoise 模型,需要同时准备干净的语音数据和噪声数据。两者均需以 48 kHz 采样率、16 位 PCM 格式(机器字节序)存储。干净的语音数据可以从 datasets.txt 文件中列出的数据集中获取,也可以直接下载已合并好的文件:https://media.xiph.org/rnnoise/data/tts_speech_48k.sw。对于噪声数据,我们推荐使用 https://media.xiph.org/rnnoise/data/ 下载的 background_noise.sw 和 foreground_noise.sw(或更新版本)。foreground_noise.sw 文件包含旨在叠加到背景噪声上的信号(例如键盘声)。可选地,还可以先用传统降噪器(如 libspeexdsp)对前景噪声进行预处理,仅保留瞬态成分。至于背景噪声,原始 RNNoise 噪声数据集经过充分过滤后,单独使用或与 background_noise.sw 结合使用,都能获得良好的效果。该数据集可于 2025 年 1 月 30 日更新后下载:https://media.xiph.org/rnnoise/rnnoise_contributions.tar.gz。
第一步是将语音和噪声以多种方式混合,以模拟真实场景(包括静音、滤波等)。假设语音文件名为 speech.pcm,噪声文件名为 noise.pcm,则可通过以下命令生成训练特征数据:
% ./dump_features speech.pcm background_noise.pcm foreground_noise.pcm features.f32 <数量> 其中 <数量> 表示要处理的序列数。序列数量应至少为 10,000,但越多越好(建议 200,000 或以上)。
此外,训练过程中还可模拟混响效果,此时需要房间脉冲响应(RIR)数据。有限的 RIR 数据可在以下链接获取:https://media.xiph.org/rnnoise/data/measured_rirs-v2.tar.gz。这些数据采用 32 位浮点格式(小端字节序)。若所有 RIR 文件的列表存储在 rir_list.txt 文件中,则可通过以下命令生成训练特征数据:
% ./dump_features -rir_list rir_list.txt speech.pcm background_noise.pcm foreground_noise.pcm features.f32 <数量>
为加快特征生成速度,可使用 script/dump_features_parallel.sh 提供的并行脚本(若需加入 RIR 增强,则需对该脚本进行相应修改)。
使用方法如下: % script/dump_features_parallel.sh ./dump_features speech.pcm background_noise.pcm foreground_noise.pcm features.f32 <数量> rir_list.txt 该脚本将启动 nb_processes 个进程,每个进程处理 count 个序列,并将结果合并到一个文件中。
特征文件计算完成后,即可开始训练: % python3 train_rnnoise.py features.f32 output_directory
请设置适当的 epoch 数量(通过 --epochs 参数),使权重更新次数达到约 75,000 次。训练完成后会生成 .pth 文件,例如 rnnoise_50.pth。
下一步是将模型转换为 C 语言代码:
% python3 dump_rnnoise_weights.py --quantize rnnoise_50.pth rnnoise_c
这将生成 rnnoise_c 目录下的 rnnoise_data.c 和 rnnoise_data.h 文件。
将这些文件复制到 src/ 目录下,然后按照上述说明构建 RNNoise。
为了获得更好的效果,可以在重新开始降噪过程之前,先用训练好的模型去除“干净”训练语音中的任何残留噪声(无需重复此步骤)。
== 可加载模型 ==
自 v0.1.1 以来,模型格式已发生变化。现在模型采用二进制“机器字节序”格式。要输出这种格式的模型,需使用该模型构建 RNNoise,然后利用 dump_weights_blob 可执行文件导出 weights_blob.bin 二进制文件。随后,可通过 rnnoise_model_from_file() API 调用加载该模型。需要注意的是,在 RNNoise 状态处于活动时,不得删除模型对象,且不得关闭该文件。
为避免在构建过程中包含默认模型(例如减小下载大小),而仅依赖模型加载功能,可在 CFLAGS 中添加 -DUSE_WEIGHTS_FILE 选项。为了能够加载不同模型,必须调整构建时使用的模型尺寸和头文件定义;否则模型将无法正确加载。我们还提供了一种尺寸减半的“小型”模型作为替代方案。要使用小型模型,只需将 rnnoise_data_little.c 重命名为 rnnoise_data.c。由于小型模型与常规模型具有相同的文件大小(仅稀疏度更高),因此可以同时构建常规和小型两种二进制权重,并在运行时根据需要加载任意一种。
版本历史
v0.22024/04/15常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。