← Zurück zu Anleitungen

Thorsten-Voice mit CosyVoice (Docker) installieren

Das aktuelle LLM-basierte Modell mit der höchsten Natürlichkeit. Läuft auf der CPU, spielt seine Stärke aber erst mit einer NVIDIA-GPU richtig aus — dort etwa 16-mal schneller als reine CPU-Berechnung. Genau wie bei Kokoro reicht ein einziger docker run-Befehl.

Stimme wählen:
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 die Modelle automatisch herunter (rund 8,5 GB) — das dauert je nach Verbindung 5 bis 15 Minuten. Spätere Starts sind dank Volume in etwa 30 Sekunden erledigt.

docker run -p 8000:8000 \
  -v cosyvoice_models:/app/CosyVoice/pretrained_models \
  thorstenvoice/cosyvoice-tts:cosyvoice3

Sobald im Log „Uvicorn running on http://0.0.0.0:8000“ erscheint, ist der Server bereit.

Alternativ per docker-compose (empfohlen)

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

services:
  cosyvoice-tts:
    image: thorstenvoice/cosyvoice-tts:cosyvoice3
    ports:
      - "8000:8000"
    volumes:
      - cosyvoice_models:/app/CosyVoice/pretrained_models
    restart: unless-stopped

volumes:
  cosyvoice_models:

und danach starten mit:

docker compose up

Mit NVIDIA-GPU (nur Linux)

Mit einer NVIDIA-Grafikkarte und installiertem NVIDIA Container Toolkit die deploy-Sektion ergänzen:

services:
  cosyvoice-tts:
    image: thorstenvoice/cosyvoice-tts:cosyvoice3
    ports:
      - "8000:8000"
    volumes:
      - cosyvoice_models:/app/CosyVoice/pretrained_models
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

volumes:
  cosyvoice_models:

Hochdeutsch und Hessisch sind zwei getrennte Docker-Images — für beide gleichzeitig einfach unterschiedliche Volume-Namen und Host-Ports verwenden, dann laufen sie nebeneinander, ohne sich das Modell-Cache-Volume zu teilen.

Hinweis: Für das Hessisch-Image gibt es auf Docker Hub aktuell keine eigene Beschreibung — Image-Name und Tag (20260703) sind bestätigt, Endpunkte und Optionen wurden hier in der Annahme übernommen, dass beide Images auf demselben Server-Code basieren. Kurz gegentesten, bevor die Seite live geht.

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 (als Formularfeld, nicht JSON), WAV-Datei zurückbekommen.

curl -X POST http://localhost:8000/tts \
     -F "text=Hallo, ich bin Thorsten. Schön, dass du da bist." \
     --output thorsten.wav

Sprechgeschwindigkeit anpassen

Der Wert für speed liegt zwischen 0.5 (langsam) und 2.0 (schnell), Standard ist 1.0.

curl -X POST http://localhost:8000/tts \
     -F "text=Das hier wird etwas langsamer gesprochen." \
     -F "speed=0.85" \
     --output output.wav

Mehrere Sätze in eine Datei

Über den tts_batch-Endpunkt lassen sich mehrere Sätze (durch Zeilenumbruch getrennt) zu einer einzigen Audiodatei zusammenfassen.

curl -X POST http://localhost:8000/tts_batch \
     -F $'texts=Erster Satz.\nZweiter Satz.\nDritter Satz.' \
     --output batch.wav

Status prüfen

Zeigt, ob der Server läuft und welches Modell aktiv ist (der Wert bei model unterscheidet sich je nachdem, welches der beiden Images läuft).

curl http://localhost:8000/health

Gemessen mit einem kurzen Testsatz (~8 Wörter) und einem langen Testsatz (~80 Wörter).

Hardware Kurzer Text Langer Text
MacBook Air M1 (CPU) 47 s 4:30 min
QNAP NAS Intel (CPU) 50 s
RunPod RTX 4090 (GPU) 2,9 s 12,9 s
Die GPU wird nicht erkannt / läuft trotz --gpus all auf der CPU

GPU-Unterstützung funktioniert nur unter Linux mit einer NVIDIA-Karte und setzt das NVIDIA Container Toolkit voraus (nvidia-container-toolkit). Ohne dieses Toolkit ignoriert Docker die deploy-Sektion in der docker-compose.yml stillschweigend und rechnet auf der CPU weiter.

Der erste Start dauert ewig oder bricht scheinbar ab

Beim allerersten Start werden rund 8,5 GB an Modelldaten heruntergeladen — je nach Internetverbindung realistisch 5 bis 15 Minuten. Das Terminal wirkt dabei oft so, als würde nichts passieren. Einfach warten, bis „Uvicorn running on …“ im Log erscheint; danach ist der Cache im Volume gespeichert und der nächste Start dauert nur noch Sekunden.

Die Sprachausgabe ist auf meinem Rechner sehr langsam

CosyVoice ist das rechenhungrigste der Thorsten-Voice-Modelle und profitiert extrem von einer NVIDIA-GPU (in etwa 16-mal schneller als reine CPU-Berechnung). Ohne GPU sind mehrere Sekunden bis Minuten pro Satz normal. Auf schwächerer oder GPU-loser Hardware sind Kokoro oder Piper die praktikablere Wahl.

Ich will einen anderen Port als 8000 verwenden

Container-internen und Host-Port zusammen über die Umgebungsvariable PORT ändern, z. B. -p 9000:9000 -e PORT=9000. Nur den Host-Port in -p umzubiegen reicht hier nicht, weil der Server sonst weiterhin intern auf 8000 lauscht.

„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).

Keine GPU zur Hand?

CosyVoice ist die höchste Ausbaustufe. Ohne dedizierte Grafikkarte laufen Kokoro oder Piper spürbar entspannter.

Alle Anleitungen ansehen