# Clonación de voz Qwen3-TTS

Qwen3-TTS de Alibaba es un modelo de texto a voz de última generación que admite **más de 10 idiomas** con clonación de voz a partir de solo 3 segundos de audio. Presenta control de emoción en lenguaje natural ("hablar felizmente", "susurrar suavemente"), transmisión con 97 ms de latencia y dos tamaños de modelo (0.6B y 1.7B). Lanzado bajo Apache 2.0, es uno de los sistemas TTS de código abierto más capaces disponibles.

## Características clave

* **más de 10 idiomas**: inglés, chino, japonés, coreano, francés, alemán, español y más
* **Clonación de voz en 3 segundos**: Clona cualquier voz a partir de una muestra de audio corta
* **Control de emoción natural**: Controla el estilo con instrucciones en texto plano
* **Soporte de transmisión**: 97 ms de latencia para el primer token — ideal para aplicaciones en tiempo real
* **Dos tamaños**: 0.6B (4GB VRAM) y 1.7B (8GB VRAM)
* **Ajustable (fine-tunable)**: Modelos base disponibles para entrenamiento personalizado
* **Licencia Apache 2.0**: Uso comercial completo

## Variantes de modelo

| Modelo                  | Parámetros | VRAM | Calidad | Velocidad | Mejor para                   |
| ----------------------- | ---------- | ---- | ------- | --------- | ---------------------------- |
| Qwen3-TTS-0.6B-Instruct | 0.6B       | 4GB  | Bueno   | Rápido    | Tiempo real, GPUs económicas |
| Qwen3-TTS-1.7B-Instruct | 1.7B       | 8GB  | Mejor   | Medio     | Calidad de producción        |
| Qwen3-TTS-0.6B-Base     | 0.6B       | 4GB  | —       | —         | Ajuste fino                  |
| Qwen3-TTS-1.7B-Base     | 1.7B       | 8GB  | —       | —         | Ajuste fino                  |

## Requisitos

| Componente | 0.6B         | 1.7B          |
| ---------- | ------------ | ------------- |
| GPU        | RTX 3060 6GB | RTX 3080 10GB |
| VRAM       | 4GB          | 8GB           |
| RAM        | 8GB          | 16GB          |
| Disco      | 5GB          | 10GB          |
| Python     | 3.10+        | 3.10+         |

**GPU recomendada de Clore.ai**: RTX 3060 ($0.15–0.3/día) para 0.6B, RTX 3080 ($0.2–0.5/día) para 1.7B

## Instalación

```bash
pip install transformers torch torchaudio soundfile
```

## Inicio rápido — Clonación de voz

```python
import torch
import torchaudio
from transformers import AutoModelForCausalLM, AutoProcessor

model_name = "Qwen/Qwen3-TTS-12Hz-1.7B-Instruct"
processor = AutoProcessor.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"
)

# Cargar voz de referencia (3+ segundos de cualquier voz)
reference_audio, sr = torchaudio.load("reference_voice.wav")

# Generar habla clonando esa voz
text = "Welcome to Clore.ai, the decentralized GPU rental marketplace."
inputs = processor(
    text=text,
    audio=reference_audio,
    sampling_rate=sr,
    return_tensors="pt"
).to("cuda")

with torch.no_grad():
    output = model.generate(**inputs, max_new_tokens=2048)

# Decodificar y guardar
audio = processor.decode(output[0])
torchaudio.save("output.wav", audio.unsqueeze(0), 24000)
```

## Control de emoción

```python
# Controlar la emoción con instrucciones en lenguaje natural
prompts = [
    ("Habla feliz y enérgicamente", "¡Grandes noticias! Acabamos de lanzar la nueva función!"),
    ("Susurra suavemente y con ternura", "Déjame contarte un secreto sobre los precios de las GPU..."),
    ("Habla profesionalmente y con claridad", "Los resultados trimestrales muestran un aumento del 40% en los ingresos."),
    ("Habla con emoción", "¡No creerás los resultados del benchmark!"),
]

para estilo, texto en prompts:
    inputs = processor(
        text=text,
        style_prompt=style,
        audio=reference_audio,
        sampling_rate=sr,
        return_tensors="pt"
    ).to("cuda")
    
    output = model.generate(**inputs, max_new_tokens=2048)
    audio = processor.decode(output[0])
    torchaudio.save(f"output_{style[:10]}.wav", audio.unsqueeze(0), 24000)
```

