Hi everyone,
I’m building an offline wake-word engine for Home Assistant, with a focus on languages that are not well covered by existing open-source wake-word models.
The project is called **Voicute**. It currently supports German, French, Japanese, Chinese, and English, and connects to Home Assistant through the native Wyoming protocol.
## Why I built it
Most readily available open-source wake-word models are focused on English. Creating a reliable German, French, Japanese, or Chinese wake word often means collecting audio, setting up a training environment, and tuning the model manually.
My goal was to make that workflow simpler:
1. Enter a custom keyword or phrase.
2. Train a compact model from synthesized speech.
3. Export it as a standard ONNX model.
4. Run it locally through Wyoming.
5. If real-world pronunciation is not recognized reliably, add around five real recordings and retrain.
The resulting model runs completely offline. Audio does not need to be sent to a cloud recognition service during inference.
## Home Assistant integration
The open-source repository includes a Wyoming service, Docker setup, and complete installation instructions. I’ve linked the repository at the end of this post.
Then add it in Home Assistant:
**Settings → Devices & services → Add Integration → Wyoming Protocol**
Use the machine’s IP address and port 10400. After that, select the wake word under:
**Settings → Voice assistants → your assistant → Wake word**
The repository also contains the full setup guide and demo models.
## Current technical details
- Standard ONNX model
- Approximately 128 KB in FP32, or 74 KB with INT8 quantization
- Under 5 ms per frame on desktop in the published tests
- Under 10 ms per frame on ESP32-S3
- Runs on Python, Android, ESP32, Web, and Home Assistant/Wyoming
- Supports single-keyword and multi-keyword models
- Five optional anti-false-trigger filters
The repository currently includes benchmark results for German, French, Japanese, English, and Chinese demo keywords. The published held-out synthetic-speech recall results range from 90.3% to 100%.
These numbers are not intended to replace testing with real microphones, speakers, accents, and room conditions. I would especially appreciate independent real-world testing from Home Assistant users.
## Creating a custom model
Models can currently be generated at:
Training normally takes around 30 minutes. You can start without recording audio, and add real recordings later when a keyword needs better adaptation to a particular pronunciation or voice.
I’d be grateful for feedback on:
- German, French, or Japanese wake words
- Wyoming installation problems
- False triggers in real rooms
- Keywords or accents that perform poorly
- Home Assistant hardware configurations I should test next
The inference engine, Home Assistant service, integration instructions, benchmarks, and demo models are available here:
**Disclosure: I’m the developer of Voicute. The model-generation service is a commercial product, while the inference engine and Home Assistant integration are open source.**