How Do I Train a Custom Wake Word for Home Assistant?
Train your phrase online, evaluate the Basic model in the console, then decide whether to download it and run wake-word detection locally through Wyoming.
Workflow
- Enter a phrase and language: English, Chinese, Spanish, Japanese, German, French or Hindi.
- Train the Basic model and test it with your own microphone before purchase.
- If you continue, download the ONNX package.
- Run the open-source Wyoming service and add it to Home Assistant.
- Validate misses and false triggers on the final microphone and room.
Can the same custom model run outside Home Assistant?
Yes. The model is delivered in standard ONNX/TFLite formats, so Home Assistant is one deployment target rather than a model lock-in. The current supported targets are:
| Platform | Typical deployment path |
|---|---|
| ESP32 | INT8 TFLite/TFLite Micro for embedded inference |
| Raspberry Pi | ONNX Runtime or TFLite for Python, GPIO and local services |
| Android | ONNX Runtime inside a mobile application |
| Web | ONNX Runtime Web/WASM in the browser |
| Windows | ONNX/TFLite runtime for desktop applications |
| macOS | ONNX/TFLite runtime for desktop applications |
| Linux | ONNX Runtime or TFLite for edge and desktop systems |
| Home Assistant | ONNX plus Wyoming or a local voice integration |
The model format is portable, but the audio capture, preprocessing, memory budget and threshold still need to be validated on the final microphone and device.
What is the Wyoming protocol?
Wyoming is the open protocol Home Assistant uses to talk to voice hardware and services — Assist satellites, wake-word engines, speech-to-text and text-to-speech servers. A Wyoming service exposes a TCP endpoint that speaks JSON events with chunked binary audio; the Wyoming Protocol integration in Home Assistant connects to it, and the device shows up ready to select in your Assist pipeline.
Each service type has a conventional port: speech-to-text
(faster-whisper) on 10200, text-to-speech (Piper) on
10300, wake word on 10400. The Voicute
Wyoming service follows the 10400 convention, so it
behaves like any other wake-word satellite: Home Assistant streams
audio from the Assist pipeline, the service streams back detections.
Common setup problems
-
Integration can't connect: check the host is
reachable and port
10400is open on the firewall of the machine running Docker. -
Wake word never fires: confirm the models volume is
mounted (
-v ...:/models) and themodel_info.jsonpath is correct; check container logs for load errors. - Detects but Assist does nothing: the wake-word device must be selected inside the voice assistant pipeline configuration — connecting it is not the same as enabling it.
Connect it to Home Assistant
docker run -d --name voicute-wakeword --restart unless-stopped --network host \
-v /path/to/your/models:/models \
voicute/voicute-wyoming:latest \
--model-info /models/model_info.json --mel /app/models/melspectrogram.onnx
In Home Assistant open
Settings → Devices & services → Add Integration → Wyoming
Protocol, enter the server IP and port 10400, then select the wake
word in the voice assistant configuration.
Wyoming setup and Docker guide · Home Assistant Add-on source · View the open-source inference engine and demo models →