H-GTCRN.AXERA
H-GTCRN 语音增强 AXERA 板端推理 demo。 AX650/NPU3 预编译模型 + Python SDK + C++ 可执行文件,即取即用,wav 进 wav 出。
- Python 示例(numpy + pyaxengine,无 torch/onnxruntime 回退)
- C++ 示例(
bin/下可执行文件,无需编译)
支持模型
| 模型 | 输入 | 输出 | axmodel | 端到端 RTF | NPU core RTF |
|---|---|---|---|---|---|
| H-GTCRN-core | 16kHz wav(1/2 声道) | 16kHz 增强 wav | 24.2 MB | ~0.36 | 0.0023 |
完整链路(与官方 GTCRN_IVA 一致):STFT → WPE 去混响 → auxIVA 声源分离 → 特征构造 → [NPU: GTCRN 核
feat→mask] → 掩码应用 → ISTFT。 CPU 侧为 numpy / C++ 实现,NPU 只跑神经核。 端到端 RTF =(CPU 链路 + NPU)总耗时 / 音频时长(10s 音频约 3.6s,AX650 实测); NPU core RTF = 仅神经核推理 / 音频时长。CPU 链路占绝对主导:WPE/IVA 是 整段统计算法(每频点 36×36 矩阵求逆 + 10 轮迭代),与上游一致为离线整段推理, 非流式;如需实时需改造为在线分块算法。
目录结构
H-GTCRN.AXERA/
├── models/ # model.axmodel + model_meta.json
├── bin/ # h_gtcrn_ax650 可执行文件(板端直接运行,wav→wav)
├── python/ # Python SDK + numpy 版 wav→wav demo
├── samples/ # 带噪/增强对比音频
├── run.sh # Python 一键推理
├── run_cpp_ax650.sh # C++ 一键推理(wav→wav)
├── setup.sh # 板端 Python 依赖安装
└── README.md
快速开始(AX650 板端)
# 下载本仓库到板端后:
bash run_cpp_ax650.sh # C++ 一键降噪:Samples1_noisy.wav → output_cpp_enhanced.wav
# 或 Python:
bash setup.sh # 安装依赖(numpy + pyaxengine,已装则跳过)
python3 python/audio_demo.py --model models/model.axmodel \
--input-wav samples/Samples1_noisy.wav --output output_enhanced.wav
输入要求:16kHz PCM16 wav,1 或 2 声道;长度 ≤ 10.0s(626 帧,自动补零),更长请
自行分片。板端运行库在 /soc/lib,系统已配置搜索路径,一般直接运行即可;如提示
找不到 libax_*.so,再加 export LD_LIBRARY_PATH=/soc/lib:${LD_LIBRARY_PATH:-}。
Python SDK
import numpy as np
from h_gtcrn_core_sdk import ModelSession
feat = np.load("examples/sample_input.npy").astype("float32")
session = ModelSession("models/model.axmodel")
mask = session.run_named({"feat": feat})["mask"]
依赖仅 numpy + pyaxengine(板端),无 torch/onnxruntime 回退。
python/audio_demo.py 是完整 wav→wav demo(numpy 实现 CPU 链路)。
C++ 推理(bin/ 可执行文件)
bin/h_gtcrn_ax650 已按 AX650 交叉编译好,板端直接运行:
./bin/h_gtcrn_ax650 models/model.axmodel samples/Samples1_noisy.wav output_enhanced.wav --bench 20
输出 16kHz PCM16 增强 wav,并打印 CPU 链路耗时 / NPU 耗时 / RTF。 C++ 源码(编译方法 + 工具链下载说明)见 GitHub: https://github.com/AXERA-TECH/H-GTCRN.AXERA
示例音频 (samples/)
Samples1_noisy.wav— 原始 16kHz 双通道带噪输入(RMS 0.09499)Samples1_board_enhanced.wav— AX650 板端增强输出(RMS 0.02932)Samples1_core_ref_enhanced.wav— ONNX 参考增强输出
验证(AX650 板端实测)
| 指标 | 值 |
|---|---|
| 端到端 RTF(CPU 链路 + NPU)/ 10s 音频 | ~0.36(C++ 3.6s;numpy 3.9s) |
| NPU core 20 次平均耗时 | 22.8 ms(RTF 0.0023) |
| C++ 输出 vs torch 链参考 cosine | 0.99999 |
| 板端 vs PyTorch mask cosine | 0.99876 |
| 板端增强音频 vs 原版 cosine | 0.99947 |
参考
- H-GTCRN — 原始模型
- H-GTCRN.AXERA(GitHub 源码) — 模型转换 + C++ 源码
- Magnetar — AXERA 模型部署 agent 工具
- Downloads last month
- -