You pull your phone out to check a notification, or walk into the kitchen at 11:00 PM, and your smart home greets you with the robotic cadence of a 1990s GPS navigation unit. “Front. Door. Is. Unlocked.” It sounds mechanical, slightly detached, and completely out of place in a modern living space. Worse, every single one of those syllables has historically made a round-trip to a cloud server in Virginia or Dublin, passing your private home audio data through third-party APIs just to tell you the washing machine is done. You built a local Home Assistant instance to keep your data private, keep your automations running when the internet drops, and eliminate cloud subscription fees. Yet, your text-to-speech engine remains tethered to Amazon Polly, Google TTS, or Nabu Casa’s cloud fallback. You are trading local autonomy for intelligible speech.
Direct Practical Verdict:

Use Piper if you run Home Assistant on resource-constrained hardware like a Raspberry Pi 4 or 5 and demand sub-200ms audio generation. Use Kokoro if you have an Intel N100 mini PC or old desktop, possess 1GB of spare RAM, and require human-grade prosody, emotional inflection, and natural pacing for immersive voice interactions.

## Why Do Cloud TTS APIs and Old Local Engines Fail Smart Home Integrations? The holy grail of local home automation audio is instantaneous, lifelike speech synthesis running entirely on local silicon. For years, open-source practitioners had to choose between two equally unappealing extremes: resource-heavy cloud APIs that introduce a 600-to-1200 millisecond latency spike and leak home telemetry, or legacy local engines like eSpeak and PicoTTS that sound like a speak-and-spell toy choking on a vowel. When you trigger an automation—such as an announcement that your garage door has been left open past sunset—every millisecond counts. If your TTS engine takes over a second just to spin up its inference graph, the audio feels disjointed. Worse, if your local ISP drops connection, your custom voice alerts fail entirely. Enter the modern Wyoming protocol ecosystem. Home Assistant’s native Wyoming integration allows lightweight audio servers to communicate directly with Wyoming-compliant satellites and core services, bringing local voice pipeline architectures into maturity. But choosing the right engine beneath that protocol layer requires understanding the stark engineering trade-offs between Piper, a C++ optimized ONNX runtime champion, and Kokoro-82M, a cutting-edge StyleTTS 2 derivative that punches far above its weight class in emotional realism. ## How Do Piper and Kokoro Actually Compare Under Real-World Home Assistant Loads? Let us look at the hardware reality. Most self-hosters fall into two camps: the Raspberry Pi loyalists (Pi 4 or Pi 5) and the Mini PC converts (Intel N100, Neli, or repurposed enterprise thin clients running Proxmox). Piper was explicitly built for the edge. It compiles down to a lean binary, leverages ONNX Runtime, and uses lightweight VITS (Variational Inference for Text-to-Speech) architectures. It consumes roughly 50MB of RAM and generates audio on a Raspberry Pi 5 faster than real-time. Kokoro-82M, on the other hand, is an 82-million parameter model based on StyleTTS 2 architecture combined with a diffusion-like acoustic decoder. It delivers Mean Opinion Scores (MOS) that rival commercial closed-source providers like ElevenLabs. However, it demands significantly more compute. It requires PyTorch, a larger memory footprint, and thrives on processors featuring AVX2 instruction sets or low-end GPU/iGPU acceleration.
Metric / Feature Piper TTS Kokoro-82M Winner
Time-to-First-Audio (Intel N100) ~110ms ~320ms Piper
RAM Footprint ~50MB – 100MB ~450MB – 900MB Piper
Voice Prosody & Naturalness Good, slightly flat cadence Exceptional, human-like inflection Kokoro
Raspberry Pi 5 Viability Flawless (RTF ~0.15) Struggles / High RTF (>1.0) Piper
Wyoming Protocol Native Support Native Docker Add-on / Direct Requires Docker Container / Wrapper Piper
## What Are the Hidden Performance Bottlenecks of Running Kokoro-82M on Home Assistant? Many engineers spin up Kokoro via Docker expecting it to drop straight into their existing Wyoming voice pipeline without friction. That is where performance degradation strikes. Because Kokoro relies on Python-heavy inference stacks, container configuration matters immensely. If you run Kokoro inside a default container image without explicitly passing CPU optimization flags or binding it to an ONNX/PyTorch runtime optimized for your specific CPU architecture, latency spikes. You will notice a 500ms stutter before speech begins—unacceptable for real-time voice assist applications where conversational pacing defines the user experience. Furthermore, RAM starvation is real. If your Home Assistant OS is running on an 8GB N100 box hosting Frigate NVR, Plex, and a heavy PostgreSQL database, allocating another gigabyte of uncompressed RAM to PyTorch model weights for Kokoro can trigger swapping if your swapiness configuration isn’t tuned. Piper avoids this trap entirely by keeping model weights lean, often loading a high-quality voice model (like `en_US-lessac-medium`) in under 30 megabytes of memory. ## How Do You Deploy and Configure Piper via the Wyoming Protocol Today? Getting Piper running inside Home Assistant is straightforward thanks to the official Wyoming integration ecosystem. If you run Home Assistant OS or Supervised, the community add-ons handle the heavy lifting. 1. Navigate to your Home Assistant dashboard, go to Settings > Add-ons > Add-on Store. 2. Search for and install the Wyoming Piper add-on. 3. In the add-on configuration tab, select your preferred voice model. For a balanced, clear American accent, specify `en_US-lessac-medium`. For a warmer British tone, select `en_GB-alan-medium`. 4. Start the add-on and check the log output to ensure it binds successfully to port `10200`. 5. Navigate to Settings > Devices & Services. Home Assistant will automatically discover the new Wyoming Voice Satellite. Click Configure to complete integration. 6. Test your setup by navigating to Developer Tools > Services, selecting `tts.speak`, and passing your new Piper entity ID alongside a test string. ## How Do You Integrate Kokoro-82M via Docker for Advanced Voice Assistants? If your hardware stack consists of an Intel N100 or a dedicated server node, deploying Kokoro-82M unlocks hyper-realistic speech. Because an official native Wyoming add-on for Kokoro is still maturing in community channels, the cleanest production method is deploying a dedicated Docker container running a FastAPI-to-Wyoming wrapper alongside your core Home Assistant instance. Create a `docker-compose.yml` file on your server node: “`yaml version: ‘3.8’ services: kokoro-wyoming: image: ghcr.io/rhasspy/wyoming-kokoro:latest container_name: kokoro-wyoming restart: unless-stopped ports: – “10250:10200” volumes: – /path/to/local/kokoro/voices:/data command: – –voice – af_bella environment: – TZ=UTC “` Once running, point your Home Assistant instance to the container IP and port `10250` using a generic Wyoming integration entry. You now have state-of-the-art neural speech generation feeding your home automations with zero cloud dependency. ## Which Engine Wins Your Smart Home Deployment Strategy? If your infrastructure relies on a Raspberry Pi, or if your primary automation trigger requirement is zero-latency feedback for time-sensitive alerts (such as water leak detection or security warnings), Piper remains the undisputed king of edge text-to-speech. It is lightweight, bulletproof, and practically maintenance-free. If you are building an interactive voice assistant where family members converse naturally with home satellites, and your server rack features an Intel N100 or better, Kokoro-82M transforms the acoustic experience. The emotional depth and natural cadence completely eliminate the “uncanny valley” of smart home audio. Deploy Piper for speed and efficiency; deploy Kokoro when your home deserves to sound genuinely human. ### Frequently Asked Questions Can I run both Piper and Kokoro simultaneously on the same Home Assistant instance? Yes. Because both communicate over the local network via the Wyoming protocol using distinct TCP ports, you can assign Piper to transactional background alerts (timers, appliance notifications) and Kokoro to primary voice assistant responses and conversational feedback. Does Kokoro-82M require an NVIDIA GPU to achieve real-time synthesis? No. While a dedicated GPU accelerates inference, Kokoro-82M runs comfortably on modern multi-core CPUs like the Intel N100 or AMD Ryzen processors using CPU inference backends, achieving a Real-Time Factor well below 0.5 without dedicated graphics hardware. How do I change default voice models in Piper without restarting Home Assistant? You can modify the voice model parameter directly within the Wyoming Piper add-on configuration page in Home Assistant and click “Restart Add-on”. The change propagates immediately to all associated TTS services without requiring core system reboots.
Local Voice Processing, Text-to-Speech & Smart Automation

Hardware compute power dictates the latency of local voice pipelines and on-device text-to-speech. Review our engine benchmarks on Home Assistant Yellow vs Green: Zigbee & Compute TCO.