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
11
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support