Home
Login

Modelo ligero de texto a voz que genera voz natural y de alta calidad a partir de descripciones en lenguaje natural.

Apache-2.0Python 5.3khuggingfaceparler-tts Last Updated: 2024-12-10

Introducción detallada al proyecto Parler TTS

Resumen del proyecto

Parler-TTS es un modelo ligero de texto a voz (TTS) capaz de generar voz natural y de alta calidad, y que permite controlar el estilo del hablante (género, tono, forma de hablar, etc.). Este proyecto es una implementación de código abierto del artículo de investigación de Stability AI y la Universidad de Edimburgo, "Natural language guidance of high-fidelity text-to-speech with synthetic annotations".

Características del proyecto

  • Completamente de código abierto: A diferencia de otros modelos TTS, Parler-TTS es una versión de lanzamiento completamente de código abierto.
  • Conjunto de datos abierto: Todos los conjuntos de datos, el preprocesamiento, el código de entrenamiento y los pesos se publican bajo una licencia permisiva.
  • Control del lenguaje natural: Se pueden controlar las características de la voz mediante indicaciones de texto sencillas.
  • Múltiples tamaños de modelo: Se ofrecen versiones de modelo con diferentes escalas de parámetros.

Versiones de modelo disponibles

1. Parler-TTS Mini v1

  • Cantidad de parámetros: 880M
  • Datos de entrenamiento: 45K horas de datos de audiolibros
  • Características: Ligero, adecuado para inferencia rápida.

2. Parler-TTS Large v1

  • Cantidad de parámetros: 2.2B parámetros
  • Datos de entrenamiento: 45K horas de datos de audio
  • Características: Generación de voz de mayor calidad.

3. Parler-TTS Mini Expresso

  • Características especiales: Ofrece un control emocional superior (alegría, confusión, risa, tristeza) y voces consistentes (Jerry, Thomas, Elisabeth, Talia).

Instalación

Instalación básica

pip install git+https://github.com/huggingface/parler-tts.git

Usuarios de Apple Silicon

pip3 install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu

Uso

Ejemplo de uso básico

import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf

device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = ParlerTTSForConditionalGeneration.from_pretrained("parler-tts/parler-tts-mini-v1").to(device)
tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler-tts-mini-v1")

prompt = "Hey, how are you doing today?"
description = "A female speaker delivers a slightly expressive and animated speech with a moderate speed and pitch. The recording is of very high quality, with the speaker's voice sounding clear and very close up."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)

Uso de hablantes predefinidos

El modelo admite 34 hablantes predefinidos, entre ellos: Laura, Gary, Jon, Lea, Karen, Rick, Brenda, David, Eileen, Jordan, Mike, Yann, Joy, James, Eric, Lauren, Rose, Will, Jason, Aaron, Naomie, Alisa, Patrick, Jerry, Tina, Jenna, Bill, Tom, Carol, Barbara, Rebecca, Anna, Bruce, Emily.

prompt = "Hey, how are you doing today?"
description = "Jon's voice is monotone yet slightly fast in delivery, with a very close recording that almost has no background noise."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)

Consejos de uso

  • Utilice "very clear audio" para generar audio de la más alta calidad.
  • Utilice "very noisy audio" para añadir un alto nivel de ruido de fondo.
  • Puede utilizar la puntuación para controlar la prosodia de la voz, por ejemplo, utilizando comas para añadir pequeñas pausas en la voz.
  • El resto de las características de la voz (género, velocidad del habla, tono y reverberación) se pueden controlar directamente mediante indicaciones.

Entrenamiento y ajuste fino

Entrenamiento rápido

accelerate launch ./training/run_parler_tts_training.py ./helpers/training_configs/starting_point_v1.json

Soporte para ajuste fino

El proyecto proporciona una guía completa de entrenamiento y ajuste fino, que incluye:

  • Introducción a la arquitectura
  • Pasos iniciales
  • Guía detallada de entrenamiento
  • Ejemplos de ajuste fino de conjuntos de datos de un solo hablante

Optimización técnica

El proyecto incluye varias optimizaciones de rendimiento:

  • Compatibilidad con SDPA y Flash Attention 2
  • Capacidad de compilación de modelos
  • Soporte para generación de flujo continuo
  • Optimización de caché estática

Estructura del proyecto

  • Código de inferencia: Funcionalidad central de inferencia TTS
  • Código de entrenamiento: Flujo completo de entrenamiento y ajuste fino
  • Integración Data-Speech: Colaboración con bibliotecas de anotación de conjuntos de datos
  • Herramientas de optimización: Varias opciones de optimización de la velocidad de inferencia

Casos de uso

  • Producción de audiolibros
  • Asistentes de voz
  • Producción de contenido educativo
  • Tecnologías de asistencia para la accesibilidad
  • Creación de contenido multimedia

Licencia de código abierto y cita

El proyecto utiliza una licencia de código abierto permisiva, que fomenta la contribución de la comunidad y el uso comercial. Si utiliza este proyecto, se recomienda citar:

@misc{lacombe-etal-2024-parler-tts,
author = {Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi},
title = {Parler-TTS},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/huggingface/parler-tts}}
}

Contribuciones de la comunidad

El proyecto agradece las contribuciones de la comunidad, especialmente en las siguientes áreas:

  • Expansión y diversidad del conjunto de datos
  • Optimización de métodos de entrenamiento
  • Soporte multilingüe
  • Optimización del rendimiento
  • Mejora de las métricas de evaluación

Parler TTS representa un importante avance en la tecnología TTS de código abierto, proporcionando a investigadores y desarrolladores una solución de texto a voz potente y flexible.

Star History Chart