DeepFilterNet3.AXERA
DeepFilterNet3 (48kHz 全频带实时语音降噪) 的 AXERA 平台量化部署包 (当前支持 AX650N)。
- 模型: enc (U16) / erb_dec (U16) / df_dec (全 FP32) 3 个子图, GRU 状态跨块携带版
- 依赖: 仅 numpy + axengine (Python); C++ 为预编译 aarch64 可执行文件
目录
├── axmodels/ # enc.axmodel / erb_dec.axmodel / df_dec.axmodel
├── inference.py # Python 推理入口 (依赖仅 numpy + axengine)
├── requirements.txt
├── assets/ # 演示音频 (带噪输入 + 增强输出样例)
├── bin/ # C++ 可执行文件 (aarch64)
└── run.sh # 一键运行
Python 运行
pip3 install numpy
# pyaxengine: https://github.com/AXERA-TECH/pyaxengine/releases/latest
pip3 install axengine-<version>-py3-none-any.whl
./run.sh input.wav output.wav
或:
from inference import enhance_audio
out = enhance_audio(audio_float32_48k, model_dir="axmodels")
C++ 运行
LD_LIBRARY_PATH=<ax_runtime>/lib ./bin/df3_ax \
axmodels/enc.axmodel axmodels/erb_dec.axmodel axmodels/df_dec.axmodel \
input.wav output.wav
模型说明
- 输入: 48kHz 单声道 (PCM16 wav 或 float32 数组)
- 3 子图流水线: STFT(fft 960/hop 480) -> ERB+unit_norm 特征 -> enc (GRU, 状态携带) -> erb_dec (m 掩码) + df_dec (coefs) -> ERB 增益 + DF 滤波(5 阶, 2 帧前瞻) -> ISTFT
- 静态 T=99 帧/块, GRU 状态跨块传递 (实时流式语义, 与官方 tract 部署一致)
- 完整转换源码见 GitHub: DeepFilterNet3.AXERA
RTF(AX650N 实测, noisy_snr0.wav 10.6s)
| 推理路径 | 耗时 | RTF | 峰值内存 |
|---|---|---|---|
| C++ | 1.50 s | 0.142 | — |
| Python | 1.44 s | 0.136 | 28.9 MB |
RTF = 推理耗时 / 音频时长(不含模型加载,RTF < 1.0 即可实时)
示例结果(AX650N 实测)
| 音频 | 输入 RMS | 输出 RMS | 效果 |
|---|---|---|---|
assets/noisy_snr0.wav(SNR 0dB 带噪语音) |
0.0640 | 0.0489 | 噪声移除、语音保留 |
assets/enhanced_sample.wav(上者降噪输出) |
— | — | 试听对比用 |
其他实测(不在本仓):干净语音 RMS 0.0287→0.0270(几乎无损伤); 纯噪声 0.0336→0.0021(约 -24dB 压制)
精度(AX650N 实测)
| 指标 | 数值 |
|---|---|
| 逐张量 cosine vs ONNX(enc/erb_dec) | ≥ 0.9946(U16 量化) |
| df_dec 输出 coefs | 0.99999(全 FP32) |
| 板端端到端 vs 官方 torch 参考 | cosine 0.9857(量化损失仅 0.0005) |
参考
- DeepFilterNet
- DeepFilterNet3.AXERA(完整转换源码)
- Magnetar — AXERA 模型部署 agent 工具
技术讨论
- GitHub issues
- QQ 群: 139953715
- Downloads last month
- -