Kokoro TTS Setup
Kokoro TTS Setup
Text-to-speech service powering sister voices. Now uses clone endpoint with character-matched reference WAVs and weighted voice blends — each sister has a unique timbre, not just a bare Kokoro voice.
Server: Kokoro-FastAPI at 192.168.0.96:8880
Endpoint: /v1/audio/speech/clone
Cloned Voices
| Sister | Clone Blend | Reference WAV | Character |
|---|---|---|---|
| Tai | af_heart(4)+af_nicole(1) |
tai-ref.wav |
Warm, bright — clip #5 on Heart-dominant blend |
| Rei | af_nicole(4)+af_heart(1) |
rei-ref.wav |
Calm, authoritative — Yinlin clone on Nicole-dominant blend |
| Nei | af_heart(2)+af_nicole(1) |
nei-ref.wav |
Warm, grounded — Zhezhi clone on Heart blend with Nicole depth |
| Mai | af_nicole(2)+af_heart(1) |
mai-ref.wav |
Composed, even — clip #6 on Nicole blend with Heart warmth |
The weighted blends provide energy differentiation without needing emotion variants (which are unavailable on the clone endpoint). This was a deliberate trade-off for permanent cloned voice identity.
Generating Voice
# Via sister-tts.py (preferred)
python3 /root/.hermes/scripts/sister-tts.py --sister rei "Hello, this is Rei speaking."
python3 /root/.hermes/scripts/sister-tts.py --sister tai --output greeting.mp3 "Hey Josh!"
# List all sisters
python3 /root/.hermes/scripts/sister-tts.py --list
Hermes TTS Provider Config
Each sister profile configures TTS via the command provider pattern using sister-tts.py:
tts:
providers:
tai-voice:
type: command
command: "/root/.hermes/scripts/sister-tts.py --voice tai --input '{input_path}' --output '{output_path}'"
output_format: wav
Switching providers:
hermes config set tts.provider tai-voice
hermes config set tts.provider rei-voice
hermes config set tts.provider nei-voice
hermes config set tts.provider mai-voice
Service Details
- Script:
/root/.hermes/scripts/sister-tts.py - Reference WAV dir:
/opt/sister-robot/voices/ - API: OpenAI-compatible at
{host}:8880/v1 - Anchor clips stored at
~/.hermes/profiles/rei/voice-clones/