MP_SENet轻量语音降噪模型在土星云边缘设备的部署实战

前言

边缘语音交互、工业音频监测等场景对端侧降噪的需求持续增长,云端方案存在延迟高、隐私风险等问题。MP_SENet以仅2M参数量实现了顶尖降噪效果,天然适配边缘部署。本文基于土星云BM1684X架构设备,完整讲解模型原理、环境搭建、Python推理部署与性能实测。

一、MP_SENet模型核心原理

MP_SENet是时频域单通道语音增强模型,核心突破在于同时优化幅度谱与相位谱,在极轻量的参数量下实现高保真降噪。

1.1 整体架构

采用编码器-解码器基础框架,工作流程为:

  1. 输入带噪语音经STFT转换为复数时频谱,分离幅度谱与相位谱
  2. 编码器通过卷积下采样提取多尺度时频特征
  3. 瓶颈处引入MP-SE注意力模块,自适应强化语音特征、抑制噪声
  4. 双分支解码器分别重建降噪后的幅度谱与相位谱
  5. 经ISTFT还原为干净时域语音

1.2 核心创新与轻量化设计

**MP-SE多路径压缩激励模块**MP-SE多路径压缩激励模块:针对语音频率特性设计多路径特征处理,通道注意力同时作用于幅度与相位分支,保证降噪一致性;

**极致轻量化**极致轻量化:采用深度可分离卷积优化结构,整体参数量仅2M,支持FP32、BF16多精度部署,适配边缘硬件算力;

二、应用场景与核心优势

2.1 典型场景

智能语音终端、工业音频异响检测、车载语音系统、便携录播设备、安防语音拾音等端侧低延迟音频场景。

2.2 部署优势

  1. 资源占用极低,内存与算力需求适配边缘设备;
  2. 降噪性能优异,同时兼顾噪声抑制与语音保真度;
  3. 相位优化让输出音质更自然,可懂度更高;
  4. 多精度支持,可根据业务需求灵活权衡性能与精度;

三、边缘部署环境搭建

SoC边缘设备( SE110S 系列)

刷入对应版本固件完成系统初始化

安装SAIL Python推理库:

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| pip3 install dfss -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade python3 -m dfss --url=open@sophgo.com:sophon-demo/MP_SENet/SOC/sophon_arm-3.9.0-py3-none-any.whl pip3 install sophon_arm-3.9.0-py3-none-any.whl |

执行`python3 -c "import sophon.sail"`python3 -c "import sophon.sail"验证环境。

四、模型准备

4.1 预编译模型一键获取

|--------------------------------------------|
| chmod -R +x scripts/ ./scripts/download.sh |

下载后得到4款预编译bmodel,涵盖VB/DNS训练集与FP32/BF16精度,可按需选择:

  1. `mpsenet_vb_1b_bf16.bmodel`mpsenet_vb_1b_bf16.bmodel:通用语音场景,优先推荐;
  2. `mpsenet_dns_1b_bf16.bmodel`mpsenet_dns_1b_bf16.bmodel:复杂通话噪声场景;

4.2 自定义编译

使用`tools/model_onnx.py`tools/model_onnx.py导出ONNX模型,再通过MLIR工具链执行`scripts/gen_fp32bmodel_mlir.sh`scripts/gen_fp32bmodel_mlir.sh

`gen_bf16bmodel_mlir.sh`gen_bf16bmodel_mlir.sh完成编译,详细步骤参考项目文档。

五、Python推理部署实战

5.1 核心流程

|-----------------------------------------------------------------------|
| 带噪WAV -> STFT变换 -> 特征预处理 -> SAIL引擎推理 -> 谱重建 -> ISTFT还原 -> 降噪WAV |

5.2 依赖安装

|----------------------------------------------------------------------------------------|
| cd python pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple |

5.3 核心代码片段

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import sophon.sail as sail import numpy as np from scipy.io import wavfile from scipy.signal import stft, istft # 1. 初始化推理引擎 engine = sail.Engine(bmodel_path, dev_id, sail.IOMode.SYSIO) graph_name = engine.get_graph_names()0 input_name = engine.get_input_names(graph_name)0 # 2. 音频预处理 sr, audio = wavfile.read(input_path) audio = audio.astype(np.float32) / 32768.0 f, t, spec = stft(audio, fs=sr, nperseg=400, noverlap=200) mag_input = np.expand_dims(np.abs(spec), axis=0).astype(np.float32) # 3. 模型推理 output = engine.process(graph_name, {input_name: mag_input}) enhanced_mag = outputengine.get_output_names(graph_name)\[0]0 # 4. 后处理与保存 enhanced_spec = enhanced_mag * np.exp(1j * np.angle(spec)) _, out_audio = istft(enhanced_spec, fs=sr, nperseg=400, noverlap=200) wavfile.write(output_path, sr, (np.clip(out_audio, -1, 1) * 32768).astype(np.int16)) |

5.4 运行推理

|---------------------------------------------------------------------------------------------------------------------------------------------------------|
| python3 mp_senet_sail.py \ --bmodel ../models/BM1684X/mpsenet_vb_1b_bf16.bmodel \ --input ../datasets/test.wav \ --output ./result.wav \ --dev_id 0 |

六、性能实测(SE7-32设备)

6.1 理论推理性能(固定输入1,201,640)

|------|-----------|
| 模型精度 | 单推理耗时 |
| BF16 | 1397.35ms |
| FP32 | 2772.37ms |

6.2 端到端性能(12秒测试音频)

|------|-------|--------|------|--------|
| 模型精度 | 预处理 | 推理 | 后处理 | 总耗时 |
| BF16 | 167ms | 2884ms | 52ms | ~3.1s |
| FP32 | 211ms | 8642ms | 75ms | ~8.9s |

BF16模型实时比超3:1,完全满足实时语音场景需求,是边缘部署的最优选择。

七、总结

MP_SENet以极小的参数量实现了高质量语音降噪,搭配土星云边缘NPU算力,可在低资源占用下完成端侧实时降噪,非常适合各类边缘音频场景落地。后续可通过多线程流水线、INT8量化进一步提升吞吐,或与ASR等模型串联构建完整端侧语音方案。

相关推荐
Lifangyun_WD8 小时前
RTX 5090跑Stable Diffusion XL:生图速度、显存占用与商业应用边界
人工智能·stable diffusion·gpu算力·rtx 5090·gpu容器·gpu租赁
internet Boy8 小时前
服务器机房硬件入门教程
运维·服务器
hey you~8 小时前
2026出海语音机器人全栈选型:从ASR引擎评测到GDPR合规落地
人工智能·机器人·语音识别
人工干智能8 小时前
神经网络:业务分层 vs 网络分层
网络·人工智能·神经网络
电子工匠8 小时前
Understand Anything 在 Qoder 中的完整使用指南
ai·开源软件
猫先生Mr.Mao8 小时前
具身智能之OneTwoVLA详解:如何统一推理与行动
ai·论文解读·具身智能·vla·onetwovla
带刺的坐椅8 小时前
Solon TeamAgent 协作协议:从 SEQUENTIAL 流水线到 HIERARCHICAL 主管团队
java·ai·llm·agent·solon
GC_ESD8 小时前
AI芯片时代,ESD静电保护缘何成为设计刚需
人工智能·集成电路·芯片·半导体·esd设计
mftang8 小时前
TensorFlow Lite Micro:面向TinyML系统的嵌入式机器学习推理框架
人工智能·机器学习·tensorflow