File size: 2,566 Bytes
12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 759d0dd 12d8ee3 f03296e 12d8ee3 f03296e 12d8ee3 f03296e 12d8ee3 f03296e 12d8ee3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | # openWakeWord C++(HF 发布版)
本目录只包含**预编译产物**:可直接运行的二进制与供二次开发链接的共享库。
源码、构建脚本与 BSP 下载在 GitHub 仓库:
<https://github.com/AXERA-TECH/openWakeWord.AXERA>。
## 目录
```text
cpp/
├── bin/
│ ├── openwakeword_ax650 # AX650 预编译可执行文件
│ └── openwakeword_ax630c # AX630C 预编译可执行文件
├── lib/
│ ├── ax650/libopenwakeword_ax.so # AX650 共享库
│ └── ax630c/libopenwakeword_ax.so # AX630C 共享库
├── include/openwakeword_ax.hpp # 公共 API 头文件
└── run_openwakeword_ax*.sh # 板端单条运行脚本
```
WAV、STFT、mel 在 CPU 端完成,embedding 与 6 个 classifier 使用对应平台的
axmodel 在 NPU 执行。
## 板端运行(预编译二进制)
AX650:
```bash
AUDIO=audio/openwakeword/alexa_test.wav bash cpp/run_openwakeword_ax650.sh
```
AX630C:
```bash
AUDIO=audio/openwakeword/alexa_test.wav bash cpp/run_openwakeword_ax630c.sh
```
运行脚本自动设置板端运行库路径(AX650 默认 `/soc/lib`,AX630C 默认
`/opt/lib`);如 BSP 在其他位置,用环境变量覆盖:
```bash
AXERA_BSP_LIB_DIR=/path/to/bsp/lib bash cpp/run_openwakeword_ax650.sh
```
阈值可通过 `THRESHOLD` 调整。输入音频必须为 16 kHz、单声道、16-bit PCM WAV。
## 二次开发(共享库)
```cpp
#include "openwakeword_ax.hpp"
openwakeword::WakeWordDetector detector(
"models/650", // axmodel 目录
"config/openwakeword_mel_weights.bin", // CPU mel 权重
0.5f); // 阈值
// 每 80ms 喂一帧 1280 个 int16 样本(16 kHz)
openwakeword::FrameResult result = detector.ProcessFrame(pcm_frame);
for (std::size_t i = 0; i < result.names.size(); ++i) {
printf("%s max_score=%.4f\n", result.names[i].c_str(),
result.max_scores[i]);
}
if (result.any_triggered) { /* 唤醒 */ }
detector.Reset(); // 新会话时清空流式状态
```
在自己的 CMake 工程中链接:
```cmake
add_library(openwakeword_ax SHARED IMPORTED)
set_target_properties(openwakeword_ax PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/cpp/lib/ax650/libopenwakeword_ax.so")
target_include_directories(your_app PRIVATE cpp/include)
target_link_libraries(your_app PRIVATE openwakeword_ax)
```
板端运行时需提供 BSP 动态库路径(AX650 通常为 `/soc/lib`,AX630C 为
`/opt/lib`)。
|