In unserem Artikel schlagen wir DAFT-EXPRT vor, ein akustisches Modell mit mehreren Sprechern, das den hochmodernen für den Cross-Speaker-Prosodie-Transfer in jedem Text vorantreibt. Dies ist eine der herausforderndsten und selten direkt angesprochenen Aufgaben in der Sprachsynthese, insbesondere für hoch ausdrucksstarke Daten. DAFT-EXPRT verwendet Filmkonditionierungsschichten, um in allen Teilen der Architektur strategisch unterschiedliche prosodische Informationen zu injizieren. Das Modell codiert explizit herkömmliche Profi-Merkmale wie Tonhöhe, Lautstärke und Dauer, aber auch prosodische Informationen auf höherer Ebene, die dazu beitragen, überzeugende Stimmen in stark ausdrucksstarken Stilen zu generieren. Sprecheridentität und prosodische Informationen werden durch eine kontroverse Trainingsstrategie entwirrt, die einen genauen Profisübertrag über die Sprecher hinweg ermöglicht. Experimentelle Ergebnisse zeigen, dass DAFT-EXPRT starke Basislinien bei Inter-Text-Cross-Speaker-Prosodie-Übertragungsaufgaben signifikant übertrifft und gleichzeitig mit Ausdrucksmodellen auf dem neuesten Stand der Technik vergleichbar ist. Darüber hinaus zeigen die Ergebnisse, dass das Modell Informationen zur Identität von Sprechern von der Prosody -Darstellung abfällt und konsequent Sprache mit der gewünschten Stimme erzeugt. Besuchen Sie unsere Demo -Seite für Audio -Stichproben im Zusammenhang mit den Papierversuche.
Vollständige Offenlegung : Das in diesem Repository bereitgestellte Modell ist nicht dasselbe wie in der Papierbewertung. Das Modell des Papiers wurde mit proprietären Daten ausgebildet, die uns zur öffentlichen Freigabe verhindern.
Wir haben Daft-Exprt in einer Kombination aus LJ-Sprachdatensatz und dem emotionalen Sprachdatensatz (ESD) von Zhou et al.
Besuchen Sie die Veröffentlichungen dieses Repositorys, um das vorgebreitete Modell herunterzuladen und Profi-Transfer-Beispiele mit demselben Modell anzuhören.
Anforderungen:
Wir empfehlen, Conda für Python Environment Management zu verwenden, z. B. Miniconda herunterzuladen und zu installieren.
Erstellen Sie Ihre Python -Umgebung und installieren Sie Abhängigkeiten mit der Makefile:
conda create -n daft_exprt python=3.8 -yconda activate daft_exprtcd environmentmakeAlle Linux/Conda/PIP -Abhängigkeiten werden vom Makefile installiert und das Repository wird im bearbeitbaren Modus als PIP -Paket installiert.
Anforderungen:
Erstellen Sie das Docker -Bild mit der zugehörigen Dockerfile:
docker build -f environment/Dockerfile -t daft_exprt . In diesem Schnellstarthandbuch wird veranschaulicht, wie Sie die verschiedenen Skripte dieses Repositorys verwenden, um:
Alle Skripte befinden sich im Skriptverzeichnis.
Der DAFT-EXPRT-Quellcode befindet sich im DAFT_EXPRT-Verzeichnis.
In den Skripten verwendete Konfigurationsparameter werden alle in hparams.py instanziert.
Als schnelles Startbeispiel erwägen wir den 22 -kHz -LJ -Sprachdatensatz und den 16 kHz emotionalen Sprachdatensatz (ESD) von Zhou et al.
Dies kombiniert insgesamt 11 Lautsprecher. Alle Lautsprecherdatensätze müssen sich im selben Stammverzeichnis befinden. Zum Beispiel:
/data_dir
LJ_Speech
ESD
spk_1
...
spk_N
In diesem Beispiel verwenden wir das im vorherige Abschnitt erstellte Docker -Bild:
docker run -it --gpus all -v /path/to/data_dir:/workdir/data_dir -v path/to/repo_dir:/workdir/repo_dir IMAGE_ID
Der Quellcode erwartet die spezifische Baumstruktur für jeden Lautsprecherdatensatz:
/speaker_dir
metadata.csv
/wavs
wav_file_name_1.wav
...
wav_file_name_N.wav
metadata.csv muss wie folgt formatiert werden:
wav_file_name_1|text_1
...
wav_file_name_N|text_N
Angesichts jedes Datensatzes hat dieses Projekt keine eigene Nomenklatur, sondern bietet kein fertiges universelles Skript.
Das Skript format_dataset.py schlägt jedoch bereits den Code vor, LJ und ESD zu formatieren:
python format_dataset.py
--data_set_dir /workdir/data_dir/LJ_Speech
LJ
python format_dataset.py
--data_set_dir /workdir/data_dir/ESD
ESD
--language english
In diesem Abschnitt wird der Code:
Um alle verfügbaren formatierten Daten vorzuarbeiten (dh LJ und ESD in diesem Beispiel):
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
pre_process
Dadurch werden Daten mithilfe der Standard-Hyperparameter vorverarbeitet, die für 22-kHz-Audios festgelegt sind.
Alle mit dem Experiment bezogenen Ausgänge werden in /workdir/repo_dir/trainings/EXPERIMENT_NAME gespeichert.
Sie können auch bestimmte Redner für die Datenvorverarbeitung ansprechen. Zum Beispiel nur ESD -Lautsprecher zu betrachten:
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
pre_process
Die Funktion vor dem Prozess enthält mehrere Argumente:
--features_dir : Absolutes Pfad, auf dem vorverarbeitete Daten gespeichert werden. Standard /workdir/repo_dir/datasets--proportion_validation : Anteil der Beispiele, die im Validierungssatz enthalten sind. Verzug auf 0.1 % pro Sprecher.--nb_jobs : Anzahl der Kerne, die für Python Multi-Processing verwendet werden sollen. Wenn sie auf max eingestellt sind, werden alle CPU -Kerne verwendet. Standard auf 6 . Beachten Sie, dass dieser Schritt mehrere Stunden dauert, wenn Sie die Daten zum ersten Mal vorbereiten.
Sie können die Rechenzeit verkürzen, indem Sie den Parameter --nb_jobs erhöhen.
Sobald die Vorverarbeitung abgeschlossen ist, Starttraining. Nach allen vorverarbeiteten Daten trainieren:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
train
Oder wenn Sie während der Vorverarbeitung bestimmte Lautsprecher angegriffen haben (z. B. Lautsprecher):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
train
Alle mit dem Experiment bezogenen Ausgänge werden in /workdir/repo_dir/trainings/EXPERIMENT_NAME gespeichert.
Die Zugfunktion nimmt mehrere Argumente an:
--checkpoint : Absolutes Pfad eines DAFT-EXPRT-Checkpoint. Standard zu ""--no_multiprocessing_distributed : Deaktivieren Sie das verteilte Training mit Multi-Processing von Pytorch. Standard zu False--world_size : Anzahl der Knoten für verteiltes Training. Standard auf 1 .--rank : Knotenrang für verteiltes Training. Standard auf 0 .--master : URL zum Einrichten verteilter Schulungen. Standard für tcp://localhost:54321 . Diese Standardwerte starten ein neues Training ab Iteration 0, wobei alle verfügbaren GPUs auf der Maschine verwendet werden.
Der Code geht davon aus, dass auf der Maschine nur 1 GPU verfügbar ist.
Standard-Chargengröße und Gradientenakkumulation Hyper-Parameter werden auf Werte eingestellt, um die Chargengröße von 48 aus dem Papier zu reproduzieren.
Der Code unterstützt auch die Tensorboard -Protokollierung. Protokollierungsausgänge anzeigen:
tensorboard --logdir_spec=EXPERIMENT_NAME:/workdir/repo_dir/trainings/EXPERIMENT_NAME/logs
Sobald das Training fertig ist, können Sie einen Datensatz für die Feinabstimmung von Vocoder erstellen:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
Oder wenn Sie während der Vorverarbeitung und Schulung bestimmte Lautsprecher angegriffen haben (z. B. Sprecher):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
Der Feinabstimmungsdatensatz wird in /workdir/repo_dir/trainings/EXPERIMENT_NAME/fine_tuning_dataset gespeichert.
Führen Sie die Skriptsynthese.py aus, um ein Beispiel für die Verwendung von DAFT-Exprt für die TTS-Synthese zu verwenden.
python synthesize.py
--output_dir OUTPUT_DIR
--checkpoint CHECKPOINT
Standard -Sätze und Referenz Äußerungen werden im Skript verwendet.
Das Skript bietet auch die Möglichkeit:
--batch_size : Verfahrensstapel parallel--real_time_factor : Schätzen Sie die Leistung von DAFT-EXPRT-Echtzeitfaktor bei der gewählten Stapelgröße--control : Führen Sie die lokale Prosodie-Kontrolle durch @article{Zaidi2021,
abstract = {},
journal = {arXiv},
arxivId = {2108.02271},
author = {Za{"{i}}di, Julian and Seut{'{e}}, Hugo and van Niekerk, Benjamin and Carbonneau, Marc-Andr{'{e}}},
eprint = {2108.02271},
title = {{Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis}},
url = {https://arxiv.org/pdf/2108.02271.pdf},
year = {2021}
}
Jeder Beitrag zu diesem Repository ist mehr als willkommen!
Wenn Sie Feedback haben, senden Sie es bitte an [email protected].
© [2021] Ubisoft Entertainment. Alle Rechte vorbehalten