11°
Portada del artículo: Pocket TTS: cloné mi voz en un CPU de 2019, sin GPU y sin nube
IAAudio

Pocket TTS: cloné mi voz en un CPU de 2019, sin GPU y sin nube

Un modelo de voz de 209 MB que corre en CPU, clona una voz con 25 segundos de referencia y permite uso comercial citando la fuente. Instalación paso a paso, métricas medidas en un i5 de 2019 y mi opinión honesta frente a ElevenLabs y compañía.

Efrain Garay 20 de agosto de 2026

Reproduciendo el resumen

Llevo un tiempo con el mismo problema: necesito voz sintética en español, de calidad decente, y no quiero pagar por segundo generado ni mandar la voz de nadie a un servidor ajeno. Probé Pocket TTS, de Kyutai, y el resumen es corto: 209 MB, corre en CPU, clona una voz con 25 segundos de referencia, y se puede usar en producto comercial citando a Kyutai.

Lo instalé en un servidor viejo con un Intel i5-9400F de 2019, seis núcleos y ninguna GPU. Funcionó. Estas son las métricas reales que medí, la instalación paso a paso, y mi opinión sin adornos.

Cómo funciona en 28 segundos: del texto al audio, cómo extrae el timbre de una muestra, y las métricas reales en un CPU sin GPU. Sin sonido por defecto: actívalo en los controles.Verlo en el visualizador de reels →
Mi voz clonada leyendo un párrafo largo. Generado en el i5 de 2019 sin GPU, a partir de 25 segundos de referencia. 54 segundos de audio en 23.8 segundos de cómputo.

Qué es y qué lo hace distinto

Casi todos los modelos de voz buenos asumen una GPU. Pocket TTS asume lo contrario: es un modelo pequeño, de unos 100 millones de parámetros, pensado para correr donde sea. Lo llamativo es lo que conserva siendo tan chico: clonación de voz zero-shot, es decir, le pasas un audio de referencia y sintetiza con ese timbre sin ningún entrenamiento previo.

Trae voces incorporadas por idioma (lola para español, alba por defecto), flojas dicho sea de paso, y soporte multilingüe. Y la licencia acompaña: los pesos son CC-BY-4.0; el código es dual, MIT para la parte en Python y Apache-2.0 para el backend en Rust. Puedes usarlo en producto comercial sin pedir permiso, con la condición de atribuir a Kyutai.

Instalación

Lo mejor de todo: no hay instalación real. Con uv en la máquina, se ejecuta directo.

# 1. uv, si no lo tienes
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. generar audio (descarga el modelo la primera vez)
uvx pocket-tts generate --text "Hola, esto es una prueba de síntesis de voz." --language spanish

Eso es todo. La primera corrida descarga ~209 MB al caché de Hugging Face y las siguientes ya son instantáneas en ese aspecto. La salida sale por defecto a ./tts_output.wav; revisa --help para el flag que la redirige, cambia entre versiones.

Para clonar una voz, apuntas --voice a un archivo de audio de referencia en vez de a un nombre de voz preincluida:

uvx pocket-tts generate --text "Ahora hablo con la voz de la referencia." --voice mi_voz.wav

Y si vas a reutilizar la misma voz muchas veces, conviene precomputarla una vez con export-voice (revisa --help para su sintaxis exacta: convierte el audio a un .safetensors de carga rápida).

También trae un servidor:

uvx pocket-tts serve   # API FastAPI local

Dos tropiezos que te vas a encontrar

  1. Mac con Intel. En un Mac Intel falla al instalar: PyTorch ya no publica ruedas para macosx_x86_64 en las versiones que el paquete exige. Lo corrí en Linux x86_64 y listo. En Apple Silicon no hay problema.
  2. Modelo con términos. Los pesos de clonación de voz están detrás de una aceptación de términos en Hugging Face. Si no aceptas, la descarga falla con un error de acceso denegado que no dice cuál es el paso que falta. Se acepta una vez en la web del modelo y sigue.

Las métricas, medidas por mí

Todo esto en el i5-9400F, seis núcleos, sin GPU, con una frase de unas 15 palabras y una referencia de voz de 25 segundos:

