general by Ryan Caldwell

Local Voice Control for Smart Home Privacy

How Home Assistant runs a voice assistant entirely on local hardware so spoken commands never leave the home network.

Local Voice Control for Smart Home Privacy

Home Assistant offers a way to run a voice assistant that processes spoken commands on local hardware rather than sending audio to external servers. According to the project’s documentation at https://www.home-assistant.io/voice_control/voice_remote_local_assistant/, this setup can run entirely on a person’s own hardware, and spoken commands never leave the home. The documentation states that the local options send no data to external servers for processing.

How the Local Assist Pipeline Works

Home Assistant calls its voice feature the Assist pipeline. The documentation describes it as several pieces that together form a voice assistant: a microphone listens, a speech-to-text engine converts the voice into text, Home Assistant processes the intent behind the words, and a text-to-speech engine responds out loud.

The pipeline relies on add-ons that Home Assistant discovers through its Wyoming integration. A user installs the chosen engines as add-ons, starts them, and then both appear under Settings, Devices and services as services discovered by the Wyoming integration. From there the user adds each integration and assembles them into an assistant.

Choosing a Speech-to-Text Engine

The documentation presents two local speech-to-text options. Speech-to-Phrase is described as a close-ended speech model that transcribes only what it knows, meaning it recognizes a defined set of commands rather than open dictation. Its advantage is speed: the documentation reports extremely fast transcription, under one second, even on a Home Assistant Green or a Raspberry Pi 4.

The second option is Whisper, described as an open-ended speech model that tries to transcribe everything spoken to it. Performance depends heavily on hardware. The documentation notes that transcription on a Raspberry Pi 4 takes around eight seconds, while an Intel NUC completes it in under a second. The open-ended approach suits more powerful hardware or setups paired with a large language model, where flexibility matters more than raw speed.

Speaking Back with Piper

For the spoken response, Home Assistant uses Piper, which the documentation describes as a fast, local neural text-to-speech system optimized for the Raspberry Pi 4. On a Raspberry Pi using medium quality models, the documentation states it can generate 1.6 seconds of voice in a second. A user installs Piper alongside one of the two speech-to-text engines to complete the pipeline.

Assembling the Assistant

Once the add-ons are running and discovered, the documentation outlines the configuration steps. The user opens Settings, Voice assistants, and selects Add assistant, then enters a name and language. Under the conversation agent setting they choose Home Assistant, under speech-to-text they select their chosen engine and language, and under text-to-speech they select Piper and a language. Devices can then be exposed to Assist so they respond to voice commands. If no assistants appear, the documentation suggests adding an assist_pipeline entry to the configuration.yaml file.

The hardware named in the documentation ranges from a Home Assistant Green or Raspberry Pi 4 for lighter workloads to an Intel NUC for faster open-ended transcription, giving users a path that fits the hardware they already have while keeping voice processing inside the home.