Esta é a implementação oficial do código? Matcha-tts [ICASSP 2024].
Nós propomos? O Matcha-TTS, uma nova abordagem do TTS neural não autorregressivo, que usa a correspondência condicional de fluxo (semelhante aos fluxos retificados) para acelerar a síntese de fala baseada em ode. Nosso método:
Confira nossa página de demonstração e leia nosso papel ICASSP 2024 para obter mais detalhes.
Os modelos pré-treinados serão baixados automaticamente com a interface CLI ou graduio.
Você também pode tentar? Matcha-tts no seu navegador no Huggingface? espaços.
conda create -n matcha-tts python=3.10 -y
conda activate matcha-tts
pip install matcha-ttsda fonte
pip install git+https://github.com/shivammehta25/Matcha-TTS.git
cd Matcha-TTS
pip install -e . # This will download the required models
matcha-tts --text " <INPUT TEXT> "ou
matcha-tts-app ou synthesis.ipynb aberta.ipynb no Jupyter Notebook
matcha-tts --text " <INPUT TEXT> "matcha-tts --file < PATH TO FILE >matcha-tts --file < PATH TO FILE > --batchedArgumentos adicionais
matcha-tts --text " <INPUT TEXT> " --speaking_rate 1.0matcha-tts --text " <INPUT TEXT> " --temperature 0.667matcha-tts --text " <INPUT TEXT> " --steps 10Vamos supor que estamos treinando com o discurso de LJ
Faça o download do conjunto de dados aqui, extraia-o para data/LJSpeech-1.1 e prepare as listas de arquivos para apontar para os dados extraídos, como para o item 5 na configuração do repo NVIDIA Tacotron 2.
Clone e insira o repositório Matcha-TTS
git clone https://github.com/shivammehta25/Matcha-TTS.git
cd Matcha-TTSpip install -e .configs/data/ljspeech.yaml e altere train_filelist_path : data/filelists/ljs_audio_text_train_filelist.txt
valid_filelist_path : data/filelists/ljs_audio_text_val_filelist.txtmatcha-data-stats -i ljspeech.yaml
# Output:
#{ ' mel_mean ' : -5.53662231756592, ' mel_std ' : 2.1161014277038574} Atualize esses valores nas configs/data/ljspeech.yaml na tecla data_statistics .
data_statistics: # Computed for ljspeech dataset
mel_mean: -5.536622
mel_std: 2.116101para os caminhos dos seus filmes de trem e validação.
make train-ljspeechou
python matcha/train.py experiment=ljspeechpython matcha/train.py experiment=ljspeech_min_memorypython matcha/train.py experiment=ljspeech trainer.devices=[0,1]matcha-tts --text " <INPUT TEXT> " --checkpoint_path < PATH TO CHECKPOINT > Agradecimentos especiais a @Mush42 por implementar o suporte de exportação e inferência ONNX.
É possível exportar pontos de verificação do Matcha para o ONNX e executar a inferência no gráfico ONNX exportado.
Para exportar um ponto de verificação para o ONNX, primeiro instale o ONNX com
pip install onnxEm seguida, execute o seguinte:
python3 -m matcha.onnx.export matcha.ckpt model.onnx --n-timesteps 5Opcionalmente, o exportador ONNX aceita argumentos de nome de vocoder e verificação de vocoder . Isso permite incorporar o vocoder no gráfico exportado e gerar formas de onda em uma única execução (semelhante aos sistemas TTS de ponta a ponta).
Observe que n_timesteps é tratado como um hiper-parâmetro e não como uma entrada do modelo. Isso significa que você deve especificá -lo durante a exportação (não durante a inferência). Se não for especificado, n_timesteps está definido como 5 .
IMPORTANTE : Por enquanto, a tocha> = 2.1.0 é necessária para a exportação, pois o operador scaled_product_attention não é exportável em versões mais antigas. Até que a versão final seja lançada, aqueles que desejam exportar seus modelos devem instalar a tocha> = 2.1.0 manualmente como um pré-lançamento.
Para executar a inferência no modelo exportado, primeiro instale onnxruntime usando
pip install onnxruntime
pip install onnxruntime-gpu # for GPU inferenceEm seguida, use o seguinte:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputsVocê também pode controlar os parâmetros de síntese:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --temperature 0.4 --speaking_rate 0.9 --spk 0 Para executar a inferência na GPU , instale o pacote OnnxRuntime-GPU e depois passe --gpu para o comando Inferência:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --gpu Se você exportou apenas matcha para o ONNX, isso escreverá o espectrograma MEL como gráficos e matrizes numpy no diretório de saída. Se você incorporou o vocoder no gráfico exportado, isso gravará arquivos de áudio .wav no diretório de saída.
Se você exportou apenas Matcha para Onnx e deseja executar um pipeline TTS completo, pode passar um caminho para um modelo de vocoder no formato ONNX :
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --vocoder hifigan.small.onnx Isso escreverá arquivos de áudio .wav no diretório de saída.
Se o conjunto de dados estiver estruturado como
data/
└── LJSpeech-1.1
├── metadata.csv
├── README
├── test.txt
├── train.txt
├── val.txt
└── wavsEm seguida, você pode extrair os alinhamentos de nível de fonema de um modelo Matcha-TTS treinado usando:
python matcha/utils/get_durations_from_trained_model.py -i dataset_yaml -c < checkpoint >Exemplo:
python matcha/utils/get_durations_from_trained_model.py -i ljspeech.yaml -c matcha_ljspeech.ckptou simplesmente:
matcha-tts-get-durations -i ljspeech.yaml -c matcha_ljspeech.ckpt No DataSetConfig, ative a duração da carga. Exemplo: ljspeech.yaml
load_durations: True
Ou veja exemplos em configurações/experimento/ljspeech_from_durações.yaml
Se você usar nosso código ou achar esse trabalho útil, cite nosso artigo:
@inproceedings{mehta2024matcha,
title={Matcha-{TTS}: A fast {TTS} architecture with conditional flow matching},
author={Mehta, Shivam and Tu, Ruibo and Beskow, Jonas and Sz{'e}kely, {'E}va and Henter, Gustav Eje},
booktitle={Proc. ICASSP},
year={2024}
}
Como esse código usa relâmpago-hydra-template, você tem todos os poderes que o acompanham.
Outro código -fonte que gostaríamos de reconhecer: