Multiple Wake Words, One Model
Most wake word engines assume one model detects one phrase. But "wake words" are not the same as commands: a wake word is how a device answers to its name. And names are personal — which is exactly why real products end up needing more than one.
Why products need several wake words
- Every family member has their own phrase. Dad says "Xiao You", the kids shout "Xiao Na". One model with both means the device answers whoever calls — no fighting over the wake word.
- One firmware, several SKUs. Same hardware, three brand names, three wake words. A multi-word model lets the whole product line share a single firmware image.
- Change the wake word without a reflash. Classic offline solutions need a firmware update — sometimes a factory return — to change one word. With a multi-word model, switching is a one-line config edit.
- All the ways people say it. "Xiaorui" gets called as "Xiaorui Xiaorui" or "Hey Xiaorui". Put every variant in the model and users can address the device however they like.
One model vs. a pile of models
| One model per word | One multi-word model | |
|---|---|---|
| Files to deploy | N ONNX files | 1 ONNX file |
| Size for 10 words | ~1.28 MB | 167 KB |
| Inference per frame | N passes | 1 pass, all results at once |
| Cross-word confusion | Unconstrained, models mix easily | Trained together, naturally separated |
| Switching wake words | Swap model files | Edit one config line |
Switching wake words is a config edit
A multi-word model ships with a model_info.json where every phrase is one entry:
{
"model_type": "dscnn",
"mel_time": 98,
"multi_model": true,
"models": [
{"wake_word": "Xiaoyou", "model_file": "xiaoyou.onnx", "cons_frames": 2},
{"wake_word": "Xiaona", "model_file": "xiaona.onnx", "cons_frames": 2},
{"wake_word": "Hey Xiaoyou", "model_file": "heyxiaoyou.onnx", "cons_frames": 2}
]
}
The device listens for every listed word by default; delete an entry and that word goes quiet — no retraining, no firmware change. This is the practical payoff of one-model-many-words: the freedom to change the wake word stays with you, not the factory.
What about false triggers?
More words means more surface area for false wakes, so this is the question to ask. Two layers of defense:
- In training: all wake words live in one model and each word acts as a negative sample for the others, so they stay well separated. One round of R1 false-trigger optimization cut false wakes from hundreds per hour to single digits (about 95% average reduction) in our tests.
- At inference: the open-source runtime ships 5 toggleable anti-false-trigger layers (consecutive-frame filtering, cooldown, energy-jump gating, and more).
Where multi wake word fits
| Scenario | Wake words | Word count |
|---|---|---|
| Smart speaker / home | Each family member's phrase | 2–4 |
| Multi-SKU product line | Brand word per model variant | 3–6 |
| Toys / edutainment | Character name + nicknames | 3–8 |
| Automotive | Brand word in two languages | 2–4 |
| Robotics | Name + repeated-name call | 2–5 |
How to get one
On Voicute, pick the multi-keyword tier, type your wake words separated by commas, and the platform synthesizes training speech and delivers a trained ONNX model in about 15–25 minutes. 2–10 words in one model, priced per tier: 3 words $85, 5 words $99, 8 words $125, 10 words $149 — pay once, deploy on unlimited devices.
The model is standard ONNX and runs fully offline on Android / Linux / Windows / Web / ESP32 with the open-source onnx-wakeword runtime. If you need action commands like "play" and "pause" rather than names, see Multi-Keyword Wake Word Detection.
Create your multi wake word model →