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/