Piper for local text-to-speech
Piper is a small, fast text-to-speech system built to run entirely offline on modest hardware. It came out of the Rhasspy open source voice assistant project and is the speech engine most often paired with self-hosted home automation and accessibility setups. It is the text-to-speech entry in the audio models index.
Piper is a neural synthesiser: it generates a waveform from text rather than stitching recorded fragments together. The result sounds natural enough for narration and assistant replies, without the size or the hardware appetite of the larger speech models.
Sizes and hardware
Piper is organised around voices rather than model sizes. A voice is a single trained model for one speaker in one language, and there are many of them, covering a wide range of languages with several speakers for the popular ones. You download the voices you want and nothing else, which keeps disk use small.
Each voice is published at a few quality tiers. Lower tiers use a smaller model and a lower output sample rate, so they load faster, use less memory and sound rougher. Higher tiers sound better and cost more per sentence. The tiers exist so the same voice can run on a single-board computer and on a desktop, and picking between them is the main tuning decision you will make.
Piper runs on CPU by design and stays quick even on small ARM boards, so a spare Raspberry Pi is a perfectly reasonable host. No VRAM is needed, and giving it a GPU buys you little: the inference work is small enough that the cost of moving data to the card would eat the gain. If you are choosing hardware for a wider local AI setup, budget for the other models on the hardware pages and treat Piper as free.
How people run it
Piper is distributed as a small standalone binary plus voice files, and the voice files are in a portable engine-neutral format rather than a framework-specific checkpoint, which is why it drops into so many places. The usual shapes are:
- A command-line binary that reads text on standard input and writes a WAV file or streams raw audio to a player. This is how most scripts and cron jobs use it.
- A small HTTP service wrapping the same engine, so other applications on your network can post text and get audio back.
- Embedded in a voice assistant. Self-hosted assistant stacks include Piper as the speech output stage, with voice selection exposed in their own settings UI. Most people who use Piper never invoke it directly.
- Language bindings for scripting it from Python or another language in-process.
Each voice ships with a config file describing its sample rate and phoneme set, and the engine needs that file sitting next to the weights. Separating the pair is the mistake people make when moving voices between machines, so copy both or copy neither. See organising model files if you are managing a lot of them.
Fit
Piper is the right tool when you want reliable spoken output from text, offline, on hardware you already have. Assistant replies, screen readers, announcement systems, reading documents aloud, giving a local chatbot a voice, narrating a video: all well served. Its size means it can live permanently in the background of a small machine.
Expressive control is where it runs out. Emotion, emphasis, pacing and dramatic delivery are barely exposed, and the output is even-toned by nature, so a performance is beyond it. Piper will not copy a specific person's voice from a short sample either, which is a different technique covered under voice cloning, though you can train a new Piper voice from a properly recorded dataset if you have one. For the wider set of synthesis options, see text to speech. And it does not understand audio, so transcription belongs to Whisper.
