Uma implementação de Pytorch do CS-Tacotron, uma síntese de discurso de troca de código, modelo TTS generativo de ponta a ponta baseado no tacotron. Para uma versão regular do Tacotron, consulte este repositório.
Com o amplo sucesso dos modelos recentes de aprendizado de máquina (TTS), resultados promissores ao sintetizar o discurso realista provaram a capacidade da máquina de sintetizar vozes semelhantes a humanos. No entanto, pouco progresso foi feito no domínio da síntese de texto para fala chinês-inglês, onde a máquina precisa aprender a lidar com entrada e saída de maneira multilíngue. A troca de código ocorre quando um alto-falante alterna entre dois ou mais idiomas, hoje em dia as pessoas se comunicam em idiomas de troca de código na vida cotidiana, portanto, tecnologias de linguagem falada, como TTS, devem ser desenvolvidas para lidar com entrada e saída multilíngues.
Neste trabalho, apresentamos o Tacotron de troca de código, que é construído com base no modelo generativo de ponta a ponta do texto de ponta a ponta-ponta (Wang et al., 2017). O CS-Tacotron é capaz de sintetizar a fala de troca de código condicionada ao texto CS bruto. Dados os pares de texto e áudio CS, nosso modelo pode ser treinado de ponta a ponta com o pré-processamento adequado de dados. Além disso, treinamos nosso modelo no conjunto de dados de palestras, um conjunto de dados baseado em palestras em chinês-inglês-troca de código, que se origina do processamento de sinal digital (DSP) do curso oferecido na Universidade Nacional de Taiwan (NTU). Apresentamos várias técnicas importantes de implementação para fazer com que o modelo tacotron tenha um bom desempenho nessa tarefa desafiadora de geração de fala multilíngue. O CS-Tacotron possui a capacidade de gerar discurso de CS a partir de texto CS e fala vividamente com o estilo do alto-falante do LectUredSp.
Consulte o relatório.pdf para obter mais detalhes deste trabalho.
Os pedidos de puxão são bem -vindos!
Amostras de áudio de cs-tacotron. Todas as frases abaixo não são vistas durante o treinamento.
Instale o Python 3.
Instale a versão mais recente do Pytorch de acordo com sua plataforma. Para melhor desempenho, instale com o suporte da GPU (CUDA) se viável. Este código funciona com Pytorch 1.0 e posterior.
(Opcional) Instale a versão mais recente do TensorFlow de acordo com sua plataforma. Isso pode ser opcional, mas por enquanto necessário para o processamento da fala.
Instalar requisitos:
pip3 install -r requirements.txt
Aviso: você precisa instalar a tocha e o tensorflow / tensorflow-gpu, dependendo da sua plataforma. Aqui listamos a versão Pytorch e Tensorflow que usamos quando criamos este projeto.
python3 test.py --interactive --plot --long_input --model 470000
python3 test.py --plot --model 480000 --test_file_path ../data/text/test_sample.txt
* '--long_input' is optional to add
Nota: Treinamos nosso modelo em nosso próprio conjunto de dados: lecturedsp. Atualmente, esse conjunto de dados não está disponível para lançamento público e continua sendo uma coleção particular no laboratório. Consulte 'Report.pdf' para obter mais informações sobre este conjunto de dados.
Faça o download de um conjunto de dados de comutação de código de sua escolha.
Desscala o conjunto de dados em ~/data/text e ~/data/audio .
Depois de desembalar, sua árvore de dados deve ficar assim para que os caminhos padrão funcionem:
./CS-Tacotron
|- data
|- text
|- train_sample.txt
|- test_sample.txt
|- audio
|- sample
|- audio_sample_*.wav
|- ...
Nota: Para a seção a seguir, defina os caminhos de acordo com os nomes de arquivos do seu conjunto de dados, isso é apenas uma demonstração de alguns dados de amostra. O formato do seu conjunto de dados deve corresponder aos dados de amostra fornecidos para que este código funcione.
Pré -processo os dados de texto usando src/preprocess.py:
python3 preprocess.py --mode text --text_input_raw_path ../data/text/train_sample.txt --text_pinyin_path '../data/text/train_sample_pinyin.txt'
Pré -processo os dados de áudio usando src/preprocess.py:
python3 preprocess.py --mode audio --audio_input_dir ../data/audio/sample/ --audio_output_dir ../data/audio/sample_processed/ --visualization_dir ../data/audio/sample_visualization/
Visualização das diferenças de pré -processamento de áudio:
Faça meta arquivos prontos para o modelo a partir de texto e áudio usando src/preprocess.py:
python3 preprocess.py --mode meta --text_pinyin_path ../data/text/train_sample_pinyin.txt --audio_output_dir ../data/audio/sample_processed/
Treine um modelo usando SRC/Train.py
python3 train.py
Os hiperparâmetros ajustáveis são encontrados no SRC/config.py. Você pode ajustar esses parâmetros e definir editando o arquivo. Os hiperparâmetros padrão são recomendados para os dados de comutação de código chinês-inglês e outros dados chineses-inglês.
Monitor com TensorboardX (opcional)
tensorboard --logdir 'path to log dir'
O treinador despeja áudio e alinhamentos a cada 2000 etapas por padrão. Você pode encontrá-los no CS-tacotron/ckpt .
Gostaríamos de dar crédito ao trabalho de Ryuichi Yamamoto, uma maravilhosa implementação de Pytorch do Tacotron, no qual baseamos principalmente nosso trabalho.
Mostramos o gráfico de alinhamento da fase de teste do nosso modelo, onde o primeiro mostra o alinhamento da entrada chinesa monolíngue, o segundo é a entrada chinesa-inglesa que troca de código e o terceiro é a entrada monolíngue em inglês, respectivamente.