The Best Wake Word Tools in 2026, Compared

August 2026 · Voicute

If you need a device to wake on a specific phrase — "OK Lamp", "Hallo Lampe", "こんにちはライト" — you have four real options. They are not equal, and the right one depends on three questions you should answer before looking at any tool:

  1. What language is your keyword? English is easy. Everything else narrows the field fast.
  2. Do you need one keyword or several? A wake word plus commands ("brighter", "off", "dim") is a different problem than a single phrase.
  3. How good does it need to be on day one? And can you recover a weak model with real audio, or are you stuck with what the generator hands you?

The landscape

ToolLanguagesMulti-keywordOutputThe catch
openWakeWordEnglishNo (one word per model)ONNX, freeOfficial models English-only; non-English is DIY with real data
Picovoice / Porcupine8 (frozen since 2023)Yes.ppn, licensedPer-device license, account, closed model
DIY training (WeKws, sherpa-onnx)Any (if you have data)YesONNXPython + GPU + days of tuning + a dataset you must build
VoicuteChinese / English / German / French / JapaneseYes (2–10 in one model)ONNX, no lock-inNewer, smaller player

The gap is clear enough to state in one sentence: free but English-only on one side, multilingual but licensed and pricey on the other. The middle — multilingual, standard ONNX, no per-device fee, multi-keyword — used to be empty.

openWakeWord: the safe default, for English

If your keyword is English and you want a single wake word, openWakeWord is the obvious choice. It's free, it runs on the Home Assistant Voice Preview Edition out of the box, and it's battle-tested. The honest limitation: its official models are English-only, and each model detects one word. Train a German model yourself and you're back to collecting data, setting up Python/CUDA, and tuning hyperparameters.

Picovoice / Porcupine: capable, but it locks you in

Porcupine does multilingual and multi-keyword, and it works well. The cost is the business model: a per-device license, an account, and a proprietary .ppn format. When you ship, your device depends on a vendor you don't control, and language support hasn't meaningfully expanded in years.

DIY: full control, high price

Training your own keyword spotter with WeKws or sherpa-onnx is real, and it's what you do when nothing else fits. But "full control" means you own every step: collecting hundreds of varied recordings, cleaning, VAD, augmentation, training, evaluation. Realistic for a team, brutal for a single hardware project.

The three things to check in any generator

Whatever you pick, interrogate it on three points. Most generators fail at least one.

1. Does it actually do your language?

"Multilingual" sometimes means "English plus a couple of accents". For German, French, Japanese, or Chinese keywords, ask for a demo in that language before you pay. See our German walkthrough for what non-English support should look like.

2. Can one model do more than one word?

A wake word alone isn't a voice UI. Users expect to say the wake word, then a command. If the tool needs a separate model per word — or a whole ASR system for the commands — your integration just got a lot heavier. A single model handling 2–10 keywords in one pass (~100 KB, <5 ms) is the difference. More on this in the multi-keyword article.

3. Can you recover a bad model with real audio?

Pure TTS-synthesized training data gets you to "standard pronunciation" — roughly 90% of the way. Real users have accents, mumble, and talk over the TV. The fix is to add a handful of real recordings and retrain. If the generator doesn't offer that, you're stuck with whatever the TTS gave you.

How to verify instead of trusting a "90%+" claim

Every vendor will tell you their recall is great. You don't have to take it on faith. Voicute's models and inference engine are open source at github.com/voicute/onnx-wakeword — clone it, load a model, and measure recall on your own audio. If a vendor can't point you to something you can test, treat the number as marketing.

Train your wake word →