๐ Build a Fully Offline Voice Assistant With Home Assistant
The complete faster-whisper, Piper, and Ollama pipeline wired into Home Assistant Assist, with real latency numbers across built-in intents, a GPU tier, and CPU-only Raspberry Pi hardware.
Derek Holt ยท Local AI & Hardware Writer
ยท 4 min read

A fully offline Home Assistant voice pipeline bolts five pieces of the local voice stack together with a deliberately boring protocol called Wyoming: a wake-word listener, faster-whisper for speech-to-text, Home Assistant's own intent engine, an Ollama-hosted model for anything that engine can't parse, and Piper talking back. Nothing touches the internet once it's running.
I built mine on the same desktop that runs my RTX 4080, which is overkill and exactly the point. I wanted to know what the ceiling felt like before writing about the floor on a Raspberry Pi.
By the numbers
- Built-in intents and Speech-to-Phrase, no LLM involved at all, answer in well under a second per Home Assistant's own documentation
- A GPU with 8GB+ VRAM running a 7B-8B Ollama model gets the full loop, end of speech to first spoken word, down to roughly 1-2 seconds. Community reports on an RTX 3060 12GB land in that range
- The same loop on a Raspberry Pi 5, CPU only, runs closer to 5-8 seconds
- faster-whisper's own CPU benchmark (Intel i7-12700K, small model) cuts a transcription from 6m58s to 2m37s against the original Whisper, the gap that keeps this pipeline usable without a GPU at all (SYSTRAN/faster-whisper)
- The Home Assistant Voice Preview Edition, the reference hardware, is $69 / โฌ59 with a hardware mute switch that physically cuts power to the mics (home-assistant.io)
- A tracked regression, home-assistant/core issue #160534, documents the 2026.1 release adding real lag to Assist's speech-to-text step โ worth a read before updating blind
The pipeline in one pass
| Step | Handles it | Talks over |
|---|---|---|
| Wake word | openWakeWord | Local mic stream |
| Speech-to-text | faster-whisper | Wyoming |
| Intent match | Home Assistant Assist | Built-in, no network at all |
| Fallback conversation | Ollama | Local HTTP API |
| Text-to-speech | Piper | Wyoming |
Most requests never reach the Ollama step. That's the design, not an accident, and it's the whole reason this feels fast in daily use instead of like a chatbot bolted to a light switch.
Three hardware tiers, and what they actually feel like
| Tier | What's running | Real latency |
|---|---|---|
| Built-in intents | No LLM, pattern-matched commands | Well under 1 second |
| GPU, 8GB+ VRAM | 7B-8B Ollama model for open conversation | ~1-2 seconds |
| CPU only (Raspberry Pi-class) | Same 7B-8B model, no GPU | ~5-8 seconds |
The middle tier is where most homes should land. My 4080 handles it without breaking a sweat, but so does a used RTX 3060 12GB, which is the card most of these community reports actually cite. The bottom tier works. It's just not pleasant, and I wouldn't put it anywhere I ask more than "what's the weather."
The setting every guide skips
prefer_local_intents: true. That's it, that's the setting, and half the pipeline tutorials online never mention it. With it enabled, Home Assistant tries its own built-in intent matching first and only escalates to the LLM when nothing matches โ which is most of a normal day's commands. Skip this setting and every "turn on the kitchen lights" pays full LLM latency for no reason.
Setting it up
- Install Home Assistant (OS install or an existing instance both work)
- Add faster-whisper and Piper as Wyoming services, either as Home Assistant add-ons or standalone containers on the network
- Install Ollama and pull a small model: llama3.2:3b or qwen3:4b are the realistic daily-driver picks, not a 70B model nobody's hardware here is running
- Add the Ollama integration in Home Assistant and point it at the local API
- Set
prefer_local_intents: trueunder the conversation agent's options - Build the pipeline in Settings โ Voice Assistants, assigning faster-whisper, Piper, and Ollama to their slots, then test from the Voice PE or the mobile app
Test with something boring first. "What time is it" proves every link in the chain works before anything more ambitious gets asked of it, and it isolates which step broke if the reply never comes back.
Is the Voice PE hardware worth it
Not required. Any mic and speaker Home Assistant can reach over the network works, phone app included. What $69/โฌ59 actually buys is a dual-mic array tuned for this specific job, a rotary volume dial, and a hardware mute switch that cuts power to the mics rather than just flipping a software flag. That last part is the one I'd pay for on principle even if a cheaper mic worked just as well.
Placement matters more than most tutorials admit, hardware aside. A mic within earshot of a running dishwasher or an open window misses wake words constantly, no matter how good the model underneath is. Put whatever ends up handling this job somewhere quiet, not somewhere convenient.
How I sourced the hardware-tier numbers
The GPU-tier latency is from my own desk โ faster-whisper, Ollama, and Piper, all running on the 4080. I don't own a Raspberry Pi 5 to independently re-time the bottom tier, so those numbers are Home Assistant's own documentation and community-reported figures, cited rather than guessed at, and they line up with what the compute math predicts.
Most of what gets said to a voice assistant in a day is "lights off" and "what time is it," and none of that needs an LLM at all. Get prefer_local_intents right and the AI part barely gets invited to the conversation, which is a strange sentence to be able to write honestly about anything in 2026.
Frequently asked questions
โธDo I need the Home Assistant Voice Preview Edition hardware?
No. Any microphone and speaker Home Assistant can reach over the network works, including the mobile app. Voice PE is the $69/โฌ59 turnkey option, and the hardware mute switch that physically cuts mic power is the real reason to buy it rather than build one.
โธHow fast is this compared to Alexa or Google Assistant?
Built-in intents ("turn off the lights") answer in well under a second with no LLM involved at all. An LLM-backed reply on an 8GB+ VRAM GPU lands around 1-2 seconds. The same reply on CPU-only hardware like a Raspberry Pi 5 stretches to roughly 5-8 seconds.
โธWhat does prefer_local_intents actually do?
It tells Home Assistant to try its own built-in intent matching before ever touching the LLM. Most commands are simple device control, not conversation, so this setting alone avoids paying LLM latency for requests that don't need it.
โธCan I run the whole pipeline without a GPU?
Yes, for built-in intents and Piper's TTS output, both run fine on CPU. Budget 5-8 seconds per reply for the fallback conversation agent on a Raspberry Pi-class device; a GPU is what turns that into a 1-2 second wait.
The 5 best AI video finds, every week
New models, tested prompts, and what actually worked in our production โ one short email a week. No spam, unsubscribe anytime.
Written by Derek Holt
Local AI & Hardware Writer
Runs the site's local-inference rig and benchmarks every GPU, quant, and speed-stack claim on it personally before it goes in a guide. Will not shut up about VRAM bandwidth.
Keep learning
GuidesLocal Voice AI: Whisper, TTS & Offline Assistants (2026)
The complete map of the self-hosted voice stack: Whisper and faster-whisper for speech-to-text, Kokoro/Piper/Chatterbox/XTTS for voices, Ollama for the brain, and how they wire together offline.
2026-07-27
GuidesPiper TTS: Fast Offline Voice Synthesis on a Raspberry Pi
Piper runs real-time neural text-to-speech on a Raspberry Pi with no GPU at all. The install, the license change nobody mentions, and which quality tier actually fits a Pi 4 versus a Pi 5.
2026-07-27
GuidesRun Whisper Locally: Free Offline Transcription (2026)
faster-whisper install to first transcript, the large-v3-vs-turbo call I actually make, and what a real file costs on a GPU versus a CPU, with no API bill involved.
2026-07-27
GuidesOllama Complete Guide (2026): Install to Daily Use
Everything we know from running Ollama for real work: install, picking models and quants, the API, context-length tuning, and the mistakes that waste VRAM.
2026-07-10
GuidesBest GPU for Local AI in 2026: A VRAM-First Guide
The GPU guide written from a rig that renders AI daily: why VRAM beats speed, what each budget tier really runs, and the used cards that embarrass new ones.
2026-07-10