- Biblioteca ligera de texto a voz (TTS) basada en ONNX y
State-of-the-art, que realiza síntesis de voz de alta calidad usando solo CPU
- El tamaño del modelo va de 15M a 80M parámetros (25 a 80 MB), por lo que puede ejecutarse eficientemente sin GPU
- Ofrece 8 voces integradas, control de velocidad, pipeline de preprocesamiento de texto y salida de audio a 24 kHz
- Puede usarse directamente desde Hugging Face y se integra fácilmente con una API de Python
- Solución TTS de código abierto orientada al despliegue en dispositivos edge y a la integración comercial
Resumen de Kitten TTS
- Kitten TTS es una biblioteca TTS de código abierto basada en ONNX que realiza síntesis de voz de alta calidad en CPU sin necesidad de GPU
- El tamaño del modelo es de 15M a 80M parámetros y ocupa entre 25 y 80 MB en disco
- En la versión 0.8 se ofrecen modelos de 15M, 40M y 80M
- Actualmente está en fase de developer preview, por lo que la API puede cambiar en el futuro
- Se ofrece soporte comercial (soporte de integración, voces personalizadas, licencia enterprise)
Funciones principales
- Arquitectura ultraligera: comienza desde 25 MB en int8, adecuada para despliegues en entornos edge
- Optimización para CPU: inferencia ONNX eficiente incluso sin GPU
- 8 voces integradas: Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo
- Control de velocidad: permite controlar la velocidad del habla con el parámetro
speed
- Pipeline de preprocesamiento de texto: procesa automáticamente números, monedas, unidades, etc.
- Salida a 24 kHz: genera audio de alta calidad con sample rate estándar
Modelos disponibles
- Se ofrecen cuatro modelos
- kitten-tts-mini (80M, 80MB)
- kitten-tts-micro (40M, 41MB)
- kitten-tts-nano (15M, 56MB)
- kitten-tts-nano (int8, 15M, 25MB)
- Algunos usuarios reportaron problemas con el modelo
kitten-tts-nano-0.8-int8, y se recomienda registrar un issue
Demo y uso
- Se puede probar directamente en el navegador desde Hugging Face Spaces
- Puede instalarse solo con Python 3.8 o superior y pip
- Ejemplo de uso básico:
from kittentts import KittenTTS
model = KittenTTS("KittenML/kitten-tts-mini-0.8")
audio = model.generate("texto", voice="Jasper")
- Funciones avanzadas: control de velocidad (
speed), guardado en archivo (generate_to_file), consulta de la lista de voces disponibles
Estructura de la API
KittenTTS(model_name, cache_dir=None)
- Carga el modelo desde Hugging Face Hub
model.generate(text, voice, speed, clean_text)
- Convierte texto en audio a 24 kHz
model.generate_to_file(text, output_path, voice, speed, sample_rate, clean_text)
- Guarda directamente en un archivo la voz sintetizada
model.available_voices
- Devuelve la lista de voces disponibles
Requisitos del sistema
- Sistema operativo: Linux, macOS, Windows
- Python: 3.8 o superior
- Hardware: solo requiere CPU, no necesita GPU
- Espacio en disco: 25 a 80 MB según el modelo
- Se recomienda usar un entorno virtual (venv, conda, etc.)
Hoja de ruta
- Próximamente: optimización del motor de inferencia, SDK móvil, modelos de mayor calidad, TTS multilingüe y KittenASR
- Apache License 2.0
1 comentarios
Comentarios en Hacker News
Hice purr, un wrapper de CLI para Kitten TTS
El paquete
kittentiene una cadena de dependencias de kittentts → misaki[en] → spacy-curated-transformersAsí que, si lo instalas directamente con
uv, termina trayendo torch y paquetes NVIDIA CUDA (varios GB), aunque en realidad no son necesarios para ejecutarloEn la primera ejecución me salió el error “OSError: PortAudio library not found”, pero lo resolví con
apt install libportaudio2Aunque me da curiosidad si al quitar las dependencias innecesarias se pierde alguna funcionalidad
Es un proyecto realmente genial
Planeo probarlo yo mismo pronto
Pero tengo una duda: ¿por qué no lo distribuyeron como un ejecutable de línea de comandos?
La API también es casi estilo manpage, así que parece que podría hacerse rápido. Solo curiosidad
Primero queremos recibir feedback sobre la versión onnx, y luego simplificar el proceso de ejecución, incluyendo un ejecutable de línea de comandos
Lo que me gustó de OpenClaw es que, con solo mandar una URL de GitHub en Discord, enseguida te generaba un mensaje de voz
En pocos minutos ya tenía benchmarks y audio de muestra
La calidad es impresionante para su tamaño. La voz no es perfecta, pero no está nada mal
En un CPU Intel 9700 iba a alrededor de 1.5x tiempo real con el modelo 80M, y en una GPU 3080 no fue más rápido
Por ahora pusimos una voz con estilo de animación para mostrar expresividad
Si puedes compartir por GitHub issue o Discord por qué va lento en GPU, sería de mucha ayuda. También vamos a añadir código de ejemplo
Me compliqué intentando evitar conflictos de versión de Python, también probé con Docker, pero al final tuve que configurarlo a mano
Apenas logré hacerlo funcionar, pero de verdad odio Python
Parece que por ahora solo soporta voces estadounidenses
Personalmente solo me interesan los acentos irlandés, británico y galés. El estadounidense no me gusta mucho
Un TTS que corre en el propio dispositivo es realmente excelente como herramienta de accesibilidad
La mayoría de los dispositivos dependen de servicios en línea, y este tipo de enfoque local es mucho mejor
Se siente una mejora muy clara frente al modelo anterior
De verdad es impresionante. Gracias por compartirlo
El modelo 15M actual ya es mejor que el antiguo modelo 80M, y pensamos mantener este ritmo de mejora
Me gustaría ver también un modelo exclusivo para japonés en el futuro
Qwen3-tts sí soporta japonés, pero a veces mezcla chino y así no se puede usar
Aunque eso podría hacer que se pierda la información de tono, por ejemplo: 飴 vs 雨
Si nos cuentas tu caso de uso, nos gustaría reflejarlo en las mejoras de calidad
El rendimiento era impresionante para el tamaño del modelo
Pero hubo problemas con la pronunciación de números
Probé con “Startup finished in 135 ms.” y el número sonó como ruido
Cambiándolo por “one hundred and thirty five seconds” salió más o menos bien
Mientras tanto, se puede resolver añadiendo preprocesamiento de texto
La mayoría de los modelos TTS manejan números y unidades convirtiéndolos a cadenas de texto
En el próximo release también se corregirá a nivel de modelo
Estaría bien mostrar también audio de muestra comparando los cuatro modelos
Sería más fácil entenderlo si hubiera ejemplos de la misma frase leída por cada modelo
Mientras tanto, puedes probar los modelos tú mismo en la demo de Hugging Face
Me pregunto si esto es open source o si es un modelo de pesos abiertos
Para este fin de semana también planeamos añadir un phonemizer con licencia MIT, así que debería poder usarse libremente