← Zurück zu Anleitungen

Thorsten-Voice mit Kokoro (Docker) installieren

Guter Mittelweg für normale Rechner ohne dedizierte Grafikkarte. Läuft komplett auf der CPU in Echtzeit oder schneller, ganz ohne GPU. Der Container läuft nativ unter Windows, Mac (Intel & Apple Silicon) und Linux — einfach per HTTP ansprechbar, Text rein, WAV-Datei raus.

1

Docker installieren

Docker Desktop für Windows/Mac oder Docker Engine für Linux installieren, falls noch nicht vorhanden.

Docker herunterladen ↗
2

Container starten (Quickstart)

Einmaliger docker run-Befehl. Beim allerersten Start lädt der Container das Modell automatisch von Hugging Face nach (einige hundert MB) und legt es im Volume ab — danach starten spätere Läufe sofort.

docker run -p 8000:8000 \
  -v kokoro_cache:/data/hf-cache \
  thorstenvoice/kokoro-tts

Sobald im Log „Modell geladen und einsatzbereit.“ erscheint, ist der Server bereit.

Alternativ per docker-compose (empfohlen)

Für den Dauerbetrieb eine docker-compose.yml anlegen:

services:
  thorsten-kokoro-tts:
    image: thorstenvoice/kokoro-tts:latest
    container_name: thorsten-kokoro-tts
    ports:
      - "8000:8000"
    environment:
      - KOKORO_EPOCH=5
    volumes:
      - kokoro_cache:/data/hf-cache
    restart: unless-stopped

volumes:
  kokoro_cache:

und danach starten mit:

docker compose up -d
TODO: Aktuell bietet der Container nur eine REST-API (kein Web-Interface). Falls demnächst eine einfache Gradio-Oberfläche im Image dazukommt, hier ergänzen (Port, Aufruf per Browser, Screenshot).

Sobald der Container läuft, lässt er sich einfach per HTTP ansprechen — kein SDK, keine Installation auf deiner Seite nötig.

Sprache erzeugen

Text per HTTP POST schicken, WAV-Datei zurückbekommen.

curl -X POST http://localhost:8000/tts \
     -H "Content-Type: application/json" \
     -d '{"text": "Hallo, ich bin Thorsten. Schön, dass du da bist."}' \
     --output thorsten.wav

Sprechgeschwindigkeit anpassen

Der Wert für speed liegt zwischen 0.0 (exklusiv) und 2.0, Standard ist 1.0.

curl -X POST http://localhost:8000/tts \
     -H "Content-Type: application/json" \
     -d '{"text": "Das hier wird etwas langsamer gesprochen.", "speed": 0.85}' \
     --output output.wav

Status prüfen

Zeigt, ob der Server läuft und welches Trainings-Checkpoint gerade aktiv ist.

curl http://localhost:8000/health
# {"status":"ok","repo_id":"Thorsten-Voice/Kokoro","epoch":"5","device":"cpu"}

Anderes Trainings-Checkpoint wählen

Über die Umgebungsvariable KOKORO_EPOCH lässt sich zwischen den Epochen 1–10 wechseln (Standard: 5).

docker run -p 8000:8000 \
  -e KOKORO_EPOCH=10 \
  -v kokoro_cache:/data/hf-cache \
  thorstenvoice/kokoro-tts
Port 8000 ist bei mir schon belegt

Einfach einen anderen Host-Port mappen, z. B. -p 8080:8000 statt -p 8000:8000 (in der docker-compose.yml entsprechend in den ports-Zeilen anpassen). Der Container selbst lauscht weiterhin intern auf 8000.

Beim ersten Start passiert lange nichts, im Log steht etwas von „Downloading“

Das ist normal: Der Container lädt das Kokoro-Modell einmalig von Hugging Face herunter (einige hundert MB). Das kann je nach Internetverbindung ein bis zwei Minuten dauern. Wichtig: Dafür ist beim allerersten Start eine Internetverbindung nötig, auch wenn der Betrieb danach komplett offline läuft — dank des kokoro_cache-Volumes lädt er beim nächsten Start nicht erneut.

„docker: permission denied“ unter Linux

Meist fehlt die Berechtigung, mit dem Docker-Daemon zu sprechen. Entweder den Befehl mit sudo ausführen, oder den eigenen Benutzer einmalig zur docker-Gruppe hinzufügen (sudo usermod -aG docker $USER, danach neu einloggen).

Der Container startet immer wieder neu (Crash-Loop)

Mit docker logs thorsten-kokoro-tts (bzw. dem Namen deines Containers) in die Logs schauen — meist steht dort die eigentliche Fehlermeldung, etwa ein Problem beim Modell-Download oder ein belegter Port.

Läuft das auch auf Apple Silicon oder einem ARM-Server?

Ja — das Image wird als Multi-Arch-Build für linux/amd64 und linux/arm64 veröffentlicht und läuft nativ auf Windows, Mac (Intel & Apple Silicon) und Linux, komplett CPU-basiert ohne GPU.

Mehr oder weniger Leistung zur Verfügung?

Für sehr schwache Hardware (z. B. Raspberry Pi) ist Piper die leichtere Wahl. Mit einer NVIDIA-GPU klingen Coqui DDC oder CosyVoice nochmal natürlicher.

Alle Anleitungen ansehen