YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

Sherpa-ONNX-KWS.AXERA

Sherpa-ONNX Zipformer KWS 语音唤醒 AXERA 推理 demo。

功能

  • 支持 AX630C 和 AX650;
  • 支持中英文关键词检测;
  • 支持通过关键词文件配置唤醒词;
  • 提供 Python 和 C++ 板端推理。

目录结构

Sherpa-ONNX-KWS.AXERA/
├── models/
│   ├── 650/          # AX650 axmodel
│   └── 630C/         # AX630C axmodel
├── config/           # tokens、keywords 和初始 decoder 输出
├── audio/sherpa/     # 测试音频
├── scripts/          # Python 推理代码
├── cpp/              # C++ 源码、编译和运行脚本
└── README.md

Python

创建虚拟环境

conda create -n OpenWakeWord python=3.10
conda activate OpenWakeWord

安装 pyaxengine及python库:

pip install axengine-x.x.x-py3-none-any.whl
pip install -r requirements.txt

AX650推理:

python scripts/sherpa_kws_ax650.py --chunk-size 8

AX630C推理:

python scripts/sherpa_kws_ax630c.py --chunk-size 8

C++

编译环境

AX630C 和 AX650 共用 Arm GNU 9.2 AArch64 交叉编译器:

https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz

mkdir -p cpp/toolchains
wget -P cpp/toolchains \
  https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
tar -xf cpp/toolchains/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz \
  -C cpp/toolchains

BSP SDK 下载地址:

下载并整理到 cpp/toolchains/

bash cpp/download_bsp.sh all

交叉编译

export TOOLCHAIN_ROOT="cpp/toolchains/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu"

bash cpp/build_ax650.sh
bash cpp/build_ax630c.sh

编译结果:

cpp/bin/sherpa_kws_ax650
cpp/bin/sherpa_kws_ax630c

板端批量测试

AX650:

CHUNK_SIZE=8 MAX_ACTIVE_PATHS=16 \
bash cpp/run_batch_sherpa_kws_ax650.sh

AX630C:

CHUNK_SIZE=8 MAX_ACTIVE_PATHS=16 \
bash cpp/run_batch_sherpa_kws_ax630c.sh

结果分别写入 outputs/cpp_ax650_batch_*outputs/cpp_ax630c_batch_*

MAX_ACTIVE_PATHS

MAX_ACTIVE_PATHS 是关键词解码的 beam search 宽度,取值范围为 1321 路速度最快,但可能提前丢掉正确音素路径;16 路是当前测试集的推荐值; 32 路只在较长或容易混淆的关键词仍漏检时尝试。实际部署应选择能够稳定唤醒的 最小值,并用批量测试确认召回率、误报率和 RTF。

新增唤醒词

生成 token 并追加到 config/keywords.txt

python scripts/generate_keyword_tokens.py \
  --text 金融动荡 \
  --append

生成结果示例:

j īn r óng d òng d àng @金融动荡

关键词文件在运行时读取,不需要重新导出或量化模型。可在 token 后添加 #0.25 设置触发阈值;降低阈值会提高召回率,同时也可能增加误报。

详细 C++ 说明见 cpp/README.md

参考

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