Implementação de Pytorch do Generspeech (Neurips'22): um modelo de texto para fala em direção ao estilo de alta fidelidade de fidelidade zero transferência de voz personalizada Ood.
Fornecemos nossa implementação e modelos pré -criados neste repositório.
Visite nossa página de demonstração para amostras de áudio.
Fornecemos um exemplo de como você pode gerar amostras de alta fidelidade usando o geneerspeech.
Para experimentar seu próprio conjunto de dados, basta clonar este repositório em sua máquina local fornecida com a NVIDIA GPU + CUDA CUDNN e siga as instruções abaixo.
Você pode usar modelos pré -rastreados que fornecemos aqui e dados aqui. Os detalhes de cada pasta são como a seguir:
| Modelo | Conjunto de dados (16 kHz) | Descrição |
|---|---|---|
| Generspeech | Libritts, ESD | Modelo ACOUSITIC (Config) |
| Hifi-Gan | Libritts, ESD | Vocoder neural |
| Codificador | / | Codificador de emoção |
Os conjuntos de dados mais suportados estão chegando em breve.
Um ambiente de conda adequado chamado generspeech pode ser criado e ativado com:
conda env create -f environment.yaml
conda activate generspeech
Por padrão, essa implementação usa tantos GPUs em paralelo quanto retornados por torch.cuda.device_count() . Você pode especificar quais GPUs usarem a variável de ambiente CUDA_DEVICES_AVAILABLE Antes de executar o módulo de treinamento.
Aqui, fornecemos um pipeline de síntese de fala usando Generpeech.
checkpoints/GenerSpeechcheckpoints/trainset_hifigancheckpoints/Emotion_encoder.ptdata/binary/training_setCUDA_VISIBLE_DEVICES= $GPU python inference/GenerSpeech.py --config modules/GenerSpeech/config/generspeech.yaml --exp_name GenerSpeech --hparams= " text='here we go',ref_audio='assets/0011_001570.wav' " Os arquivos WAV gerados são salvos em infer_out por padrão.
raw_data_dir , processed_data_dir , binary_data_dir no arquivo de configuração e faça o download do conjunto de dados para raw_data_dir .preprocess_cls no arquivo de configuração. A estrutura do conjunto de dados precisa seguir o processador preprocess_cls , ou você pode reescrevê -lo de acordo com o seu conjunto de dados. Fornecemos um processador Libritts como um exemplo em modules/GenerSpeech/config/generspeech.yamlemotion_encoder_path . Para mais detalhes, consulte esta filial. # Preprocess step: unify the file structure.
python data_gen/tts/bin/preprocess.py --config $path /to/config
# Align step: MFA alignment.
python data_gen/tts/bin/train_mfa_align.py --config $path /to/config
# Binarization step: Binarize data for fast IO.
CUDA_VISIBLE_DEVICES= $GPU python data_gen/tts/bin/binarize.py --config $path /to/configVocê também pode criar um conjunto de dados via Natspeech, que compartilha um procedimento comum de processamento de dados de MFA. Também fornecemos nosso conjunto de dados processado (16KHz Libritts+ESD).
CUDA_VISIBLE_DEVICES= $GPU python tasks/run.py --config modules/GenerSpeech/config/generspeech.yaml --exp_name GenerSpeech --resetCUDA_VISIBLE_DEVICES= $GPU python tasks/run.py --config modules/GenerSpeech/config/generspeech.yaml --exp_name GenerSpeech --inferEsta implementação usa partes do código dos seguintes repositórios do GitHub: FastDiff, NatSpeech, conforme descrito em nosso código.
Se você achar esse código útil em sua pesquisa, cite nosso trabalho:
@inproceedings { huanggenerspeech ,
title = { GenerSpeech: Towards Style Transfer for Generalizable Out-Of-Domain Text-to-Speech } ,
author = { Huang, Rongjie and Ren, Yi and Liu, Jinglin and Cui, Chenye and Zhao, Zhou } ,
booktitle = { Advances in Neural Information Processing Systems }
}Qualquer organização ou indivíduo é proibido de usar qualquer tecnologia mencionada neste artigo para gerar o discurso de alguém sem o seu consentimento, incluindo, entre outros, líderes governamentais, figuras políticas e celebridades. Se você não cumprir este item, poderá violar as leis de direitos autorais.