StyleTTS2 – Text-to-Speech auf Basis von Style Diffusion und adversarialem Training mit großen SLMs
(github.com/yl4579)- StyleTTS2 ist ein Text-to-Speech-Modell, das mithilfe von Style Diffusion und adversarialem Training auf Basis großer Speech Language Models (SLM) eine TTS-Synthese auf menschlichem Niveau anstrebt
- Es modelliert Stil als latente Zufallsvariable eines Diffusion Models, erzeugt ohne Referenzsprache einen zum Text passenden Stil und nutzt effiziente Latent Diffusion für vielfältige Sprachsynthese mit dem Diffusion Model
- Große vortrainierte SLMs wie WavLM werden als Discriminator eingesetzt, außerdem kommt differenzierbares Duration Modeling zum Einsatz, um End-to-End-Training und eine natürlichere Sprachausgabe zu verbessern
- Auf dem Einsprecher-Datensatz LJSpeech übertraf es nach Bewertung durch native English speaker menschliche Aufnahmen; auf dem Mehrsprecher-Datensatz VCTK erreichte es das Niveau menschlicher Aufnahmen, und ein mit LibriTTS trainiertes Modell zeigte bei Zero-Shot Speaker Adaptation eine höhere Leistung als bisher öffentlich verfügbare Modelle
- Die Trainings- und Inferenz-Workflows umfassen Einsprecher-LJSpeech, Mehrsprecher-VCTK·LibriTTS sowie Fine-Tuning neuer Sprecher auf Basis eines vortrainierten Mehrsprecher-Modells
- Für die erste Trainingsphase wird
accelerate launch train_first.py --config_path ./Configs/config.ymlverwendet, für die zweite Trainingsphasepython train_second.py --config_path ./Configs/config.yml - Die DDP-Version von
train_second.pyfunktioniert nicht, daher wird derzeit DP verwendet; auch das Fine-Tuning-Skript hat die Einschränkung, dass DDP nicht funktioniert
- Für die erste Trainingsphase wird
- Wichtige Ausführungsbedingungen sind Python >= 3.7, Installation von
requirements.txt, für die Demo die Installation vonphonemizerundespeak-ngsowie das Upsampling der LJSpeech-Daten auf 24 kHz - Die vortrainierten Module bestehen aus ASR für den Text-Aligner, JDC für den Pitch Extractor und PL-BERT
- Der ASR-Aligner wurde mit Korpora für English (LibriTTS), Japanese (JVS) und Chinese (AiShell) vortrainiert
- Der JDC Pitch Extractor wurde ausschließlich mit einem English-Korpus (LibriTTS) vortrainiert
- PL-BERT wurde ausschließlich mit einem English-Korpus (Wikipedia) vortrainiert; für andere Sprachen ist daher ein PL-BERT für die jeweilige Sprache erforderlich, und multilingual PL-BERT unterstützt 14 Sprachen
- Die Inferenz wird über
Inference_LJSpeech.ipynbfür Einsprecher undInference_LibriTTS.ipynbfür Mehrsprecher bereitgestellt; vortrainierte Modelle für LJSpeech und LibriTTS können von Hugging Face heruntergeladen werden - Die Code-Lizenz ist die MIT License; bei der Nutzung der vortrainierten Modelle gelten die Bedingungen, Zuhörer darüber zu informieren, dass es sich um synthetische Sprache handelt, oder öffentlich nur Stimmen von Sprechern zu synthetisieren, für deren Stimmnutzung man die Rechte besitzt
1 Kommentare
Meinungen auf Hacker News
Mit Open-Source-Bausteinen wie StyleTTS2, Whisper und OpenHermes2-Mistral-7B wurde ein zu 100 % lokal laufender Sprach-Chatbot gebaut, der deutlich schneller antwortet als ChatGPT.
Interessant ist, dass man sich mit ihm eher wie in einem echten Gespräch austauschen kann, statt wie bei anderen Sprachassistenten in einer starren Siri-artigen Interaktion.
Auf einem Windows-Gaming-PC mit 12-GB-Nvidia-GPU, im Test mit einer 3060 12GB, lässt er sich ohne Umgang mit Python oder CUDA in einem Schritt installieren und für Gespräche nutzen: https://apps.microsoft.com/detail/9NC624PBFGB7
Die Demo hat noch Ecken und Kanten, etwa dass Kopfhörer nötig sind und sie als Konsolen-App läuft. Sie fühlt sich aber wie ein Vorgeschmack darauf an, was bald allein mit Open-Source-Kombinationen auf normalen Gaming-PCs möglich sein wird; zudem gibt es noch mehrere Verbesserungsmodelle, die bisher nicht integriert wurden.
Besonders wünschenswert wäre, dass Unterbrechen und Dazwischenreden wie in normalen Gesprächen möglich sind: etwa wenn ich den anderen unterbreche, wenn er zu lange spricht, oder wenn die KI kurze bestätigende Einwürfe macht, während ich rede.
Wenn die Geschwindigkeit schneller als Echtzeit wird, könnte man theoretisch mit solchen Funktionen anfangen; für völlig natürliche Gespräche scheint außerdem Kontextwahrnehmung nötig zu sein, bei der die KI Gesicht und Körpersprache beobachtet und einschätzt, ob jemand noch länger sprechen wird.
Auch auf einer EVGA 3080Ti 12GB war die Latenz ziemlich hoch, und obwohl ich nur einmal gesprochen hatte, schien dieselbe Eingabe mehrfach verarbeitet zu werden, wobei leicht unterschiedliche Erkennungsergebnisse wiederholt wurden.
Am Ende zeigte sich auch das Problem, dass es die eigene Stimme hört und auf sich selbst antwortet.
Ich habe StyleTTS2 letzten Monat getestet und schrittweise Notizen zusammengestellt, die für Leute hilfreich sein könnten, die es lokal installieren: https://llm-tracker.info/books/howto-guides/page/styletts-2
Außerdem habe ich mit dem LJSpeech-Modell Geschwindigkeit und Qualität kurz mit VITS und XTTS verglichen; StyleTTS2 war ziemlich gut und sehr schnell: https://fediverse.randomfoo.net/notice/AaOgprU715gcT5GrZ2
Ich frage mich, ob auch Funktionen möglich sind, die Infill oder Outpainting entsprechen; extrem schnelle Sprachsynthese in dieser Qualität dürfte besonders in der Indie- und experimentellen Spieleentwicklung vielfältig einsetzbar sein.
Auch der
#mambaforge-Anchor im Link funktionierte nicht.Die Dokumentation war etwas lückenhaft, daher war das Anpassen ein wenig mühsam, aber nach etwa 20 Minuten lief es unter WSL Ubuntu 22.04 problemlos.
Die Audioqualität ist sehr gut, deutlich besser als bei anderen Open-Source-Sprachsyntheseprojekten, die ich gesehen habe, und auf einer 4090-GPU unglaublich schnell.
Ob es schon die Qualität von ElevenLabs erreicht, weiß ich noch nicht; der Reiz von ElevenLabs liegt aber stark darin, dass es eine hochwertige Stimmenbibliothek gibt, aus der man leicht auswählen kann. In dieser Bibliothek habe ich bisher keine Möglichkeit gefunden, außer der standardmäßigen weiblichen Stimme eine andere Stimme auszuwählen.
Der eigentliche Kern von ElevenLabs ist Voice Cloning, das mit nur einem fünfminütigen Sample praktisch sofort funktioniert, und zwar erstaunlich und fast ein wenig unheimlich gut. Ich hoffe, dass diese Funktion vollständig als Open Source möglich wird. API-Dienste sind für viele Zwecke zu teuer, und selbst das vergleichsweise günstige OpenAI kostet für die Erzeugung von ein paar Tausend Wörtern etwa 10 Cent.
/Demogeht undInference_LJSpeech.ipynboderInference_LibriTTS.ipynböffnet.Dabei übernimmt die Sprachsynthese Intonation und Aussprache, während RVC die Stimmtextur übernimmt. Kombiniert man StyleTTS mit dieser Pipeline, könnte man näher an ElevenLabs herankommen.
Kurze Audiosynthese ist in der Welt der Sprachsynthese fast ein gelöstes Problem, aber wenn man mit Text-to-Speech ein Hörbuch erstellen will, beginnen die Dinge auseinanderzufallen.
Interessanterweise klingen die TTS2-Beispiele besser als die tatsächlichen Referenzaufnahmen: https://styletts2.github.io/
Im Beispiel „Then leaving the corpse within the house [...]“ etwa spricht die Referenzaufnahme
houseseltsam aus, mit einem Gefühl von ansteigender Tonhöhe, während die TTS2-Version natürlicher klingt.Ich würde das gern für verschiedene ePub-Dateien verwenden, etwa japanische Light Novels ohne Hörbuch. Derzeit nutze ich Moon+ Reader TTS auf Android, aber das klingt ziemlich robotisch.
Im Jahr 2023 kann man dagegen nicht gewinnen.
Trotzdem sind die Ergebnisse beeindruckend und besser als bei jeder anderen Sprachsynthese.
Der aktuelle HN-Titel lautet „StyleTTS2 – open-source Eleven Labs quality Text To Speech“, aber der Originaltitel enthält keinen konkreten Produktnamen, und auch das dort verlinkte arXiv-Paper erwähnt ElevenLabs nicht.
Ich dachte, solche Titelbearbeitungen seien eher zu vermeiden.
Wenn ein Open-Source-System an diese Qualität herankommt, ist das sehr bemerkenswert, und die meisten werden den Vergleich vermutlich begrüßen. Tatsächlich hat mich gerade dieser Vergleich neugierig gemacht.
Ich würde gern von Leuten hören, bei denen es erfolgreich funktioniert hat: Dieses Voice Cloning ist völlig anders als XTTSv2 und reicht erst recht nicht an ElevenLabs heran.
Auf Intonation scheint es kaum zu achten; Tonhöhe und Timing werden einigermaßen gut getroffen.
Ich habe die Werte für
alpha,beta,embedding scaleunddiffusion stepsauf verschiedene Weise verändert, aber auch wenn es schnell ist und die Audioqualität ordentlich ist, hat das Voice Cloning überhaupt nicht richtig funktioniert.XTTS wurde vermutlich ebenfalls mit mehr als 20 Sprachen und Millionen von Sprechern trainiert.
Wenn ein Modell Millionen Stimmen gesehen hat, ist darunter zwangsläufig eine, die deiner ähnlich ist; letztlich ist es also eine Frage der Trainingsdaten. Allerdings ist es sehr schwierig, Daten in dieser Größenordnung zu sammeln und zum Training zu nutzen.
alphaundbetaexperimentiert und mehrere Audioclips hochgeladen, aber dasselbe Ergebnis erlebt.Die Qualität ist wirklich absurd gut und liegt auf einem Niveau, das Anfang der 2000er kaum vorstellbar gewesen wäre.
Wenn LLMs Charaktere übernehmen und solche Sprachsynthese NPCs eine Stimme gibt, ergeben sich interessante Möglichkeiten für Spiele.
Aktuelle Golfsimulatoren haben zwitschernde Vögel, sich wiegendes Gras und realistisches Gameplay, aber überhaupt keine Menschen, wodurch eine leicht postapokalyptische Stimmung bleibt.
Das unterscheidet sich stark von den scherzhaften Sticheleien einer echten Runde oder den Zuschauergeräuschen bei großen Turnieren, daher scheint es sich perfekt dafür zu eignen, LLM-basierten Smalltalk hinzuzufügen.
Ich habe gerade das Colab-Notebook ausprobiert, und die Qualität wirkt sehr gut; auch Voice Cloning wird unterstützt.
Ich würde es gern ausprobieren, aber es wird mir langsam etwas lästig, jedes Mal ein
venvanzulegen, nur um torch-Abhängigkeiten zu installieren.Mich würde interessieren, wie andere damit umgehen. Ob es eine einfache Möglichkeit gibt, mehrere
venvs eine gemeinsame torch-Umgebung nutzen zu lassen; manuell geht das zwar, aber ich wüsste gern, ob es Tools gibt, die dabei helfen.Mein Workflow ist: mit
nix flake init -t github:dialohq/flake-templates#pythonstarten, pernix develop -c $SHELLhineingehen, und im Shell-Hook der nix-Entwicklungsumgebungpoetry installsowiepoetry activateausführen.Ich frage mich, ob für Text-to-Speech-Modelle ein LoRA-Marktplatz wie Civitai entstehen wird.
https://github.com/microsoft/LoRA