Just for the laughs, I wanted my assistant to answer me in Vocaloid voices (Kasane Teto, specifically), so I needed something like this. I couldn’t find it, so I built it.
wyoming-rvc is a Wyoming TTS service that runs Piper and passes the audio through an RVC voice model, so any Piper voice comes out with another voice’s timbre. It works with the built-in Wyoming Protocol integration: no custom component, no scripts.
Highlights
- Everything stays loaded on the GPU (Piper, RVC, pitch model, index). No subprocesses, no temp files, no model reloads per request.
- Speaks sentence by sentence, including streaming LLM replies. On my RTX 3080 Ti, the first audio arrives in about 200 ms.
- Any RVC v1/v2 model from Hugging Face: set RVC_REPO_ID and it downloads on first start (zip archives work too).
- Layer mode: put it in front of an existing Wyoming TTS (SOURCE=wyoming) instead of the built-in Piper.
- Configured with env vars, prebuilt image, and tested against Home Assistant’s own Wyoming integration code.
Try it
docker run -d --gpus all -p 10200:10200 -v ./models:/models Package wyoming-rvc · GitHub
Then go to Settings → Devices & Services → Add Integration → Wyoming Protocol, enter your host and port 10200, and pick Wyoming RVC as the TTS in your voice assistant.
Needs an NVIDIA GPU (Turing or newer, about 3 GB VRAM). The default is an English female Piper voice with the TetoTalk RVC model; switch to another voice, language, or RVC model with env vars.
Repo, benchmarks and docs: GitHub - xchwarze/wyoming-rvc: Wyoming TTS layer for Home Assistant: gives any voice an RVC timbre (in-process Piper or any Wyoming TTS), fully resident on the GPU · GitHub
Feedback welcome, especially from anyone running other RVC voices. ![]()