En este artículo, presentamos a Styletts 2, un modelo de texto a voz (TTS) que aprovecha la difusión de estilo y la capacitación adversas con grandes modelos de lenguaje de voz (SLM) para lograr la síntesis de TTS a nivel humano. Styletts 2 difiere de su predecesor modelando estilos como una variable aleatoria latente a través de modelos de difusión para generar el estilo más adecuado para el texto sin requerir un habla de referencia, logrando una difusión latente eficiente y se beneficia de la síntesis de voz diversa ofrecida por los modelos de difusión. Además, empleamos grandes SLM previas al entrenamiento, como WAVLM, como discriminadores con nuestro nuevo modelado de duración diferenciable para la capacitación de extremo a extremo, lo que resulta en una mejor naturalidad del habla. Styletts 2 supera las grabaciones humanas en el conjunto de datos LJSPEECH de un solo hablador y lo coincide en el conjunto de datos VCTK multiespeaker según lo juzgado por los hablantes nativos de inglés. Además, cuando está entrenado en el conjunto de datos de Libritts, nuestro modelo supera a los modelos públicos disponibles para la adaptación de altavoces de disparo cero. Este trabajo logra la primera síntesis de TTS de nivel humano en conjuntos de datos de un solo y multiespeaker, que muestra el potencial de difusión de estilo y entrenamiento adversario con grandes SLM.
Documento: https://arxiv.org/abs/2306.07691
Muestras de audio: https://styletts2.github.io/
Demo en línea: Hugging Face (gracias @FakeryBakery por la maravillosa demostración en línea)
train_second.py (he intentado todo lo que pude para solucionar esto pero no tuve éxito, así que si está dispuesto a ayudar, consulte el #7) git clone https://github.com/yl4579/StyleTTS2.git
cd StyleTTS2pip install -r requirements.txtEn Windows Agregar:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 -UTambién instale Phonemizer y Espeak si desea ejecutar la demostración:
pip install phonemizer
sudo apt-get install espeak-ngEntrenamiento en la primera etapa:
accelerate launch train_first.py --config_path ./Configs/config.ymlEntrenamiento en la segunda etapa (la versión DDP no funciona, por lo que la versión actual usa DP, vea nuevamente el #7 si desea ayudar) :
python train_second.py --config_path ./Configs/config.yml Puede ejecutar tanto consecutivamente y entrenará las etapas de primera y segunda. El modelo se guardará en el formato "EPOCH_1ST_%05D.PTH" y "EPOCH_2ND_%05D.PTH". Los puntos de control y los registros de Tensorboard se guardarán en log_dir .
El formato de lista de datos debe ser filename.wav|transcription|speaker , consulte val_list.txt como un ejemplo. Las etiquetas de los altavoces son necesarias para modelos de múltiples altavoces porque necesitamos probar audio de referencia para el entrenamiento de modelos de difusión de estilo.
En config.yml, hay algunas configuraciones importantes para cuidar:
OOD_data : la ruta para textos fuera de distribución para la capacitación adversaria SLM. El formato debe ser text|anything .min_length : Longitud mínima de los textos OOD para el entrenamiento. Esto es para asegurarse de que el discurso sintetizado tenga una longitud mínima.max_len : longitud máxima del audio para el entrenamiento. La unidad es marco. Dado que el tamaño de lúpulo predeterminado es de 300, un cuadro es de aproximadamente 300 / 24000 (0.0125) segundo. Bajando esto si encuentra el problema fuera de la memoria.multispeaker : Establezca en True si desea entrenar un modelo de multiespeaker. Esto es necesario porque la arquitectura del Denoiser es diferente para los modelos individuales y multiespeaker.batch_percentage : esto es para asegurarse de que durante el entrenamiento congresivo SLM no hay problemas fuera de memoria (OOM). Si encuentra el problema de OOM, establezca un número más bajo para esto.En la carpeta Utils, hay tres modelos previamente capacitados:
batch_size o max_len . Puede consultar el problema #10 para obtener más información. El script se modifica en train_second.py que usa DP, ya que DDP no funciona para train_second.py . Consulte la sección en negrita anterior si está dispuesto a ayudar con este problema.
python train_finetune.py --config_path ./Configs/config_ft.yml Asegúrese de que tenga el punto de control de Libritts descargado y desabrochado en la carpeta. La configuración predeterminada config_ft.yml finetunes en ljspeech con 1 hora de datos del habla (alrededor de 1k muestras) para 50 épocas. Esto tardó aproximadamente 4 horas en terminar en cuatro Nvidia A100. La calidad es ligeramente peor (similar a NaturalsPeech en LJSpeech) que el modelo LJSPEECch entrenado desde cero con 24 horas de datos del habla, que tardaron alrededor de 2.5 días en terminar en cuatro A100. Las muestras se pueden encontrar en el #65 (comentario).
Si está utilizando una sola GPU (porque el script no funciona con DDP) y desea guardar la velocidad de entrenamiento y VRAM, puede hacerlo (gracias a @Korakoe por hacer el script en #100):
accelerate launch --mixed_precision=fp16 --num_processes=1 train_finetune_accelerate.py --config_path ./Configs/config_ft.yml@KreeVoz ha hecho notas detalladas sobre problemas comunes en Finetuning, con sugerencias para maximizar la calidad del audio: #81. Algunos de estos también se aplican al entrenamiento desde cero. @Iieleven11 también ha hecho una guía para el ajuste: #128.
joint_epoch : Esto es probable porque su RAM GPU no es lo suficientemente grande para la ejecución de entrenamiento adversario de SLM. Puede omitir eso, pero la calidad podría ser peor. Configuración de joint_epoch un número mayor que epochs podría omitir el entrenamiento advésariral SLM. Consulte Inference_ljspeech.ipynb (un solo-speaker) e inferencia_libritts.ipynb (multi-speaker) para obtener más detalles. Para Libritts, también deberá descargar reference_audio.zip y descomponerlo bajo la demo antes de ejecutar la demostración.
Los Styletts 2 previos al cuerpo en LJSpeech Corpus en 24 kHz se pueden descargar en https://huggingface.co/yl4579/styletts2-ljspeech/tree/main.
El modelo de styletts 2 previamente en libritts se puede descargar en https://huggingface.co/yl4579/styletts2-libritts/tree/main.
Puede importar Styletts 2 y ejecutarlo en su propio código. Sin embargo, la inferencia depende de un paquete con licencia de GPL, por lo que no se incluye directamente en este repositorio. Una bifurcación con licencia de GPL tiene un script importable, así como una API de transmisión experimental, etc., también está disponible un paquete totalmente con licencia de MIT que utiliza Gruut (aunque de menor calidad debido a la falta de coincidencia entre el fonemizador y Gruut).
Antes de usar estos modelos previamente capacitados, usted acepta informar a los oyentes que las muestras del habla son sintetizadas por los modelos previamente capacitados, a menos que tenga el permiso para usar la voz que sintetiza. Es decir, usted acepta solo usar voces cuyos oradores otorgan el permiso para que su voz se clone, ya sea directamente o por licencia antes de hacer públicas voces sintetizadas, o debe anunciar públicamente que estas voces se sintetizan si no tiene el permiso para usar estas voces.
Código: Licencia MIT
Modelos previamente capacitados: antes de usar estos modelos previamente capacitados, usted acepta informar a los oyentes que las muestras del habla son sintetizadas por los modelos previamente capacitados, a menos que tenga el permiso para usar la voz que sintetiza. Es decir, usted acepta solo usar voces cuyos oradores otorgan el permiso para que su voz se clone, ya sea directamente o por licencia antes de hacer públicas voces sintetizadas, o debe anunciar públicamente que estas voces se sintetizan si no tiene el permiso para usar estas voces.