evOo-local/docs/kokoro-voice.md
cynarAI 8ae3764b05
Speak German through a local Piper server, since Kokoro has no German voices (#182)
Kokoro-FastAPI ships English, Spanish, French, Hindi, Italian, Japanese,
Portuguese and Chinese voices only. The German presets pointed at voice
ids no Kokoro server has, so German users either got English voices or
picked a voice that failed to speak.

The local voice now also lists the German voices whose Piper model is
installed (PIPER_BASE_URL) and speaks them through Piper's /synthesize
as WAV. Thorsten, the clearest model, is the German default. Mobile
plays WAV as well as MP3, and the E2E voice stub stands in for Piper.


Claude-Session: https://claude.ai/code/session_01KWEAjTw26eRf3ZXTXfRjmD

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-09 11:55:51 +02:00

2.3 KiB

Kokoro (lokale Stimme)

Kokoro ist die lokale Stimme in EvOo: Kokoro-82M (Apache 2.0) läuft über Kokoro-FastAPI, ohne Cloud-Dienst und ohne API-Key. Deutsche Stimmen kommen aus Piper (siehe unten).

Schnellstart

docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:latest

Optional auf dem EvOo-Server (wenn Kokoro woanders läuft):

export KOKORO_BASE_URL=http://127.0.0.1:8880

In EvOo verbinden

  1. Stimme in den Einstellungen öffnen.
  2. Kann sprechen einschalten. EvOo prüft GET /v1/audio/voices und speichert einen Platzhalter-Token (local-kokoro), kein API-Key.
  3. Im Karussell eine Stimme antippen; der Play-Knopf spielt sie vorher an.
  4. Voice First / CallView nutzt dann POST /v1/audio/speech (OpenAI-kompatibel, stream: false).

Stimmen und Sprache

Kokoro kodiert die Sprache im ersten Buchstaben der Stimm-ID (a/b Englisch, d Deutsch, e Spanisch, f Französisch, …). EvOo zeigt nur die Stimmen der eingestellten App-Sprache und wechselt die gespeicherte Stimme mit, wenn die Sprache wechselt. Bietet der Server keine Stimme in dieser Sprache an, zeigt EvOo alle Stimmen.

Deutsche Stimmen (Piper)

Kokoro hat keine deutschen Stimmen. Die kommen aus Piper, das ebenfalls lokal und ohne GPU läuft. EvOo führt sie als dm_thorsten, df_kerstin, df_eva, df_ramona und dm_karlsson und zeigt nur die, deren Modell auf dem Piper-Server liegt.

python3 -m venv ~/piper && ~/piper/bin/pip install "piper-tts[http]"
mkdir -p ~/piper/voices && cd ~/piper/voices
for v in de_DE-thorsten-high de_DE-kerstin-low de_DE-eva_k-x_low de_DE-ramona-low de_DE-karlsson-low; do
  ~/piper/bin/python -m piper.download_voices "$v"
done
~/piper/bin/python -m piper.http_server -m de_DE-thorsten-high --data-dir ~/piper/voices --host 127.0.0.1 --port 5150
export PIPER_BASE_URL=http://127.0.0.1:5150

Ohne PIPER_BASE_URL fragt EvOo Piper gar nicht erst an.

Fehler

Meldung Ursache
Kokoro lokal nicht erreichbar… Kokoro-FastAPI läuft nicht oder KOKORO_BASE_URL stimmt nicht.
Deutsche Stimme nicht erreichbar… Piper läuft nicht oder PIPER_BASE_URL fehlt.

API-Dokumentation nach Start: http://127.0.0.1:8880/docs