Train an ONNX Wake Word Model Online in 2026
A wake word is the short phrase that activates a voice assistant or application. With an online training workflow, you can enter your own phrase, generate a portable ONNX model, and run detection locally without maintaining a speech-data and GPU training pipeline.
Wake word or speech recognition?
A wake-word model answers one narrow question: “Did the target phrase occur?” It does not transcribe free-form speech. This makes keyword spotting suitable for an always-listening first stage. After activation, your application can start an ASR engine, open a dialog, or execute a local action.
The online training workflow
Choose a distinctive phrase
Prefer a phrase with several syllables that is uncommon in normal conversation. Very short and frequent words are harder to separate from everyday speech.
Select the language and model type
Voicute currently supports Chinese, English, Japanese, German, and French. A Basic model uses synthesized voices; Voice Enhancement adds about five selected real recordings when an accent or unusual pronunciation needs extra coverage.
Submit the training task
The service generates varied speech, applies acoustic augmentation, trains the target model, and packages the result. A Basic single-keyword model normally takes about 30 minutes, depending on the queue.
Evaluate the Basic model before purchase
Use your own microphone in the console. Try natural pronunciation and ordinary background speech to observe both intended activations and false triggers. This informs the purchase decision; it is not a production-readiness guarantee.
Decide whether to download
If you want to continue, purchase the model package and validate it again on the final microphone, distance, and noise conditions. The open-source runtime contains examples for Python, Android, Web, ESP32 and Home Assistant.
Run the downloaded model with Python
git clone https://github.com/voicute/onnx-wakeword.git
cd onnx-wakeword
pip install onnxruntime numpy pyaudiofrom python.wakeword_engine import WakeWordEngine
engine = WakeWordEngine()
engine.load("models/model_info.json", "models/melspectrogram.onnx")
engine.set_L1(True)
engine.start(lambda word, probability, info:
print(f"Detected: {word} ({probability:.0%})"))The callback can start an assistant, enable recording, open a local UI, or publish an event. Runtime inference stays on the device and does not require a Voicute AccessKey.
Where can the ONNX model run?
| Target | Typical runtime | Use case |
|---|---|---|
| Python | ONNX Runtime | Linux, Windows, macOS, Raspberry Pi |
| Android | ONNX Runtime Android | Apps, tablets, dedicated terminals |
| Browser | ONNX Runtime Web / WASM | Local microphone controls and web tools |
| ESP32-S3 | TFLite Micro-compatible export | IoT controllers and embedded devices |
| Home Assistant | Wyoming service | Local voice assistants |
When one wake word is not enough
If the application must recognize “turn on,” “turn off,” “next,” and “stop” directly, use a multi-keyword KWS model instead of stacking separate wake-word models. See the online ONNX keyword-spotting training guide.