#!/usr/bin/env bash set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" TARGET="${AXERA_TARGET:-AX650}" AUDIO="${AUDIO:-${ROOT}/audio/openwakeword/alexa_test.wav}" THRESHOLD="${THRESHOLD:-0.5}" case "${TARGET}" in AX650) BINARY="${ROOT}/cpp/bin/openwakeword_ax650" MODELS_DIR="${MODELS_DIR:-${ROOT}/models/650}" # 板端运行库默认路径(AX650 通常为 /soc/lib),可用 AXERA_BSP_LIB_DIR 覆盖 BSP_LIB_DIR="${AXERA_BSP_LIB_DIR:-${AX650_BSP_LIB_DIR:-/soc/lib}}" ;; AX630C) BINARY="${ROOT}/cpp/bin/openwakeword_ax630c" MODELS_DIR="${MODELS_DIR:-${ROOT}/models/630C}" BSP_LIB_DIR="${AXERA_BSP_LIB_DIR:-${AX630C_BSP_LIB_DIR:-/opt/lib}}" ;; *) echo "ERROR: AXERA_TARGET must be AX650 or AX630C" >&2 exit 2 ;; esac if [[ ! -x "${BINARY}" ]]; then echo "ERROR: 预编译二进制不存在: ${BINARY}(HF 发布版应包含 cpp/bin/)" >&2 exit 2 fi for name in embedding_model alexa_v0.1 hey_jarvis_v0.1 hey_mycroft_v0.1 \ hey_rhasspy_v0.1 timer_v0.1 weather_v0.1; do model="${MODELS_DIR}/openwakeword__${name}.axmodel" if [[ ! -f "${model}" ]]; then echo "ERROR: ${TARGET} model is missing: ${model}" >&2 exit 2 fi done export LD_LIBRARY_PATH="${BSP_LIB_DIR}:${LD_LIBRARY_PATH:-}" exec "${BINARY}" \ --models-dir "${MODELS_DIR}" \ --mel-weights "${ROOT}/config/openwakeword_mel_weights.bin" \ --audio "${AUDIO}" \ --threshold "${THRESHOLD}"