Voice100 comprend des modèles TTS / ASR neuronaux. L'inférence de Voice100 est à faible coût car ses modèles sont minuscules et ne dépendent que de CNN sans récursivité.
Le modèle TTS est divisé en deux sous-modèles, un modèle d'alignement et un modèle audio. Le modèle d'aligne prédisse les alignements texte donnés par un texte. Un texte aligné est généré à partir du texte et des alignements de texte. Le modèle audio prédire les fonctionnalités du monde (F0, enveloppe de spectre, apériodicité codée) compte tenu du texte aligné.
Réseau d'alignement
graphique TD
A [Texte d'entrée] -> | Bonjour | B (intégration)
B -> c (1d résiduel inversé x4)
C -> D (Convolution)
D -> | H: 0,1 E: 0,2 L: 1,1 L: 1,1 O: 1,2 | E [alignement]
Réseau audio
graphique TD
Un [texte aligné] -> | _HEE_L_L_OO | B (intégration)
B -> c (1d résiduel inversé x4)
C -> D (1D Transsose Convolution)
D -> E (1d résiduel inversé x3)
E -> f (convolution)
F -> g [paramètres mondiaux]
| Name | Type | Params
-----------------------------------------
0 | embedding | Embedding | 14.8 K
1 | layers | Sequential | 8.6 M
-----------------------------------------
8.6 M Trainable params
0 Non-trainable params
8.6 M Total params
17.137 Total estimated model params size (MB)
| Name | Type | Params
-------------------------------------------
0 | embedding | Embedding | 14.8 K
1 | decoder | VoiceDecoder | 11.0 M
2 | norm | WORLDNorm | 518
3 | criterion | WORLDLoss | 0
-------------------------------------------
11.1 M Trainable params
518 Non-trainable params
11.1 M Total params
22.120 Total estimated model params size (MB)
L'entrée du modèle Align est la séquence de jetons du texte d'entrée. Le texte d'entrée est en minuscules et tokenisé en caractères et codé par l'encodeur de texte. L'encodeur de texte a 28 caractères dans le vocabulaire, qui comprend des alphabets inférieurs, un espace et une apostrophie. Tous les personnages qui ne sont pas trouvés dans le vocabulaire sont supprimés.
La sortie du modèle d'aligne est une séquence de paires de calendriers dont la longueur est la même que le nombre de jetons d'entrée. Une paire a deux valeurs, le nombre de trames avant le jeton et le nombre de trames pour le jeton. Une trame est de 20 ms. Un texte aligné est généré à partir du texte d'entrée et des paires de calendriers. La longueur du texte aligné est le nombre de trames totales pour l'audio.
L'entrée du modèle audio est le texte aligné codé, qui est codé de la même manière que le pré-traitement du modèle aligné, sauf qu'il a un jeton ajouté dans le vocabulaire pour l'espacement entre les jetons pour le texte d'origine.
La sortie du modèle audio est la séquence des existences F0, F0, enveloppe spectrale de journal, une apériodicité codée. Une existence F0 est une valeur booléenne, ce qui est vrai lorsque F0 est disponible autrement. F0 est forcé à 0 lorsque l'existence F0 est fausse. Une trame est de 10 ms. La longueur de la sortie est deux fois par la longueur de l'entrée.
Le modèle ASR est un résidu inversé de type Mobilenet à 9 couches qui est formé pour prédire la perte de CTC.
Réseau ASR
graphique TD
A [Mel Spectrogram] -> B (1D résiduel inversé x 12)
B -> C (Convolution)
C -> g [Logits du texte aligné]
| Name | Type | Params
----------------------------------------------------------------
0 | encoder | ConvVoiceEncoder | 11.6 M
1 | decoder | LinearCharDecoder | 14.9 K
2 | loss_fn | CTCLoss | 0
3 | batch_augment | BatchSpectrogramAugumentation | 0
----------------------------------------------------------------
11.6 M Trainable params
0 Non-trainable params
11.6 M Total params
23.243 Total estimated model params size (MB)
Le modèle Align est le LSTM bidirectionnel à 2 couches qui est formé pour prédire les textes alignés à partir des fonctionnalités audio MFCC. Le modèle Align est utilisé pour préparer des textes alignés pour un ensemble de données afin de former les modèles TTS.
| Name | Type | Params
----------------------------------------------------------------
0 | conv | Conv1d | 24.7 K
1 | lstm | LSTM | 659 K
2 | dense | Linear | 7.5 K
3 | loss_fn | CTCLoss | 0
4 | batch_augment | BatchSpectrogramAugumentation | 0
----------------------------------------------------------------
691 K Trainable params
0 Non-trainable params
691 K Total params
1.383 Total estimated model params size (MB)
voice100-prepare-dataset
--dataset ljspeech
--language en
--use_phone
voice100-prepare-dataset
--dataset librispeech
--language en
--use_phone
voice100 fit
--config config/asr_en_phone_base.yaml
--trainer.accelerator gpu
--trainer.devices 1
--trainer.precision 16
--trainer.default_root_dir ./outputs/asr_en_phone_base Cela génère le texte aligné sous forme data/${DATASET}-phone-align.txt .
voice100-align-text
--batch_size 4
--dataset ljspeech
--language en
--use_phone
--checkpoint asr_en_phone_small-20230309.ckptvoice100 fit --config voice100/config/align_en_phone_base.yaml
--trainer.accelerator gpu
--trainer.devices 1
--trainer.precision 16
--trainer.default_root_dir=./outputs/align_en_phone_base Cela génère les statistiques sous forme data/${DATASET}-stat.pt
voice100-calc-stat
--dataset ljspeech
--language en
--output data/audio-stat.pyvoice100 fit --config voice100/config/tts_en_phone_base.yaml
--trainer.accelerator gpu
--gpus 1
--precision 16
--trainer.default_root_dir=./outputs/tts_en_phone_basevoice100-export-onnx
--checkpoint model/ ${MODEL} /lightning_logs/version_0/checkpoints/last.ckptLes modèles CMU sont un modèle qui utilise la sortie de G2P_EN comme représentation de texte au lieu du texte brut.
Ces commandes convertissent des textes dans l'ensemble de données en ./data/[dataset]-phone-[split].txt de Local-Phone-·split Ensuite, exécutez voice100-train-[model] avec --use-phone .
voice100-prepare-dataset
--dataset ljspeech
voice100-prepare-dataset
--dataset librispeech
--split train
voice100-prepare-dataset
--dataset librispeech
--split valLe modèle multitâche CMU est une variante du modèle audio TTS qui est un texte aligné et les sorties sont des paramètres de vocodeur mondiaux et des phonèmes CMU. Pour former le modèle multi-tâches CMU, nous avons besoin de données d'alignement pour les phonèmes anglais et CMU.
./data/ljspeech-align-train.txt./data/ljspeech-phone-align-train.txtPuis courez
MODEL=ttsaudio_en_mt_conv_base
voice100-train-ttsaudio-mt
--gpus 1
--dataset ${DATASET}
--language ${LANGUAGE}
--batch_size 32
--precision 16
--max_epochs 150
--default_root_dir ./model/ ${MODEL} Utilisez des fichiers ONNX d'exécution Voice100 et exportés.
| Nom | Classe de modèle | Ensemble de données | Télécharger |
|---|---|---|---|
| asr_en_small-20230225 | AudiotignText | LibRispenech, discours LJ 1.1 | télécharger |
| asr_en_base-20230319 | AudiotignText | LibRispenech, discours LJ 1.1 | télécharger |
| asr_en_phone_small-20230309 | AudiotignText | LibRispenech, discours LJ 1.1 | télécharger |
| asr_en_phone_base-20230314 | AudiotignText | LibRispenech, discours LJ 1.1 | télécharger |
| asr_ja_phone_small-20230104 | AudiotignText | Voix commune 12.0 ja | télécharger |
| asr_ja_phone_base-20230104 | AudiotignText | Voix commune 12.0 ja | télécharger |
| align_en_base-20230401 | TextoalignText | Discours LJ 1.1 | télécharger |
| TTS_EN_BASE-20230407 | AlignTextToAudio | Discours LJ 1.1 | télécharger |
| align_en_phone_base-20230407 | TextoalignText | Discours LJ 1.1 | télécharger |
| tts_en_phone_base-20230401 | AlignTextToAudio | Discours LJ 1.1 | télécharger |
| align_ja_phone_base-20230203 | TextoalignText | Discours Kokoro v1.2 grand | télécharger |
| tts_ja_phone_base-20230204 | AlignTextToAudio | Discours Kokoro v1.2 grand | télécharger |
| asr_en_base-20210628 (déprécié) | Audioalignctc | Discours LJ 1.1 | télécharger |
| ALIGN_EN_LSTM_BASE_CTC-20210628 (déprécié) | Audioalignctc | Discours LJ 1.1 | télécharger |
| Align_en_Phone_lstm_Base_CTC-20220103 (obsolète) | Audioalignctc | Discours LJ 1.1 | télécharger |
| Align_JA_LSTM_BASE_CTC-20211116 (déprécié) | Audioalignctc | Discours Kokoro v1.1 petit | télécharger |
| Align_ja_Phone_lstm_base_CTC-20221230 (obsolète) | Audioalignctc | Discours Kokoro v1.1 petit | télécharger |
| ttsalign_en_conv_base-20220409 (déprécié) | TextoalignTextModel | Discours LJ 1.1 | télécharger |
| ttsalign_en_phone_conv_base-20220409 (déprécié) | TextoalignTextModel | Discours LJ 1.1 | télécharger |
| ttsalign_ja_conv_base-20220411 (déprécié) | TextoalignTextModel | Discours Kokoro v1.1 petit | télécharger |
| TTSAUDIO_EN_CONV_BASE-20220107 (déprécié) | AlignTextToAudiomodel | Discours Kokoro v1.1 petit | télécharger |
| ttsaudio_en_phone_conv_base-20220105 (déprécié) | AlignTextToAudiomodel | Discours LJ 1.1 | télécharger |
| ttsaudio_ja_conv_base-20220416 (déprécié) | AlignTextToAudiomodel | Discours Kokoro v1.1 petit | télécharger |
| TTSAUDIO_EN_MT_CONV_BASE-20220316 (déprécié) | AlignTextToAudiomultitaskModel | Discours LJ 1.1 | télécharger |
| asr_en_conv_base_ctc-20220126 (déprécié) | AudiototextCTC | Bibliothèque | télécharger |
| asr_en_phone_conv_base_ctc-20220107 (obsolète) | AudiototextCTC | Bibliothèque | télécharger |
| STT_JA_CONV_BASE_CTC-20211127 (déprécié) | AudiototextCTC | Voix commune 6.1 ja | télécharger |
| asr_ja_phone_conv_base_ctc-20221225 (obsolète) | AudiototextCTC | Voix commune 6.1 ja | télécharger |