44 lines
1.2 KiB
Python
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
|