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:

  1. 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.
  2. 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.
  3. 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

Generación de audio: tokens de codec + transformer o difusión

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

  1. Fácil. Ejecuta code/main.py y establece el estilo explícitamente. Verifica que las secuencias generadas coincidan con el patrón del estilo.
  2. 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.
  3. 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

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).