Neste artigo, apresentamos Styletts 2, um modelo de texto em fala (TTS) que aproveita a difusão de estilo e o treinamento adversário com grandes modelos de linguagem de fala (SLMs) para obter a síntese de TTS no nível humano. Os Styletts 2 diferem de seu antecessor modelando os estilos como uma variável aleatória latente através de modelos de difusão para gerar o estilo mais adequado para o texto sem exigir a fala de referência, alcançando uma difusão latente eficiente e se beneficia da diversa síntese de fala oferecida por modelos de difusão. Além disso, empregamos grandes SLMs pré-treinados, como o WAVLM, como discriminadores com nossa nova modelagem de duração diferenciável para treinamento de ponta a ponta, resultando em maior naturalidade da fala. O Styletts 2 supera as gravações humanas no conjunto de dados LJSpeech LJSpeech único e o combina com o conjunto de dados VCTK multispicoaker, conforme julgado pelos falantes nativos de inglês. Além disso, quando treinado no conjunto de dados Libritts, nosso modelo supera os modelos anteriores disponíveis para a adaptação de alto-falantes zero. Este trabalho alcança a primeira síntese de TTS em nível humano em conjuntos de dados únicos e multispicantes, mostrando o potencial de difusão de estilo e treinamento adversário com grandes SLMs.
Papel: https://arxiv.org/abs/2306.07691
Amostras de áudio: https://styletts2.github.io/
Demoção on -line: Abraçando o rosto (obrigado @fakerybakery pela maravilhosa demonstração online)
train_second.py (tentei tudo o que pude para corrigir, mas não tive sucesso; portanto, se você estiver disposto a ajudar, consulte o número 7) git clone https://github.com/yl4579/StyleTTS2.git
cd StyleTTS2pip install -r requirements.txtNo Windows Add:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -UInstale também o Phonemizer e Espak se você quiser executar a demonstração:
pip install phonemizer
sudo apt-get install espeak-ngTreinamento da primeira etapa:
accelerate launch train_first.py --config_path ./Configs/config.ymlTreinamento do segundo estágio (versão DDP não está funcionando, então a versão atual usa o DP, consulte novamente o número 7 se você quiser ajudar) :
python train_second.py --config_path ./Configs/config.yml Você pode correr consecutivamente e ele treinará os primeiros e os segundos estágios. O modelo será salvo no formato "epoch_1st_%05d.tth" e "epoch_2nd_%05d.tth". Os pontos de verificação e os logs do Tensorboard serão salvos em log_dir .
O formato da lista de dados precisa ser filename.wav|transcription|speaker , consulte Val_list.txt como exemplo. Os rótulos dos alto-falantes são necessários para os modelos de vários falantes, porque precisamos provar o treinamento de modelo de áudio para difusão de estilo.
Em Config.yml, existem algumas configurações importantes para cuidar de:
OOD_data : O caminho para textos fora da distribuição para treinamento adversário SLM. O formato deve ser text|anything .min_length : Comprimento mínimo de textos Ood para treinamento. Isso é para garantir que o discurso sintetizado tenha um comprimento mínimo.max_len : comprimento máximo de áudio para treinamento. A unidade é quadro. Como o tamanho do salto padrão é 300, um quadro é de aproximadamente 300 / 24000 (0,0125) segundo. Abaixando isso se você encontrar o problema fora da memória.multispeaker : defina como true se você deseja treinar um modelo multispicoer. Isso é necessário porque a arquitetura do denoiser é diferente para modelos únicos e multispicotadores.batch_percentage : Isso deve garantir que, durante o treinamento adversário do SLM, não há problemas fora da memória (OOM). Se você encontrar um problema de OOM, defina um número mais baixo para isso.Na pasta Utils, existem três modelos pré-treinados:
batch_size ou max_len . Você pode se referir à edição nº 10 para obter mais informações. O script é modificado em train_second.py , que usa DP, pois o DDP não funciona para train_second.py . Consulte a seção em negrito acima se estiver disposto a ajudar com esse problema.
python train_finetune.py --config_path ./Configs/config_ft.yml Certifique -se de ter o ponto de verificação do Libritts baixado e descompactado na pasta. A configuração padrão config_ft.yml finetunes no LJSpeech com 1 hora de dados de fala (cerca de 1K amostras) para 50 épocas. Isso levou cerca de 4 horas para terminar em quatro NVIDIA A100. A qualidade é um pouco pior (semelhante ao Naturalspeech no LJSpeech) do que o modelo LJSpeech treinado do zero com 24 horas de dados de fala, que levaram cerca de 2,5 dias para terminar em quatro A100. As amostras podem ser encontradas em #65 (comentário).
Se você estiver usando uma única GPU (porque o script não funciona com o DDP) e deseja economizar velocidade de treinamento e VRAM, você pode fazer (agradeça @korakoe por fazer o script em #100):
accelerate launch --mixed_precision=fp16 --num_processes=1 train_finetune_accelerate.py --config_path ./Configs/config_ft.yml@Kreevoz fez anotações detalhadas sobre questões comuns no Finetuning, com sugestões para maximizar a qualidade do áudio: #81. Alguns deles também se aplicam ao treinamento do zero. @IIELEVEN11 também fez uma diretriz para o ajuste fino: #128.
joint_epoch : é provável que sua RAM GPU não seja grande o suficiente para a execução do treinamento adversário do SLM. Você pode pular isso, mas a qualidade pode ser pior. Configurando joint_epoch Um número maior do que epochs poderia pular o treinamento SLM AdvSariral. Consulte o inference_ljspeech.ipynb (alto-falante) e inference_libritts.ipynb (multi-falante) para obter detalhes. Para o Libritts, você também precisará baixar reference_audio.zip e descompactá -lo sob a demo antes de executar a demonstração.
Os Styletts 2 pré-treinados 2 no LJSpeech Corpus em 24 kHz podem ser baixados em https://huggingface.co/yl4579/styletts2-ljspeech/tree/main.
O modelo pré-terenciado Styletts 2 no Libritts pode ser baixado em https://huggingface.co/yl4579/styletts2-libritts/tree/main.
Você pode importar Styletts 2 e executá -lo em seu próprio código. No entanto, a inferência depende de um pacote licenciado por GPL, portanto não é incluído diretamente neste repositório. Um garfo-licenciado GPL possui um script importável, bem como uma API experimental de streaming, etc. Um pacote totalmente com licenciamento de MIT que usa Gruut (embora menor qualidade devido à incompatibilidade entre o Phonemizer e o GRUUT) também está disponível.
Antes de usar esses modelos pré-treinados, você concorda em informar aos ouvintes que as amostras de fala são sintetizadas pelos modelos pré-treinados, a menos que você tenha permissão para usar a voz que sintetiza. Ou seja, você concorda em usar apenas vozes cujos alto -falantes concedem permissão para ter sua voz clonada, diretamente ou por licença antes de tornar públicas vozes sintetizadas, ou você deve anunciar publicamente que essas vozes são sintetizadas se você não tiver permissão para usar essas vozes.
Código: MIT Licença
Modelos pré-treinados: Antes de usar esses modelos pré-treinados, você concorda em informar aos ouvintes que as amostras de fala são sintetizadas pelos modelos pré-treinados, a menos que você tenha permissão para usar a voz que sintetiza. Ou seja, você concorda em usar apenas vozes cujos alto -falantes concedem permissão para ter sua voz clonada, diretamente ou por licença antes de tornar públicas vozes sintetizadas, ou você deve anunciar publicamente que essas vozes são sintetizadas se você não tiver permissão para usar essas vozes.