Multilingual offline wake words for Home Assistant via Wyoming

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.**