Kitten TTS - modelo TTS de código abierto de 25 MB que funciona solo con CPU
(github.com/KittenML)- Kitten TTS es un modelo TTS (texto a voz) de código abierto que busca combinar ligereza y alta calidad de audio
- Usa solo 15 millones de parámetros, por lo que el tamaño del modelo es menor a 25 MB
- A diferencia de otros TTS grandes, su gran característica es que puede ejecutarse en cualquier entorno, como móviles y sistemas embebidos
- Incluso sin GPU, puede realizar síntesis de voz de alta calidad en todo tipo de dispositivos
- Ofrece varias opciones de voces premium, con soporte para síntesis de voz de alta calidad muy similar a la voz real
- Permite inferencia de voz a gran velocidad, por lo que está optimizado para síntesis en tiempo real
- El modelo en vista previa para desarrolladores ya fue publicado, y más adelante se planea liberar de forma gradual los pesos completos del modelo ya entrenado, un SDK móvil, una versión web y más
2 comentarios
Ojalá también hubiera un modelo en coreano..
Opiniones en Hacker News
Hice un benchmark rápido en Ubuntu 24 con una Razer Blade 16 e Intel Core i9-14900HX
La latencia inicial es de unos 315 ms para texto corto, y la velocidad de generación de voz va de 3.35x a 5.5x en tiempo real según la longitud del texto
El modelo carga en unos 710 ms
Casi no hay diferencia de rendimiento entre 4 voces distintas, y mantiene hasta unas 5 veces la velocidad en tiempo real
En mi CPU Intel Celeron N4020 (1.10GHz), tarda 6 segundos en cargar y corre casi en tiempo real sin importar la longitud del texto
Gracias por correr el benchmark
El modelo todavía no está optimizado
Cuando lancemos el SDK para producción, también planeamos optimizar la carga y otros aspectos
Hay muestras de audio generadas por KittenTTS publicadas en Reddit
Muestra de audio en Reddit
También hay un video corto con varias voces distintas
Video en YouTube
El video de Reddit está realmente genial
Sorprende que con menos de 25 MB y usando solo CPU se pueda lograr esta calidad
No entiendo por qué hay gente que lo califica como un modelo "más o menos"
El sonido es bastante limpio y claro
Incluso para mí, que no soy hablante nativo de inglés, es fácil de entender
Suena un poco lento y como salido de una caricatura
¿Seguro que no lo entrenaron de forma cruzada con voces de personajes de Futurama?
Ojalá este tipo de modelos sean el futuro
Una era de modelos pequeños de ML, offline, haciendo inferencia en hardware barato y fácil de conseguir en cualquier parte
Fáciles de integrar en otros dispositivos o apps, e incluso de ejecutar sobre otros modelos
Ese es justo el tipo de panorama que Apple imagina con los SLM (modelos de lenguaje pequeños)
Si tienes un modelo dedicado únicamente a gestionar eventos del calendario, no necesita contener todo el conocimiento de la humanidad
Basta con enfocarlo solo en la gestión del calendario
Si haces correr un modelo en hardware dedicado para una sola función, la eficiencia energética sube muchísimo
Incluso se pueden ejecutar redes neuronales solo con resistencias (sin transistores)
Claro, ese hardware no sería de propósito general y sería difícil actualizar el modelo
Pero en muchos casos eso es más que suficiente
Me pregunto cuál tendrá más éxito: un modelo que compras una vez y con el que puedes correr lo que sea, o un modelo atado a suscripción y que requiere hardware que solo las megacorporaciones más ricas pueden comprar
En realidad, ese es exactamente el objetivo que queremos lograr
Esa también es exactamente nuestra visión
Que mida 25 MB ya es impresionante, pero el verdadero punto innovador es que KittenTTS se publicó bajo licencia Apache-2.0
Esa combinación permite integrar directamente un motor de voz totalmente offline en hardware del nivel de una Pi Zero o en juguetes con batería
Sin GPU, sin llamadas a la nube y sin preocuparse por licencias restrictivas
De una sola vez, convierte los problemas de hardware o licencias en un "problema de empaquetado"
Mejorar la calidad puede venir después; lo realmente game changer es que esto hace posible desplegarlo a esta escala
Nosotros también estamos muy emocionados por seguir creando modelos de IA ultrapequeños y de alta calidad
Creemos que las interfaces de voz locales son inevitables, y queremos ser parte central de ese futuro
Este modelo es una vista previa, y hacia la próxima semana publicaremos otra versión mucho más pulida
Además, planeamos lanzar también un modelo de unos 80M
Mencionas que KittenTTS es Apache-2.0
Pero si revisas el código fuente en GitHub, usa phonemizer
phonemizer tiene licencia GPL-3.0
Así que ahora mismo en realidad es GPL
(Como referencia: también añade que este comentario parece escrito por un LLM)
El modelo festvox-kallpc16k de Festival pesa unos 6 MB, y festvox-kallpc8k unos 3.5 MB
Los datos multilingües de eSpeak NG rondan los 12 MB
Puede que este modelo produzca una voz más natural
Pero incluso computadoras antiguas o de bajos recursos ya podían ofrecer TTS bastante decente desde hace tiempo
Si KittenTTS es Apache-2.0
me pregunto qué pasa con los datos de entrenamiento
Aunque el modelo pueda reproducir entradas del entrenamiento casi de forma idéntica, ¿se puede asegurar legalmente que no sea una obra derivada?
Depende de espeak-ng, así que es GPLv3
Hay una versión web
Ir al demo
El sonido está más o menos bien, pero considerando el tamaño resulta bastante impresionante
¿No es curioso que en las películas de ciencia ficción a veces distorsionen la voz a propósito para que un robot suene "realmente robótico"?
Una voz robótica claramente no humana puede ser, de hecho, más atractiva y deseable en muchos contextos
Por ejemplo, no hace falta que una tostadora inteligente hable como un presentador de noticias de la BBC
Basta con que se entienda bien la pronunciación
Lo hice leer el texto del demo, pero no suena tan bien como las muestras
Dejo el texto de ejemplo por si alguien quiere probarlo
Corrí el demo con 6 oraciones y dio error
Al reducirlo a 3 oraciones funcionó bien
Me pregunto si el límite de longitud del texto viene del modelo o del demo
En mi entorno ni siquiera funciona
Sale un error 404 en el módulo de backend
Ejemplo de error 404
Justo estaba buscando este enlace
El demo de Reddit está más o menos bien, como a nivel de hace unos años
Pero al probarlo directamente, todas las muestras son casi imposibles de entender
Me dio risa que los requisitos del sistema digan "prácticamente corre en cualquier lado"
En una máquina la versión de Python es demasiado vieja,
y en otra es demasiado nueva, así que no se instala por problemas de dependencias
Subí varios PR para tratar de resolver eso
PR 21, PR 24, PR 25
Si tienes
uvinstalado, desde la rama de referencia que fusionépuedes ejecutarlo así
Instalarlo con uvx resuelve la mayoría de los problemas del entorno de Python
Guía de instalación de uv
Elegir Python resuelve un problema, pero al mismo tiempo crea docenas de problemas nuevos
En Fedora no funciona porque no hay una versión adecuada de g++
La culpa es de Python
Lo probé directamente, y el tamaño del modelo y la velocidad están bastante bien
Pero requiere muchísimas librerías y extras para instalarse
Así que al final se aleja bastante de esos 25 MB
Aun así, es un proyecto genial
Buen punto sobre el problema de las dependencias
Para facilitar la instalación y el uso, y además añadir el soporte para GPU y texto largo que la gente pedía, hice un servidor autohospedado para este modelo
Kitten-TTS-Server
Corre directamente con un entorno estándar de Python venv, sin preocuparte por conflictos
Solo hace falta
git clone,pip installypython server.pyComo se menciona ONNX, supongo que ya existe un modelo ONNX o que lo agregarán pronto
El runtime de ONNX es una sola librería, que en C# comprimida pesa unos 115 MB
No es muy pequeña, pero el código necesario para ejecutarlo son apenas unas líneas, así que también tiene pocas dependencias
Meter varias librerías de una sola vez ayuda al desarrollo rápido y a iterar
Más adelante, cuando las funciones ya estén establecidas, se limpian las librerías innecesarias
Más que el tamaño del modelo en MB, me importan más que corra en CPU y la calidad; mi única preocupación real es la latencia
Me pregunto si ya es posible hacer speech-to-text offline sin entrenamiento adicional
Sería realmente impresionante llegar a una época en la que se pueda conversar con una IA a velocidad natural, como si hablaras con otra persona
El modelo parakeet de Nvidia es de lo más reciente para inglés
Es 10 veces más rápido que Whisper, y en mi CPU AMD de gama media corre mucho más rápido que en tiempo real
Con Whisper ya se puede hacer reconocimiento de voz offline
Algunas apps ya ofrecen dictado o transcripción completamente offline
Por ejemplo, con el texto "The brown fox jumps over the lazy dog.."
el tiempo promedio de generación fue de 1.28 segundos, con unas 30.35 letras por segundo
Esto en un AMD Ryzen 7 5800H
Como modelo de reconocimiento de voz offline, el más representativo es whisper de OpenAI
Repositorio oficial de Whisper
¿Alguien sabe qué factores afectan la latencia de un modelo TTS?
Bastante impresionante
Sí tiene uso en nichos concretos, por ejemplo en el mundo embebido
Pero no parece tener todavía una calidad tan perfecta como para reemplazar a los modelos grandes
En cuanto a TTS abierto de mayor calidad para uso offline, yo diría que fish-speech y f5-tts están entre los mejores
Corrí F5-TTS en una NVidia 1660 vieja (6 GB de VRAM) y funcionó bastante bien
Con hardware moderno se puede obtener más calidad, multilenguaje e incluso zero-shot sin que el costo sea prohibitivo
En Android, SherpaTTS tiene buena compatibilidad
Este modelo es una versión preliminar, y queremos mejorar muchísimo más la calidad en el futuro
Fish Speech tiene pesos no aptos para uso comercial
Me da curiosidad el requisito de VRAM, porque KittenTTS tiene 15 millones de parámetros, así que podría correr incluso en una computadora de bajo consumo de menos de 100 dólares
La GPU de 6 GB que mencionaste ya es bastante vieja
La calidad no me impresiona tanto como esperaba
Mi objetivo es una voz natural
Ni piper ni kokoro me terminan de convencer, y XTTS fue algo complicado de instalar
En reconocimiento de voz (STT), whisper sí es una maravilla
Extraño tener un buen TTS
No me importa si usa mucha GPU, quiero buena calidad
Por cierto, este modelo ahora mismo está por debajo de kokoro
En mi opinión, la mejor calidad SOTA actual con pesos abiertos la tiene chatterbox
El mejor TTS open source que he visto es Dia
Tiene algunas limitaciones, pero corre bien incluso en una laptop
También vale la pena probar Pinokio
Chatterbox también merece la pena probarse
Si tienes recursos de GPU de sobra, no hace falta ponerse demasiado exigente con la calidad aquí
Lo importante es que este modelo corre sin GPU
Antes de Tacotron2, yo corría TTS pequeños y vocoders como GlowTTS y MelGAN en la nube de Digital Ocean a bajo costo
Después la tendencia se fue cada vez más hacia modelos grandes
Pero creo que viene una época en la que los modelos pequeños se integrarán directamente en cada dispositivo
Raspberry Pi, juguetes y toda clase de dispositivos pequeños sin necesidad de red
La IA en el edge va a traer una expansión enorme en robótica, juguetes, dispositivos de consumo y videojuegos