ConfiguraciónCómputoAudio generadoFactor tiempo real
Voz incorporada (español)8.5 s6.4 s1.34×
Clon de mi voz9.5 s6.1 s1.55×
Clon + cuantización int89.7 s6.7 s1.45×
Cuánto cómputo cuesta cada segundo de vozfactor de tiempo real · menos es mejor
  1. Voz incorporada en español1.34×8.5 segundos de cómputo para 6.4 de audio.
  2. Clon + cuantización int81.45×9.7 segundos de cómputo para 6.7 de audio. Cuantizar no lo aceleró.
  3. Clon de mi voz1.55×9.5 segundos de cómputo para 6.1 de audio. Clonar cuesta un 16% sobre la voz de fábrica.

Medido en un i5 de 2019, sin GPU. Por debajo de 1.0 el modelo generaría más rápido de lo que se escucha.

Cómo leerlo: un factor de 1.34× significa que tarda un 34% más que la duración del audio que produce. Un minuto de voz sale en poco más de un minuto de cómputo.

Y aquí viene lo interesante. Repetí la prueba con un párrafo largo (el del audio de arriba) y el resultado cambia por completo:

TextoCómputoAudioFactor tiempo real
Frase corta (15 palabras)9.5 s6.1 s1.55×
Párrafo largo (~140 palabras)23.8 s54.0 s0.44×

Con textos largos genera más rápido que tiempo real: 54 segundos de audio en menos de 24 de cómputo. Lo que pesaba en la frase corta era el arranque (cargar el modelo y preparar la voz), que se amortiza apenas el texto crece.

Dos observaciones honestas:

  • El costo fijo domina en frases cortas. Si tu caso son respuestas breves y sueltas, el arranque te mata. Si es narración, el modelo va sobrado en un CPU de hace seis años.
  • La cuantización int8 no aceleró nada. Salió prácticamente igual (incluso un pelo peor en cómputo absoluto). Tiene sentido: en un modelo tan chico el cuello de botella no está donde la cuantización ayuda. Sirve para memoria, no para velocidad.

El mismo texto, dos motores, con gates de verdad

Comparar TTS “de oído” no sirve. Usé un texto agnóstico: 134 palabras de divulgación sobre el pulpo, con números escritos, una pregunta y palabras difíciles como hemocianina. Le apliqué los mismos gates que uso en producción: transcribir lo generado con Whisper y medir el WER (cuánto se desvía de lo que pedí), más las métricas de audio.

Pocket TTS · mi voz clonada, en CPU sin GPU.
Qwen3-TTS · misma voz clonada, en GPU (RTX 2060 Super).

La versión pulida

El audio de arriba sale crudo del modelo, y así hay que juzgarlo. Pero nadie publica el crudo. Este es el mismo archivo pasado por el máster que uso en producción: filtro de graves, realce de presencia en 2.8 kHz, compresión suave y normalización a −16 LUFS con true peak a −1.5 dBTP.

Pocket TTS · remasterizado: de −23.5 a −15.9 LUFS, true peak a −1.5 dBTP. Mismo audio, listo para publicar.

Sube bastante. La masterización no arregla las palabras que se comió, que son cosa del modelo, pero sí el volumen bajo y la falta de cuerpo, que era la mitad de la mala impresión inicial.

Los resultados

MétricaPocket TTS (CPU)Qwen3-TTS (GPU)
WER (fidelidad al guion)13.4%3.7%
Cómputo / audio24.4 s → 50.9 s44.1 s → 48.2 s
Factor tiempo real0.48×0.91×
Tamaño del modelo209 MB~4,54 GB
LUFS integrado−23.5−17.6
True peak−3.3 dBTP−0.4 dBTP
Rango dinámico (LRA)5.83.3
Centroide espectralsimilarsimilar
Silencio28.8%16.0%

Cómo leer esto

El WER es el veredicto duro. Un 13.4% contra un 3.7% significa que Pocket se come o deforma aproximadamente una palabra de cada siete, mientras Qwen falla una de cada veintisiete. Para narración publicable, ese margen no pasa; para un prototipo o una herramienta interna, sí.

La velocidad va al revés de lo esperado. Pocket en un CPU de 2019 fue casi el doble de rápido que Qwen con GPU dedicada: 0.48× contra 0.91×. Un modelo 21 veces más chico compensa con creces la falta de acelerador.

