# Voice Pipeline

## Overview

The home runs a fully local, cloud-independent voice pipeline using HA's Assist framework. The pipeline is anchored by a **Home Assistant Voice PE** device in the Bedroom and composed of four add-on components. An Ollama LLM provides conversational AI beyond basic HA commands.

---

## Pipeline Components

### 1. Wake Word — openWakeWord

| Property | Value |
|---|---|
| Add-on | core_openwakeword v2.1.0 |
| Protocol | Wyoming |
| Entity | `wake_word.openwakeword` |
| Purpose | Passively listens for wake phrase on the HA Voice PE microphone |

### 2. Speech-to-Text

Two local STT options:

| Option | Add-on | Version | Best For |
|---|---|---|---|
| **Speech-to-Phrase** | core_speech-to-phrase | 1.4.3 | Fast home control commands |
| **Whisper** | core_whisper | 3.2.0 | Free-form speech, better accuracy |
| HA Cloud | — | — | Fallback cloud STT |

**Recommendation:** Use Speech-to-Phrase as primary for HA commands — it's significantly faster than Whisper for intent-matched phrases.

### 3. Conversation / Intent Processing

| Option | Entity | Notes |
|---|---|---|
| **Home Assistant** | `conversation.home_assistant` | Built-in intent matching for HA commands |
| **Ollama** | `conversation.ollama_conversation` | Local LLM (qwen3:4b-instruct at 192.168.1.85:11434) |

### 4. Text-to-Speech

| Option | Add-on | Version | Notes |
|---|---|---|---|
| **Piper** | core_piper | 2.2.2 | Local neural TTS (offline) |
| Google Translate | — | — | Cloud TTS (requires internet) |
| HA Cloud | — | — | Nabu Casa cloud TTS |

---

## Hardware — HA Voice PE

| Property | Value |
|---|---|
| Device | Home Assistant Voice 0919e8 |
| Model | Home Assistant Voice PE |
| Manufacturer | Nabu Casa |
| Firmware | ESPHome 2026.3.2 |
| Area | Bedroom |

The Voice PE connects to HA via the ESPHome integration over local LAN.

**Controls:**
- Physical button on device
- LED ring (color/pattern indicates pipeline state)
- Mute switch
- Wake sound toggle
- Pipeline selector (`select.home_assistant_voice_0919e8_assistant_2`)

---

## Conversation Pipelines

HA supports multiple named pipelines. The Voice PE's `assistant_2` select entity allows switching between pipelines at runtime.

**Typical pipelines:**
1. **Default** — Speech-to-Phrase → Home Assistant Assist → Piper
2. **LLM** — Whisper → Ollama → Piper
3. **Cloud** — HA Cloud STT → HA Cloud TTS

---

## Announcement Targets

Beyond the Voice PE, TTS announcements can be pushed to any `media_player` entity. Key announcement targets:

| Target | Entity | Notes |
|---|---|---|
| HA Voice PE | `media_player.home_assistant_voice_0919e8` | Primary |
| Bedroom Echo Show 5 | `media_player.bedroom` | Alexa |
| VLC | `media_player.vlc_telnet` | Local fallback |
| Everywhere (MA group) | `media_player.everywhere` | All speakers |

---

## Notes / Gotchas

- The Ollama server runs on a separate machine at `192.168.1.85:11434`. If that machine is off, the Ollama conversation agent will be unavailable — HA Assist built-in handles fallback.
- Whisper model size affects accuracy vs. speed. Check the Whisper add-on configuration for the selected model (tiny/base/small/medium).
- Speech-to-Phrase requires a custom vocabulary configuration to recognize non-standard commands — check add-on settings for custom phrase lists.
- The Voice PE LED ring color indicates pipeline state: idle (off/dim), listening (blue), processing (yellow), error (red) — exact colors depend on ESPHome firmware version.

## Last Updated

2026-06-24