Implementación de Pytorch de GenersPeech (Neurips'22): un modelo de texto a voz hacia la transferencia de estilo cero-shot de alta fidelidad de la voz personalizada OOD.
Proporcionamos nuestra implementación y modelos previos al estado previo en este repositorio.
Visite nuestra página de demostración para ver muestras de audio.
Proporcionamos un ejemplo de cómo puede generar muestras de alta fidelidad utilizando GenersPeech.
Para probar su propio conjunto de datos, simplemente clone este repositorio en su máquina local proporcionada con NVIDIA GPU + CUDA CUDNN y siga las instrucciones a continuación.
Puede usar modelos previos a la aparición que proporcionamos aquí y los datos aquí. Los detalles de cada carpeta son como lo siguiente:
| Modelo | Conjunto de datos (16 kHz) | Descripción |
|---|---|---|
| Juego de geners | Libritts, ESD | Modelo acousítico (configuración) |
| Hifi-gan | Libritts, ESD | Vocero neural |
| Codificador | / | Codificador de emociones |
Pronto llegarán más conjuntos de datos compatibles.
Se puede crear y activar un entorno de conda adecuado llamado generspeech con:
conda env create -f environment.yaml
conda activate generspeech
Por defecto, esta implementación utiliza tantas GPU en paralelo como devuelta por torch.cuda.device_count() . Puede especificar qué GPU usar usar la variable de entorno CUDA_DEVICES_AVAILABLE antes de ejecutar el módulo de entrenamiento.
Aquí proporcionamos una tubería de síntesis del habla utilizando GenersPeech.
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' " Los archivos WAV generados se guardan en infer_out de forma predeterminada.
raw_data_dir , processed_data_dir , binary_data_dir en el archivo de configuración y descargue el conjunto de datos a raw_data_dir .preprocess_cls en el archivo de configuración. La estructura del conjunto de datos debe seguir el procesador preprocess_cls , o puede reescribirla de acuerdo con su conjunto de datos. Proporcionamos un procesador de Libritts como ejemplo en modules/GenerSpeech/config/generspeech.yamlemotion_encoder_path . Para más detalles, consulte esta rama. # 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/configTambién puede construir un conjunto de datos a través de NatsPeech, que comparte un procedimiento común de procesamiento de datos MFA. También proporcionamos nuestro conjunto de datos procesado (Libritts de 16 kHz+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 implementación utiliza partes del código de los siguientes Repos de GitHub: FastDiff, NatsPeech, como se describe en nuestro código.
Si encuentra este código útil en su investigación, cite nuestro trabajo:
@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 }
}Cualquier organización o individuo tiene prohibido usar cualquier tecnología mencionada en este documento para generar el discurso de alguien sin su consentimiento, incluidos, entre otros, líderes gubernamentales, figuras políticas y celebridades. Si no cumple con este artículo, podría violar las leyes de derechos de autor.