FRCRN 开源模型实战:WebAssembly 浏览器端轻量化部署
在线会议背景噪声处理是常见痛点。本文介绍将阿里巴巴达摩院开源的 FRCRN 语音降噪模型通过 WebAssembly 技术部署到浏览器端的方案。无需安装客户端,打开网页即可实现实时语音降噪。
1. 为什么选择 FRCRN 与 WebAssembly?
1.1 FRCRN:专为复杂噪声设计的降噪高手
FRCRN 全称 Frequency-Recurrent Convolutional Recurrent Network,翻译过来是'频率循环卷积循环网络'。核心思想是在频率域里处理音频信号,同时捕捉局部特征和长期依赖关系。
该模型在 ModelScope 社区开源后,在单通道降噪任务上表现相当出色。测试显示典型场景效果如下:
- 持续稳态噪声:像空调声、风扇声这种背景音,几乎能完全消除
- 突发性噪声:键盘敲击声、关门声,能显著减弱
- 人声干扰:背景里的谈话声,处理效果也不错
最重要的是,它在消除噪声的同时,对人声的保真度很高。你不会听到那种'机器人声'或者'水下通话'的失真效果。
1.2 WebAssembly:让浏览器成为 AI 推理平台
WebAssembly(简称 Wasm)是一种能在现代浏览器中运行的二进制指令格式,性能接近原生代码,但保持了 Web 应用的安全沙箱特性。
在浏览器里跑 AI 模型有几个明显优势:
无需安装,即开即用 用户不需要下载几百 MB 的客户端,也不需要配置复杂的 Python 环境。打开网页,授权麦克风,就能开始降噪。
数据隐私得到保障 音频数据不需要上传到云端服务器,在本地浏览器里就完成了处理。这对处理敏感对话的场景至关重要。
跨平台一致性 无论是 Windows、macOS、Linux,还是 Android、iOS,只要浏览器支持 Wasm,体验就是一致的。
实时性足够好 经过优化后,Wasm 版本的推理速度能满足实时处理的需求。在 M1 MacBook Air 上测试,16kHz 音频的延迟在 50ms 左右,完全不影响正常通话。
2. 环境准备与模型转换
2.1 开发环境搭建
基础要求:
- 现代浏览器(Chrome 90+、Firefox 89+、Safari 15+)
- Node.js 16+(用于构建工具链)
- Python 3.8+(用于模型转换脚本)
安装构建工具:
# 如果你还没有 Node.js,先安装它 # 可以从 https://nodejs.org/ 下载 LTS 版本 # 安装必要的 npm 包 npm install -g onnxruntime-web npm install -g esbuild # 创建一个新的项目目录 mkdir frcrn-wasm-demo cd frcrn-wasm-demo
2.2 模型下载与格式转换
FRCRN 的原始模型是 PyTorch 格式的,我们需要把它转换成 ONNX 格式,然后再优化为适合 Wasm 运行的版本。
步骤 1:下载原始模型
import torch from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks # 这会自动下载模型到本地缓存 ans_pipeline = pipeline( task=Tasks.acoustic_noise_suppression, model='damo/speech_frcrn_ans_cirm_16k' ) print("模型下载完成!缓存位置通常在:~/.cache/modelscope/hub")

