OHF-Voice/linux-voice-assistant
Voice satellite for Home Assistant using the ESPHome protocol
What it solves
This project turns any Linux device into a smart voice satellite for Home Assistant. You can talk to your home automation system from a custom speaker without needing a cloud service, and it can detect wake words locally so it is always listening without sending audio to the cloud.
How it works
It runs on a full Linux system (with PulseAudio or PipeWire for audio) and connects to Home Assistant using the ESPHome protocol. When you say a wake word (like "Okay Nabu"), the OpenWakeWord or MicroWakeWord model detects it on the device, then the audio is streamed to Home Assistant's Assist pipeline for speech-to-text, intent handling, and text-to-speech. It also supports timers, announcements, and continuing conversations. Microphone arrays with DSP chips (like Satellite1 or Respeaker) can handle far-field audio processing with noise suppression and echo cancellation.
Who it's for
People who want to build their own voice-controlled smart speaker at home, especially those using Home Assistant and who prefer a Linux-based device over a microcontroller-only satellite. It is also for hobbyists who want to fine-tune wake words, integrate buttons/LEDs, or experiment with PipeWire.
Highlights
- Local, on-device wake word detection with OpenWakeWord or MicroWakeWord, supporting multiple wake words and languages
- Seamless integration with Home Assistant's Assist pipeline, including announcements, start/continue conversations, and timers
- Runs on common hardware: x64 or ARM64 with 1GHz CPU and 512MB RAM; can fit on a Raspberry Pi Zero 2W or Pi 3
- Includes a WebSocket API for attaching peripherals like buttons and LEDs
- Ships as Docker images, a Home Assistant add-on, or a ready-to-flash Raspberry Pi image
Related
- Project
- Project
- Project
- Project
- Project