Voice100 incluye modelos neuronales TTS/ASR. La inferencia de Voice100 es de bajo costo ya que sus modelos son pequeños y solo dependen de CNN sin recursión.
El modelo TTS se dedica a dos submodelos, alinear el modelo y el modelo de audio. Alinear alineaciones de texto de predicciones del modelo dado un texto. Se genera un texto alineado a partir del texto y las alineaciones de texto. Las características mundiales del modelo de audio predicciones (F0, sobre de espectro, aperiodicidad codificada) dado el texto alineado.
Red de alineación
Gráfico TD
A [Texto de entrada] -> | Hola | B (incrustación)
B -> C (1D residual invertido x4)
C -> D (convolución)
D -> | H: 0,1 E: 0,2 L: 1,1 L: 1,1 O: 1,2 | E [Alineación]
Red de audio
Gráfico TD
A [texto alineado] -> | _hee_l_l_oo | B (incrustación)
B -> C (1D residual invertido x4)
C -> D (convolución de transposición 1D)
D -> E (1D residual invertido X3)
E -> F (convolución)
F -> g [parámetros mundiales]
| 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)
La entrada del modelo Aline es la secuencia de tokens del texto de entrada. El texto de entrada está en minúsculas y tokenized en caracteres y codificado por el codificador de texto. El codificador de texto tiene 28 caracteres en el vocabulario, que incluye alfabetos inferiores, un espacio y una apostrofia. Se eliminan todos los personajes que no se encuentran en el vocabulario.
La salida del modelo Aline es una secuencia de pares de tiempos que la longitud es la misma que el número de tokens de entrada. Un par tiene dos valores, número de cuadros antes del token y el número de cuadros para el token. Un marco es de 20 ms. Se genera un texto alineado a partir del texto de entrada y los pares de tiempos. La longitud del texto alineado es el número de marcos totales para el audio.
La entrada del modelo de audio es el texto alineado codificado, que está codificado de la misma manera que el preprocesamiento del modelo Aline, excepto que tiene una ficha agregada en el vocabulario para espaciar entre tokens para el texto original.
La salida del modelo de audio es la secuencia de F0, existencias F0, envoltura espectral log, aperiodicidad codificada. Una existencia F0 es un valor booleano, que es cierto cuando F0 está disponible falso de lo contrario. F0 se ve forzado a 0 cuando la existencia F0 es falsa. Un marco es de 10 ms. La longitud de la salida es dos veces como la longitud de la entrada.
El modelo ASR es residual invertido de 9 capas de Mobilenet que está entrenado para predecir sobre la pérdida de CTC.
Red ASR
Gráfico TD
A [espectrograma MEL] -> B (1D residual invertido x 12)
B -> C (convolución)
C -> g [logits de texto alineado]
| 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)
El modelo Align es LSTM bidireccional de 2 capas, que está entrenado para predecir textos alineados de las funciones de audio MFCC. El modelo Aline se utiliza para preparar textos alineados para el conjunto de datos para entrenar los modelos 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 Esto genera el texto alineado como 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 Esto genera las estadísticas como 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.ckptLos modelos CMU es un modelo que usa la salida de G2P_EN como representación de texto en lugar de texto sin procesar.
Estos comandos convierten los textos en el conjunto de datos en ./data/[dataset]-phone-[split].txt Splitfont>.txt. Luego ejecute voice100-train-[model] con --use-phone .
voice100-prepare-dataset
--dataset ljspeech
voice100-prepare-dataset
--dataset librispeech
--split train
voice100-prepare-dataset
--dataset librispeech
--split valEl modelo CMU MultITask es una variante del modelo de audio TTS que es un texto alineado y las salidas son parámetros mundiales de vocoder y fonemas CMU. Para capacitar al modelo de tareas múltiples CMU, necesitamos datos de alineación para los fonemas de inglés y CMU.
./data/ljspeech-align-train.txt./data/ljspeech-phone-align-train.txtLuego corre
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} Use el tiempo de ejecución Voice100 y exportó archivos ONNX.
| Nombre | Clase modelo | Conjunto de datos | Descargar |
|---|---|---|---|
| asr_en_small-20230225 | Audioaligntext | Librispeech, LJ Discurso 1.1 | descargar |
| ASR_EN_BASE-20230319 | Audioaligntext | Librispeech, LJ Discurso 1.1 | descargar |
| asr_en_phone_small-20230309 | Audioaligntext | Librispeech, LJ Discurso 1.1 | descargar |
| asr_en_phone_base-20230314 | Audioaligntext | Librispeech, LJ Discurso 1.1 | descargar |
| asr_ja_phone_small-20230104 | Audioaligntext | Voz común 12.0 ja | descargar |
| asr_ja_phone_base-20230104 | Audioaligntext | Voz común 12.0 ja | descargar |
| Align_en_base-20230401 | TextToAlignText | Discurso LJ 1.1 | descargar |
| TTS_EN_BASE-20230407 | AlignTexttoudio | Discurso LJ 1.1 | descargar |
| align_en_phone_base-20230407 | TextToAlignText | Discurso LJ 1.1 | descargar |
| tts_en_phone_base-20230401 | AlignTexttoudio | Discurso LJ 1.1 | descargar |
| align_ja_phone_base-20230203 | TextToAlignText | Discurso kokoro v1.2 grande | descargar |
| tts_ja_phone_base-20230204 | AlignTexttoudio | Discurso kokoro v1.2 grande | descargar |
| ASR_EN_BASE-20210628 (en desuso) | Audioalignctc | Discurso LJ 1.1 | descargar |
| align_en_lstm_base_ctc-20210628 (en desuso) | Audioalignctc | Discurso LJ 1.1 | descargar |
| align_en_phone_lstm_base_ctc-20220103 (en desuso) | Audioalignctc | Discurso LJ 1.1 | descargar |
| align_ja_lstm_base_ctc-20211116 (en desuso) | Audioalignctc | Discurso de kokoro v1.1 pequeño | descargar |
| align_ja_phone_lstm_base_ctc-20221230 (en desuso) | Audioalignctc | Discurso de kokoro v1.1 pequeño | descargar |
| TTSALIGN_EN_CONV_BASE-20220409 (en desuso) | TextToAlignTextModel | Discurso LJ 1.1 | descargar |
| ttsalign_en_phone_conv_base-20220409 (en desuso) | TextToAlignTextModel | Discurso LJ 1.1 | descargar |
| TTSALIGN_JA_CONV_BASE-20220411 (en desuso) | TextToAlignTextModel | Discurso de kokoro v1.1 pequeño | descargar |
| TTSAUDIO_EN_CONV_BASE-20220107 (en desuso) | AlignTextToaudiomodel | Discurso de kokoro v1.1 pequeño | descargar |
| ttsaudio_en_phone_conv_base-20220105 (en desuso) | AlignTextToaudiomodel | Discurso LJ 1.1 | descargar |
| TTSAUDIO_JA_CONV_BASE-20220416 (en desuso) | AlignTextToaudiomodel | Discurso de kokoro v1.1 pequeño | descargar |
| TTSAUDIO_EN_MT_CONV_BASE-20220316 (en desuso) | AlignTextToaudiomultTaskModel | Discurso LJ 1.1 | descargar |
| ASR_EN_CONV_BASE_CTC-20220126 (en desuso) | Audiototextctc | Libriscoech | descargar |
| asr_en_phone_conv_base_ctc-20220107 (en desuso) | Audiototextctc | Libriscoech | descargar |
| STT_JA_CONV_BASE_CTC-20211127 (en desuso) | Audiototextctc | Voz común 6.1 ja | descargar |
| asr_ja_phone_conv_base_ctc-20221225 (en desuso) | Audiototextctc | Voz común 6.1 ja | descargar |