Implémentation officielle de TSELM : extraction de locuteurs cibles à l'aide de jetons discrets et de modèles de langage.
Pour faire référence à la classe de modèle, consultez directement exp/tselm/model.py. Notez que l'audio mixé est coupé à une longueur de 48080 (3,05sx 16khz) et que la parole de référence est coupée à 64080 (4,05sx 16khz) pour la formation, respectivement.
Nous proposons TSELM, un nouveau réseau d'extraction de locuteurs cibles qui exploite des jetons discrets et des modèles de langage. TSELM utilise plusieurs couches discrétisées de WavLM comme jetons d'entrée et intègre des mécanismes d'attention croisée pour intégrer les informations du locuteur cible. Des modèles de langage sont utilisés pour capturer les dépendances de séquence, tandis qu'un HiFi-GAN évolutif est utilisé pour reconstruire l'audio à partir des jetons. En appliquant une perte d'entropie croisée, TSELM modélise la distribution de probabilité des jetons de sortie, convertissant ainsi le problème complexe de régression de la génération audio en une tâche de classification. Les résultats expérimentaux montrent que TSELM obtient d'excellents résultats en termes de qualité de la parole et des résultats comparables en termes d'intelligibilité de la parole.
requirements.txt
Avant d'exécuter des expériences, nous devons télécharger les modèles pré-entraînés gelés suivants.
Nom | Lien | Résultat |
---|---|---|
WavLM Grand | https://huggingface.co/microsoft/wavlm-large/tree/main | wavlm-grand |
Ksignifie | Télécharger le point de contrôle Kmeans | kmeans_ckpt |
HiFiGAN évolutif | Télécharger le point de contrôle HiFiGAN | hifigan-wavlm-l1-3-7-18-23-k1000-LibriTTS |
Notez que pour la sortie de WavLM Large, il est recommandé de cloner l'intégralité du référentiel ou de télécharger l'intégralité du répertoire. Pour Kmeans et Scalable HiFiGAN, nous devons les extraire après le téléchargement.
La configuration de formation est spécifiée à l'aide du package hyperpyyaml
, qui est essentiellement une réflexion.
La configuration pour la formation TSELM-L
se trouve dans config/tselm_l.yaml. Avant la formation, vous devez spécifier la configuration des modèles pré-entraînés gelés et d'autres détails de formation. Les détails peuvent être trouvés dans config/tselm_l.yaml et config/README.md.
Après la configuration, vous pouvez exécuter
# # Train the model using the config
python train.py --config_path ./config/tselm_l.yaml --log ./log --ckpt_path ./ckpt/tselm_l
--config_path
spécifie le chemin d'accès au fichier de configuration.--log
spécifie le répertoire de sortie du journal. Tous les journaux seront placés ici.--ckpt_path
spécifie le répertoire du point de contrôle. L’entraînement peut être repris en utilisant le même chemin de point de contrôle. Après la formation, le meilleur modèle sera à
.
Pour déduire notre modèle sur l'ensemble de tests libri2mix, par exemple, vous pouvez exécuter
# # 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
spécifie le chemin d'accès au dossier libri2mix testset contenant aux_s1.scp
, s1.scp
et mix_clean.scp
.-config
spécifie la configuration. Cette configuration doit avoir le champ model
.-ckpt
spécifie le point de contrôle du modèle.--output
spécifie le répertoire de sortie. L'audio de sortie sera émis dans ce dossier. Leurs noms seront les mêmes que ceux des fichiers .scp.-gpus
spécifie les GPU disponibles pour exécuter l'inférence.-proc
spécifie le nombre total de processus pour exécuter l'inférence en parallèle. Il utilisera le GPU fourni et divisera les processus de manière égale sur chaque appareil. Les données seront réparties de manière égale pour chaque processus. Notre point de contrôle TSELM-L peut être téléchargé ici.
Vous pouvez déduire sur l'ensemble de tests libri2mix en remplaçant le -ckpt
par le chemin d'accès au point de contrôle.
Notez que vous devez toujours télécharger les modèles pré-entraînés et ajouter le dossier de point de contrôle correspondant à config/tselm_l.yaml.