Views
No views yet
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.md1# 下载本仓库到板端后:
2bash run_cpp_ax650.sh # C++ 一键降噪:Samples1_noisy.wav → output_cpp_enhanced.wav
3# 或 Python:
4bash setup.sh # 安装依赖(numpy + pyaxengine,已装则跳过)
5python3 python/audio_demo.py --model models/model.axmodel \
6 --input-wav samples/Samples1_noisy.wav --output output_enhanced.wav/soc/lib,系统已配置搜索路径,一般直接运行即可;如提示
找不到 libax_*.so,再加 export LD_LIBRARY_PATH=/soc/lib:${LD_LIBRARY_PATH:-}。1import numpy as np
2from h_gtcrn_core_sdk import ModelSession
3
4feat = np.load("examples/sample_input.npy").astype("float32")
5session = ModelSession("models/model.axmodel")
6mask = session.run_named({"feat": feat})["mask"]python/audio_demo.py 是完整 wav→wav demo(numpy 实现 CPU 链路)。bin/h_gtcrn_ax650 已按 AX650 交叉编译好,板端直接运行:./bin/h_gtcrn_ax650 models/model.axmodel samples/Samples1_noisy.wav output_enhanced.wav --bench 20Samples1_noisy.wav — 原始 16kHz 双通道带噪输入(RMS 0.09499)Samples1_board_enhanced.wav — AX650 板端增强输出(RMS 0.02932)Samples1_core_ref_enhanced.wav — ONNX 参考增强输出| 指标 | 值 |
|---|---|
| 端到端 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 |