rnnoise / README.md
inoryQwQ's picture
AX620E 板端验证通过(AX630C 板):C++ 4.93ms/帧 cosine 0.9989;SDK 切换 NPU-only
f2b2f87 verified
|
Raw
History Blame Contribute Delete
2.21 kB
---
license: isc
pipeline_tag: audio-to-audio
tags:
- axmodel
- axera
- rnnoise
- audio-denoising
- ax650
- ax620e
---
# RNNoise(爱芯 NPU 版)
Xiph RNNoise 语音降噪在爱芯 NPU 上的部署包,支持 **AX650(NPU3)/ AX620E(NPU2)** 双芯。
官方模型仓库:https://github.com/xiph/rnnoise
## 特性
- 48kHz 单声道实时语音降噪(逐帧 10ms,16-bit 等价域 ±32768)
- 原版 rnnoise C 信号处理(特征分析 / 合成)+ AX Engine NPU 推理
- Python 与 C++ 双 SDK;官方未提供 ONNX,本仓库 ONNX 由官方 `rnnoise_data.c`
权重 1:1 复刻导出(Tanh/Sigmoid 有理逼近对齐 C 端)
## 支持平台与模型
| 芯片 | NPU | 模型目录 | gains cosine | 板端验证 |
|---|---|---|---|---|
| AX650 | NPU3 | `rnnoise_ax650/` | 0.9991(板端 198 帧) | ✅ C++ 2.91ms/帧,输出 cosine 0.9988 |
| AX620E | NPU2 | `rnnoise_ax620e/` | 0.9987(仿真) | ✅ AX630C 板(AX620E NPU2 同构)C++ 4.93ms/帧,输出 cosine 0.9989 |
每个模型目录内含 `model.axmodel` + `model_meta.json`
量化:U16 链路(MatMul/Conv/Add/Mul/Div/Sub/Concat/Clip/Slice,S8 权重),
MinMax,校准数据来自真实语音(speech/speech-echo/speech-reverb + 6dB 噪声)。
## 快速开始
### 1. 安装 Python 环境
```bash
pip install -r python/requirements.txt
```
### 2. 板端运行降噪
```bash
# AX650
python3 python/demo.py --chip ax650
# AX620E
python3 python/demo.py --chip ax620e
```
输出 `output/out.pcm`(48k f32le)+ `output/vad.npy`;演示样本为
`python/sample_speech.pcm`(约 4 秒语音)。
## C++ SDK
| 芯片 | 目录 | 说明 |
|---|---|---|
| AX650 | `cpp/ax650/` | cmake 链接 ax_engine/ax_sys,板端实测 2.91ms/帧 |
| AX620E | `cpp/ax620e/` | 同源码树,目标 AX620E BSP 交叉编译 |
## 精度说明
| 张量 | AX650 板端 cosine | AX620E 仿真 cosine |
|---|---|---|
| gains | 0.9991 | 0.9987(板端 0.9989) |
| vad | 0.99996 | 0.99997(板端 0.99987) |
| GRU 状态 | 0.992–0.996 | 0.996+(板端输出 0.9989) |
## 复现
完整导出与编译流程(含双芯 Pulsar2 配置与校准数据)见
GitHub:https://github.com/ml-inory/rnnoise.axera