Phase 08 - Lesson 11
Generación de Audio
El audio es una señal 1D a 16-48 kHz. Un clip de cinco segundos tiene entre 80k y 240k muestras. Ningún transformer atiende a esa secuencia directamente. La solución para cada modelo de audio en producción en 2026 es la misma: un codec neural (Encodec, SoundStream, DAC) comprime el audio en tokens discretos a 50-75 Hz, y un modelo transformer o de difusión genera los tokens.
Tipo: Build Idiomas: Python Prerrequisitos: Fase 6 · 02 (Características de Audio), Fase 6 · 04 (ASR), Fase 8 · 06 (DDPM) Tiempo: ~45 minutos
El Problema
Tres tareas de generación de audio:
- Text-to-speech. Dado un texto, produce habla. El habla limpia es de banda estrecha y tiene una estructura fonética fuerte, resuelta adecuadamente por transformer sobre tokens. VALL-E (Microsoft), NaturalSpeech 3, ElevenLabs, OpenAI TTS.
- Generación de música. Dado un prompt (texto, melodía, progresión de acordes, género), produce música. Distribución mucho más amplia. MusicGen (Meta), Stable Audio 2.5, Suno v4, Udio, Riffusion.
- Efectos de audio / diseño de sonido. Dado un prompt, produce sonido ambiental o Foley. AudioGen, AudioLDM 2, Stable Audio Open.
Las tres se ejecutan sobre el mismo sustrato: codec de audio neural + generador token-AR o de difusión.
El Concepto
Codecs de audio neurales
Encodec (Meta, 2022), SoundStream (Google, 2021), Descript Audio Codec (DAC, 2023). Un codificador convolucional comprime la forma de onda en un vector por timestep; la cuantización vectorial residual (RVQ) convierte cada vector en una cascada de K índices de diccionario de códigos (codebooks). El decodificador hace lo inverso. Audio de 24 kHz a 2 kbps usando 8 codebooks RVQ a 75 Hz = 600 tokens/seg.
waveform (16000 samples/sec)
└─ encoder conv ─┐
├─ RVQ layer 1 → indices at 75 Hz
├─ RVQ layer 2 → indices at 75 Hz
├─ ...
└─ RVQ layer 8
Dos paradigmas generativos por encima
Autorregresivo de tokens (Token-autoregressive). Aplana los tokens RVQ en una secuencia, ejecuta un transformer solo decodificador (decoder-only). MusicGen usa "paralelo retrasado" (delayed parallel) para emitir K flujos de codebooks en paralelo con desvíos (offsets) por flujo. VALL-E genera tokens de habla a partir de un prompt de texto + una muestra de voz de 3 segundos.
Difusão latente (Latent diffusion). Empaqueta los tokens del codec como latentes continuos o los modela con difusión categórica. Stable Audio 2.5 usa correspondencia de flujo (flow matching) en latentes de audio continuos. AudioLDM 2 usa difusión text-to-mel-to-audio.
La tendencia para 2024-2026: la correspondencia de flujo (flow matching) está ganando para la música (inferencia más rápida, muestras más limpias), mientras que token-AR todavía domina en el habla porque es naturalmente causal y se transmite (stream) bien.
Panorama de producción
| Sistema | Tarea | Backbone | Latencia |
|---|---|---|---|
| ElevenLabs V3 | TTS | Token-AR + vocoder neural | ~300ms primer token |
| OpenAI GPT-4o audio | Habla full-duplex | AR multimodal de extremo a extremo | ~200ms |
| NaturalSpeech 3 | TTS | Flow matching latente | Sin transmisión (non-streaming) |
| Stable Audio 2.5 | Música / SFX | DiT + flow matching en latentes de audio | ~10s para clip de 1 minuto |
| Suno v4 | Canciones completas | No revelado; se sospecha de token-AR | ~30s por canción |
| Udio v1.5 | Canciones completas | No revelado | ~30s por canción |
| MusicGen 3.3B | Música | Token-AR en Encodec 32kHz | Tiempo real |
| AudioCraft 2 | Música + SFX | Flow matching | ~5s para clip de 5s |
| Riffusion v2 | Música | Difusión de espectrograma | ~10s |
Constrúyelo
code/main.py simula la idea central: entrenar un transformer de próximo token muy pequeno en secuencias de "tokens de audio" sintéticos gerados a partir de dos "estilos" distintos (tokens alternantes bajos y altos para el estilo A, rampa monotónica para el estilo B). Condiciona según el estilo y realiza el muestreo.
Paso 1: tokens de audio sintéticos
def make_tokens(style, length, vocab_size, rng):
if style == 0: # "speech-like": alternating
return [i % vocab_size for i in range(length)]
# "music-like": ramp
return [(i * 3) % vocab_size for i in range(length)]
Paso 2: entrenar un predictor de tokens pequeño
Un predictor estilo bigrama condicionado al estilo. El punto importante es el patrón: tokens de codec → entrenamiento por entropía cruzada (cross-entropy) → muestreo autorregresivo.
Paso 3: muestreo condicional
Dado el token de estilo y un token inicial, realiza el muestreo del siguiente token a partir de la distribución predicha. Continúa por 20-40 tokens.
Dificultades comunes
- La qualidade do codec limita a qualidade de saída. Si el codec no puede representar un sonido con fidelidad, ninguna cantidad de calidad del generador ayudará. DAC es el mejor modelo abierto actualmente.
- Acumulación de errores de RVQ. Cada capa de RVQ modela el residuo de la anterior. Los errores en la capa 1 se propagan. Realizar el muestreo con temperatura 0 en las capas superiores ayuda.
- Estructura musical. 30 segundos de tokens equivalen a más de 20k tokens a 75 Hz. Es difícil para los transformers. MusicGen usa una ventana deslizante + continuación de prompt; Stable Audio usa clips más cortos + crossfading.
- Artefactos en los límites. El crossfading entre clips gerados requiere una operación de overlap-add cuidadosa.
- Apetito por datos limpios. Los generadores de música necesitan decenas de miles de horas de música con términos asociados. La demanda de la RIAA contra Suno / Udio (2024) sacó esto a la luz.
- Ética en la clonación de voz. Una muestra de voz de 3 segundos más un prompt de texto es suficiente para que VALL-E / XTTS / ElevenLabs clonen una voz. Cada modelo en producción requiere detección de abuso + listas de exclusión (opt-out).
Casos de Uso
| Tarea | Stack de 2026 |
|---|---|
| TTS Comercial | ElevenLabs, OpenAI TTS o Azure Neural |
| Clonación de voz (consentimiento verificado) | XTTS v2 (abierto) o ElevenLabs Pro |
| Música de fondo, rápida | Stable Audio 2.5 API, Suno o Udio |
| Música con letra | Suno v4 o Udio v1.5 |
| Efectos de sonido / Foley | AudioCraft 2, ElevenLabs SFX o Stable Audio Open |
| Agente de voz en tiempo real | GPT-4o realtime o Gemini Live |
| Investigación de música con pesos abiertos | MusicGen 3.3B, Stable Audio Open 1.0, AudioLDM 2 |
| Doblaje / traducción | HeyGen, ElevenLabs Dubbing |
Ponlo en producción
Guarda outputs/skill-audio-brief.md. La Skill recibe un informe de audio (tarea, duración, estilo, voz, licencia) y produce: modelo + alojamiento, formato de prompt (etiquetas de género, descriptores de estilo, marcadores estructurales), cadena de codec + generador + vocoder, protocolo de seed y plan de evaluación (MOS / CLAP score / CER para TTS / prueba A/B de usuario).
Ejercicios
- Fácil. Ejecuta
code/main.pyy establece el estilo explícitamente. Verifica que las secuencias generadas coincidan con el patrón del estilo. - Medio. Agrega decodificación paralela retrasada (delayed parallel decoding): simula 2 flujos de tokens que deben mantener un desvío (offset) de 1 paso. Entrena un predictor conjunto.
- Difícil. Usa transformers de HuggingFace para ejecutar MusicGen-small localmente. Genera un clip de 10 segundos con tres prompts diferentes; realiza una prueba A/B para la adherencia al estilo.
Términos Clave
| Término | Lo que la gente dice | Lo que realmente significa |
|---|---|---|
| Codec | "Compresión neural" | Codificador / decodificador para audio; la salida típica son tokens de 50-75 Hz. |
| RVQ | "VQ residual" | Cascata de K cuantizadores; cada uno modela el residuo del anterior. |
| Token | "Un símbolo de codec" | Índice discreto en un codebook; típicamente 1024 o 2048. |
| Paralelo retrasado (Delayed parallel) | "Codebooks con desvío (offset)" | Emitir K flujos de tokens con desvíos escalonados para reducir la longitud de la secuencia. |
| Correspondencia de flujo (Flow matching) | "La victoria de 2024 para el audio" | Alternativa de camino más directo a la difusión; muestreo más rápido. |
| Prompt de voz | "Muestra de 3 segundos" | Embedding de hablante o prefijo de token que guía la voz clonada. |
| Espectrograma de Mel | "El visual" | Espectrograma perceptual de magnitud logarítmica; utilizado por muchos sistemas TTS. |
| Vocoder | "Mel a onda" | Componente neural que convierte espectrogramas de Mel de vuelta en audio. |
Nota de producción: el audio es un problema de streaming
El audio es la única modalidad de salida que los usuarios esperan que llegue a medida que se genera, no toda de una vez. En términos de producción, esto significa que el TPOT importa (Tiempo por Token de Salida - Time Per Output Token) porque la velocidad de escucha del usuario es el rendimiento objetivo, no su velocidad de lectura. Para audio de 16kHz tokenizado a ~75 tokens/segundo (Encodec), el servidor debe generar ≥75 tokens/seg por usuario para mantener la reproducción fluida.
Dos consecuencias arquitectónicas:
- Los modelos de audio de correspondencia de flujo (flow-matching) no pueden transmitir por streaming de forma trivial. Stable Audio 2.5 y AudioCraft 2 renderizan una longitud de clip fija en una sola pasada. Para transmitir por streaming, se divide el clip en fragmentos (chunks) y se sobreponen los límites (pensando en difusión de ventana deslizante), lo que añade de 100 a 300 ms de latência de overhead frente a un modelo AR de codec.
Si el producto es "chat de voz en vivo" o "continuación de música en tiempo real", elige la ruta de codec AR. Si es "renderizar un clip de 30 segundos al enviar", flow-matching gana en calidad y latencia total.
Lecturas Adicionales
- Défossez et al. (2022). Encodec: High Fidelity Neural Audio Compression — el estándar del codec.
- Zeghidour et al. (2021). SoundStream — el primer codec de audio neural ampliamente utilizado.
- Kumar et al. (2023). High-Fidelity Audio Compression with Improved RVQGAN (DAC) — DAC.
- Wang et al. (2023). Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers (VALL-E) — VALL-E.
- Copet et al. (2023). Simple and Controllable Music Generation (MusicGen) — MusicGen.
- Liu et al. (2023). AudioLDM 2: Learning Holistic Audio Generation with Self-supervised Pretraining — AudioLDM 2.
- Stability AI (2024). Stable Audio 2.5 — generación de texto a música en 2025 con flow matching.