Dia - modelo TTS de pesos abiertos que genera conversaciones realistas
(github.com/nari-labs)- Dia es un modelo TTS de 1.6B parámetros que genera voz conversacional de alta calidad a partir de líneas de texto, y permite ajustar emoción y tono mediante prompts de audio
- Fue desarrollado por Nari Labs, y "Nari" significa "lirio" en coreano puro
- Permite indicar hablantes con
[S1],[S2]y también generar expresiones no verbales como(laughs)y(coughs); además, admite clonación de voz sencilla - Se puede ejecutar directamente en Hugging Face, y también ofrece pruebas en el navegador sin instalación adicional y soporte para ZeroGPU
- Por ahora solo admite inglés, requiere más de 10 GB de VRAM, y más adelante se planean un modelo cuantizado y soporte multilingüe
Dia: modelo de síntesis de voz centrado en conversaciones
- Dia es un modelo TTS de pesos abiertos de 1.6B parámetros desarrollado por Nari Labs
- En lugar de generar voces por separado para cada hablante como en otros TTS, usa un enfoque que genera toda la conversación de una sola vez
- Demo: Hugging Face Space
- Código: repositorio de GitHub
Funciones principales
Generación de voz conversacional
- Se pueden indicar hablantes dentro del texto con
[S1]y[S2] - También se pueden insertar en texto sonidos no verbales como
(laughs)y(coughs) - Es posible definir emoción, tono y estilo de voz mediante prompts de audio
Clonación de voz
- Si se proporciona un audio de ejemplo junto con su texto correspondiente, se activa la función de clonación de voz
- Se puede practicar subiendo audio en Hugging Face Space
- Para ejemplos detallados, consulta
example/voice_clone.py
Uso como librería
from dia.model import Dia
model = Dia.from_pretrained("nari-labs/Dia-1.6B")
output = model.generate(text)
- Es posible exportar MP3 con
soundfile - Próximamente también estarán disponibles un paquete de PyPI y una herramienta CLI
Instalación y ejecución
Método rápido de ejecución (basado en Gradio)
git clone https://github.com/nari-labs/dia.git
cd dia && uv run app.py
O, si no tienes uv:
cd dia
python -m venv .venv
source .venv/bin/activate
pip install uv
uv run app.py
- Al ejecutarlo, se descarga automáticamente Descript Audio Codec
- Cada vez que se ejecuta, la voz se genera de forma aleatoria; para mantener consistencia, es necesario fijar el prompt o la seed
Rendimiento y requisitos de hardware
- Entorno de prueba: PyTorch 2.0+, CUDA 12.6 o superior
- VRAM recomendada: 10 GB o más; pronto se lanzará una versión cuantizada (Quantized)
- En una GPU A4000 genera alrededor de 40 tokens/segundo (86 tokens = aprox. 1 segundo de voz)
- Se puede mejorar la velocidad usando
torch.compile
Planes futuros y TODO
- Soporte para Docker
- Optimización de la velocidad de inferencia
- Cuantización del modelo (eficiencia de memoria)
- Se está considerando ampliar el soporte multilingüe y la cantidad de hablantes admitidos
Licencia y restricciones de uso
- Aplica la licencia Apache 2.0
- Ejemplos de uso prohibido:
- Generar la voz de otra persona sin permiso (Identity Misuse)
- Generar desinformación (Fake News, etc.)
- Fines ilegales o maliciosos
Comunidad y contribuciones
- El equipo de investigación es pequeño: 1 persona de tiempo completo + 1 persona de medio tiempo
- Se pueden compartir comentarios y proponer funciones a través del servidor de Discord
- Es un proyecto orientado al código abierto que busca crecer junto con sus contribuyentes
Referencias y base técnica
- Modelo de sonido: inspirado en SoundStorm, Parakeet y Descript Audio Codec
- Soporte de cómputo: Google TPU Research Cloud y el programa ZeroGPU de Hugging Face
- "Nari" significa "lirio" en coreano puro
13 comentarios
Vaya, está buenísimo. Entre dos personas no debió haber sido nada fácil conseguir incluso los datos de entrenamiento, de verdad es impresionante.
Apareció el propio creador~ Yo también tendré que probarlo una vez.
¡¡Espero que haya soporte para coreano!!
Oh, justo estaba por hacer esto y publicarlo yo, pero ya lo subiste rapidísimo. Gracias.
Vaya, ¡resulta que lo hizo alguien de Corea! Lo comparé escuchando la página de demostración y el rendimiento es realmente muy bueno. Si se proporciona un audio prompt, ¿toma esa voz como referencia? Me da curiosidad si hay que ingresar por separado los ejemplos distinguidos como s1 y s2.
¡Gracias! No es necesario incluir en el prompt de audio ejemplos separados con [S1] y [S2]. Puedes incluir solo [S1], o también [S1] y [S2]. Solo asegúrate de que [S1] siempre vaya primero.
Como recibió muchos votos positivos en Hacker News, GN+ lo resumió automáticamente. Yo solo lo organicé un poco más.
¡¡Los apoyo!!
Gracias :))
Es un modelo que hice yo, jaja...
¡¡Genial!! Lo usaré muy bien T_T/
Gracias :)) por favor denle una estrella en GitHub jaja
¡Hecho! ¡Espero ver pronto también noticias en coreano! ¡Gracias!
Opiniones en Hacker News
Admiración técnica y elogios
Evaluación de la calidad de voz y sus características
Experiencias con la demo y pruebas directas
Debate sobre audiolibros y uso en novelas
Solicitudes de funciones y preguntas sobre síntesis de voz
Licencia y código abierto
Preguntas sobre datos de entrenamiento y proceso de entrenamiento
Controversia por nombre duplicado
Usabilidad y feedback de mejoras
venvCasos de desarrollo/aplicación e integración
Otros