Offizielle Implementierung von TSELM: Zielsprecherextraktion mithilfe diskreter Token und Sprachmodelle.
Um auf die Modellklasse zu verweisen, überprüfen Sie direkt exp/tselm/model.py. Beachten Sie, dass der gemischte Ton für das Training auf die Länge 48080 (3,05 s x 16 kHz) und die Referenzsprache auf 64080 (4,05 s x 16 kHz) beschnitten wird.
Wir schlagen TSELM vor, ein neuartiges Zielsprecher-Extraktionsnetzwerk, das diskrete Token und Sprachmodelle nutzt. TSELM nutzt mehrere diskretisierte Schichten von WavLM als Eingabetoken und integriert Kreuzaufmerksamkeitsmechanismen, um Zielsprecherinformationen zu integrieren. Sprachmodelle werden verwendet, um die Sequenzabhängigkeiten zu erfassen, während ein skalierbares HiFi-GAN verwendet wird, um das Audio aus den Tokens zu rekonstruieren. Durch die Anwendung eines Kreuzentropieverlusts modelliert TSELM die Wahrscheinlichkeitsverteilung von Ausgabetokens und wandelt so das komplexe Regressionsproblem der Audioerzeugung in eine Klassifizierungsaufgabe um. Experimentelle Ergebnisse zeigen, dass TSELM hervorragende Ergebnisse bei der Sprachqualität und vergleichbare Ergebnisse bei der Sprachverständlichkeit erzielt.
requirements.txt
Bevor wir Experimente durchführen können, müssen wir die folgenden eingefrorenen vorab trainierten Modelle herunterladen.
Name | Link | Ergebnis |
---|---|---|
WavLM Groß | https://huggingface.co/microsoft/wavlm-large/tree/main | wavlm-groß |
Kbedeutet | Laden Sie Kmeans Checkpoint herunter | kmeans_ckpt |
Skalierbares HiFiGAN | Laden Sie HiFiGAN Checkpoint herunter | hifigan-wavlm-l1-3-7-18-23-k1000-LibriTTS |
Beachten Sie, dass für die Ausgabe von WavLM Large empfohlen wird, das gesamte Repository zu klonen oder das gesamte Verzeichnis herunterzuladen. Für Kmeans und Scalable HiFiGAN müssen wir sie nach dem Herunterladen extrahieren.
Die Trainingskonfiguration wird mithilfe des hyperpyyaml
Pakets angegeben, bei dem es sich im Grunde um eine Reflexion handelt.
Die Konfiguration zum Training TSELM-L
finden Sie in config/tselm_l.yaml. Vor dem Training müssen Sie die Konfiguration für die eingefrorenen vorab trainierten Modelle und andere Trainingsdetails angeben. Details finden Sie in config/tselm_l.yaml und config/README.md.
Nach der Konfiguration können Sie es ausführen
# # Train the model using the config
python train.py --config_path ./config/tselm_l.yaml --log ./log --ckpt_path ./ckpt/tselm_l
--config_path
gibt den Pfad zur Konfigurationsdatei an.--log
gibt das Protokollausgabeverzeichnis an. Alle Protokolle werden hier abgelegt.--ckpt_path
gibt das Prüfpunktverzeichnis an. Das Training kann über denselben Checkpoint-Pfad fortgesetzt werden. Nach dem Training befindet sich das beste Modell unter
.
Um beispielsweise unser Modell auf dem libri2mix-Testset abzuleiten, können Sie Folgendes ausführen
# # Generate output audio on libri2mix testset
python inference.py -scp < path_to_libri2mix_test_scp_folder >
-config ./config/tselm_l.yaml
-ckpt < path_to_ckpt >
--output < path_to_output_folder >
-gpus cuda:0 cuda:1 cuda:2 cuda:3
-proc 8
-scp
gibt den Pfad zum libri2mix-Testset-Ordner an, aux_s1.scp
, s1.scp
und mix_clean.scp
enthält.-config
gibt die Konfiguration an. Diese Konfiguration muss das model
enthalten.-ckpt
gibt den Modellprüfpunkt an.--output
gibt das Ausgabeverzeichnis an. Das ausgegebene Audio wird in diesen Ordner ausgegeben. Ihre Namen sind mit denen in .scp-Dateien identisch.-gpus
gibt den verfügbaren GPUs zum Ausführen der Inferenz an.-proc
gibt die Gesamtzahl der Prozesse an, die die Inferenz parallel ausführen sollen. Es verwendet den bereitgestellten GPUs und teilt die Prozesse gleichmäßig auf jedes Gerät auf. Die Daten werden gleichmäßig auf jeden Prozess aufgeteilt. Unser TSELM-L-Kontrollpunkt kann hier heruntergeladen werden.
Sie können auf das libri2mix-Testset schließen, indem Sie -ckpt
durch den Pfad zum Prüfpunkt ersetzen.
Beachten Sie, dass Sie weiterhin die vorab trainierten Modelle herunterladen und den entsprechenden Checkpoint-Ordner zu config/tselm_l.yaml hinzufügen müssen.