Implementierung von "Dauer informiertes Aufmerksamkeitsnetzwerk für die multimodale Synthese" (https://arxiv.org/pdf/1909.01700.pdf) Papier.
Status : veröffentlicht
Durian ist Encoder-Decoder-Architektur für die Synthese-Aufgabe von Text-to-Speech. Im Gegensatz zu früheren Architekturen wie Tacotron 2 lernt es keinen Aufmerksamkeitsmechanismus, sondern berücksichtigt die Informationen zur Phonemdauer. Um dieses Modell zu verwenden, sollte man natürlich den Datensatz und dauerhafte Datensatz phonemisiert haben. Sie können jedoch versuchen, ein vorgezogenes Dauermodell für LJSpeech -Datensatz (CMU -DICT verwendet) zu verwenden. Links werden unten bereitgestellt.
Das Durian -Modell besteht aus zwei Modulen: Backbone -Synthesizer und Dauerprädiktor. Hier sind einige der bemerkenswertesten Unterschiede zu Durian, die in Papier beschrieben wurden:
Sowohl das Backbone -Synthesizer als auch das Dauermodell werden gleichzeitig trainiert. Für die Implementierung vereinfacht das Dauermodell die Ausrichtung über die feste maximale Anzahl von Frames. Sie können diese Ausgaben als BCE-Problem, MSE-Problem lernen, indem Sie über die Framesachse summieren oder beide Verluste verwenden (nicht getestet) und in der config.json festlegen. Die Experimente zeigten, dass die Just-BCE-Version des Optimierungsprozesses sich mit längeren Textsequenzen instabil zeigte. Verwenden Sie also MSE+BCE oder Just-MSE (es macht nichts aus, wenn Sie schlechte Ausrichtungen im Tensorboard erhalten).
Sie können die Synthese -Demo -WAVFile (vor der Konvergenz erhalten) im demo (verwendeter Wellenlow -Vocoder) überprüfen.
Stellen Sie zunächst sicher, dass Sie alle Pakete mit pip install --upgrade -r requirements.txt installiert haben. Der Code wird mit pytorch==1.5.0 getestet
Klon das Repository: git clone https://github.com/ivanvovk/DurrIAN
So starten Sie die Durian -Version mit papierbasierten python train.py -c configs/default.json . Sie können angeben, dass Sie das Basismodell als python train.py -c configs/baseline.json --baseline trainieren
Um sicherzustellen, dass in Ihrer lokalen Umgebung alles gut funktioniert, können Sie Unit -Tests im tests -Ordner von python <test_you_want_to_run.py> ausführen.
Diese Implementierung wurde unter Verwendung eines phonemisierten Dauer-ausgerichteten LJSpeech-Datensatzes mit BCE-Verlustminimierung geschult. Möglicherweise finden Sie es über diesen Link.
Der Hauptnachteil dieses Modells ist der dauerhafte Datensatz. Sie können mit dem filelistischen Ordner der aktuellen Implementierung in filelists eingesetzt werden. Um Ihre Daten zu verwenden, stellen Sie sicher, dass Sie Ihre Filelisten auf die gleiche Weise organisiert haben, wie es die ljspeech bereitgestellt haben. Um jedoch Zeit und Neuronen Ihres Gehirns zu sparen, können Sie versuchen, das Modell auf Ihrem Datensatz ohne Dauer zu trainieren, indem Sie das auf dem LJSpeech-Dauermodell von meinem Modell-Checkpoint (nicht ausprobierte) auf dem LJspeech-Dauer-Modell ausrichten. Wenn Sie jedoch daran interessiert sind, den persönlichen Datensatz auszurichten, befolgen Sie den nächsten Abschnitt sorgfältig.
In meinen Experimenten stimmte ich Ljspeech mit dem Tool für erzwungene Ausrichtung von Montreal aus. Wenn hier etwas unklar ist, befolgen Sie bitte die Anweisungen in den Dokumenten von Toolkit. Zunächst hat das Ausrichten von Algorithmus mehrere Schritte:
Organisieren Sie Ihren Datensatz ordnungsgemäß. MFA verlangt, dass es sich in einem einzelnen Strukturordner {Äußerung_ID.Lab, ontypt_id.wav} befindet. Stellen Sie sicher, dass alle Ihre Texte aus .lab -Format sind.
Laden Sie die MFA -Version herunter und befolgen Sie die Installationsanweisungen über diesen Link.
Sobald Sie mit MFA fertig sind, benötigen Sie Ihr Dataset -Wörter Dictionary mit Phonemes -Transkriptionen. Hier haben Sie mehrere Optionen:
bin/mfa_generate_dictionary /path/to/model_g2p.zip /path/to/data dict.txt generieren. Beachten Sie, dass die Standard -MFA -Installation Ihnen automatisch ein englisches, vorgezogenes Modell bietet, das Sie verwenden können. Sobald Sie Ihre Daten, das Wörterbuch und das G2P -Modell erstellt haben, sind Sie jetzt bereit für die Ausrichtung. Führen Sie den Befehl bin/mfa_align /path/to/data dict.txt path/to/model_g2p.zip outdir . Warten Sie bis fertig. outdir enthält eine Liste von Vokabeln und einen Ordner mit speziellen Dateien des .TextGrid -Formats, in dem WAVs -Ausrichtungen gespeichert werden.
Jetzt möchten wir diese Textnetzdateien verarbeiten, um den endgültigen Filelisten zu erhalten. Hier finden Sie möglicherweise nützlich. Das Python -Paket TextGrid . Installieren Sie es mit pip install TextGrid . Hier ein Beispiel, wie man es benutzt:
import textgrid
tg = textgrid.TextGrid.fromFile('./outdir/data/text0.TextGrid')
Jetzt ist tg die festgelegten zwei Objekte: Erstens enthält ausgerichtete Wörter, zweite, ausgerichtete Phoneme. Sie brauchen den zweiten. Extrahieren Sie die Dauer (in Frames! tg hat Intervalle in Sekunden, damit sie für den gesamten Datensatz konvertiert werden, indem sie über erhaltene .TextGrid -Dateien iteriert und einen Filelisten in derselben Form vorbereiten wie die, die ich in filelists -Ordner zur Verfügung gestellt habe.
Ich fand einen Überblick über mehrere Aligner. Vielleicht wird es hilfreich sein. Ich empfehle Ihnen jedoch, MFA zu verwenden, da es sich um einen der genauesten Aligner für mein bestes Wissen handelt.