Verifique o arquivo Changelog para ter uma visão geral global das mais recentes modificações! ?
├── custom_architectures
│ ├── tacotron2_arch.py : Tacotron-2 synthesizer architecture
│ └── waveglow_arch.py : WaveGlow vocoder architecture
├── custom_layers
├── custom_train_objects
│ ├── losses
│ │ └── tacotron_loss.py : custom Tacotron2 loss
├── example_outputs : some pre-computed audios (cf the ` text_to_speech ` notebook)
├── loggers
├── models
│ ├── encoder : the ` AudioEncoder ` is used as speaker encoder for the SV2TTS model *
│ ├── tts
│ │ ├── sv2tts_tacotron2.py : SV2TTS main class
│ │ ├── tacotron2.py : Tacotron2 main class
│ │ ├── vocoder.py : main functions for complete inference
│ │ └── waveglow.py : WaveGlow main class (both pytorch and tensorflow)
├── pretrained_models
├── unitests
├── utils
├── example_fine_tuning.ipynb
├── example_sv2tts.ipynb
├── example_tacotron2.ipynb
├── example_waveglow.ipynb
└── text_to_speech.ipynbVerifique o projeto principal para obter mais informações sobre os módulos / estrutura / estrutura não estendidos / principais classes.
* Verifique o projeto dos codificadores para obter mais informações sobre o módulo models/encoder
models.tts ):| Recurso | FUCÇÃO / CLASSE | Descrição |
|---|---|---|
| Texto para fala | tts | Execute TTS no texto que você deseja com o modelo que deseja |
| fluxo | tts_stream | Execute TTS no texto em que você entra |
| TTS Logger | loggers.TTSLogger | converte logs logging para voz e tocá -lo |
O notebook text_to_speech fornece uma demonstração concreta da função tts
Arquiteturas disponíveis:
Synthesizer :SV2TTS )Vocoder :Os modelos SV2TTS são ajustados a partir de modelos TACOTRON2 pré-tenhados, usando o procedimento de aprendizado de transferência parcial (veja abaixo os detalhes), que acelera muito o treinamento.
| Nome | Linguagem | Conjunto de dados | Sintetizador | Vocoder | Codificador de alto -falante | Treinador | Pesos |
|---|---|---|---|---|---|---|---|
| pré -terenciado_tacotron2 | en | LJSpeech | Tacotron2 | WaveGlow | / | Nvidia | Google Drive |
| tacotron2_siwis | fr | Siwis | Tacotron2 | WaveGlow | / | meu | Google Drive |
| SV2TTS_TACOTRON2_256 | fr | Siwis, Voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | Google Drive | meu | Google Drive |
| sv2tts_siwis | fr | Siwis, Voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | Google Drive | meu | Google Drive |
| SV2TTS_TACOTRON2_256_V2 | fr | Siwis, Voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | Google Drive | meu | Google Drive |
| sv2tts_siwis_v2 | fr | Siwis | SV2TTSTacotron2 | WaveGlow | Google Drive | meu | Google Drive |
Os modelos devem ser descompactados no diretório pretrained_models/ !
NOTA IMPORTANTE : Os modelos NVIDIA disponíveis no torch hub requer uma GPU compatível com a configuração correta para pytorch . É a razão pela qual os dois modelos são fornecidos no ponto de verificação keras esperado?
Os modelos sv2tts_siwis são a versão ajustada do sv2tts_tacotron2_256 no conjunto de dados SIWIS (Single-Speaker). O ajuste fino de um multi-falante em um conjunto de dados de um único alto-falante tende a melhorar a estabilidade e produzir uma voz com mais entonação, em comparação com simplesmente treinar o modelo de alto-falante.
Uma demonstração do Google Colab está disponível neste link!
Você também pode encontrar algum áudio gerado em example_outputs/ , ou diretamente no notebook Colab;)
Verifique este guia de instalação para obter as instruções passo a passo!
Pode ser necessário instalar ffmpeg para carregar / salvar áudio.
Google Colab tensorflow 2.x batch_size para vocoder inference SV2TTS similarity loss para testar um novo procedimento de treinamento para ajustes finos de alto-falante TTS no documento (em andamento) SV2TTS baseado em um codificador treinado com a perda GE2E Existem várias maneiras de ativar a síntese de fala multi-speaker :
speaker ID incorporado por uma camada Embedding aprendida. A incorporação do orador é aprendida durante o treinamento.Speaker Encoder (SE) para incorporar áudio do alto -falante de referência. Isso é frequentemente referido como zero-shot voice cloning , pois requer apenas uma amostra do falante (sem treinamento).prompt-based para controlar o discurso com avisos.SV2TTS Nota: Nos próximos parágrafos, encoder refere -se à parte Tacotron Encoder , enquanto SE se refere a um modelo speaker encoder (detalhado abaixo).
O Speaker Encoder-based Text-To-Speech é inspirado no papel "da verificação do alto-falante ao texto de texto a falar (SV2TTS)". Os autores propuseram uma extensão da arquitetura Tacotron-2 para incluir informações sobre a voz do orador.
Aqui está uma breve visão geral do procedimento proposto:
speaker verification . Esse modelo basicamente toma como entrada uma amostra de áudio (5-10 segundos) de um alto -falante e a codifica em um vetor Dimensional D , denominado embedding . Essa incorporação visa capturar informações relevantes sobre a voz do falante (por exemplo, frequencies , rythm , pitch , ...).Speaker Encoder (SE) é então usado para codificar a voz do alto-falante para clone.Tacotron-2 , de modo que o Decoder tenha acesso ao texto codificado e à incorporação do alto-falante. O objetivo é que o Decoder aprenderá a usar o speaker embedding para copiar sua prosódia / entonação / ... para ler o texto com a voz deste orador.
Existem algumas limitações com a abordagem acima:
Speaker Encoder precisa separar corretamente os alto -falantes e codificar sua voz de maneira significativa para o sintetizador.Para abordar essas limitações, a solução proposta é realizar um treinamento em duas etapas:
CommonVoice . Este é um dos maiores bancos de dados multilíngues para áudio, com o custo de áudios de qualidade ruidosos / variáveis. Portanto, isso não é adequado para treinar modelos de boa qualidade, enquanto o pré-processamento ainda ajuda a obter áudios inteligíveis.A parte SE deve ser capaz de diferenciar os falantes e incorporar (codificar em um vetor 1-D) de maneira significativa .
O modelo usado no papel é um modelo LSTM de 3 camadas com uma camada de normalização treinada com a perda GE2E. A principal limitação é que o treinamento desse modelo é realmente lento e levou 2 semanas em 4 GPUs na tese do Corentinj Master (cf. seu github)
Este projeto propõe uma arquitetura mais simples baseada em Convolutional Neural Networks (CNN) , que é muito mais rápido para treinar em comparação com as redes LSTM . Além disso, a distância euclidian foi usada em vez da métrica cosine , que mostrou convergência mais rápida. Além disso, um gerador baseado em cache personalizado é proposto para acelerar o processamento de áudio. Essas modificações permitiram treinar um modelo de precisão de 99% em 2-3 horas em uma única GPU RTX 3090 !
Para evitar o treinamento de um modelo SV2TTS do zero, o que seria completamente impossível em uma única GPU, é proposto um novo procedimento partial transfer learning .
Este procedimento pega um modelo pré-treinado com uma arquitetura ligeiramente diferente e transfira todos os pesos comuns (como no aprendizado regular de transferência). Para as camadas com formato de pesos diferentes, apenas a parte comum é transferida, enquanto os pesos restantes são inicializados para zeros. Isso resultou em um novo modelo com pesos diferentes para imitar o comportamento do modelo original.
Na arquitetura SV2TTS , a incorporação do alto -falante é passada para a camada recorrente do Tacotron2 decoder . Isso resulta em uma forma de entrada diferente, tornando a matriz de pesos da camada diferente. O aprendizado de transferência parcial permite nitializar o modelo de modo que ele replique o comportamento do modelo original Tacotron2 -falante único!
Contatos:
[email protected]O objetivo desses projetos é apoiar e promover a educação e a pesquisa em tecnologia de aprendizagem profunda. Para facilitar isso, todo o código associado é disponibilizado sob a licença pública geral do GNU Affero (AGPL) V3, complementada por uma cláusula que proíbe o uso comercial (cf o arquivo de licença).
Esses projetos são lançados como "software livre", permitindo que você use, modifique, implante e compartilhe livremente o software, desde que você siga os termos da licença. Embora o software esteja disponível gratuitamente, não é domínio público e mantém a proteção de direitos autorais. As condições da licença são projetadas para garantir que todo usuário possa utilizar e modificar qualquer versão do código para seus próprios projetos educacionais e de pesquisa.
Se você deseja usar este projeto em um empreendimento comercial proprietário, deve obter uma licença separada. Para mais detalhes sobre esse processo, entre em contato comigo diretamente.
Para minha proteção, é importante observar que todos os projetos estão disponíveis "como está", sem garantias ou condições de qualquer tipo, explícitas ou implícitas. No entanto, não hesite em relatar problemas no projeto do repositório ou fazer uma solicitação de tração para resolvê -lo?
Se você achar este projeto útil em seu trabalho, adicione esta citação para dar mais visibilidade! ?
@misc{yui-mhcp
author = {yui},
title = {A Deep Learning projects centralization},
year = {2021},
publisher = {GitHub},
howpublished = {url{https://github.com/yui-mhcp}}
}
O código para este projeto é uma mistura de vários projetos do GitHub, para ter uma implementação totalmente modulável Tacotron-2
dynamic decoder , que agora foi otimizada e atualizada para ser compatível Keras 3 .SV2TTS fornecida é inspirada neste repositório, com pequenas diferenças e otimizações.Papéis: