Chinês 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
Veja alguns exemplos sintéticos aqui.
Alguns modelos pré-treinados são mostrados aqui.
Etapa (1) : Clonando o repositório
$ git clone https://github.com/atomicoo/ParallelTTS.gitEtapa (2) : Instale dependências
$ conda create -n ParallelTTS python=3.7.9
$ conda activate ParallelTTS
$ pip install -r requirements.txtEtapa (3) : pronúncia 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/ Se você deseja sintetizar o Voices em outros idiomas, precisará especificar o arquivo de configuração correspondente através --config .
Etapa (1) : Prepare os dados
$ python prepare-dataset.py O arquivo de configuração pode ser especificado através de --config , e o default.yaml é para o conjunto de dados LJSpeech.
Etapa (2) : Treinando o modelo de alinhamento
$ python train-duration.pyEtapa (3) : Duração da extração
$ python extract-duration.py --ground_truth pode ser usado para especificar se o espectro de verdade no solo é gerado usando o modelo de alinhamento.
Etapa (4) : Treinando o modelo sintético
$ python train-parallel.py --ground_truth pode ser usado para especificar se deve usar o espectro de verdade no solo para treinamento de modelos.
Se você usar o TensorboardX, execute o seguinte comando:
$ tensorboard --logdir logdir/[DIR]/
O WandB (pesos e vieses) é altamente recomendado, basta adicionar a opção --enable_wandb ao comando de treinamento acima.
TODO: ser complementado
Velocidade de treinamento : para o conjunto de dados LJSpeech, defina o tamanho do lote como 64 e você pode treinar em uma única placa gráfica GTX 1080 de 8 GB. Após o treinamento ~ 8H (~ 300 épocas), você pode sintetizar vozes de alta qualidade.
Velocidade de síntese : os seguintes testes são realizados sob CPU @ Intel Core i7-8550U / GPU @ nvidia geForce MX150, cada segmento de áudio sintetizado é de cerca de 8 segundos (cerca de 20 palavras)
| Tamanho do lote | Espec (GPU) | Áudio (GPU) | Espec (CPU) | Áudio (CPU) |
|---|---|---|---|---|
| 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 |
Observe que nenhum teste múltiplo foi realizado para obter a média e os resultados são apenas para referência.
vocoder é retirado de Parallelwavegan. Devido a métodos incompatíveis de extração de recursos acústicos, é necessário converter. Veja aqui o código de conversão específico.