Files
2025-09-16 15:05:18 -05:00

44 lines
1.2 KiB
Python

"""Tests for microWakeWord."""
import wave
from pathlib import Path
from linux_voice_assistant.microwakeword import MicroWakeWord, MicroWakeWordFeatures
from linux_voice_assistant.util import is_arm
_TESTS_DIR = Path(__file__).parent
_REPO_DIR = _TESTS_DIR.parent
_MICRO_DIR = _REPO_DIR / "wakewords"
if is_arm():
_LIB_DIR = _REPO_DIR / "lib" / "linux_arm64"
else:
_LIB_DIR = _REPO_DIR / "lib" / "linux_amd64"
libtensorflowlite_c_path = _LIB_DIR / "libtensorflowlite_c.so"
def test_features() -> None:
features = MicroWakeWordFeatures(
libtensorflowlite_c_path=libtensorflowlite_c_path,
)
ww = MicroWakeWord.from_config(
config_path=_MICRO_DIR / "okay_nabu.json",
libtensorflowlite_c_path=libtensorflowlite_c_path,
)
detected = False
with wave.open(str(_TESTS_DIR / "ok_nabu.wav"), "rb") as wav_file:
assert wav_file.getframerate() == 16000
assert wav_file.getsampwidth() == 2
assert wav_file.getnchannels() == 1
for micro_input in features.process_streaming(
wav_file.readframes(wav_file.getnframes())
):
if ww.process_streaming(micro_input):
detected = True
assert detected