Chino simplificado | Inglés
[TOC]
.
|--- config/ # 配置文件
|--- default.yaml
|--- ...
|--- datasets/ # 数据处理
|--- encoder/ # 声纹编码器
|--- voice_encoder.py
|--- ...
|--- helpers/ # 一些辅助类
|--- trainer.py
|--- synthesizer.py
|--- ...
|--- logdir/ # 训练过程保存目录
|--- losses/ # 一些损失函数
|--- models/ # 合成模型
|--- layers.py
|--- duration.py
|--- parallel.py
|--- pretrained/ # 预训练模型(LJSpeech 数据集)
|--- samples/ # 合成样例
|--- utils/ # 一些通用方法
|--- vocoder/ # 声码器
|--- melgan.py
|--- ...
|--- wandb/ # Wandb 保存目录
|--- extract-duration.py
|--- extract-embedding.py
|--- LICENSE
|--- prepare-dataset.py # 准备脚本
|--- README.md
|--- README_en.md
|--- requirements.txt # 依赖文件
|--- synthesize.py # 合成脚本
|--- train-duration.py # 训练脚本
|--- train-parallel.py
Vea algunos ejemplos sintéticos aquí.
Aquí se muestran algunos modelos previamente capacitados.
Paso (1) : clonación del repositorio
$ git clone https://github.com/atomicoo/ParallelTTS.gitPaso (2) : Instalar dependencias
$ conda create -n ParallelTTS python=3.7.9
$ conda activate ParallelTTS
$ pip install -r requirements.txtPaso (3) : pronunciación sintética
$ python synthesize.py
--checkpoint ./pretrained/ljspeech-parallel-epoch0100.pth
--melgan_checkpoint ./pretrained/ljspeech-melgan-epoch3200.pth
--input_texts ./samples/english/synthesize.txt
--outputs_dir ./outputs/ Si desea sintetizar voces en otros idiomas, debe especificar el archivo de configuración correspondiente a través de --config .
Paso (1) : Prepare los datos
$ python prepare-dataset.py El archivo de configuración se puede especificar a través de --config , y el predeterminado default.yaml es para el conjunto de datos LJSPEECH.
Paso (2) : capacitar el modelo de alineación
$ python train-duration.pyPaso (3) : duración de la extracción
$ python extract-duration.py --ground_truth se puede usar para especificar si el espectro de verdad en tierra se genera utilizando el modelo de alineación.
Paso (4) : entrenando el modelo sintético
$ python train-parallel.py --ground_truth se puede usar para especificar si se utiliza el espectro de verdad en tierra para el entrenamiento de modelos.
Si usa TensorBoardX, ejecute el siguiente comando:
$ tensorboard --logdir logdir/[DIR]/
Wandb (Peso y prejuicios) es muy recomendable, solo agregue la opción --enable_wandb al comando de entrenamiento anterior.
TODO: para ser complementado
Velocidad de entrenamiento : para el conjunto de datos LJSpeech, configure el tamaño del lote en 64, y puede entrenar en una sola tarjeta gráfica de 8 GB GTX 1080. Después del entrenamiento ~ 8H (~ 300 épocas), puede sintetizar voces de alta calidad.
Velocidad de síntesis : las siguientes pruebas se realizan en CPU @ Intel Core i7-8550U / GPU @ Nvidia GeForce MX150, cada segmento de audio sintetizado es de aproximadamente 8 segundos (aproximadamente 20 palabras)
| Tamaño por lotes | Especulación (GPU) | Audio (GPU) | Especulación (UPC) | Audio (UPC) |
|---|---|---|---|---|
| 1 | 0.042 | 0.218 | 0.100 | 2.004 |
| 2 | 0.046 | 0.453 | 0.209 | 3.922 |
| 4 | 0.053 | 0.863 | 0.407 | 7.897 |
| 8 | 0.062 | 2.386 | 0.878 | 14.599 |
Tenga en cuenta que no se realizaron múltiples pruebas para obtener el promedio, y los resultados son solo de referencia.
vocoder se toma de Parallelwavegan. Debido a los métodos de extracción de características acústicas incompatibles, es necesario convertir. Vea aquí el código de conversión específico.