## Generación multilingüe

```python
# Generar en diferentes idiomas (¡la misma voz!)
texts = {
    "en": "Hello, welcome to the GPU marketplace.",
    "zh": "你好，欢迎来到GPU市场。",
    "ja": "こんにちは、GPUマーケットプレイスへようこそ。",
    "ko": "안녕하세요, GPU 마켓플레이스에 오신 것을 환영합니다。",
    "fr": "Bonjour, bienvenue sur le marché GPU.",
    "de": "Hallo, willkommen auf dem GPU-Marktplatz.",
}

for lang, text in texts.items():
    inputs = processor(
        text=text, audio=reference_audio, sampling_rate=sr,
        language=lang, return_tensors="pt"
    ).to("cuda")
    output = model.generate(**inputs, max_new_tokens=2048)
    audio = processor.decode(output[0])
    torchaudio.save(f"output_{lang}.wav", audio.unsqueeze(0), 24000)
```

## Comparación con otros modelos TTS

| Función            | Qwen3-TTS  | Zonos      | Día          | Kokoro     | XTTS  |
| ------------------ | ---------- | ---------- | ------------ | ---------- | ----- |
| Idiomas            | 10+        | 1 (EN)     | 1 (EN)       | 1 (EN)     | 17    |
| Clon de voz        | 3 seg      | 2-30 seg   | No           | No         | 6 seg |
| Streaming          | ✅ (97 ms)  | ❌          | ❌            | ❌          | ✅     |
| Control de emoción | ✅ Natural  | ❌          | ✅ Automático | ❌          | ❌     |
| Multi-orador       | ❌          | ❌          | ✅            | ❌          | ❌     |
| VRAM mínima        | 4GB        | 8GB        | 8GB          | 2GB        | 6GB   |
| Licencia           | Apache 2.0 | Apache 2.0 | Apache 2.0   | Apache 2.0 | AGPL  |

## Consejos para usuarios de Clore.ai

* **0.6B en RTX 3060**: Mejor opción económica a $0.15/día — suficiente para la mayoría de tareas TTS
* **Procesamiento por lotes**: Genera todos los clips de audio en una sesión para maximizar el tiempo de alquiler
* **Almacenar en caché el audio de referencia**: Mantén tus referencias de voz en almacenamiento persistente
* **Transmisión para tiempo real**: Usa la API de streaming para aplicaciones de chatbot/asistente
* **Ajusta para voces personalizadas**: Alquila una RTX 4090 por unas horas para ajustar el modelo base con tus datos de voz

## Solución de problemas

| Problema                      | Solución                                                                                  |
| ----------------------------- | ----------------------------------------------------------------------------------------- |
| Memoria insuficiente en 1.7B  | Cambia a 0.6B o usa `torch_dtype=torch.float16`                                           |
| La clonación de voz suena mal | Usa 5-10 segundos de audio limpio (sin ruido de fondo)                                    |
| Salida en idioma incorrecto   | Pasa explícitamente `idioma` parámetro                                                    |
| Primera generación lenta      | Normal — el modelo se carga en la primera llamada. Las llamadas subsiguientes son rápidas |

## Lecturas adicionales

* [Modelos de HuggingFace](https://huggingface.co/Qwen/Qwen3-TTS-12Hz-1.7B-Instruct)
* [Documentación de Qwen3-TTS](https://qwen.readthedocs.io/)
* [Guía de clonación de voz](https://medium.com/@zh.milo/qwen3-tts-the-complete-2026-guide)
