Dans cet article, nous présentons Styletts 2, un modèle de texte à dispection (TTS) qui exploite la diffusion du style et la formation adversaire avec de grands modèles de langage de la parole (SLM) pour atteindre la synthèse du TTS au niveau humain. Styletts 2 diffère de son prédécesseur en modélisant les styles comme une variable aléatoire latente à travers des modèles de diffusion pour générer le style le plus approprié pour le texte sans nécessiter de discours de référence, réalisant une diffusion latente efficace tout en bénéficiant de la diversité de la synthèse de la parole offerte par des modèles de diffusion. De plus, nous utilisons de grands SLM pré-formés, comme WAVLM, comme discriminateurs avec notre nouvelle modélisation de durée différenable pour une formation de bout en bout, entraînant une amélioration du naturel de la parole. Styletts 2 dépasse les enregistrements humains sur l'ensemble de données LJSpeech monocoser et le correspond sur l'ensemble de données VCTK Multippeaker tel que jugé par des anglophones natifs. De plus, lorsqu'il est formé sur l'ensemble de données Libritts, notre modèle surpasse les modèles précédents accessibles au public pour l'adaptation de haut-parleurs zéro. Ce travail réalise la première synthèse de TTS au niveau humain sur des ensembles de données uniques et multispeaker, présentant le potentiel de diffusion de style et de formation adversaire avec de grands SLM.
Papier: https://arxiv.org/abs/2306.07691
Échantillons audio: https://styletts2.github.io/
Démo en ligne: Face étreint (merci @fakerybakery pour la merveilleuse démo en ligne)
train_second.py (j'ai essayé tout ce que je pouvais pour résoudre ce problème mais que vous n'aviez pas de succès, donc si vous êtes prêt à aider, veuillez voir # 7) git clone https://github.com/yl4579/StyleTTS2.git
cd StyleTTS2pip install -r requirements.txtSur Windows Ajouter:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -UInstallez également Phonizer et Espeak si vous souhaitez exécuter la démo:
pip install phonemizer
sudo apt-get install espeak-ngFormation en première étape:
accelerate launch train_first.py --config_path ./Configs/config.ymlFormation en deuxième étape (la version DDP ne fonctionne pas, donc la version actuelle utilise DP, voir à nouveau # 7 si vous voulez aider) :
python train_second.py --config_path ./Configs/config.yml Vous pouvez exécuter les deux consécutivement et il entraînera les première et deuxième étapes. Le modèle sera enregistré dans le format "epoch_1st_% 05d.pth" et "epoch_2nd_% 05d.pth". Les points de contrôle et les journaux Tensorboard seront enregistrés sur log_dir .
Le format de liste de données doit être filename.wav|transcription|speaker , voir val_list.txt comme exemple. Les étiquettes de haut-parleurs sont nécessaires pour les modèles multi-orages car nous devons échantillonner l'audio de référence pour la formation du modèle de diffusion de style.
Dans config.yml, il existe quelques configurations importantes à prendre en charge:
OOD_data : Le chemin des textes hors distribution pour la formation adversaire SLM. Le format doit être text|anything .min_length : longueur minimale des textes OOD pour la formation. Il s'agit de s'assurer que la parole synthétisée a une longueur minimale.max_len : longueur maximale de l'audio pour la formation. L'unité est un cadre. Étant donné que la taille de houblon par défaut est de 300, une trame est d'environ 300 / 24000 (0,0125) seconde. L'abaissement si vous rencontrez le problème hors de la mémoire.multispeaker : réglé sur true si vous souhaitez former un modèle Multippeaker. Ceci est nécessaire car l'architecture du Denoisi est différente pour les modèles simples et multispeaker.batch_percentage : Il s'agit de s'assurer que lors de la formation adversaire SLM, il n'y a pas de problèmes hors mémoire (OOM). Si vous rencontrez un problème OOM, veuillez définir un nombre inférieur pour cela.Dans le dossier utils, il existe trois modèles pré-formés:
batch_size ou max_len . Vous pouvez vous référer au numéro 10 pour plus d'informations. Le script est modifié à partir de train_second.py qui utilise DP, car DDP ne fonctionne pas pour train_second.py . Veuillez consulter la section Bold ci-dessus si vous êtes prêt à vous aider avec ce problème.
python train_finetune.py --config_path ./Configs/config_ft.yml Veuillez vous assurer que le point de contrôle Libritts est téléchargé et dézippé dans le dossier. La configuration par défaut config_ft.yml finetunes sur LJSpeech avec 1 heure de données vocales (environ 1k échantillons) pour 50 époques. Cela a pris environ 4 heures pour terminer sur quatre Nvidia A100. La qualité est légèrement pire (similaire à NaturalSpeech sur LJSpeech) que le modèle LJSpeech formé à partir de zéro avec 24 heures de données vocales, ce qui a mis environ 2,5 jours pour terminer sur quatre A100. Les échantillons se trouvent au # 65 (commentaire).
Si vous utilisez un seul GPU (parce que le script ne fonctionne pas avec DDP) et que vous souhaitez enregistrer la vitesse de formation et VRAM, vous pouvez le faire (merci @korakoe d'avoir fait le script à # 100):
accelerate launch --mixed_precision=fp16 --num_processes=1 train_finetune_accelerate.py --config_path ./Configs/config_ft.yml@Kreevoz a pris des notes détaillées sur les problèmes communs en Finetuning, avec des suggestions de maximisation de la qualité audio: # 81. Certains d'entre eux s'appliquent également à la formation à partir de zéro. @ Iieleven11 a également créé une directive pour le réglage fin: # 128.
joint_epoch : c'est probablement parce que votre RAM GPU n'est pas assez grand pour la formation de formation adversaire SLM. Vous pouvez ignorer cela, mais la qualité pourrait être pire. Régler joint_epoch un nombre plus grand que epochs pourrait ignorer la formation SLM Advesarial. Veuillez vous référer à inférence_ljspeech.ipynb (single-speaker) et inférence_libritts.ipynb (multi-haut-parleurs) pour plus de détails. Pour les Libritts, vous devrez également télécharger Reference_Audio.zip et le décomposer sous la demo avant d'exécuter la démo.
Le Styletts Pretraind 2 sur le corpus LJSpeech en 24 kHz peut être téléchargé sur https://huggingface.co/yl4579/styletts2-ljspeech/tree/main.
Le modèle Styletts 2 pré-entraîné sur Libritts peut être téléchargé sur https://huggingface.co/yl4579/styletts2-libritts/tree/main.
Vous pouvez importer Styletts 2 et l'exécuter dans votre propre code. Cependant, l'inférence dépend d'un package sous licence GPL, il n'est donc pas inclus directement dans ce référentiel. Une fourche sous licence GPL possède un script imporable, ainsi qu'une API de streaming expérimentale, etc. Un package entièrement limité au MIT qui utilise GRUUT (quoi qu'il soit inférieur en raison d'un décalage entre Phonizer et Gruut) est également disponible.
Avant d'utiliser ces modèles pré-formés, vous acceptez d'informer les auditeurs que les échantillons de parole sont synthétisés par les modèles pré-formés, sauf si vous avez la permission d'utiliser la voix que vous synthétisez. Autrement dit, vous acceptez d'utiliser uniquement des voix dont les conférenciers accordent l'autorisation de se faire cloner la voix, soit directement, soit par licence avant de rendre publiques les voix synthétisées, ou vous devez annoncer publiquement que ces voix sont synthétisées si vous n'avez pas l'autorisation d'utiliser ces voix.
Code: Licence MIT
Modèles pré-formés: Avant d'utiliser ces modèles pré-formés, vous acceptez d'informer les auditeurs que les échantillons de parole sont synthétisés par les modèles pré-formés, sauf si vous avez la permission d'utiliser la voix que vous synthétisez. Autrement dit, vous acceptez d'utiliser uniquement des voix dont les conférenciers accordent l'autorisation de se faire cloner la voix, soit directement, soit par licence avant de rendre publiques les voix synthétisées, ou vous devez annoncer publiquement que ces voix sont synthétisées si vous n'avez pas l'autorisation d'utiliser ces voix.