File size: 2,208 Bytes
6dc3c2b
 
 
 
 
 
f722fb4
 
 
 
6dc3c2b
 
f722fb4
6dc3c2b
f722fb4
 
6dc3c2b
f722fb4
6dc3c2b
f722fb4
 
 
 
6dc3c2b
f722fb4
6dc3c2b
f722fb4
 
 
f2b2f87
f722fb4
 
 
 
6dc3c2b
f722fb4
6dc3c2b
f722fb4
6dc3c2b
f722fb4
 
 
6dc3c2b
f722fb4
6dc3c2b
f722fb4
 
 
 
 
6dc3c2b
 
f722fb4
 
 
 
 
 
 
 
 
6dc3c2b
f722fb4
6dc3c2b
f722fb4
 
f2b2f87
 
 
6dc3c2b
f722fb4
6dc3c2b
f722fb4
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
---
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