Text to Speech in Python: offline, kostenlos und mit natürlichen Stimmen
Python bietet mehrere Wege, Text in Sprache umzuwandeln. Manche Bibliotheken lesen mit den roboterhaften Stimmen des Betriebssystems vor, manche schicken den Text an einen Onlinedienst, und manche führen ein neuronales Modell auf Ihrem eigenen Rechner aus. Letztere klingen heute fast menschlich und funktionieren trotzdem ohne Internet.
Dieser Leitfaden vergleicht die Möglichkeiten und zeigt dann lauffähigen Code für die SuperClonica-Engine, ein pip-Paket auf Basis des offenen Modells Supertonic 3: Installation, ein erstes Skript, eigene Stimmen, lange Texte und eine lokale HTTP-API in Docker. Die Engine ist unser Produkt, deshalb sagen wir, wo es um uns geht.
Wege zu Text to Speech in Python
Bevor Sie eine Bibliothek wählen, klären Sie zwei Dinge: ob Ihr Text den Rechner verlassen darf und wie natürlich die Stimme klingen muss.
- pyttsx3 steuert die Sprachausgabe des Systems: SAPI5 unter Windows, NSSpeechSynthesizer unter macOS und eSpeak unter Linux. Es läuft offline und ist in Sekunden installiert, doch die Stimmen klingen roboterhaft und unterscheiden sich von Rechner zu Rechner.
- gTTS schickt den Text an den Sprachdienst von Google Übersetzer und speichert eine MP3. Das klingt klarer, braucht aber Internet, bietet Sprachen und Akzente statt Stimmen und ist eine inoffizielle Schnittstelle, die jederzeit ausfallen kann.
- Cloud-APIs von Google, Amazon, Microsoft oder ElevenLabs klingen sehr gut, verlangen aber ein Konto und einen Schlüssel, werden pro Zeichen bezahlt und senden jeden Text an den Anbieter.
- Lokale neuronale Modelle wie Supertonic 3, Kokoro und Piper laufen auf Ihrer eigenen CPU oder GPU. Nach einem einmaligen Download des Modells arbeiten sie offline, kosten nichts pro Zeichen und klingen weit natürlicher als Systemstimmen. Unsere Vergleichsseiten stellen sie ausführlich vor.
Die SuperClonica-Engine installieren
Die Engine ist ein pip-Paket in zwei Varianten. Für jede CPU unter Windows, macOS oder Linux mit Python 3.10 oder neuer: python -m pip install superclonica-cpu. Für eine NVIDIA-GPU unter Windows oder Linux mit Python 3.11 oder neuer: python -m pip install superclonica-gpu-cuda. Installieren Sie pro Umgebung nur eines davon; beide liefern dasselbe Modul superclonica.
Die GPU-Variante bringt CUDA und cuDNN über pip mit, nötig ist nur ein NVIDIA-Treiber mit CUDA-12-Unterstützung; ohne funktionierende GPU weicht sie auf die CPU aus. Beim ersten Start wird das Modell Supertonic 3, etwa 385 MB, einmalig nach ~/.cache/supertonic3 geladen. Mit SUPERTONIC_CACHE_DIR legen Sie es an einem anderen Ort ab.
Das erste Skript
Engine importieren, einen Satz sprechen lassen und speichern: from superclonica import Superclonica, dann tts = Superclonica(), audio, sample_rate = tts.synthesize("Hallo! Diese Stimme läuft auf meinem eigenen Rechner.", voice="F1", lang="de", seed=7) und tts.save("hallo.wav", audio). Das Modell bringt zehn Stimmen mit, M1 bis M5 und F1 bis F5, die keine zusätzlichen Dateien brauchen.
Erzeugen Sie die Engine einmal und verwenden Sie sie wieder: Das Laden dauert einige Sekunden, jeder weitere Satz nur Sekundenbruchteile. In unseren Messungen dauerte ein kurzer Satz im Median 0,12 s auf einer RTX 5070 Ti und 0,43 s auf einem Ryzen 7 5800X mit vier Threads.
Eine eigene Stimme 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, von Spielfiguren bis zu Sprechern, jede mit kostenloser Onlinedemo.
Übergeben Sie die Datei statt eines Preset-Namens: tts.synthesize("Guten Morgen!", voice="ciri.json", lang="de", seed=7). Auf der Kommandozeile: superclonica --text "Guten Morgen!" --voice ciri.json --lang de --output morgen.wav. Jede Stimme spricht alle 31 Sprachen des Modells; setzen Sie lang auf die Sprache des Textes, etwa en, es, ja oder ru. Chinesisch wird nicht unterstützt.
Lange Texte, Dialoge und Dateiformate
Ein paar Optionen decken die meisten echten Projekte ab.
- Ein langer Text, etwa ein Kapitel, passt in einen Aufruf: Die Engine teilt ihn in natürliche Stücke von höchstens 160 Zeichen, sodass Wörter weder wiederholt noch verschluckt werden.
- normalize=True gleicht die Lautheit auf −18 LUFS an, was beim Zusammenfügen vieler Dateien hilft.
- tts.synthesize_batch() spricht mehrere Zeilen auf einmal, jede mit eigener Stimme, etwa die Zeilen eines Dialogs; die Ergebnisse behalten die Reihenfolge der Eingabe.
- Derselbe Text mit derselben Stimme und demselben Seed ergibt wieder dieselbe Aufnahme, sodass Sie eine Zeile neu sprechen lassen können, ohne den Rest zu ändern.
- Zahlen werden als Wörter gesprochen, gängige Chat-Abkürzungen ausgeschrieben, und Emoji oder unbekannte Zeichen werden bereinigt, statt einen Fehler auszulösen.
- tts.save() schreibt WAV, FLAC oder OGG, je nach Dateiendung.
Text to Speech als lokale HTTP-API
Ist das Programm, das Sprache braucht, nicht in Python geschrieben, starten Sie die Engine in Docker: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu, oder das Tag cuda mit --gpus all auf einer NVIDIA-GPU. Das Modell wird beim ersten Start in das Volume geladen.
Senden Sie POST /synthesize mit JSON, das den Text, die Sprache und den Inhalt der Stimmdatei enthält, und Sie erhalten eine WAV zurück. Eine Stimme ist etwa 0,3 MB groß, bauen Sie die Anfrage daher in einer Datei und senden Sie sie mit curl -d @request.json.
Lizenzen und verantwortungsvolle Nutzung
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.
Einige Stimmen im Katalog sind von bekannten Personen inspiriert. Es sind nicht ihre echten Stimmen, geben Sie solches Audio also nicht als ihre echten Worte aus.