Pitchtron

- Prosody Transfer Toolkit avec laquelle vous pouvez générer des discours élégants même si votre base de base de base est des voix neutres de personnes ordinaires.
- Nous pouvons transférer des dialectes coréens (Kyongsang, Cheolla) et des prosodies émotifs ainsi que des dialogues neutres.
- Hard Pitchtron est pour transférer strictement la prosodie ainsi, la structure de la phrase de l'audio de référence et la phrase cible correspond mieux.
- Soft Pitchtron poursuit le transfert de prosodie au son naturel, même le son de référence et la phrase cible sont totalement différents dans le contenu.
- La base de données que nous publions avec ce projet est disponible sur emotion_tts
- Des échantillons audio sont disponibles sur http://jsh-tts.tistory.com/entry/pitchtron
- Pitchtron Paper: https://arxiv.org/abs/2005.10456
Différences de trois branches
- Les trois succursales fournies ici concernent le transfert de prosodie.
- Vous pouvez générer une parole de style, de phrase et de voix souhaité.
- Le président de l'audio de référence peut être n'importe qui et cette personne n'est pas nécessaire pour être incluse dans les données de formation.
- Le haut-parleur cible (la voix de l'audio synthétisé) doit être inclus dans les données de formation.
- En utilisant le pitchtor dur et doux, vous pouvez synthétiser dans le dialecte «Kyongsang», le dialecte «Cheolla» et le style émotionnel même si le modèle n'est formé qu'avec une parole neutre et neutre.
- D'un autre côté, pour le jeton de style mondial, vous avez besoin de la base de données du style souhaité pendant le temps d'entraînement.
- J'ai proposé ce pitchtron afin de parler dans le dialecte coréen Kyongsang ANC Cheolla.
- La base de données de ces dialectes est très limitée et le «contour de tangage» est essentiel pour les référencer naturellement. Cela est également vrai pour de nombreuses autres langues accentuées (japonaises), Tonal Langauge (chinois) et style de parole émotionnel.
| Résolution temporelle | Contrôle linéaire | Ajustement de la plage vocale | Référence non parallèle | Support de style invisible | Exigence d'analyse des dimensions |
|---|
| TPS | X | X | X | O | X | O |
| Pitchtron doux | O | * | O | O | O | X |
| Pitchtron dur | O | O | O | ** | O | X |
- *: Soft Pitchtron vous permettra de contrôler la hauteur tant qu'elle peut sembler naturelle. S'il est hors de gamme vocale de haut-parleur cible, il sera coupé pour faire du son naturel.
- **: Hard Pitchtron permet un référencement non parallèle limité.
- Limite non parallèle: le texte peut différer, mais la structure de la phrase doit correspondre.
| Phrase |
|---|
| Référence | "아니요 지는 그짝허고 이야기허고 싶지 않아요" |
| Cible | "그래요 갸는 친구허고 나들이가고 싶은것 같아요" |
- Signification de chaque colonne
- Résolution temporelle: pouvons-nous contrôler le style différemment par étape horlogère?
- Contrôle linéaire: Puis-je contrôler exactement quelle quantité que le pas (note) va être mis à l'échelle? Je n'ai pas à explorer l'espace d'incorporation pour déterminer le changement d'échelle dans la dimension d'intégration à mesure que l'entrée change?
- Réglage de la plage vocale: si la plage vocale de haut-parleur de référence et le haut-parleur cible sont radicalement différents, puis-je référence naturellement dans la plage vocale du haut-parleur cible?
- Référence non parallèle: si la phrase de référence et la phrase cible sont différentes, puis-je le synthétiser naturellement?
- Support de style invisible: si l'audio de référence souhaité est du style qui n'a jamais été vu pendant la formation, peut-il être transféré naturellement?
- Exigence d'analyse de dimension: dois-je analyser les contrôles de jeton / dimension quel attribut pour contrôler ce modèle?
1. Pitchtron doux
- Cette branche fournit un transfert de prosodie non supervisé de phrases parallèles, non parallèles et non parallèles limitées.
- Parallèle: Références de phrase audio et de phrase de synthèse cible.
- Limited non parallèle: mentionné ci-dessus.
- Non-parallèle: la phrase audio de référence et la phrase de synthèse cible ne doivent pas correspondre.
- Semblable à Global Style Token, mais il existe plusieurs avantages.
- Il est beaucoup plus robuste aux styles invisibles pendant l'entraînement.
- C'est beaucoup plus facile à contrôler.
- Vous n'avez pas à analyser les jetons ou les dimensions pour voir ce que fait chaque jeton.
- Vous pouvez mettre à l'échelle la plage de pitch d'audio de référence pour s'adapter à celle du haut-parleur cible afin que le transfert inter-genre soit plus naturel.
- Vous pouvez également contrôler la hauteur pour chaque entrée de phonème
- La plage de référence audio est mise à l'échelle pour s'adapter à celle du haut-parleur cible afin que le transfert inter-genre soit plus naturel.
- Votre contrôle sur le tangage n'est pas si strict qu'il ne fera qu'éduquer à la quantité qu'il semble naturel.
2. Pitchtron dur
- Cette branche fournit un transfert de prosodie non supervisé parallèle et «non parallèle limité».
- Au lieu de cela, le rythme et la hauteur sont exactement les mêmes que l'audio de référence.
- La plage de référence audio est mise à l'échelle pour s'adapter à celle du haut-parleur cible afin que le transfert inter-genre soit plus naturel.
- Vous avez un contrôle strict sur la plage de tangage, à la quantité où il évoluera même si elle entraîne un son contre nature.
3. Jeton de style mondial
- Implémentation de jeton de style global. Jeton de style mondial
- Contrairement à Pitchtron, le jeton de style mondial a tendance à bien fonctionner uniquement pour les styles observés pendant la phase d'entraînement.
- La plage de hauteur ne peut pas être mise à l'échelle, ce qui en résulte un son bruyant si l'audio de référence est hors de la plage vocale de haut-parleur cible.
- Puisqu'il n'est pas robuste pour le nouveau style invisible pendant l'entraînement, il génère parfois une parole avec une énergie trop forte ou une pause trop longue.
Étapes de prétraitement pour fonctionner pour des TT coréens multi-ordres
python preprocess.py --dataset={following keywords}
Exécutez-les dans l'ordre suivant. Vous pouvez refuser certaines pièces en fonction de vos besoins.
- selvas_multensispeaker_pron
- public_korean_pron
- intégrer_dataset
- check_file_integrity
- générer_mel_f0
1. Selvas_Multispeaker_Pron
- PCM brut à WAV_22050 sous chaque haut-parleur
- src: '{data_root} / {haut-parleur} / brut / *. pcm'
- dst: '{data_root} / {haut-parleur} / wav_22050 / *. wav'
- Coupe avec 25 DB supérieur
- Données divisées: pour chaque 400 audio, faites-le évaluer et le même pour le test
- Train: 33194 Wavs
- EVAL: 83 Wavs
- Test: 84 wavs
- Générez un fichier Meta avec un script dans Phoneme * FileLists / Single_Language_Selvas / Train_File_List_Pron.txt
2. Public_korean_pron
- où télécharger: 서울말 낭독체 발화 말뭉치
- régulariser le taux d'échantillonnage à 22050 Hz (cette db a une SR irrégulière)
- Coupe avec les 25 premiers dB
- source:
- wav_16000 / {haut-parleur} / *. wav
- pron / {haut-parleur} / t **. txt
- Exclu du script:
- Le script pour décompresser et déplacer les wavs vers WAV_16000 n'est pas inclus. Vous devez le faire sous cette forme vous-même
- Le fichier texte pour tous les haut-parleurs est égal dans cette base de données, j'ai donc divisé ce script partagé par la littérature manuellement (il inclut les erreurs de nouvelle ligne manquantes, j'ai donc dû le faire manuellement)
- De plus, le script de G2P n'est pas non plus inclus
- Les erreurs supplémentaires dans cette base de données sont
1. Missing speaker: fy15, mw12
2. Wrong data format: mw13_t01_s11.wav, mw13_t01_s12.wav, mw02_t10_s08.wav
3. Overlapping files and naming mistakes: mv11_t07_s4' (==mv11_t07_s40), fy17_t15_s18(==fy17_t16_s01), fv18_t07_s63(==fv18_t07_s62)
- dst: wav_22050 / {haut-parleur} / *. wav
3. Intégrer_dataset
- Je m'intègre au-dessus de deux DB coréens.
- Cela peut être généralisé aux TT multilingues où il existe plusieurs DB de différentes langues.
- Ainsi, le code linguistique correspondant à chaque DB est annexé au fichier de texte de méta intégré créé à cette étape.
- Comment
- Modifier les listes de fichiers source ('Train_file_lists', 'EVA_FILE_LISTS', 'TEST_FILE_LISTS') et les listes de fichiers cibles (Target_Train_File_List, Target_eval_file_list, Target_Test_File_List) à partir de preprocess.preprocess.integrate_dataset (args)
- Vous voudrez peut-être modifier la méthode _integrate () pour désigner le code linguistique pour chaque base de données. Désolé, c'est durs pour l'instant.
- Exécutez PreProcess.py
python preprocess.py --dataset=integrate_dataset
4. Check_file_integrity
- Cette étape génère un fichier META avec des chemins WAV qui n'ont pas pu lire.
- Vous voudrez peut-être les retirer de vos FileLists finaux ou passer par une enquête. C'est sur toi. Cette étape ne supprime pas ces fichiers détectés des fichiers.
- out: problématique_merge_korean_pron _ {}. txt
5. Generate_mel_F0 (facultatif)
- Cette étape est facultative. Cette étape extrait les fonctionnalités de formation et enregistre en tant que fichiers.
- src: wav_22050 / *. wav
- dst: Mel / *. pt et f0 / *. pt
6. Initialiser les premières époques avec une seule db en haut-parleur
- Préparez un train séparé, des filestes valides pour un seul haut-parleur
- Les fichiers pour la formation et la validation de haut-parleurs uniques sont également inclus dans les filelists multispeaker.
- J'ai expérimenté la formation de 30 époques initiales avec une base de base de données unique et cela a aidé à apprendre beaucoup l'alignement du codeur-décodeur.
Comment s'entraîner?
1. Commandes
python train.py {program arguments}
2. Arguments du programme
| Option | Obligatoire | But |
|---|
| -o | O | Chemin du répertoire pour enregistrer les points de contrôle. |
| -C | X | Chemin du point de contrôle pré-entraîné au chargement. |
| -l | O | Journal du journal pour déposer des journaux pour Tensorboard. |
3. Modèles pré-entraînés
* Les modèles pré-entraînés sont formés sur le phonème. Ils s'attendent à un phonème comme entrée lorsque vous donnez des textes à synthétiser.
| Modèle | Point de contrôle pré-entraîné | Hyperparamètres assortis |
|---|
| Pitchtron doux | Pitchtron doux | configuration |
| Pitchtron dur | Pitchtron dur | configuration |
| Jeton de style mondial | TPS | configuration |
| Vocodeur d'éclat d'onde | Lueur | - |
Comment synthétiser?
1. Pitchtron doux
python inferent_soft_pitchtron.py
2. Pitchtron dur
python inference_hard_pitchtron.py
3. GST
python inference_gst_tts.py
Conseils!
- Pour éviter de craquer le son, la plage vocale audio de référence doit être mise à l'échelle de la gamme vocale de haut-parleur cible.
- Cette partie est implémentée dans notre code, mais la plage vocale de haut-parleur cible est calculée grossièrement en échantillonnant seulement 10 audios et en prenant le max-min comme variance.
- Vous obtiendrez beaucoup de mieux si vous utilisez des statistiques plus précises pour la gamme vocale de haut-parleur cible.
Remerciements
- Ce matériel est basé sur les travaux soutenus par le ministère du Trade, de l'industrie et de l'énergie (Motie, Corée) dans le cadre du programme d'innovation de technologie industrielle (n ° 10080667, Développement de la technologie de synthèse de la parole conversationnelle pour exprimer l'émotion et la personnalité des robots grâce à une diversification des sources solides).
- J'ai obtenu de l'aide concernant la couverture de graphème à phonème de ce gars génial => jeongpil_lee
- Ce référentiel est l'implémentation de l'auteur de Paper suivant => (Pitchtron) https://arxiv.org/abs/2005.10456
- Référentiels référencés
| Contribution | URL |
|---|
| Tacotron2 | https://github.com/nvidia/tacotron2 |
| Mellotron | https://github.com/nvidia/mellotron |
| Lueur | https://github.com/nvidia/waveglow |
| Traitement de texte coréen | https://github.com/keithito/tacotron |