Kokoro no deja de aparecer: llegó a la cima de Hacker News, lidera los rankings de Texto a voz open, y los creadores siguen preguntando si un modelo de 82 millones de parámetros que corre en una CPU común realmente puede reemplazar una API de voz de pago. Así que lo instalamos, lo corrimos en una laptop y generamos las muestras que puedes reproducir abajo. Este es un desglose práctico: qué es Kokoro, qué tan bien suena en realidad, las dos trampas de configuración que nos hicieron perder tiempo y cuándo conviene más una herramienta alojada. Fuente: github.com/hexgrad/kokoro (Apache-2.0).
¿Qué es Kokoro y quién lo hizo?
Kokoro es un modelo de Texto a voz de pesos abiertos publicado por hexgrad como Kokoro-82M. El dato clave está en el nombre: 82 millones de parámetros, diminuto para los estándares de 2026, lo suficientemente pequeño para correr en un teléfono, y aun así produce una narración natural y expresiva. Está construido sobre el linaje de StyleTTS 2 y se publica bajo la licencia permisiva Apache-2.0, así que de verdad es gratis para uso comercial.
Al 2026-07-11, el repo principal hexgrad/kokoro tiene alrededor de 7,900 estrellas en GitHub. Nosotros lo ejecutamos con el runtime comunitario de ONNX thewh1teagle/kokoro-onnx (alrededor de 2,600 estrellas, MIT), que es la forma más sencilla de correrlo en CPU sin instalar PyTorch.
Revisando el archivo de pesos real, contamos 54 voces integradas en 9 grupos de idioma y acento: inglés americano y británico, español, francés, hindi, italiano, japonés, portugués brasileño y chino mandarín. Las voces de inglés americano son claramente las más pulidas.
De hecho lo corrimos (Apple M3 Pro, solo CPU)
Sin GPU, sin nube: solo una MacBook Pro con un M3 Pro y 18 GB de RAM. Aquí va el paso a paso, sin maquillaje.
Instalación y pesos
El paquete de Python se instala en segundos: pip install kokoro-onnx soundfile. Pero aquí viene la primera trampa: el paquete de pip trae el código, no el modelo. Tienes que descargar a mano dos archivos desde la página de releases de kokoro-onnx en GitHub: kokoro-v1.0.onnx (310 MB) y voices-v1.0.bin (27 MB). La guía rápida pasa esto por alto, así que la primera ejecución falla con un error de archivo faltante hasta que bajas los pesos.
El bug de ruta de espeak-ng (el que sí nos hizo perder tiempo)
Kokoro convierte texto a fonemas con espeak-ng. En la primera síntesis nos topamos con esto:
Error processing file '/Users/runner/work/espeakng-loader/.../espeak-ng-data/phontab': No such file or directoryEsa ruta /Users/runner/work/ delata todo: la wheel de pip espeakng-loader incluye un libespeak-ng que se compiló en CI con una ruta de datos hard-codeada que no existe en tu máquina. Lo frustrante: configurar la variable de entorno ESPEAK_DATA_PATH no sirve de nada, porque kokoro-onnx nunca la lee; toma la ruta de datos directamente del loader empaquetado.
La solución que nos funcionó: instala un espeak-ng real del sistema y apúntale a Kokoro de forma explícita mediante su EspeakConfig:
brew install espeak-ng # macOS; apt install espeak-ng on Linux
from kokoro_onnx import Kokoro, EspeakConfig
cfg = EspeakConfig(
lib_path="/opt/homebrew/lib/libespeak-ng.dylib",
data_path="/opt/homebrew/share/espeak-ng-data",
)
k = Kokoro("kokoro-v1.0.onnx", "voices-v1.0.bin", espeak_config=cfg)Después de eso, la generación funciona sin problema. Si alguna vez peleaste con este error exacto phontab: No such file, esa es la solución.
Velocidad (medida, en caliente)
Solo en CPU, el modelo carga en alrededor de 1.7 segundos, y la síntesis es cómodamente más rápida que en tiempo real. Un párrafo de narración de 22 segundos se renderizó en 3.5 segundos: un factor de tiempo real de alrededor de 0.16×, aproximadamente seis veces más rápido que la reproducción. Oraciones cortas y únicas regresan en uno o dos segundos. Para un modelo así de pequeño en una laptop, ese rendimiento sí es utilizable en producción. Aquí está la forma de onda real de ese render del párrafo:

Muestras que generamos (sin editar)
Cada clip de abajo lo produjimos nosotros con Kokoro en la CPU del M3 Pro descrita arriba: salida cruda del modelo, sin limpieza, sin post-procesamiento. Reprodúcelos y juzga la calidad por tu cuenta.
Generado por VisionStory con Kokoro-82M vía kokoro-onnx, 2026-07-11. Nota la señal evidente: esto es una pista de voz limpia, pero es solo una voz. No hay rostro, no hay movimiento de labios, no hay presentador en pantalla. Esa brecha es justo el punto de la siguiente sección.
Veredicto honesto: fortalezas y límites reales
Lo que de verdad nos impresionó:
- La calidad por byte es notable. Para 82 millones de parámetros, las voces de inglés americano son naturales y expresivas, lo suficientemente cercanas a un TTS de pago como para que la mayoría no lo note en un clip corto.
- De verdad corre en CPU, y rápido. Seis veces en tiempo real en una laptop sin GPU es la característica principal, y sí se sostiene.
- Realmente gratis y amigable para uso comercial. Apache-2.0 sin cobro por carácter. Para voces en off de alto volumen, esa economía es difícil de superar.
En qué falla (y esto sí es real):
- Sin clonación de voz. Tienes 54 voces preestablecidas y fijas. No puedes clonar tu propia voz ni la de un cliente; si ese es tu caso de uso, Kokoro es un callejón sin salida.
- La calidad del inglés depende de espeak-ng, lo que implica el bug de empaquetado de arriba, además de la pronunciación incorrecta ocasional de un nombre, marca o acrónimo.
- El texto largo requiere segmentación manual. Hay un límite de longitud de fonemas por llamada, así que tienes que partir guiones largos tú mismo y luego unir el audio.
- Las voces que no son en inglés son un volado: mucho más variables que el conjunto principal de inglés americano.
- Entrega un WAV pelón. Sin marcas de tiempo por palabra, sin visemas: nada para impulsar el lip-sync de fábrica.
- Es solo voz. Sin rostro, sin video. Para obtener un presentador hablando tienes que combinar Kokoro con un sistema aparte de lip-sync o avatares y manejar tú mismo el timing.
Kokoro autoalojado vs una herramienta alojada: ¿cuál deberías elegir?
Kokoro y una herramienta de avatares alojada resuelven mitades distintas del problema. Kokoro te da una voz; una herramienta como VisionStory te da un presentador hablando: voz, rostro y lip-sync en una sola salida. Aquí está el trade-off real.
| Kokoro (autoalojado) | VisionStory (alojado) | |
|---|---|---|
| Costo | Gratis (tu propio hardware) | Suscripción / créditos |
| Configuración | pip + pesos de 330 MB + arreglo de espeak-ng | Ninguna: corre en el navegador |
| Qué obtienes | Solo pista de voz (WAV) | Video de avatar parlante (voz + rostro + lip-sync) |
| Clonación de voz | No: 54 presets | Sí: clona tu propia voz |
| Velocidad por clip | ~0.16× en tiempo real en CPU (segundos) | Segundos, alojado: sin cómputo local |
| Uso comercial | Sí (Apache-2.0) | Sí (según el plan) |
| Mantenimiento | Tú parcheas espeak, deps, segmentación | Ninguno |
| Mejor cuando | Solo necesitas una pista de voz gratis y sabes programar | Necesitas un video con presentador hablando ya terminado, rápido |
Elige Kokoro si solo necesitas una voz en off gratis, te sientes cómodo en Python y vas a resolver el rostro y el lip-sync por separado (o no necesitas rostro en absoluto). Elige una herramienta alojada si necesitas la voz pegada a un presentador que haga lip-sync, o necesitas clonar la voz de una persona específica; Kokoro no puede hacer ninguna de las dos.
Lo que Kokoro nos enseñó
La lección real de correr Kokoro es que la voz se está comoditizando. Un modelo de 82 MB en una laptop hoy ya produce voces en off lo suficientemente buenas para trabajo real, gratis. Si lo único que tu producto prometía era “hacemos Texto a voz”, esa ventaja ya se acabó.
La parte difícil, y todavía no resuelta, es todo lo que viene después de la voz: convertir una pista de audio en un rostro hablando convincente (lip-sync preciso, expresión, movimiento de cabeza y timing que se sostengan juntos). Esa es exactamente la capa en la que trabajamos. Así que nuestra conclusión no es “no uses Kokoro”: es un motor de voz legítimamente bueno. La conclusión es que una voz por sí sola es la mitad de un video. Si quieres la otra mitad, VisionStory convierte una foto y un guion en un presentador hablando con lip-sync en un solo paso, y si tienes una voz específica que necesites igualar, también puede clonarla.
