Überprüfen Sie die ChangeLog -Datei, um einen globalen Überblick über die neuesten Modifikationen zu erhalten! ?
├── custom_architectures
│ ├── tacotron2_arch.py : Tacotron-2 synthesizer architecture
│ └── waveglow_arch.py : WaveGlow vocoder architecture
├── custom_layers
├── custom_train_objects
│ ├── losses
│ │ └── tacotron_loss.py : custom Tacotron2 loss
├── example_outputs : some pre-computed audios (cf the ` text_to_speech ` notebook)
├── loggers
├── models
│ ├── encoder : the ` AudioEncoder ` is used as speaker encoder for the SV2TTS model *
│ ├── tts
│ │ ├── sv2tts_tacotron2.py : SV2TTS main class
│ │ ├── tacotron2.py : Tacotron2 main class
│ │ ├── vocoder.py : main functions for complete inference
│ │ └── waveglow.py : WaveGlow main class (both pytorch and tensorflow)
├── pretrained_models
├── unitests
├── utils
├── example_fine_tuning.ipynb
├── example_sv2tts.ipynb
├── example_tacotron2.ipynb
├── example_waveglow.ipynb
└── text_to_speech.ipynbWeitere Informationen zu den nicht erweiterten Modulen / Struktur / Hauptklassen finden Sie im Hauptprojekt.
* Überprüfen Sie das Projekt für Encoder models/encoder
models.tts ):| Besonderheit | Fuktion / Klasse | Beschreibung |
|---|---|---|
| Text-to-Speech | tts | Führen Sie TTs im gewünschten Text mit dem gewünschten Modell durch |
| Strom | tts_stream | Führen Sie TTs auf Text aus, die Sie eingeben |
| TTS Logger | loggers.TTSLogger | Konvertiert logging , um sie zu äußern und zu spielen |
Das Notebook text_to_speech bietet eine konkrete Demonstration der tts -Funktion
Verfügbare Architekturen:
Synthesizer :SV2TTS )Vocoder :Die SV2TTS-Modelle sind aus vorbereiteten Tacotron2-Modellen unter Verwendung des partiellen Transferlernverfahrens (siehe unten für Details) fein abgestimmt, wodurch das Training viel beschleunigt wird.
| Name | Sprache | Datensatz | Synthesizer | Vocoder | Sprecher -Encoder | Trainer | Gewichte |
|---|---|---|---|---|---|---|---|
| Pretrained_tacotron2 | en | Ljspeech | Tacotron2 | WaveGlow | / | Nvidia | Google Drive |
| tacotron2_siwis | fr | Siwis | Tacotron2 | WaveGlow | / | Mich | Google Drive |
| sv2tts_tacotron2_256 | fr | Siwis, Voxforge, CommonVoice | SV2TTSTacotron2 | WaveGlow | Google Drive | Mich | Google Drive |
| SV2TTS_SIWIS | fr | Siwis, Voxforge, CommonVoice | SV2TTSTacotron2 | WaveGlow | Google Drive | Mich | Google Drive |
| sv2tts_tacotron2_256_v2 | fr | Siwis, Voxforge, CommonVoice | SV2TTSTacotron2 | WaveGlow | Google Drive | Mich | Google Drive |
| SV2TTS_SIWIS_V2 | fr | Siwis | SV2TTSTacotron2 | WaveGlow | Google Drive | Mich | Google Drive |
Modelle müssen in den pretrained_models/ Verzeichnissen entpackt werden!
Wichtiger Hinweis : Die NVIDIA -Modelle, die auf torch hub verfügbar sind, benötigen eine kompatible GPU mit der richtigen Konfiguration für pytorch . Dies ist der Grund, warum beide Modelle im erwarteten keras -Kontrollpunkt bereitgestellt werden?
Die sv2tts_siwis Modelle sind eine fein abgestimmte Version von sv2tts_tacotron2_256 im SIWIS Datensatz (Single-Speaker). Die Feinabstimmung eines Multi-Sprechers auf einem einsprachigen Datensatz verbessert tendenziell die Stabilität und erzeugt eine Stimme mit mehr Intonation, verglichen mit einfachem Training des Einsendersmodells.
Eine Google Colab -Demo ist unter diesem Link verfügbar!
Sie können auch ein Audio finden, das in example_outputs/ oder direkt im Colab -Notebook generiert wird.)
Überprüfen Sie diese Installagion-Handbuch für die Schritt-für-Schritt-Anweisungen!
Möglicherweise müssen Sie ffmpeg für Audio -Laden / -sparen installieren.
Google Colab -Demonstration tensorflow 2.x batch_size -Unterstützung für vocoder inference hinzu SV2TTS -Gewichte hinzu similarity loss hinzu, um ein neues Trainingsverfahren für die Feinabstimmung mit einem Sprecher zu testen TTS im Dokument auszuführen (in Bearbeitung). SV2TTS -Modell basierend auf einem mit dem GE2E -Verlust trainierten Encoder Es gibt mehrere Möglichkeiten, um die Sprachsynthese multi-speaker zu ermöglichen:
speaker ID , die durch eine lernbare Embedding eingebettet ist. Die Einbettung des Sprechers wird dann während des Trainings gelernt.Speaker Encoder (SE) , um Audio aus dem Referenzlautsprecher einzubetten. Dies wird oft als zero-shot voice cloning bezeichnet, da es nur eine Probe vom Lautsprecher benötigt (ohne Training).prompt-based Strategie vorgeschlagen, um die Sprache mit Eingabeaufforderungen zu kontrollieren.SV2TTS -Architektur Hinweis: In den nächsten Absätzen bezieht sich encoder auf den Tacotron Encoder -Teil, während SE auf ein speaker encoder -Modell bezieht (detailliert unten).
Der Papier "Von Speaker Encoder-based Text-To-Speech (SV2TTS)" -Papier "von der Lautsprecherüberprüfung zum Text-zu-Sprache (SV2TTS)" ist inspiriert. Die Autoren haben eine Erweiterung der Tacotron-2 Architektur vorgeschlagen, um Informationen über die Stimme des Sprechers aufzunehmen.
Hier finden Sie einen kurzen Überblick über das vorgeschlagene Verfahren:
speaker verification . Dieses Modell nimmt im Grunde genommen eine Audio -Probe (5-10 Sekunden) von einem Lautsprecher ein und codiert es auf einem dimensionalen Vektor mit dem Namen der embedding . Mit dieser Einbettung soll relevante Informationen über die Stimme des Sprechers erfasst werden (z. B. frequencies , rythm , pitch , ...).Speaker Encoder (SE) wird dann verwendet, um die Stimme des Lautsprechers zum Klon zu codieren.Tacotron-2 Encoder-Teils verkettet, so dass der Decoder sowohl auf den codierten Text als auch auf den Lautsprecher-Einbettung Zugriff hat. Das Ziel ist, dass der Decoder lernt, den speaker embedding um seine Prosodie / Intonation zu kopieren / ... um den Text mit der Stimme dieses Sprechers zu lesen.
Es gibt einige Einschränkungen bei dem obigen Ansatz:
Speaker Encoder muss die Lautsprecher korrekt trennen und ihre Stimme für den Synthesizer auf sinnvolle Weise kodieren.Um diese Einschränkungen anzugehen, besteht die vorgeschlagene Lösung darin, ein 2-Stufen-Training durchzuführen:
CommonVoice Datenbank trainieren. Dies ist eine der größten mehrsprachigen Datenbank für Audio, auf Kosten für verrückte / variable Qualität Audios. Dies ist daher nicht geeignet, um gute Qualitätsmodelle zu trainieren, während die Vorverarbeitung immer noch dazu beiträgt, verständliche Audios zu erhalten.Der SE-Teil sollte in der Lage sein, Lautsprecher zu differenzieren und sie auf sinnvolle Weise einzubetten (in einem 1-D-Vektor).
Das im Papier verwendete Modell ist ein 3-layeres LSTM Modell mit einer Normalisierungsschicht, die mit dem GE2E-Verlust trainiert wird. Die Hauptbeschränkung ist, dass das Training dieses Modells sehr langsam ist und 2 Wochen bei 4 GPUs in der Masterarbeit von Corentinj (vgl. Sein Github) dauerte.
Dieses Projekt schlägt eine einfachere Architektur vor, die auf Convolutional Neural Networks (CNN) basiert, die im Vergleich zu LSTM -Netzwerken viel schneller zu trainieren ist. Darüber hinaus wurde der euclidian Abstand eher als die cosine -Metrik verwendet, die eine schnellere Konvergenz gezeigt hat. Darüber hinaus wird ein benutzerdefinierter Cache-basierter Generator vorgeschlagen, um die Audioverarbeitung zu beschleunigen. Diese Modifikationen ermöglichten es, ein 99% iger Genauigkeitsmodell innerhalb von 2-3 Stunden bei einer einzelnen RTX 3090 GPU zu schulen!
Um zu vermeiden, um ein SV2TTS -Modell von Grund auf neu zu trainieren, das bei einer einzelnen GPU völlig unmöglich wäre, wird ein neues partial transfer learning vorgeschlagen.
Dieses Verfahren umfasst ein vorgebildetes Modell mit einer etwas anderen Architektur und überträgt alle gemeinsamen Gewichte (wie beim regelmäßigen Transferlernen). Für die Schichten mit unterschiedlichen Gewichten wird nur der gemeinsame Teil übertragen, während die verbleibenden Gewichte in Nullen initialisiert werden. Dies führt zu einem neuen Modell mit unterschiedlichen Gewichten, um das Verhalten des ursprünglichen Modells nachzuahmen.
In der SV2TTS -Architektur wird die Einbettung des Sprechers an die wiederkehrende Schicht des Tacotron2 decoder übergeben. Dies führt zu einer anderen Eingangsform, wodurch die Schichtgewichte unterscheidet. Das partielle Übertragungslernen ermöglicht es, das Modell so zu nitialisieren, dass es das Verhalten des ursprünglichen Tacotron2 -Modells mit einem Lautsprecher repliziert!
Kontakte:
[email protected]Das Ziel dieser Projekte ist es, Bildung und Forschung in der Deep -Learning -Technologie zu unterstützen und voranzutreiben. Um dies zu erleichtern, wird alle zugeordneten Code im Rahmen der GNU Affero General Public Lizenz (AGPL) V3 zur Verfügung gestellt, die durch eine Klausel ergänzt wird, die die kommerzielle Nutzung verbietet (vgl. Die Lizenzdatei).
Diese Projekte werden als "kostenlose Software" veröffentlicht, mit der Sie die Software frei verwenden, ändern, bereitstellen und freigeben, sofern Sie die Bedingungen der Lizenz einhalten. Während die Software frei verfügbar ist, ist sie nicht öffentlich zugänglich und behält einen Urheberrechtsschutz. Die Lizenzbedingungen sollen sicherstellen, dass jeder Benutzer jede Version des Codes für seine eigenen Bildungs- und Forschungsprojekte verwenden kann und ändern kann.
Wenn Sie dieses Projekt in einem proprietären kommerziellen Unterfangen verwenden möchten, müssen Sie eine separate Lizenz erhalten. Weitere Informationen zu diesem Prozess, kontaktieren Sie mich bitte direkt.
Für meinen Schutz ist es wichtig zu beachten, dass alle Projekte auf "As is" -Basis ohne Gewährleistungen oder Bedingungen jeglicher Art, entweder explizit oder impliziert, verfügbar sind. Zögern Sie jedoch nicht, Probleme im Projekt des Repositorys zu melden oder eine Pull -Anfrage zur Lösung zu stellen?
Wenn Sie dieses Projekt in Ihrer Arbeit nützlich finden, fügen Sie dieses Zitat hinzu, um es mehr Sichtbarkeit zu geben! ?
@misc{yui-mhcp
author = {yui},
title = {A Deep Learning projects centralization},
year = {2021},
publisher = {GitHub},
howpublished = {url{https://github.com/yui-mhcp}}
}
Der Code für dieses Projekt ist eine Mischung aus mehreren Github-Projekten, um eine vollständig modulierbare Tacotron-2 -Implementierung zu haben
dynamic decoder -Implementierung inspiriert, die jetzt optimiert und aktualisiert wurde, um Keras 3 kompatibel zu sein.SV2TTS Architektur ist von diesem Repository mit kleinen Unterschieden und Optimierungen inspiriert.Papiere: