#!/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}" BSP_LIB_DIR="${AXERA_BSP_LIB_DIR:-${AX650_BSP_LIB_DIR:-${ROOT}/cpp/toolchains/ax650n_bsp_sdk/msp/out/lib}}" BUILD_SCRIPT="cpp/build_ax650.sh" ;; 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:-${ROOT}/cpp/toolchains/ax620e_bsp_sdk/msp/out/arm64_glibc/lib}}" BUILD_SCRIPT="cpp/build_ax630c.sh" ;; *) echo "ERROR: AXERA_TARGET must be AX650 or AX630C" >&2 exit 2 ;; esac if [[ ! -x "${BINARY}" ]]; then echo "ERROR: ${BINARY} is missing; run bash ${BUILD_SCRIPT} first" >&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}"