El audio de Pocket sale más crudo. −23.5 LUFS es bajo, necesita masterización antes de publicarse, y su 28.8% de silencio revela pausas largas y erráticas, mientras Qwen mantiene un 16% mucho más cercano al habla natural. En contrapartida, el true peak de Pocket (−3.3 dBTP) deja margen para procesar, y el de Qwen (−0.4 dBTP) va peligrosamente al límite del clipping.

El centroide espectral es similar entre los dos: ambos reproducen un timbre cercano al de la voz de referencia. La clonación funciona en los dos; lo que cambia es la ejecución.

Probé también la voz en español que ya trae el modelo (lola, sin referencia). Suena plana y con una dicción rara: más rápida, porque se salta el procesado de la muestra, pero no la publicaría. Si vas a usar Pocket TTS, clona una voz.

Mi conclusión de la prueba

Qwen3-TTS gana donde importa para publicar: fidelidad al guion y ritmo natural. Pocket TTS gana en velocidad, tamaño y dónde puede correr. No es un empate técnico: es elegir entre lo mejor que puedes tener con GPU y lo que consigues sin ninguna.

Mi opinión

Lo que me gustó:

  • Corre donde sea. 209 MB y CPU. Puedes meterlo en un contenedor de 1 GB y desplegarlo en el VPS más barato que tengas. No hay cola de GPU, no hay cuota, no hay factura por segundo.
  • La privacidad no depende de confiar en nadie. La voz de referencia nunca sale de tu máquina. Cuando trabajas con la voz de una persona concreta, eso deja de ser un detalle.
  • Uso comercial permitido, con atribución. Los pesos son CC-BY-4.0 y el código dual MIT/Apache-2.0 (Python/Rust): el único asterisco es citar la fuente.
  • Zero-shot que funciona. 25 segundos de referencia limpia y el timbre es reconocible. No hay que entrenar nada.

Lo que no:

  • La calidad no es de producción para una voz de marca. Es clara e inteligible, pero le falta el control fino de prosodia y emoción de un servicio comercial. Si tu contenido vive de que la voz emocione, se nota.
  • Sin control emocional explícito. No hay etiquetas de emoción ni instrucciones de estilo. Tienes temperatura y poco más.
  • El español no es su idioma estrella. Funciona, pero la naturalidad cae frente al inglés.

Mi conclusión: Pocket TTS no compite en calidad. Compite en dónde puede correr, que es otra categoría.

Comparación con lo que ya uso

  • ElevenLabs: la mejor calidad y control emocional del mercado, por lejos. Pero es nube, se paga por crédito y tu audio de referencia viaja. Lo sigo usando para voces que salen al público.
  • Qwen3-TTS: mucho mejor naturalidad en español y con emoción por beat, pero necesita GPU y bastante más disco. Es mi caballo de batalla cuando hay GPU disponible.
  • RVC: no hace TTS: hace conversión de voz. Necesita 10-15 minutos de audio real y un entrenamiento previo. Otra herramienta para otro problema, y suele ir después de un TTS, no en su lugar.
  • Suno: tampoco es competencia, genera música con voz cantada. Excelente para canciones, inútil para narrar un texto tuyo con una voz específica.

Pocket TTS no reemplaza a ninguno. Ocupa un hueco que ninguno cubría: necesito voz aquí mismo, en esta máquina modesta, sin pagar y sin subir nada.

¿Cuándo lo usaría?

  • Prototipos y pruebas de guion, donde quemar créditos no tiene sentido.
  • Herramientas internas y automatizaciones que hablan.
  • Cualquier caso con datos sensibles donde subir la voz a un tercero no es opción.
  • Volumen alto y sin urgencia: dejarlo generando por lotes en una máquina que ya tienes.

No lo usaría para la voz principal de un canal ni donde la interpretación emocional sostenga el contenido. Para eso sigo pagando.

Fuentes

  • kyutai/pocket-tts en Hugging Face. La ficha del modelo, de donde salen la licencia CC-BY-4.0 de los pesos y el tamaño real del archivo por idioma.
  • delayed-streams-modeling, Kyutai Labs. El código de inferencia (dual MIT/Apache-2.0) y el método de streaming con retardo en que se apoya.

Comentarios

Todavía no hay comentarios. El primero es tuyo.

Se revisa antes de publicarse. El correo no se guarda ni aparece en ninguna parte.