Pitchtron

- Prosody Transfer Toolkit com o qual você pode gerar discursos elegantes, mesmo que seu banco de dados de treinamento seja voz neutra de pessoas comuns.
- Podemos transferir dialetos coreanos (Kyongsang, Cheolla) e prosodias emotivas, além de diálogos neutros.
- Hard Pitchtron é para transferir estritamente a prosódia, portanto, a estrutura da frase de referência de áudio e frase de destino é melhor corresponder.
- O Soft Pitchtron busca a transferência de prosódia de som natural, mesmo o áudio de referência e a frase de destino são totalmente diferentes no conteúdo.
- O banco de dados que estamos lançando com este projeto está disponível em emoção_tts
- Amostras de áudio estão disponíveis em http://jsh-tts.tistory.com/entry/pitchtron
- Papel Pitchtron: https://arxiv.org/abs/2005.10456
Diferenças de três ramos
- Todos os três ramos fornecidos aqui são para transferência de prosódios.
- Você pode gerar discurso do estilo, frase e voz desejados.
- O orador do áudio de referência pode ser qualquer pessoa e essa pessoa não é necessária para ser incluída nos dados de treinamento.
- O alto -falante alvo (a voz do áudio sintetizado) deve ser incluído nos dados de treinamento.
- Usando um arremesso duro e macio, você pode sintetizar no dialeto 'Kyongsang' 'dialeto' Cheolla 'e estilo emocional, mesmo que o modelo seja treinado apenas com discurso claro e neutro.
- Por outro lado, para token de estilo global, você precisa do banco de dados do estilo desejado durante o tempo de treinamento.
- Propus esse arremessador para falar no dialeto coreano de Kyongsang Anc Cheolla.
- O banco de dados desses dialetos é muito limitado e o 'pitch contorno' é essencial para referenciar -os naturalmente. Isso também se aplica a muitos outros idiomas com tom de campo (japonês), Langauge tonal (chinês) e estilo de fala emocional.
| Resolução temporal | Controle linear | Ajuste da gama vocal | Referência não paralela | Suporte de estilo invisível | Requisito de análise de dimensão |
|---|
| GST | X | X | X | O | X | O |
| Pitchtron suave | O | * | O | O | O | X |
| Hard Pitchtron | O | O | O | ** | O | X |
- *: Soft Pitchtron permitirá que você controla o tom, desde que possa parecer natural. Se estiver fora da gama vocal do alto -falante alvo, será cortado para emitir um som natural.
- **: Hard Pitchtron permite uma referência não paralela limitada.
- Não paralelo limitado: o texto pode diferir, mas a estrutura da frase deve corresponder.
| Frase |
|---|
| Referência | "아니요 지는 그짝허고 이야기허고 싶지 않아요" |
| Alvo | "그래요 갸는 친구허고 나들이가고 싶은것 같아요" |
- Significado de cada coluna
- Resolução Temporal: Podemos controlar o estilo de maneira diferente pelo timestep?
- Controle linear: posso controlar exatamente a quantidade que o tom (nota) será escalado? Não preciso explorar o espaço de incorporação para descobrir a mudança de escala na dimensão de incorporação à medida que a entrada muda?
- Ajuste da gama vocal: se a gama vocal de alto -falante de referência e alto -falante alvo for drasticamente diferente, posso fazer referência naturalmente na gama vocal do falante alvo?
- Referência não paralela: se a frase de referência e a frase do alvo forem diferentes, posso sintetizá-la naturalmente?
- Suporte ao estilo invisível: se o áudio de referência desejado for do estilo que nunca foi visto durante o treinamento, ele pode ser transferido naturalmente?
- Requisito de análise de dimensão: preciso analisar quais controles de token/dimensão que atributo têm controle sobre esse modelo?
1. Pitchtron mole
- Esta filial fornece transferência de prosódia não supervisionada de frases paralelas e não paralelas e não paralelas.
- Paralelo: Referência da frase de áudio e das frases de síntese do alvo.
- Não paralelo limitado: mencionado acima.
- Não paralelo: a sentença de áudio de referência e a sentença de síntese de destino não precisam corresponder.
- Semelhante ao token de estilo global, mas existem várias vantagens.
- É muito mais robusto para estilos que não são vistos durante o treinamento.
- É muito mais fácil de controlar.
- Você não precisa analisar tokens ou dimensões para ver o que cada token faz.
- Você pode escalar a faixa de áudio de referência para ajustar a do alto-falante alvo, para que a transferência entre gêneros seja mais natural.
- Você também pode controlar o tom de cada entrada de fonema
- A gama de áudio de referência é escalada para se ajustar à do alto-falante alvo, para que a transferência entre gêneros seja mais natural.
- Seu controle sobre o tom não é tão rigoroso que ele apenas escalará para a quantidade que parece natural.
2. Hard Pitchtron
- Esta filial fornece transferência de prosódia não supervisionada não supervisionada e 'limitada' não paralela '.
- Em vez disso, o ritmo e o pitch são exatamente os mesmos do áudio de referência.
- A gama de áudio de referência é escalada para se ajustar à do alto-falante alvo, para que a transferência entre gêneros seja mais natural.
- Você tem um controle rígido sobre a faixa de afinação, na quantidade de escala, mesmo que resulte em som não natural.
3. Token de estilo global
- Implementação de token de estilo global. Token de estilo global
- Ao contrário de Pitchtron, o token de estilo global tende a funcionar bem apenas para os estilos vistos durante a fase de treinamento.
- A faixa de afinação não pode ser dimensionada, resultante de som barulhento se o áudio de referência estiver fora da gama vocal do alto -falante alvo.
- Como não é robusto para o novo estilo invisível durante o treinamento, às vezes gera fala com energia muito alta ou uma pausa muito longa.
Etapas de pré-processamento para concorrer a TTS coreano de vários falantes
python preprocess.py --dataset={following keywords}
Execute -os na seguinte ordem. Você pode optar por algumas partes, dependendo de suas necessidades.
- Selvas_MultisSpeAker_Pron
- public_korean_pron
- integrar_dataset
- check_file_integrity
- generate_mel_f0
1. Selvas_MultisSpeAker_Pron
- PCM cru para wav_22050 sob cada alto -falante
- src: '{data_root}/{speaker}/raw/*. pcm'
- dst: '{data_root}/{speaker}/wav_22050/*. wav'
- Apare com 25 dB superior
- divisão de dados: para cada 400 áudio, faça -o avaliar e o mesmo para teste
- Trem: 33194 WAVs
- Eval: 83 Wavs
- Teste: 84 Wavs
- Gere meta -arquivo com script que está no PhoneMe *filelists/single_language_selvas/trens_file_list_pron.txt
2. Public_korean_pron
- onde baixar: 서울말 낭독체 발화 말뭉치
- regularize a taxa de amostragem para 22050 Hz (este banco de dados tem SR irregular)
- Apare com os 25 dBs top
- fonte:
- WAV_16000/{Speaker}/*. WAV
- pron/{orador}/t **. txt
- Excluído do script:
- O script para descompactar e mover os Wavs para WAV_16000 não está incluído. Você precisa fazer isso nesta forma
- O arquivo de texto para todos os alto -falantes é igual neste banco de dados, então dividi esse script compartilhado por literatura manualmente (inclui erros de nova linha, então tive que fazê -lo manualmente)
- Além disso, o script para G2P também não está incluído
- Erros adicionais neste banco de dados são
1. Missing speaker: fy15, mw12
2. Wrong data format: mw13_t01_s11.wav, mw13_t01_s12.wav, mw02_t10_s08.wav
3. Overlapping files and naming mistakes: mv11_t07_s4' (==mv11_t07_s40), fy17_t15_s18(==fy17_t16_s01), fv18_t07_s63(==fv18_t07_s62)
- DST: wav_22050/{speaker}/*. wav
3. Integrar_dataset
- Eu integro acima de dois DBs coreanos.
- Isso pode ser generalizado para TTS multilíngue, onde existem vários DBs de diferentes idiomas.
- Assim, o código de idioma Corrensoding em cada banco de dados é anexado ao arquivo de texto de meta integrado criado nesta etapa.
- Como fazer
- Modificar listas de arquivos de origem ('Train_file_lists', 'Eval_file_lists', 'test_file_lists') e listas de arquivos de destino (Target_train_file_list, Target_eval_file_list, Target_Test_File_List) do pré -process.
- Você pode modificar o método _integrate () para designar código de idioma para cada banco de dados. Desculpe, está codificado por enquanto.
- Execute preprocess.py
python preprocess.py --dataset=integrate_dataset
4. Check_file_integrity
- Esta etapa gera meta -arquivo com caminhos WAV que não conseguiram ler.
- Você pode removê -los dos seus filmes finais ou passar por alguma investigação. Está em você. Esta etapa não remove esses arquivos detectados dos filmes.
- OUT: Problematic_Merge_Korean_Pron _ {}. TXT
5. generate_mel_f0 (opcional)
- Esta etapa é opcional. Esta etapa extrai recursos para treinamento e salvar como arquivos.
- SRC: WAV_22050/*. WAV
- DST: MEL/*. PT e F0/*. PT
6. Inicialize as primeiras épocas com db de alto -falante único
- Prepare o trem separado, listas de fileiras válidas para um único alto -falante
- Os arquivos para treinamento e validação de alto -falante também estão incluídos nas listas de filmes multispicantes.
- Experimentei o treinamento de 30 épocas iniciais com o DB de alto-falante único e isso ajudou a aprender muito o alinhamento do codificador-decodificador.
Como treinar?
1. Comandos
python train.py {program arguments}
2. Argumentos do programa
| Opção | Obrigatório | Propósito |
|---|
| -o | O | Caminho do diretório para salvar pontos de verificação. |
| -C | X | Caminho do ponto de verificação pré -terenciado para carregar. |
| -l | O | Diretório de log para soltar logs para o Tensorboard. |
3. Modelos pré -criados
*Os modelos pré -ridicularizados são treinados em fonema. Eles esperam o fonema como entrada quando você fornece textos para sintetizar.
| Modelo | Ponto de verificação pré -levado | Combinando hiperparâmetros |
|---|
| Pitchtron suave | Pitchtron suave | configurações |
| Hard Pitchtron | Hard Pitchtron | configurações |
| Token de estilo global | GST | configurações |
| Vocoder de Waveglow | Waveglow | - |
Como sintetizar?
1. Pitchtron mole
python inferent_soft_pitchtron.py
2. Hard Pitchtron
python inference_hard_pitchtron.py
3. GST
python inference_gst_tts.py
Pontas!
- Para evitar o som de rachaduras, o alcance vocal de áudio de referência precisa ser dimensionado para o alcance vocal do alto -falante alvo.
- Essa parte é implementada em nosso código, mas o alcance vocal do alto-falante-alvo é calculado grosseiramente, amostrando apenas 10 áudios e tomando o máximo de variação.
- Você terá um som muito melhor se usar estatísticas mais precisas para o alcance vocal do alto -falante -alvo.
Agradecimentos
- Este material é baseado no trabalho apoiado pelo Ministério do Comércio, Indústria e Energia (MOTIE, Coreia) no Programa de Inovação em Tecnologia Industrial (nº 10080667, Desenvolvimento da tecnologia de síntese de fala conversacional para expressar emoção e personalidade dos robôs por meio de diversificação de fontes sonoras).
- Recebi ajuda em relação a grafeme para a cobertura do fonema deste cara incrível => jeongpil_lee
- Este repositório é a implementação do autor do artigo a seguir => (Pitchtron) https://arxiv.org/abs/2005.10456
- Repositórios referenciados
| Contribuição | Url |
|---|
| Tacotron2 | https://github.com/nvidia/tacotron2 |
| Mellotron | https://github.com/nvidia/mellotron |
| Waveglow | https://github.com/nvidia/waveglow |
| Processamento de texto coreano | https://github.com/keithito/tacotron |