Vous pouvez construire un environnement avec Docker ou Conda .
Si Docker n'est pas installé, veuillez suivre les liens pour trouver des instructions d'installation pour Ubuntu, Mac ou Windows.
Construire l'image Docker:
docker build -t emospeech .
Exécutez l'image Docker:
bash run_docker.sh
Si vous n'avez pas installé Conda, veuillez trouver les instructions d'installation de votre système d'exploitation ici.
conda create -n etts python=3.10
conda activate etts
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
pip install -r requirements.txt
Si vous avez une version différente de CUDA sur votre machine, vous pouvez trouver un lien applicable pour l'installation de Pytorch ici.
Nous avons utilisé des données de 10 anglophones de l'ensemble de données ESD. Pour télécharger tous les fichiers .wav , .txt ainsi que les fichiers .TextGrid créés à l'aide de MFA:
bash download_data.sh
Pour entraîner un modèle, nous avons besoin de durations précomputées, d'énergie, de hauteur et de caractéristiques EGEMAP. De l'exécution du répertoire src :
python -m src.preprocess.preprocess
C'est à quoi devrait ressembler votre dossier de données:
.
├── data
│ ├── ssw_esd
│ ├── test_ids.txt
│ ├── val_ids.txt
└── └── preprocessed
├── duration
├── egemap
├── energy
├── mel
├── phones.json
├── pitch
├── stats.json
├── test.txt
├── train.txt
├── trimmed_wav
└── val.txt
config/config.py .python -m src.scripts.train .Les tests sont implémentés sur le sous-ensemble de tests de données ESD. Pour synthétiser l'audio et calculer les MOS neuronaux (NISQA TTS):
config/config.py dans la section Inference .python -m src.scripts.test . Vous pouvez trouver Nisqa TTS pour l'audio original, reconstruit et généré dans test.log .
Emospeech est formé sur les séquences de phonèmes. Les téléphones pris en charge peuvent être trouvés dans data/preprocessed/phones.json . Ce référentiel est créé pour la recherche académique et ne prend pas en charge la conversion automatique de graphème au phonème. Cependant, si vous souhaitez synthétiser une phrase arbitraire avec un conditionnement émotionnel, vous pouvez:
Générez la séquence de phonèmes à partir de graphiques avec du MFA.
1.1 Suivez le guide d'installation
1.2 Télécharger l'anglais G2P Modèle: mfa model download g2p english_us_arpa
1.3 Générer Phoneme.txt à partir de graphemes.txt: mfa g2p graphemes.txt english_us_arpa phoneme.txt
Exécutez python -m src.scripts.inference , spécifiant les arguments:
| Rythme | Signification | Valeurs possibles | Valeur par défaut |
|---|---|---|---|
-sq | Séquence phonème à synthesisze | Trouver dans data/phones.json . | Non défini, argument requis. |
-emo | ID de l'émotion de la voix désirée | 0: Neutre, 1: en colère, 2: Happy, 3: triste, 4: surprise. | 1 |
-sp | ID de la voix du haut-parleur | De 1 à 10, correspond à 0011 ... 0020 en notation ESD d'origine. | 5 |
-p | Chemin où sauver l'audio synthétisé | Tout avec extension .wav . | génération_from_phoneme_sequence.wav |
Par exemple
python -m src.scripts.inference --sq "S P IY2 K ER1 F AY1 V T AO1 K IH0 NG W IH0 TH AE1 NG G R IY0 IH0 M OW0 SH AH0 N"
Si le fichier de résultat n'est pas synthétisé, vérifiez inference.log pour les téléphones OOV.