| # wakeup_axera C++ SDK |
| |
| 直接链接 AX Engine runtime(`ax_engine`/`ax_sys`/`ax_interpreter`)的 |
| 流式唤醒词检测 SDK:fbank 预处理 + 64 帧窗口 + NPU 推理 + 3 帧滑动触发。 |
|
|
| - 输入(与 model_meta.json 一致): fbank[1, 26, 64] float32 |
| - 输出(与 model_meta.json 一致): logits[1, 2, 64] float32 |
| - 支持芯片: AX650/AX630(models/ax650/model.axmodel)、AX620E(models/ax620e/model.axmodel) |
| - 板端实测(AX650C, NPU3): “你好,爱芯”触发(max_sum 9.848 > 0.615, |
| 12 次 TRIGGER)/ “你好,其他”静默(max_sum -5.704),与 Python SDK 一致 |
|
|
| ## 交叉编译(aarch64) |
|
|
| 依赖:`aarch64-none-linux-gnu-gcc/g++`(GCC 9.2)与 AX runtime 头文件/库。 |
| 本目录 `axrt/` 已预置来自 AX650C 板的 runtime(include + libax_engine/libax_sys/ |
| libax_interpreter),可直接编译;也可用你自己的 BSP 覆盖: |
| |
| ```bash |
| cmake -S cpp -B cpp/build-aarch64 \ |
| -DCMAKE_TOOLCHAIN_FILE=cpp/toolchain-aarch64.cmake \ |
| -DTOOLCHAIN_ROOT=/path/to/aarch64-none-linux-gnu \ |
| -DAX_RUNTIME_ROOT=/path/to/axrt # 默认使用 cpp/axrt |
| cmake --build cpp/build-aarch64 -j |
| ``` |
| |
| 产物:`cpp/build-aarch64/model_example`。 |
| |
| ## 板端运行 |
| |
| ```bash |
| ./cpp/build-aarch64/model_example models/ax650/model.axmodel 音频.raw 0.615 |
| # 输入为 16kHz 单声道 int16 raw PCM;阈值默认 0.615(DET_MODE_95) |
| ``` |
| |
| 运行前在板端设置 `export LD_LIBRARY_PATH=/soc/lib`(或指向 runtime 库目录)。 |
| |
| ## 在自己的代码里用 |
| |
| ```cpp |
| #include "wake_word.hpp" |
| WakeWordDetector det("model.axmodel", 0.615f, 3); |
| auto r = det.ProcessFrame(int16_512_samples); // 每帧 512 个 int16 |
| // r.wake_score / r.window_sum / r.triggered |
| ``` |
| |
| `WakeWordDetector` 线程内自持 64 帧窗口与得分缓冲,逐帧喂入即可。 |
| |