Whisper and Piper: how Home Assistant's local voice pipeline fits together
Whisper (speech-to-text) and Piper (text-to-speech) are complementary parts of the Home Assistant Assist pipeline. Here is how they work together locally.
On this page
If you have been searching for “Piper vs Whisper,” you have probably seen them framed as rival voice assistants. They are not. Whisper and Piper do two different jobs, and in a fully local Home Assistant voice setup you typically run both, alongside a wake-word engine. This article explains what each piece actually does so you can build a working local voice assistant instead of trying to pick a winner that does not exist.
The Home Assistant Assist pipeline
Home Assistant’s voice feature is called Assist, and it is built as a pipeline of stages. A spoken command flows through these stages in order:
- Wake word detection listens for a trigger phrase so the system isn’t transcribing everything you say. Two engines cover this stage, and the difference is where the listening happens: openWakeWord runs as an add-on on your Home Assistant server, which lets even a bare ESP32 satellite simply stream audio to it; microWakeWord runs on the satellite itself on ESP32-S3 hardware like the Home Assistant Voice Preview Edition, which keeps the load and the network traffic off your server. “Okay Nabu” is a wake word model that both engines offer, not an engine of its own.
- Speech-to-text (STT) converts your recorded speech into text. This is where Whisper lives.
- Intent recognition matches that text to a Home Assistant action (turn on a light, report a temperature, etc.). For fully local setups this is Home Assistant’s built-in conversation agent, or optionally an LLM.
- Text-to-speech (TTS) turns Home Assistant’s text response back into audio. This is where Piper lives.
Each stage is swappable, and many run as add-ons that install in one click from the Home Assistant add-on store. Whisper and Piper communicate with Home Assistant over the Wyoming protocol, which is the glue that lets these voice services plug into Assist.
Whisper: the speech-to-text stage
Whisper is OpenAI’s open-source speech-recognition model. In Home Assistant it runs locally (commonly via the faster-whisper Wyoming add-on) and its only job is transcription: audio in, text out.
A few accurate points worth knowing:
- Whisper comes in several model sizes (tiny, base, small, medium, and larger). Smaller models run faster on modest hardware like a Raspberry Pi; larger models are more accurate but want more CPU or a GPU.
- Whisper does not understand commands, manage multiple users, or have “voice profiles.” It transcribes. Understanding the transcribed text is a separate stage (intent recognition). Any claim that Whisper offers natural-language understanding or multi-user profiles is incorrect.
- If you only need a handful of fixed commands and want something lighter than Whisper, Home Assistant also offers Speech-to-Phrase, a constrained STT option that is faster on weak hardware but limited to predefined sentences.
Piper: the text-to-speech stage
Piper is a fast, local neural text-to-speech engine. It takes Home Assistant’s text response and synthesizes spoken audio. It is the voice you hear, not the ear that listens.
Accurate background:
- Piper comes from the Rhasspy open-source voice project (created by Michael Hansen / “synesthesiam”) and is now maintained under the Open Home Foundation. It is not a Mozilla project.
- Piper is optimized to run well on a Raspberry Pi 4 and ships pre-trained voices in many languages. You choose from those pre-trained voices rather than cloning any arbitrary voice. For help choosing one, see local TTS options that actually sound good.
- Piper is also used behind the scenes to generate training audio for the openWakeWord wake-word system, which is a nice illustration of how these pieces interlock rather than compete.
Putting it together
A common fully local pipeline looks like this:
- Wake word: openWakeWord on the server, or microWakeWord on an ESP32-S3 satellite (both offer “Okay Nabu”)
- STT: Whisper (faster-whisper add-on) or Speech-to-Phrase
- Intent: Home Assistant’s built-in conversation agent
- TTS: Piper
You install the Whisper, Piper, and wake-word add-ons, then create an Assist pipeline in Settings → Voice assistants and select each component. Point a voice satellite (such as a Home Assistant Voice device or an ESPHome-based satellite) at that pipeline and you have voice control without Amazon or Google that never leaves your network.
Hardware reality check: a Home Assistant Green or a Raspberry Pi 4 can run this, though larger Whisper models and snappier responses benefit from a more powerful mini PC. None of this requires a cloud account.
Quick verdict
There is no “Piper vs Whisper.” Whisper turns your speech into text; Piper turns Home Assistant’s text into speech. Run both (plus a wake-word engine) and you have a complete, private, local voice assistant in Home Assistant. The only real choices are which Whisper model size fits your hardware and which Piper voice you like.