- Introducción al proyecto: entorno de síntesis de voz con estilo retro
Este proyecto combina el modelo de síntesis de voz Qwen3-TTS con una interfaz inspirada en videojuegos clásicos de 8 bits. Diseñado con Streamlit y compatible con Python 3.8+, permite generar audio a partir de descripciones textuales sin necesidad de muestras de referencia, todo dentro de un entorno visual lúdico y funcional.
- Funcionalidades clave
2.1 Generación de voz por instrucción natural
- Control por lenguaje natural: Describe el tono deseado (ej. "nervioso", "solemne") directamente en texto.
- Síntesis expresiva: Captura matices emocionales complejos como urgencia, calma o entusiasmo.
- Respuesta en tiempo real: Genera audio de alta calidad en segundos tras la entrada del usuario.
2.2 Interfaz gamificada
| Elemento | Función | Estilo visual |
|---|---|---|
| Panel HUD retro | Muestra estado y progreso | Diseño inspirado en consolas clásicas |
| Zona de entrada (tubería verde) | Entrada de guion y descripción de tono | Gráficos pixelados tipo tubería |
| Fondo animado | Ambiente interactivo | Enemigos móviles y bloques saltarines |
| Tipo de letra personalizado | Texto en toda la interfaz | Fuentes pixeladas y tipografía ZCOOL |
- Configuración del entorno
3.1 Requisitos de hardware
- GPU NVIDIA con ≥16 GB de VRAM
- ≥32 GB de RAM del sistema
- ≥20 GB de espacio libre en disco
3.2 Instalación
# Crear entorno virtual
python -m venv tts-env
source tts-env/bin/activate # Linux/macOS
# o
tts-env\Scripts\activate # Windows
# Instalar dependencias
pip install streamlit torch torchaudio
pip install -r requirements.txt
3.3 Ejecución
git clone https://github.com/your-repo/super-qwen-voice-world.git
cd super-qwen-voice-world
streamlit run app.py
Accede a la URL mostrada en la terminal para abrir la aplicación.
- Flujo de trabajo práctico
4.1 Escenarios preconfigurados
El sistema incluye cuatro perfiles de voz listos para usar:
- Alerta crítica: tono apremiante y rápido
- Entrada heroica: voz enérgica y motivadora
- Voz ominosa: registro grave y autoritario
- Narración suave: tono calmado y claro
Haz clic en los botones temáticos (representados como hongos amarillos) para cargarlos.
4.2 Personalización de entrada
- Selecciona un escenario base.
- Escribe el guion en el campo "Texto a sintetizar".
- Describe el tono deseado en "Características vocales" (ej. "voz femenina joven, emocionada").
- Ajusta los parámetros:
- Creatividad (Temperature): 0.5–1.0
- Consistencia (Top-p): 0.7–1.0
4.3 Generación y exportación
Al pulsar el botón principal ("Generar audio"), el sistema:
- Procesa la solicitud (10–30 segundos).
- Muestra una animación de confirmación (globos flotantes).
- Guarda el archivo WAV en la carpeta de salida.
- Permite reproducción inmediata y re-generación.
- Casos de uso reales
5.1 Locución para videojuegos
Ejemplo: Alerta en juego indie.
Texto: "¡Cuidado! ¡Enemigos a la derecha!"
Tono: "Urgente, con respiración acelerada"
Parámetros: Creatividad=0.7, Consistencia=0.9
Resultado: Audio listo para integrar en el motor del juego.
5.2 Narración para tutoriales
Usando el modo "Narración suave", se genera voz clara y profesional para vídeos educativos, ajustando iterativamente hasta lograr fluidez natural.
5.3 Contenido para podcasts
Se generan múltiples variantes de una misma frase con distintos tonos (serio, divertido, reflexivo) para elegir la más adecuada según el estilo del episodio.
- Técnicas avanzadas
6.1 Redacción efectiva de prompts
- Combina emoción + ritmo: "Triste y lento, como un adiós"
- Especifica rasgos: "Hombre mayor, voz ronca, pausada"
- Contextualiza: "Como un presentador de documental de naturaleza"
6.2 Ajuste de hiperparámetros
- Creatividad baja (0.5–0.7): Salida estable y repetible.
- Craetividad alta (0.8–1.0): Mayor variabilidad, útil para efectos dramáticos.
- Consistencia alta (0.9–1.0): Más opciones léxicas consideradas.
6.3 Procesamiento por lotes
import os
scripts = [
("¡Atención!", "alerta máxima, voz cortante"),
("Bienvenidos", "cálido y acogedor")
]
output_dir = "./audio_salida"
os.makedirs(output_dir, exist_ok=True)
for i, (text, tone) in enumerate(scripts):
# Lógica de llamada al modelo (simulada)
filename = f"{output_dir}/clip_{i+1}.wav"
print(f"Generando: {filename} | Texto: '{text}' | Tono: '{tone}'")
- Solución de problemas comunes
7.1 Calidad de audio deficiente
- Refina la descripción del tono con adjetivos específicos.
- Reduce la longitud del texto si supera 100 caracteres.
- Prueba combinaciones: Creatividad=0.6 + Consistencia=0.95.
7.2 Lentitud en generación
- Verifica el uso de VRAM con
nvidia-smi. - Cierra aplicaciones que consuman GPU (ej. navegadores con pestañas pesadas).
- Evita generar múltiples audios simultáneamente.
7.3 Problemas de reproducción
- Confirma que el archivo generado sea .wav válido.
- Prueba reproducirlo con reproductores alternativos (VLC, Audacity).
- Revisa permisos de escritura en la carpeta de salida.