📝 Tutorials
· 6 min read

Run a Local AI Voice Assistant with Home Assistant + Ollama (2026)


Every time you ask Alexa to turn off the lights, that audio clip travels to Amazon’s servers, gets processed, and comes back. Your voice data sits in a corporate database indefinitely. In 2026, you don’t have to accept that trade-off anymore.

With Home Assistant, Whisper, Piper, and Ollama running on hardware you own, you can build a voice assistant that never phones home. No subscriptions, no cloud dependency, no data harvesting — and it still works when your internet goes down.

Why go local?

Three reasons keep coming up:

Privacy. A local assistant processes speech on your hardware. No recordings leave your network. If you’re operating under GDPR or similar regulations, this simplifies compliance dramatically — there’s no third-party processor to audit.

No subscriptions. Cloud voice assistants increasingly gate features behind paid tiers. A local stack has zero recurring costs after the initial hardware investment.

Offline reliability. Your lights, thermostat, and locks keep responding even when your ISP is having a bad day. The entire pipeline — wake word detection, speech-to-text, intent processing, text-to-speech — runs on your LAN.

The stack

Here’s what each piece does:

ComponentRoleProtocol
Home AssistantSmart home hub, orchestrator
WyomingLightweight protocol connecting voice servicesWyoming
Whisper (faster-whisper)Speech-to-text (STT)Wyoming
PiperText-to-speech (TTS)Wyoming
OllamaLLM brain for conversation and intent handlingHTTP API
openWakeWordWake word detection (“OK Nabu”, or custom)Wyoming

The Wyoming protocol is Home Assistant’s glue layer for voice. Each service — STT, TTS, wake word — runs as a standalone Wyoming server. Home Assistant discovers them automatically. This modular design means you can swap components without rebuilding the whole pipeline.

Ollama serves as the conversational brain. Instead of rigid intent matching, the LLM interprets natural language and maps it to Home Assistant actions. Check out our complete Ollama guide if you’re new to running local models.

Hardware requirements

You don’t need a server rack, but you do need more than a Raspberry Pi Zero.

Minimum (good enough):

  • Raspberry Pi 5 (8 GB) or any x86 mini PC with 16 GB RAM
  • USB microphone + speaker (or a ReSpeaker satellite)
  • 32 GB+ storage

Recommended (smooth experience):

  • Mini PC with 32 GB RAM and an NVIDIA GPU (even a GTX 1660 helps)
  • Dedicated satellite mic like the M5Stack ATOM Echo
  • SSD storage

The bottleneck is Ollama. Smaller models like phi3:mini or llama3.2:3b run fine on a Pi 5, but response times improve significantly with a GPU. Whisper and Piper are lightweight — they barely register on a modern CPU. For more on running AI workloads on constrained hardware, see our Raspberry Pi AI guide.

Step-by-step setup

This guide assumes you already have Home Assistant OS running. If you’re on Home Assistant Container or Core, the process is similar but you’ll manage add-ons as Docker containers yourself.

1. Install the voice pipeline add-ons

Go to Settings → Add-ons → Add-on Store and install:

  • Whisper (uses faster-whisper under the hood)
  • Piper
  • openWakeWord

Start each add-on and confirm they show as “Running.” Home Assistant auto-discovers Wyoming services, so they should appear under Settings → Voice assistants within a few seconds.

2. Install and configure Ollama

If Ollama isn’t already running on your network, install it on the machine with the most horsepower:

curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.2:3b

Make sure Ollama is accessible from your Home Assistant instance. By default it listens on http://localhost:11434. To expose it on your LAN:

OLLAMA_HOST=0.0.0.0 ollama serve

3. Connect Ollama to Home Assistant

Install the Ollama Conversation integration:

  1. Go to Settings → Devices & Services → Add Integration
  2. Search for “Ollama”
  3. Enter your Ollama server URL (e.g., http://192.168.1.50:11434)
  4. Select your model (llama3.2:3b works well for intent handling)
  5. Configure the system prompt — this is where you tell the model about your Home Assistant setup

A solid starting system prompt:

You are a helpful smart home assistant running on Home Assistant.
You can control lights, switches, climate devices, and media players.
When the user asks to control a device, respond with the action and entity.
Keep responses short and conversational.
Available areas: Living Room, Bedroom, Kitchen, Office.

4. Create a voice pipeline

Navigate to Settings → Voice assistants and click Add assistant:

  • Name: Local Voice
  • Conversation agent: Ollama
  • Speech-to-text: Whisper (faster-whisper)
  • Text-to-speech: Piper
  • Wake word: openWakeWord

Set this as your default assistant. You can test it immediately using the microphone icon in the Home Assistant UI — no physical hardware needed yet.

5. Add a voice satellite (optional)

For a hands-free experience, you need a satellite device with a mic and speaker. The ESP32-S3-BOX-3 and M5Stack ATOM Echo are popular choices. Flash them with the ESPHome voice assistant firmware:

voice_assistant:
  microphone: my_microphone
  speaker: my_speaker
  on_wake_word_detected:
    - light.turn_on:
        id: led
        effect: "Listening"

The satellite streams audio to Home Assistant over your local network. Home Assistant routes it through the Wyoming pipeline — Whisper transcribes, Ollama processes, Piper speaks the response back.

For a deeper dive into building a private voice assistant with Ollama, we have a dedicated walkthrough.

Creating custom intents

Out of the box, Ollama handles general conversation and basic device control. For more reliable automation triggers, define custom intents.

Create or edit custom_sentences/en/intents.yaml in your Home Assistant config directory:

language: en
intents:
  MovieMode:
    data:
      - sentences:
          - "movie mode"
          - "start movie time"
          - "cinema mode"

Then create a matching intent script in intent_script:

intent_script:
  MovieMode:
    speech:
      text: "Movie mode activated. Dimming lights and starting the projector."
    action:
      - service: light.turn_off
        target:
          area_id: living_room
      - service: media_player.turn_on
        target:
          entity_id: media_player.projector

Custom intents get matched before the request hits Ollama, giving you deterministic control over critical automations while still letting the LLM handle everything else conversationally.

Limitations vs. Alexa and Google

Let’s be honest about the trade-offs:

Where local wins:

  • Complete privacy — zero data leaves your network
  • No account required, no subscription fees
  • Works fully offline
  • Customizable at every layer

Where cloud assistants still lead:

  • Voice recognition accuracy — Alexa and Google have had billions of hours of training data. Whisper is excellent, but not quite at that level in noisy environments.
  • Music and media integrations — “Play Taylor Swift on Spotify” works seamlessly on Alexa. Local assistants need more manual plumbing.
  • Multi-language support — Whisper handles many languages, but Piper’s voice quality varies outside English.
  • Response speed — A cloud assistant on a fast connection responds in under a second. A local LLM on a Pi 5 might take 2-4 seconds.
  • Smart home ecosystem breadth — Alexa has thousands of “skills.” Your local assistant only knows what you teach it.

The gap is closing fast. In 2024, this setup was a science project. In 2026, it’s a genuine daily driver for anyone comfortable with Home Assistant. If you’ve already explored local voice with Whisper and Ollama, adding the full Home Assistant pipeline is the natural next step.

Where to go from here

  • Train a custom wake word so your assistant responds to whatever name you choose
  • Add room-aware processing with multiple satellites
  • Fine-tune your Ollama system prompt for better intent recognition
  • Set up a fallback: if Ollama can’t parse an intent, route to a predefined automation

The entire voice AI space is moving local. The hardware is cheap enough, the models are good enough, and the privacy benefits are impossible to ignore. Your smart home doesn’t need to report to anyone.