A fully local speech pipeline for Home Assistant Assist — Whisper for speech-to-text, Piper for text-to-speech, both served over the Wyoming protocol. No cloud calls, no Apple/Google/Amazon in the loop. Point Home Assistant at either deployment below and get a fast, private voice pipeline running end to end.
Two deployment paths are included, tuned for the hardware they actually run well on:
| Path | Use when you have... | STT engine | Notes |
|---|---|---|---|
proxmox/ |
A spare x86 box (Proxmox VE) with no free GPU | faster-whisper (CTranslate2), CPU-only, int8 |
Needs AVX-512 VNNI to be fast — see docs/architecture.md |
apple-silicon/ |
A spare Apple Silicon Mac | mlx-whisper |
Runs natively via launchd, not Docker — Docker Desktop can't reach the Neural Engine, so containerizing this would throw away the acceleration |
Both paths expose the same two Wyoming ports (10300 STT, 10200 TTS), so
the Home Assistant side of the setup is identical either way.
- Pick your path:
docs/proxmox.mdordocs/apple-silicon.md. - Follow that doc to stand up the services.
- In Home Assistant: Settings → Devices & Services → Add Integration →
Wyoming Protocol, add an entry for
<host>:10300(STT) and one for<host>:10200(TTS). - Settings → Voice Assistants → your Assist pipeline → point STT/TTS at the new Wyoming entities.
- Test with the microphone icon in the Assist sidebar.
Read docs/architecture.md first if you want the
"why" behind the hardware-specific choices — the two paths aren't
interchangeable implementations of the same thing, they're deliberately
different to actually use the acceleration each platform has available.
MIT — see LICENSE. The Whisper piece under apple-silicon/whisper/
is vendored from vincent861223/wyoming-mlx-whisper
(also MIT); its original license and attribution are preserved in that
subdirectory. The Piper piece under apple-silicon/piper/ is vendored from
rhasspy/wyoming-piper, same
treatment.