In diesem Artikel präsentieren wir Styletts 2, ein TTS-Modell (Text-to-Speech), das die Diffusion des Stils und das kontroverse Training mit großen Sprachmodellen (SLMs) nutzt, um die TTS-Synthese auf Menschenebene zu erreichen. Styletts 2 unterscheidet sich von seinem Vorgänger, indem sie Stile als latente Zufallsvariable durch Diffusionsmodelle modellieren, um den am besten geeigneten Stil für den Text zu erzeugen, ohne Referenzrede zu erfordern und effiziente latente Diffusion zu erreichen und gleichzeitig von der vielfältigen Sprachsynthese zu profitieren, die von Diffusionsmodellen angeboten wird. Darüber hinaus verwenden wir große, vorgeborene SLMs wie WAVLM als Diskriminatoren mit unserer neuartigen Modellierung von Differenzdauer für ein End-to-End-Training, was zu einer verbesserten Sprachnatürlichkeit führt. Styletts 2 übertrifft menschliche Aufnahmen im LJSpeech-Datensatz mit einem Sprecher und stimmt mit dem Multispeaker-VCTK-Datensatz ab, wie von englischen Muttersprachlern beurteilt. Darüber hinaus übertrifft unser Modell, wenn sie auf dem LIBRITTS-Datensatz trainiert, frühere öffentlich verfügbare Modelle für die Anpassung von Null-Shot-Lautsprechern. Diese Arbeit erreicht die erste TTS-Synthese auf menschlicher Ebene sowohl für einzelne als auch für Multispeaker-Datensätze und zeigt das Potenzial der Stildiffusion und des kontroversen Trainings mit großen SLMs.
Papier: https://arxiv.org/abs/2306.07691
Audio -Samples: https://styletts2.github.io/
Online -Demo: Umarmendgesicht (danke @FakeryBakery für die wundervolle Online -Demo)
train_second.py (Ich habe alles ausprobiert, um dies zu reparieren, hatte aber keinen Erfolg. Wenn Sie also bereit sind zu helfen, siehe #7). git clone https://github.com/yl4579/StyleTTS2.git
cd StyleTTS2pip install -r requirements.txtUnter Windows hinzufügen:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -UInstallieren Sie auch Phonemizer und Espeak, wenn Sie die Demo ausführen möchten:
pip install phonemizer
sudo apt-get install espeak-ngTraining der ersten Stufe:
accelerate launch train_first.py --config_path ./Configs/config.ymlTraining der zweiten Stufe (DDP -Version funktioniert nicht, sodass die aktuelle Version DP verwendet. Sehen Sie erneut #7, wenn Sie helfen möchten) :
python train_second.py --config_path ./Configs/config.yml Sie können beide nacheinander laufen und es wird sowohl die erste als auch die zweite Phase trainieren. Das Modell wird im Format "epoch_1st_%05d.PTH" und "epoch_2nd_%05d.Pth" gespeichert. Checkpoints und Tensorboard -Protokolle werden unter log_dir gespeichert.
Das Datenlistenformat muss filename.wav|transcription|speaker sein. Die Lautsprecherbezeichnungen werden für Modelle mit mehreren Lautsprechern benötigt, da wir Referenz-Audio für Style-Diffusionsmodell-Training probieren müssen.
In config.yml gibt es einige wichtige Konfigurationen, um die man sich kümmern muss:
OOD_data : Der Weg für außergewöhnliche Texte für das SLM-kontroverse Training. Das Format sollte text|anything sein.min_length : Mindestlänge von OOD -Texten für das Training. Dies soll sicherstellen, dass die synthetisierte Sprache eine Mindestlänge hat.max_len : maximale Audio -Länge für das Training. Das Gerät ist Rahmen. Da die Standard -Hopfengröße 300 beträgt, beträgt ein Rahmen ungefähr 300 / 24000 (0,0125) Sekunde. Senken Sie dies, wenn Sie auf das außerememorische Problem stoßen.multispeaker : Setzen Sie auf True, wenn Sie ein Multispeaker -Modell trainieren möchten. Dies ist erforderlich, da die Architektur des Denoiser für einzelne und Multispeaker -Modelle unterschiedlich ist.batch_percentage : Dies soll sichergestellt werden, dass während des SLM-kontroversen Trainings keine Probleme mit dem Memory (OOM) gibt. Wenn Sie auf das Problem stoßen, legen Sie bitte eine niedrigere Nummer dafür fest.Im Ordner utils gibt es drei vorgebildete Modelle:
batch_size oder max_len . Weitere Informationen finden Sie in Ausgabe 10. Das Skript wird von train_second.py geändert, das DP verwendet, da DDP für train_second.py nicht funktioniert. Bitte beachten Sie den obigen kühnen Abschnitt, wenn Sie bereit sind, dieses Problem zu helfen.
python train_finetune.py --config_path ./Configs/config_ft.yml Bitte stellen Sie sicher, dass der Libritts -Checkpoint unter dem Ordner heruntergeladen und entpackt wird. Die Standard -Konfiguration config_ft.yml -Finetunes auf LJSpeech mit 1 Stunde Sprachdaten (ungefähr 1K -Proben) für 50 Epochen. Dies dauerte ungefähr 4 Stunden, um die vier Nvidia A100 zu beenden. Die Qualität ist etwas schlechter (ähnlich wie bei NaturalSpeech bei LJSpeech) als das LJSpeech -Modell, das von Grund auf mit 24 Stunden Sprachdaten trainiert wurde, wodurch etwa 2,5 Tage dauerte, bis vier A100 abgeschlossen waren. Die Proben finden Sie unter #65 (Kommentar).
Wenn Sie eine einzelne GPU verwenden (weil das Skript nicht mit DDP funktioniert) und Trainingsgeschwindigkeit und VRAM speichern möchten, können Sie dies tun (danke @korakoe für die Erstellung des Skripts bei #100):
accelerate launch --mixed_precision=fp16 --num_processes=1 train_finetune_accelerate.py --config_path ./Configs/config_ft.yml@Kreevoz hat detaillierte Notizen zu gemeinsamen Themen bei der Finetuning gemacht, mit Vorschlägen zur Maximierung der Audioqualität: #81. Einige davon gelten auch für das Training von Grund auf. @Iieleven11 hat auch eine Richtlinie für die Feinabstimmung erstellt: #128.
joint_epoch : Dies liegt wahrscheinlich daran, dass Ihr GPU -RAM nicht groß genug für SLM -Gegner -Trainingslauf ist. Sie können das überspringen, aber die Qualität könnte schlechter sein. Das Einstellen von joint_epoch Eine größere Zahl als epochs könnte das SLM -Advesariral -Training überspringen. Weitere Informationen finden Sie unter Inference_LJSpeech.ipynb (Single-Speaker) und Inference_Libritts.ipynb (Multi-Laker). Für Libritts müssen Sie auch Reference_audio.zip herunterladen und unter der demo entpacken, bevor Sie die Demo ausführen.
Die vorgenannten Styletts 2 auf Ljspeech Corpus in 24 kHz können unter https://huggingface.co/yl4579/styletts2-ljspeech/tree/main heruntergeladen werden.
Das vorgefertigte Styletts 2-Modell auf Libritts kann unter https://huggingface.co/yl4579/styletts2-libritts/tree/main heruntergeladen werden.
Sie können Styletts 2 importieren und in Ihrem eigenen Code ausführen. Die Schlussfolgerung hängt jedoch von einem GPL-lizenzierten Paket ab, sodass sie nicht direkt in dieses Repository enthalten ist. Eine GPL-lizenzierte Gabel verfügt über ein importierbares Skript sowie eine experimentelle Streaming-API usw. Ein vollständig mit MIT-lizenziertes Paket, das Gruut verwendet (wenn auch aufgrund der Nichtübereinstimmung zwischen Phonemizer und Gruut) ist ebenfalls verfügbar.
Bevor Sie diese vorgebreiteten Modelle verwenden, erklären Sie sich damit einverstanden, die Zuhörer darüber zu informieren, dass die Sprachmuster von den vorgebauten Modellen synthetisiert werden, es sei denn, Sie haben die Erlaubnis, die von Ihnen synthetisierte Stimme zu verwenden. Das heißt, Sie erklären sich damit einverstanden, nur Stimmen zu verwenden, deren Sprecher der Erlaubnis erteilen, ihre Stimme entweder direkt oder durch Lizenz zu klonen, bevor Sie synthetisierte Stimmen öffentlich machen, oder Sie müssen öffentlich bekannt geben, dass diese Stimmen synthetisiert werden, wenn Sie nicht die Erlaubnis haben, diese Stimmen zu verwenden.
Code: MIT -Lizenz
Vorausgebildete Modelle: Bevor Sie diese vorgebreiteten Modelle verwenden, erklären Sie sich damit einverstanden, den Zuhörern darüber zu informieren, dass die Sprachmuster von den vorgebreiteten Modellen synthetisiert werden, es sei denn, Sie haben die Erlaubnis, die von Ihnen synthetisierte Stimme zu verwenden. Das heißt, Sie erklären sich damit einverstanden, nur Stimmen zu verwenden, deren Sprecher der Erlaubnis erteilen, ihre Stimme entweder direkt oder durch Lizenz zu klonen, bevor Sie synthetisierte Stimmen öffentlich machen, oder Sie müssen öffentlich bekannt geben, dass diese Stimmen synthetisiert werden, wenn Sie nicht die Erlaubnis haben, diese Stimmen zu verwenden.