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.wavAX650 板端增强输出(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

参考

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support