ANLEITUNG

Eigene Text-to-Speech-API in Docker

Eine Text-to-Speech-API auf dem eigenen Server macht aus Text Audio für jedes Programm, das eine HTTP-Anfrage senden kann: eine Website, einen Bot, ein Spiel-Backend oder ein Skript in beliebiger Sprache. Der Text verlässt Ihren Rechner nicht, und es fallen keine Kosten pro Zeichen an.

Dieser Leitfaden zeigt, wie Sie die SuperClonica-Engine auf Basis des offenen Modells Supertonic 3 als HTTP-Server in Docker betreiben: Start auf CPU oder NVIDIA-GPU, Anfragen mit eingebauten und eigenen Stimmen und die Vorbereitung für den echten Einsatz. Image und Engine sind unser Produkt, deshalb sagen wir, wo es um uns geht.

Warum Sprachausgabe selbst betreiben

Mit Cloud-Sprach-APIs ist der Einstieg leicht, aber jede Anfrage schickt Ihren Text an den Anbieter und wird pro Zeichen abgerechnet. Eine selbst gehostete API tauscht das gegen einen Server, den Sie selbst verwalten.

  • Datenschutz: Texte und Audio bleiben auf Ihrer Hardware, was bei internen Dokumenten, Nachrichten und Nutzerdaten zählt.
  • Kosten: Nach der Hardware ist Sprache kostenlos; lange Texte und große Mengen erhöhen die Rechnung nicht.
  • Jeder Client: Ein HTTP-Endpunkt bedient Python, JavaScript, Go, PHP, C# oder ein Shell-Skript gleichermaßen.
  • Offline: Ist das Modell einmal geladen, braucht der Server keine Internetverbindung.

Den Server starten

Auf jeder CPU: docker run -d --name tts -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. Auf einer NVIDIA-GPU installieren Sie das NVIDIA Container Toolkit und starten docker run -d --name tts --gpus all -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cuda; CUDA und cuDNN bringt das Image mit, der Host braucht nur den Treiber.

Beim ersten Start wird das Modell Supertonic 3, etwa 385 MB, in das Volume superclonica-models geladen; spätere Starts verwenden es wieder. Der Server ist bereit, wenn GET http://localhost:8000/health mit Status, Version und verwendetem Gerät antwortet. Das Image hat einen eigenen Health-Check, docker ps zeigt also, wann er bereit ist.

Eine Anfrage senden

POST /synthesize nimmt JSON entgegen und antwortet mit einer 16-Bit-Mono-WAV-Datei: curl -X POST http://localhost:8000/synthesize -H "Content-Type: application/json" -d '{"text": "Hallo von meinem eigenen Server!", "voice": "F1", "lang": "de"}' -o hallo.wav. Die Header X-Sample-Rate und X-Duration-Seconds beschreiben das Audio.

Die Felder sind text, voice, lang, seed und normalize. voice ist eine der zehn eingebauten Stimmen, M1 bis M5 und F1 bis F5, oder eine eigene Stimme; lang ist die Sprache des Textes, eine der 31 Sprachen des Modells (Chinesisch gehört nicht dazu). Ein fester Seed ergibt für denselben Text wieder dasselbe Audio, normalize gleicht die Lautheit an. GET /voices listet die eingebauten Stimmen und Sprachen, /docs zeigt die interaktive API-Dokumentation.

Eigene Stimmen verwenden

Eine Supertonic-3-Stimme ist eine JSON-Datei von etwa 0,3 MB. Kostenlose Stimmen mit Hörproben liegen im Repository superclonica/supertonic-voices auf GitHub, und der SuperClonica-Katalog hat über 170 weitere, jede mit kostenloser Onlinedemo.

Die Stimme gelangt als JSON-Objekt selbst in das Feld voice der Anfrage, der Server speichert also keine Stimmdateien. Da das Objekt groß ist, bauen Sie die Anfrage in einer Datei und senden sie mit curl -d @request.json, oder im Code: Laden Sie die Stimme mit json.load in Python oder JSON.parse in JavaScript und senden Sie sie zusammen mit dem Text. Der Anfragekörper darf bis zu 2 MB groß sein.

Einstellungen

Der Server liest seine Einstellungen aus Umgebungsvariablen, übergeben mit -e in docker run oder in einer Compose-Datei.

  • SUPERCLONICA_API_KEY: Ist sie gesetzt, verlangen /synthesize und /voices den Header Authorization: Bearer mit dem Schlüssel.
  • SUPERCLONICA_LANES: Kopien des Modells, von 1 bis 8 (Standard 1); jede verarbeitet eine Anfrage zur Zeit und braucht eigenen Speicher.
  • SUPERCLONICA_DEVICE: auto, cuda oder cpu (Standard auto: die GPU, wenn vorhanden).
  • SUPERCLONICA_THREADS: CPU-Threads (Standard einer pro physischem Kern).
  • SUPERCLONICA_MAX_TEXT: der längste Text in Zeichen (Standard 5000).

Vor dem Produktivbetrieb

Ein paar Gewohnheiten halten eine selbst gehostete Sprach-API schnell und sicher.

  • Behalten Sie das Volume /models, damit Neustarts das Modell nicht erneut laden, und starten Sie den Container mit --restart unless-stopped.
  • Öffnen Sie Port 8000 nicht unverändert ins Internet: Setzen Sie einen API-Schlüssel und stellen Sie den Server hinter einen Reverse-Proxy mit HTTPS oder halten Sie ihn in einem privaten Netz.
  • Teilen Sie lange Texte selbst in Absätze, wenn Sie Fortschritt oder Streaming brauchen; die Engine spricht einen langen Text ohnehin in natürlichen Stücken von bis zu 160 Zeichen.
  • Speichern Sie Audio für wiederkehrende Texte wie Oberflächenphrasen zwischen: Derselbe Text mit derselben Stimme und demselben Seed ergibt immer dieselbe Datei.
  • Messen Sie auf Ihrer Hardware: In unseren Tests dauerte ein kurzer Satz 0,12 s auf einer RTX 5070 Ti und 0,43 s auf vier Threads eines Ryzen 7 5800X.

Lizenzen

Die SuperClonica-Engine und das Image stehen unter der Apache License 2.0. Das Modell Supertonic 3 steht unter OpenRAIL-M, einer lizenzgebührenfreien Lizenz mit einer Liste verbotener Verwendungen statt einer Nichtkommerziell-Klausel: Verwenden Sie Sprache nicht, um sich ohne Einwilligung als jemand anderes auszugeben, zu täuschen oder zu belästigen, und kennzeichnen Sie maschinell erzeugtes Audio, wo es darauf ankommt.