Local AI Voice Assistant Setup in Home Assistant (Offline Guide)
Setting up a local AI voice assistant in Home Assistant means you can talk to your smart home without any of your words ever leaving your house. No cloud, no subscription fee, no “service unavailable” error because your ISP had a bad night. Every recording, every wake word, every command stays on your own network. This guide covers the whole stack, hardware, software, configuration, so you can have a working offline voice pipeline by the end of an afternoon.
Why Go Local Instead of Cloud-Based Voice Assistants
Cloud assistants like Alexa or Google Assistant ship every single thing you say off to a remote server somewhere. A few consequences follow from that:
- Latency depends entirely on your internet connection. Slow Wi-Fi, slow response.
- Privacy gets handed to a third party that may log, store, or run analysis on your voice data. You rarely know which.
- Reliability collapses the second your internet drops. No connection, no assistant.
A local setup does speech-to-text, intent recognition, and text-to-speech right there on your own hardware. Say “turn off the living room lights” and it’s done in under a second, even if your router’s internet light is blinking red.
The Core Components You’ll Need
Home Assistant’s voice pipeline is built from a handful of open-source pieces, most of them running on the Wyoming protocol (a lightweight network protocol built for streaming audio between voice services).
- Wake word detection –
openWakeWordorPorcupinelisten locally for a trigger phrase, something like “Hey Jarvis.” - Speech-to-text (STT) –
Whisper(via thefaster-whisperadd-on) turns spoken audio into text. - Intent recognition – Home Assistant’s built-in conversation engine maps text to actions. Want something more conversational? Hook up a local LLM like Llama 3 through Ollama instead.
- Text-to-speech (TTS) –
Piper, fast and surprisingly natural-sounding for an offline engine. - Satellite hardware – a mic/speaker device running the Wyoming satellite software. Could be a Raspberry Pi with a ReSpeaker HAT, or the official Home Assistant Voice Preview Edition device if you’d rather not tinker.
Step-by-Step Setup
1. Install the Required Add-ons
On Home Assistant OS or Supervised installs, head to Settings → Add-ons → Add-on Store and grab:
- Whisper
- Piper
- openWakeWord
Each one runs as its own local container, exposing a Wyoming-compatible endpoint.
2. Configure the Assist Pipeline
Go to Settings → Voice Assistants → Add Assistant, then set things up like this:
- Conversation agent: “Home Assistant” (built-in), or your local LLM integration if you’ve set one up.
- Speech-to-text: Whisper.
- Text-to-speech: Piper.
- Wake word: openWakeWord, pick a model such as “Hey Jarvis” or “OK Nabu.”
3. Set Up Your Satellite Device
Going the Raspberry Pi route?
- Flash the Wyoming satellite image, or install
wyoming-satelliteby hand if you want more control. - Plug in a USB mic and speaker (a ReSpeaker 2-Mic HAT works better for picking up voices from across the room).
- Point the satellite config at your Home Assistant instance’s IP address and port.
If you’ve bought the Home Assistant Voice Preview Edition, skip all of that. It finds your instance on the network automatically.
4. Test and Tune
Say the wake word, then try a command, “set the thermostat to 70 degrees” works well as a test. Head to Settings → Voice Assistants → Debug afterward to check transcription accuracy and response time. A few common fixes:
- Dial down wake word sensitivity if it’s triggering on random noise.
- Stick with a smaller Whisper model (
tinyorbase) on something modest like a Raspberry Pi 4. Got a mini PC with more CPU to spare? Go forsmallormedium. - Throw in GPU acceleration, even a cheap Nvidia card, and Whisper transcription speeds up noticeably.
Adding Smarter Conversations with a Local LLM
Rigid command phrasing gets old fast. Connect Home Assistant to a self-hosted LLM through Ollama, running Llama 3 or Mistral, and you can say something like “it’s a bit stuffy in here.” The assistant figures out you want the fan on, no need to recite an exact command.
Hardware Recommendations
- Budget: Raspberry Pi 4 (4GB) with a USB mic/speaker. Handles Whisper
tiny/basejust fine. - Mid-range: A mini PC (Intel N100) running Whisper
smallwith headroom left over. - Best experience: Home Assistant Voice Preview Edition paired with a server-grade machine or GPU box running the heavier models.
Conclusion
A local AI voice assistant in Home Assistant gets you that Alexa-style convenience minus the part where your words get shipped to a data center. Whisper, Piper, and openWakeWord handle speech right on your own network, and if you want it to understand you a bit better, bolt on a self-hosted LLM. The payoff: quicker responses, actual privacy, and a system that keeps running even when the internet doesn’t. Start simple, get Whisper and Piper working as a basic pipeline, then once that’s solid, branch out into LLM-powered conversations.