AI Voice Assistant v1.4.1
This one grew into a much bigger release than the version number suggests. Highlights: a new supported device, two new voice engines (including a fully local one), music control, Wi-Fi setup over Bluetooth, and a long list of stability fixes.
New device: ThirdReality Voice & Music Assistant
- Full support as a voice satellite — pairing, wake word, conversations and music playback.
- New Flow trigger for the device’s physical button (single, double, triple and long press).
- Tuned microphone gain and a connection keepalive so the link stays stable.
New voice engines
- Mistral joins OpenAI and Google Gemini as a voice engine — Voxtral realtime speech recognition and Voxtral voices, with full smart-home tool support.
- Custom pipeline — run the assistant on your own hardware, with no cloud required. Mix and match each stage:
- Speech-to-text: Whisper, Wyoming faster-whisper (the Home Assistant add-on), Mistral Voxtral (including realtime streaming), or any OpenAI-compatible server.
- Language model: Ollama, LM Studio, Mistral, or any OpenAI-compatible server (Groq, OpenRouter, DeepSeek, llama.cpp, vLLM…).
- Text-to-speech: Piper, Wyoming Piper, Mistral Voxtral, or any OpenAI-compatible server.
- The assistant starts speaking sentence-by-sentence while the language model is still writing, and streaming speech recognition means the transcript is ready the moment you stop talking.
- Small local models are protected against context-window overflow, with a configurable context size for Ollama.
- OpenAI users are automatically migrated off the deprecated gpt-realtime models.
Wi-Fi setup over Bluetooth
Brand-new devices can now be put on your Wi-Fi directly from the pairing wizard in the Homey app, over Bluetooth (Improv BLE). No Home Assistant, ESPHome tooling or USB cable needed — power the device, pair, enter your Wi-Fi credentials, done. Works for both the Voice PE and the ThirdReality.


New assistant abilities (all optional, off by default)
- Music — control Music Assistant by voice on both devices: play artists/albums/playlists, pause, volume, “what’s playing?”. Compatible with Music Assistant 2.9.
- Shopping list — manage your Bring! shopping list by voice.
- Web search — let the assistant look things up on the web (OpenAI or Brave as search provider).
Settings page redesign
- Reorganized into sections with a dropdown, one section per feature.
- A live token-budget meter shows what each enabled feature costs in prompt tokens — with a per-feature breakdown and toggles, and a green/amber/red verdict against your local model’s context window.
- Per-stage Test buttons for the custom pipeline, so you can verify each server befo
- Choose the active wake word, and pick voices per TTS backend (Piper voices, Voxtral voice library, or free-text for OpenAI-compatible servers).
Better audio feedback
- The device now plays a welcome sound when it connects after pairing, so you know the link works.
- If a reply fails mid-conversation (connection drop, service error) you now hear a short error sound instead of silence.
- All spoken feedback clips re-recorded to be provider-neutral (they no longer assume you use OpenAI).
Flows & diagnostics
- New Flow triggers “Heard something” (with the transcript) and “Thinking” — han flows around the assistant.
- Optional remote logging to your own syslog collector (e.g. VictoriaLogs) for troubleshooting.
Reliability
Two full external code reviews were done on the app, with dozens of fixes landing in this release. The most noticeable ones:
- The assistant now recovers automatically if the connection dies right as you wake it.
- Speech recognition accuracy improved (dedicated transcription model), and replies are anchored to what was actually transcribed — fewer answers to a mis-heard question.
- Fixed very short replies being dropped, reply audio playing out of order, reconnect stseveral rare crashes.
- All outbound network calls (weather, geocoding, etc.) now have timeouts, and settings saves are transactional.
As always: feedback, bug reports and feature ideas are very welcome!