Hey Yossi: openWakeWord model, v1

A custom "Hey Yossi" wake word for openWakeWord, trained 2026-10-29 for a personal voice assistant. It is a small classifier on openWakeWord's frozen speech embeddings, so it runs in real time on any CPU, Raspberry Pi included. No quantised build is needed.

File For
hey_yossi.tflite (206 KB, float32) Home Assistant (Wyoming openWakeWord add-on), Raspberry Pi, Android, openWakeWord's default tflite runtime
hey_yossi.onnx (205 KB) Desktop and laptop with inference_framework="onnx"

Both give identical scores: the largest difference over 3,000 windows was 1e-6, and the held-out results below are the same for both. The TFLite file keeps openWakeWord's [1, 16, 96] input.

Not covered: microWakeWord, which ESPHome devices, Home Assistant Voice PE and the HA Android app's on-device wake word use. That is a different model, and it needs its own training run.

Home Assistant

  1. Copy hey_yossi.tflite to /share/openwakeword/ on the Home Assistant host.
  2. Reload the openWakeWord (Wyoming) integration.
  3. Go to Settings > Voice assistants > your assistant > Wake word, choose openwakeword, then hey_yossi.

Detection runs on the server, so it serves satellites that stream audio to Home Assistant.

This is a first, personal model. It was trained on two voices only, Daniel's (Irish English) and Hannah's, recorded at one laptop desk, and may work less well for other speakers.

Use

from openwakeword.model import Model
model = Model(wakeword_models=["hey_yossi.tflite"])  # or "hey_yossi.onnx", inference_framework="onnx"
scores = model.predict(frame)  # frame: 1280 samples (80 ms) of 16 kHz 16-bit mono audio
if scores["hey_yossi"] >= 0.8:
    ...

Threshold: use 0.8. The model's scores top out at about 0.88, so a threshold of 0.9 never fires.

Results (v1)

On held-out real takes (the dataset's test split, never trained on), streamed in 80 ms frames:

Threshold "Hey Yossi" (43) "Hey Yossi, " (12) Near-misses fired (20) False triggers / h, 10.7 h general audio
0.5 93% 100% 25% 2.5
0.7 88% 100% 25% 2.0
0.8 86% 100% 20% 1.1
0.85 77% 92% 0% not measured
  • Near-misses that still fire: "Yossi" on its own, "Yo Yossi" and "Hey Yoni".
  • Takes it misses (6 at 0.8): 2 of Hannah's 3 test takes (cheerful, Israeli accent), Daniel's "tired", and 3 of Daniel's that just miss at 0.67 to 0.78 (normal, next room, annoyed). Hannah had about 17 positive takes in training.
  • False-trigger audio: openWakeWord's validation_set_features.npy, about 11 h of mixed speech, music and noise.

Training (lean recipe)

  • Positives: 185 real takes of "Hey Yossi" from danielrosehill/Wake-Words at revision 90fcadbd906b8cd972b720f027f07a10a482db3f, each added 20 times. Every copy was augmented anew with MIT room impulse responses, AudioSet background noise, and openWakeWord's own pitch, EQ and gain changes. There are no TTS or synthetic voices.
  • Negatives:
    • 90 real near-miss takes ("Hey Rossi", "Oh Yossi", "Hey Siri", "Alexa" and others), each 20 times.
    • A 200 h slice (the first 10%) of openWakeWord's ACAV100M precomputed negative features.
  • Model and run:
    • openWakeWord train.py, commit 368c037
    • DNN, layer size 32, 20,000 steps, target 0.2 false triggers per hour
    • 14.5 min on one Modal T4
  • Code: training/ in the private repo danielrosehill/Wake-Words, entry point run.sh. The TFLite file comes from training/onnx_to_tflite.py: the head is rebuilt in TensorFlow from the ONNX weights, because onnx2tf 1.26 transposed the input to [1, 96, 16].

Next

Ways to improve it:

  • record Background clips and more of Hannah's takes
  • add the logged false triggers as negatives
  • add near-miss takes of "Yossi" and "Yo Yossi"

Licence: CC BY-NC 4.0. The ACAV100M negative features, AudioSet noise and MIT impulse responses used in training carry mixed licences, so the model is for non-commercial, personal use (as openWakeWord's own models).

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Dataset used to train danielrosehill/Hey-Yossi-openWakeWord