Stable 90%+ Wake Word Recall — From-Scratch vs Frozen Embeddings
"90%+ recall" is a promise most wake-word tools make but few keep consistently. openWakeWord's custom models swing from 25% to 90% depending on the word and the day. Here's what "stable" actually means, and why from-scratch training delivers it.
What unstable recall looks like
- openWakeWord's automated training notebook has produced models at 25.7% recall (issue #110).
- The pretrained models that reached 90%+ each needed different hyperparameters — "no single set works across all wake words" (discussion #171).
- An independent benchmark put openWakeWord at 69% recall and 8.5 false triggers per hour.
That's the pattern: a number that looks fine in one benchmark, then falls apart for the next word. Here's the full mechanism.
Why frozen embeddings are inherently unstable
openWakeWord freezes a speaker-verification embedding and trains only a small head per word. That embedding was trained to answer "who is speaking?" — which requires it to ignore "what is being said." Wake-word detection is the exact opposite task. The mismatch means some words separate cleanly in that borrowed space and some don't, so recall becomes a lottery.
Why from-scratch training is stable
Voicute trains a temporal convolutional network from scratch for each word. The filters learn the acoustic shape of your word directly — no borrowed feature space to fight against. The convolutional inductive bias (local connections, weight sharing, translation invariance) is what makes it data-efficient: the model generalizes from synthetic training audio to real speakers and noisy rooms without the recall collapsing.
The result is stable 90%+ recall: the same number for English, German, French, Japanese, and Chinese, across voices and noise levels — with no per-word tuning.
| Frozen embedding (openWakeWord) | From-scratch TCN (Voicute) | |
|---|---|---|
| Recall | 25%–90%, word-dependent | Stable 90%+ |
| Word-picking | Yes | No |
| Non-English | ~0.001 scores | Native EN / DE / FR / JA / ZH |
| Tuning | Per-word hyperparameters | None |
FAQ
What does stable recall mean for a wake word?
Stable recall means the model hits 90%+ across different words, voices, and noise levels — not 90% for one lucky word and 25% for another. It's the difference between a wake word that works and one you keep re-tuning.
Why is openWakeWord's recall unstable?
openWakeWord builds each word on a frozen English speaker-verification embedding that was trained to ignore what is said. That objective mismatch causes word-picking and recall that swings from ~25% to ~90%.
How does from-scratch training keep recall stable at 90%+?
A from-scratch TCN learns the acoustic shape of the target word directly, so there's no borrowed feature space to fight against. Convolutional inductive bias makes it data-efficient and stable under noise and speaker variation.
Do non-English wake words also get stable 90%+ recall?
Yes. Because each model is trained in the target language, German, French, Japanese, and Chinese wake words hold the same stable 90%+ recall as English.
Train a stable wake word →