NeuTTS Air: clonación de voz tan compacta que cabe en una Raspberry Pi
- ¿Qué es NeuTTS Air?
- Ventajas funcionales de NeuTTS Air
- Cómo equilibra la arquitectura el realismo y el tamaño
- Primeros pasos con NeuTTS Air
- Consejos para obtener mejores resultados
- NeuTTS Air frente a otros modelos ligeros para el dispositivo
- Preguntas frecuentes
- Genera una voz similar desde un audio de referencia con Echora
Convierte texto y grabaciones en audio listo para escuchar
Doblaje, stems, covers y efectos de sonido, todo en el navegador.
- Texto a voz, y también clonación de voz
- Separa pistas, o genera un cover
- Regístrate para escuchar primero y decidir después
La mayoría de los modelos TTS realmente ligeros y aptos para CPU hacen una concesión concreta: reducen su tamaño a cambio de renunciar a la clonación de voz y trabajan con una lista fija de voces predefinidas. NeuTTS Air, de Neuphonic, rechaza esa concesión. Tiene menos de 1.000 millones de parámetros, está cuantizado para funcionar con soltura en un teléfono o una Raspberry Pi y aun así clona una voz objetivo con solo 3 segundos de audio de referencia. Neuphonic describe esta combinación como el primer modelo de lenguaje de voz TTS verdaderamente realista y totalmente ejecutable en el dispositivo que logra clonación instantánea con este tamaño.
¿Qué es NeuTTS Air?
NeuTTS Air es un modelo open source de text-to-speech con licencia Apache 2.0, publicado por Neuphonic en octubre de 2025. Se basa en un modelo de lenguaje derivado de Qwen2 —su ficha oficial indica 748 millones de parámetros, aunque suele describirse como de “clase 0,5B”— y se combina con NeuCodec, el códec de audio neuronal propio de Neuphonic. El objetivo central del diseño es el despliegue en el dispositivo: se ejecuta por completo en hardware local, sin que el audio ni el texto tengan que salir nunca del equipo, salvo que decidas enviarlos a otro lugar.
Ventajas funcionales de NeuTTS Air
- Clonación de voz instantánea con apenas 3 segundos de audio de referencia, una capacidad realmente poco habitual entre modelos de este tamaño, ya que la mayoría trabaja con una lista fija de voces predefinidas.
- Cuantización GGUF (Q4 y Q8) creada específicamente para el despliegue en el edge, mediante
llama.cpp/llama-cpp-pythonen teléfonos, portátiles y ordenadores de placa única como Raspberry Pi. - NeuCodec, un códec de audio muy eficiente, que funciona a solo 0,8kbps con un único libro de códigos y una frecuencia de 50Hz; esta decisión de diseño concreta mantiene una alta calidad de salida pese al reducido tamaño general del modelo.
- Generación en tiempo real con hardware realmente modesto: los benchmarks publicados muestran un rendimiento superior a 2 veces la velocidad de tiempo real en una CPU AMD Ryzen 9, mientras que un smartphone Samsung Galaxy A25 alcanza una velocidad cercana al tiempo real.
- Marca de agua Perth integrada, que se incorpora automáticamente y de forma predeterminada en cada archivo de audio generado, en lugar de ofrecerse como ajuste opcional.
- Totalmente abierto bajo Apache 2.0, lo que permite el uso comercial sin un acuerdo de licencia independiente.
Cómo equilibra la arquitectura el realismo y el tamaño
El modelo base derivado de Qwen2 de NeuTTS Air se encarga de la fonemización —mediante un front-end de espeak-ng—, del modelado de la prosodia y de condicionar la salida tanto con el texto de entrada como con el estilo del hablante de referencia. En esencia, concentra todo el trabajo de razonamiento lingüístico y expresivo en un modelo de lenguaje de menos de 1.000 millones de parámetros, en lugar de recurrir a uno mucho mayor. NeuCodec se ocupa después de la parte acústica: como comprime el audio con un solo libro de códigos, en vez de los múltiples libros de códigos apilados que utilizan muchos códecs neuronales, consigue una compresión especialmente eficiente —alrededor de 0,8kbps con salida a 24kHz— sin el coste de calidad habitual al usar menos libros de códigos. La ventana de contexto de 2.048 tokens cubre aproximadamente 30 segundos de audio, incluido el prompt de referencia. Es más que suficiente para conversaciones breves, aunque supone una limitación real si planeas narraciones largas en vez de diálogos al estilo de un asistente.
Primeros pasos con NeuTTS Air
- Instala los extras de GGUF para la inferencia cuantizada en CPU.
uv sync --extra ggufincorporallama-cpp-python, necesario para ejecutar los checkpoints GGUF Q4/Q8. Añade tambiénuv sync --extra onnxsi quieres usar el decodificador ONNX como alternativa a GGUF o junto a él. - Elige el checkpoint del modelo base en Hugging Face.
neuphonic/neutts-aires el modelo de precisión completa;neuphonic/neutts-air-q4-ggufyneuphonic/neutts-air-q8-ggufson las versiones cuantizadas creadas específicamente para el despliegue en el edge y en CPU. - Prepara un clip de referencia y su transcripción. NeuTTS Air necesita tanto un archivo WAV de referencia limpio y mono —el intervalo ideal documentado es de 3 a 15 segundos— como el texto de la transcripción correspondiente. El habla natural, continua y con pocas pausas funciona mejor que una muestra recortada o muy editada.
- Ejecuta el script de ejemplo básico para confirmar la configuración.
python -m examples.basic_example --input_text "your text here" --ref_audio samples/dave.wav --ref_text samples/dave.txtes la primera prueba documentada; ajusta el flag--backboneal checkpoint que hayas elegido. - Usa directamente la API de Python para integrarlo. Ejecuta
from neuttsair.neutts import NeuTTSAir, crea después una instancia con los valores elegidos parabackbone_repoycodec_repo—neuphonic/neucodeces la opción de códec estándar—, llama atts.encode_reference()con el clip de referencia y pasa el resultado atts.infer()junto con el texto objetivo. - Consulta la colección NeuTTS-Air de Hugging Face para encontrar más opciones de modelo base antes de asumir que el checkpoint predeterminado es la única posibilidad: allí se documentan varias variantes para distintas necesidades de despliegue.
Consejos para obtener mejores resultados
- Mantén el clip de referencia limpio y conversacional. Un monólogo natural o una muestra de conversación con pocas pausas ayuda al modelo a captar el tono con precisión; la música de fondo, las voces solapadas o el audio muy producido perjudican de forma perceptible la calidad de la clonación.
- Respeta la ventana de contexto de 2.048 tokens al planificar el contenido. Como cubre aproximadamente 30 segundos, incluido el prompt de referencia, divide el contenido largo en varias generaciones en lugar de esperar que una sola ejecución procese un pasaje extenso.
- Usa GGUF Q4 en los dispositivos con más limitaciones y Q8 cuando dispongas de algo más de margen. El nivel de cuantización intercambia directamente una pequeña parte de calidad por velocidad y menor consumo de memoria; elige según el hardware objetivo concreto, no una opción predeterminada.
- Considera NeuTTS Nano si incluso 748M parámetros son demasiados. Este modelo hermano más pequeño de Neuphonic, con 229M parámetros totales —120M activos—, está orientado a despliegues en el edge aún más restringidos que NeuTTS Air.
NeuTTS Air frente a otros modelos ligeros para el dispositivo
| NeuTTS Air | Piper | Kokoro-82M | |
|---|---|---|---|
| Parámetros | ~748M (basado en Qwen2) | ~15M | 82M |
| Clonación de voz | Sí, con ~3 segundos | No, lista fija de voces | No, lista fija de voces |
| Formato de despliegue | GGUF (Q4/Q8) mediante llama.cpp | ONNX | PyTorch / ONNX |
| Tiempo real en hardware de nivel smartphone | Sí (benchmark documentado en Galaxy A25) | Sí | No es un objetivo principal del diseño |
| Marca de agua integrada | Sí (Perth) | No | No |
| Idiomas | Inglés (el más sólido), español, alemán, francés | 35+ | 8 |
| Licencia | Apache 2.0 | MIT (original) / GPL-3.0 (fork actual) | Apache 2.0 |
El nicho específico de NeuTTS Air dentro de los modelos ligeros para el dispositivo es ser una de las pocas opciones que conserva la clonación de voz zero-shot con este tamaño. La mayoría de los modelos tan pequeños renuncia por completo a la clonación a cambio de reducir su tamaño, justo la concesión que NeuTTS Air se diseñó para evitar.
Preguntas frecuentes
¿NeuTTS Air necesita una GPU?
No. Está optimizado para la inferencia en CPU mediante cuantización GGUF y funciona bien en portátiles modernos o dispositivos como Raspberry Pi 4. Si la quieres, la compatibilidad con GPU está disponible mediante llama-cpp-python con CUDA o Metal, pero no es obligatoria.
¿Cuánto audio de referencia necesita NeuTTS Air para clonar una voz?
Apenas 3 segundos. El intervalo práctico ideal documentado es de 3 a 15 segundos de audio limpio y mono, junto con la transcripción correspondiente del clip de referencia.
¿NeuTTS Air es gratuito para uso comercial?
Sí. Se publica bajo la licencia Apache 2.0, que permite el uso comercial sin un acuerdo de licencia independiente.
¿Por qué NeuTTS Air necesita espeak?
Utiliza espeak-ng para convertir el texto de entrada en fonemas como paso de preprocesamiento, una parte esencial del modo en que el modelo de lenguaje base entiende qué sonidos debe generar.
Genera una voz similar desde un audio de referencia con Echora
Para un flujo en el navegador con un objetivo similar, utiliza la Clonación de voz de Echora. Sube una grabación de tu propia voz o una que tengas permiso explícito para usar, introduce hasta 5.000 caracteres de texto nuevo y genera una voz parecida a la referencia.