Qwen3-TTS en local: síntesis de voz clonada
Qwen3-TTS es la familia de modelos de síntesis de voz publicada con pesos abiertos por el equipo Qwen de Alibaba, bajo licencia Apache 2.0. Cabe en unos pocos gigabytes, habla francés entre una decena de idiomas y sabe hacer tres cosas distintas: leer un texto con una voz predefinida, inventar una voz a partir de una descripción o reproducir un timbre a partir de un breve fragmento de audio. Esta guía muestra cómo ejecutar Qwen3-TTS en local con el paquete oficial de Python, qué variante elegir y en qué contexto la clonación de voz sigue siendo aceptable. Aquí no se proporciona ninguna medición de calidad o velocidad: no hemos realizado ninguna, y deben consultarse las fuentes oficiales para conocer las versiones actuales.
#¿Por qué Qwen3-TTS en vez de una voz en la nube?
Los servicios de síntesis de voz en línea suenan bien, pero cada frase que les confías sale de tu máquina, se factura por carácter y depende de una cuenta que puede cerrarse. Para un lector de documentos internos, un asistente domótico o un prototipo de aplicación, una voz que funciona completamente en local elimina esas tres dependencias de una vez.
En el ecosistema abierto, hasta ahora coexistían dos familias. Por un lado, modelos muy ligeros como Piper o Kokoro: rápidos en el procesador, voces fijas y sin clonación. Por otro, modelos más pesados y expresivos, a menudo centrados en el inglés y el chino. Qwen3-TTS se sitúa entre ambos: pesos compactos, pero una arquitectura de tipo LLM que acepta instrucciones de estilo en lenguaje natural y compatibilidad explícita con el francés desde el lanzamiento.
La particularidad de la familia es que está dividida en tres comportamientos, en lugar de consistir en un único modelo que lo haga todo. Solo descargas la variante que corresponde a tus necesidades, algo importante en una GPU de 8 o 12 GB compartida con un LLM de texto.
#Modelos disponibles: Base, CustomVoice, VoiceDesign
Tus vídeos cortos y carruseles creados en tu ordenador: voz en off de IA natural, subtítulos palabra por palabra, montaje automático y textos de publicación, sin suscripción.
- Espacio en línea de por vida
- PDF + archivos
- Reembolsado 30 d
Au lancement, la famille comprend deux tailles de modèle, 0,6 et 1,7 milliard de paramètres, déclinées en trois variantes fonctionnelles, plus un tokenizer audio partagé. Les identifiants Hugging Face suivent le motif Qwen/Qwen3-TTS-12Hz-<tamaño>-<variante>. Le « 12Hz » désigne la fréquence du codec audio: le modèle produit douze trames de jetons acoustiques par seconde de parole, ce qui explique sa frugalité en calcul par rapport à des codecs plus denses.
- CustomVoice
- Voces predefinidas, cada una con un timbre y un idioma de origen, controlables mediante una instrucción de estilo («habla despacio, con un tono tranquilizador»). Es la variante que debes elegir para leer un texto sin tener que preocuparte por la voz. Disponible en 0,6B y 1,7B.
- VoiceDesign
- Describes la voz que quieres en lenguaje natural (edad, género percibido, energía, acento, emoción) y el modelo la inventa. No se necesita ninguna grabación de referencia, por lo que no se imita a ninguna persona real. Publicado en 1,7B.
- Base
- Clonación a partir de un fragmento de audio de unos segundos y de su transcripción. Es la variante más potente y la única que plantea una cuestión de consentimiento, tratada más abajo. Disponible en 0,6B y 1,7B.
- Tokenizer-12Hz
- El códec de audio que codifica y decodifica el habla. Las variantes anteriores lo descargan automáticamente; solo tienes que manipularlo en caso de uso avanzado.
Los idiomas anunciados son chino, inglés, japonés, coreano, alemán, francés, ruso, portugués, español e italiano, además de varios dialectos chinos. El parámetro de idioma acepta tanto un nombre explícito como «French» como «Auto» para que el modelo detecte el idioma del texto. Para el francés, forzar el valor evita dudas de pronunciación con los nombres propios y los anglicismos.
#Requisitos de hardware y software
- Sistema
- Linux x86_64 es el objetivo documentado por el repositorio. macOS y Windows son posibles con las salvedades detalladas en la sección específica.
- GPU
- Una tarjeta NVIDIA con CUDA es la opción prevista. Una RTX 3060 de 12 GB es más que suficiente para la 1,7B por sí sola; la ejecución en procesador sirve para probar una frase, pero no es adecuada para un uso interactivo.
- Python
- El repositorio recomienda Python 3.12 en un entorno virtual específico. Evita instalarlo en el entorno del sistema o en el de otro proyecto de audio: las versiones de PyTorch y transformers exigidas por el paquete pueden entrar en conflicto.
- Espacio en disco
- Calcula unos pocos gigabytes por variante descargada, en la caché de Hugging Face (~/.cache/huggingface de forma predeterminada).
- Red
- Solo en el primer lanzamiento, para descargar los pesos. Después, todo funciona sin conexión.
Hay un último requisito previo que no es técnico: si tienes previsto utilizar la variante Base, debes disponer de una grabación cuya voz tengas derecho a utilizar. Tu propia voz es el caso más sencillo y seguro para aprender.
#Paso 1: instalar el paquete qwen-tts
El paquete oficial de Python se llama qwen-tts en PyPI y se importa con el nombre qwen_tts. Instala PyTorch y transformers como dependencias. La instalación siguiente utiliza un entorno virtual estándar; conda también funciona si es lo que sueles usar.
El repositorio ofrece opcionalmente FlashAttention 2 para acelerar la inferencia en GPU recientes. Su compilación es larga y falla con algunas combinaciones de CUDA y PyTorch. No es imprescindible: sin ella, el modelo utiliza la atención estándar de PyTorch. Instálala solo cuando el resto funcione.
Comprueba que import passe y que PyTorch detecta correctamente tu GPU antes de continuar.
#Paso 2: generar una primera frase en francés con Qwen3-TTS
La variante CustomVoice es la más directa para una primera prueba: no requiere una grabación de referencia ni redactar una descripción. Se carga el modelo, se elige una voz de la lista del repositorio, y se introducen el texto y el idioma. La primera llamada descarga los pesos desde Hugging Face.
Tres parámetros merecen una explicación. El campo speaker designa una de las voces predefinidas; la lista exacta, con el idioma de origen y la descripción de cada timbre, figura en el README y en la ficha de Hugging Face del modelo CustomVoice. Todas estas voces pueden leer francés, pero cada una conserva un acento coherente con su idioma nativo, lo que es una elección estética y no un defecto. El campo instruct es una instrucción de estilo en lenguaje natural: emoción, ritmo e intención. Es opcional. Por último, la función devuelve una lista de formas de onda y la frecuencia de muestreo, lo que permite procesar varios textos por lotes.
#Paso 3: diseñar una voz mediante una descripción
VoiceDesign responde a una necesidad frecuente: quieres una voz que no aparezca en la lista, sin imitar a nadie. Describes el resultado en una o dos frases y el modelo produce un timbre coherente con la instrucción. También es la variante preferible para un producto, ya que no reproduce ninguna voz real.
La descripción funciona mejor cuando describe características acústicas (altura, velocidad, energía y claridad) que cuando usa metáforas. «Voz de presentador de radio nocturno» da resultados menos estables que «voz masculina grave, lenta y aterciopelada». Una voz diseñada así no queda fijada de una llamada a otra: si necesitas la misma voz en cientos de frases, genera un primer fragmento que te convenza y úsalo después como referencia con la variante Base. De este modo clonas una voz sintética, lo que no plantea ningún problema de consentimiento.
#Paso 4: clonar una voz, con el consentimiento de su propietario
La variante Base reproduce un timbre a partir de un breve fragmento de audio y su transcripción. Bastan unos segundos de habla limpia para obtener una voz reconocible. Es la función más impresionante de la familia y la que exige mayor rigor incluso antes de escribir una sola línea de código.
Para preparar la referencia, graba una frase de cinco a diez segundos en un lugar tranquilo, sin música de fondo ni reverberación, hablando con naturalidad. Transcríbela palabra por palabra, incluida la puntuación: ese es el texto que el modelo alinea con el audio para aprender el timbre. Un archivo WAV mono es el formato más seguro.
El repositorio documenta dos usos avanzados útiles en producción. Primero, la posibilidad de precalcular de una vez la «huella» de la voz de referencia y reutilizarla después en cada frase sin volver a cargar el audio: eso es lo necesario para un lector de documentos o un asistente que habla de forma continua. Después, un modo en el que solo se utiliza la huella del hablante, sin la transcripción; es más rápido, pero menos fiel. Los nombres exactos de estos parámetros figuran en el README; cambiaron entre las primeras versiones del paquete, de ahí la importancia de leer la documentación instalada en lugar de un tutorial obsoleto.
- Lo que mejora el resultado
- Una referencia limpia, una transcripción exacta, un idioma forzado en lugar de «Auto» y un texto de destino puntuado (el modelo respira en las comas y los puntos).
- Lo que lo empeora
- Ruido de fondo, una referencia demasiado corta o demasiado larga, un susurro, una transcripción aproximada y cifras escritas con números en vez de letras en los casos ambiguos.
- Lo que hay que documentar
- Quién dio su consentimiento, para qué uso, en qué fecha y dónde se conserva la grabación. Un simple archivo de texto junto a la referencia basta para un proyecto personal; para un uso profesional, hace falta un registro de tratamiento real.
#Paso 5: interfaz web y servidor
El paquete instala una demo de Gradio desde la línea de comandos, práctica para probar las voces y las indicaciones sin escribir un script. Carga un modelo al iniciarse y muestra una página web local.
Mantén la dirección de escucha en 127.0.0.1 mientras la máquina no esté protegida: Gradio no autentica a nadie de forma predeterminada, y exponer una interfaz de clonación de voz en una red no es algo trivial. Si necesitas acceder desde otro equipo, utiliza un túnel SSH o un proxy inverso con autenticación, como con cualquier servicio local.
Para una integración en una aplicación, el equipo Qwen recomienda vLLM-Omni, la extensión multimodal de vLLM, que permite servir el modelo con una API HTTP y una salida en flujo (el sonido empieza a salir antes de que termine la generación). Es la vía que conviene estudiar para un asistente de voz en el que la latencia sea importante; para generar archivos de audio por lotes, basta con el script de Python directo y se evita añadir otra capa.
#Apple Silicon y Windows: vías comunitarias, indicadas como tales
El repositorio oficial documenta Linux con CUDA. En las demás plataformas, lo que sigue pertenece al ecosistema comunitario: no hemos verificado estas vías personalmente y su estado cambia de un mes a otro.
- Mac Apple Silicon
- El paquete oficial se basa en PyTorch; puedes intentar device_map="mps" con dtype float16 o float32 (bfloat16 no siempre es compatible con MPS), contando con que puede haber operaciones no compatibles. La opción más natural en Mac es un port de MLX: el proyecto comunitario mlx-audio ha anunciado compatibilidad con Qwen3-TTS. Comprueba en su repositorio qué variantes están cubiertas y con qué nivel de madurez antes de comprometerte.
- Windows nativo
- PyTorch con CUDA se instala normalmente, pero FlashAttention es difícil de compilar en Windows: déjalo de lado y utiliza la atención predeterminada. Algunas dependencias de audio requieren binarios del sistema (ffmpeg en el PATH, por ejemplo). Circulan instaladores de terceros «de un clic»; a menudo incluyen una versión fija del paquete, así que debes leer qué instalan.
- Windows mediante WSL2
- Es la vía más cercana a la documentación oficial: una distribución de Ubuntu bajo WSL2 con el controlador NVIDIA reciente de Windows detecta la GPU y sigue exactamente los comandos de esta guía. El coste es añadir una capa y acceder a los archivos de Windows con algo más de lentitud.
#Solución de problemas
- CUDA out of memory al cargar
- Otro proceso está ocupando la tarjeta (Ollama, un navegador con aceleración, una sesión de Stable Diffusion). Compruébalo con nvidia-smi, libera memoria o cambia a la variante 0,6B.
- Descarga interrumpida o repositorio no encontrado
- Comprueba el identificador exacto del modelo en la página de Hugging Face de la organización Qwen; los nombres de las variantes pueden haber cambiado desde la redacción. Una descarga parcial se reanuda al volver a ejecutar el script.
- Error de import liée en transformers o torch
- Conflicto de versiones con otro proyecto instalado en el mismo entorno. Crea de nuevo un entorno virtual limpio y reinstala únicamente qwen-tts y soundfile.
- Pronunciación extraña en francés
- Fuerza language="French" en lugar de «Auto», escribe los números con letras cuando la lectura sea ambigua y utiliza signos de puntuación. Las siglas se leen mejor separadas por puntos o espacios.
- El clon no se parece a la referencia
- Vuelve a grabar la referencia en un lugar silencioso, verifica la transcripción palabra por palabra y prueba la 1,7B si estabas usando la 0,6B. Un fragmento demasiado largo no ayuda: unos pocos segundos de voz nítida valen más que un minuto con ruido.
- Silencio o archivo vacío
- Comprueba que escribes exactamente wavs[0] y no la lista completa, y que la frecuencia de muestreo devuelta por el modelo es la que se pasó a soundfile.
- Lentitud extrema
- Probablemente el modelo se está ejecutando en la CPU. La prueba torch.cuda.is_available() del paso 1 debe devolver True; de lo contrario, reinstala PyTorch con la versión de CUDA correspondiente a tu controlador.
#Para ir más allá
Qwen3-TTS cubre la parte de «hablar» de una cadena de voz local. Para la otra mitad, la comprensión, y para compararlo con modelos de síntesis más ligeros, el sitio ya trata varios temas relacionados. Las versiones de los paquetes y modelos citados en esta guía son las del repositorio QwenLM/Qwen3-TTS en el momento de redactarla; en caso de discrepancia, prevalecen el repositorio y las fichas de Hugging Face.
- Kokoro TTS: una voz local convincente y ligera
- El modelo de 82 millones de parámetros que habla más rápido que el tiempo real en un procesador, sin clonación. La opción adecuada cuando la frugalidad prima sobre la expresividad. https://quelllm.fr/guide/kokoro-tts-voix-locale
- Asistente de voz 100 % local: Whisper + Ollama + Piper
- La cadena completa: escucha, razonamiento y respuesta hablada. Qwen3-TTS puede sustituir a Piper para la síntesis si tu GPU lo permite. https://quelllm.fr/guide/assistant-vocal-local-whisper-piper
- Ficha del modelo Voxtral 4B TTS
- El otro modelo europeo reciente de síntesis de voz abierta, para situar Qwen3-TTS en el panorama sin una comparación cuantitativa. https://quelllm.fr/modele/voxtral-4b-tts
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.