Phase 08 - Lesson 11

Geração de Áudio

O áudio é um sinal 1D de 16-48 kHz. Um clipe de cinco segundos tem de 80 mil a 240 mil amostras. Nenhum transformer atende a essa sequência diretamente. A solução para todo modelo de áudio em produção em 2026 é a mesma: um codec neural (Encodec, SoundStream, DAC) comprime o áudio em tokens discretos a 50-75 Hz, e um modelo transformer ou de difusão gera os tokens.

Tipo: Build Idiomas: Python Pré-requisitos: Fase 6 · 02 (Recursos de Áudio), Fase 6 · 04 (ASR), Fase 8 · 06 (DDPM) Tempo: ~45 minutos

O Problema

Três tarefas de geração de áudio:

  1. Text-to-speech. Dado um texto, produz fala. A fala limpa é de banda estreita e tem uma estrutura fonética forte — bem resolvida por transformer sobre tokens. VALL-E (Microsoft), NaturalSpeech 3, ElevenLabs, OpenAI TTS.
  2. Geração de música. Dado um prompt (texto, melodia, progressão de acordes, gênero), fornece música. Distribuição muito mais ampla. MusicGen (Meta), Stable Audio 2.5, Suno v4, Udio, Riffusion.
  3. Efeitos de áudio / sound design. Dado um prompt, produz som ambiente ou Foley. AudioGen, AudioLDM 2, Stable Audio Open.

Todas as três rodam no mesmo substrato: codec de áudio neural + gerador token-AR ou de difusão.

O Conceito

Geração de áudio: tokens de codec + transformer ou difusão

Codecs de áudio neurais

Encodec (Meta, 2022), SoundStream (Google, 2021), Descript Audio Codec (DAC, 2023). Um codificador convolucional comprime a forma de onda em um vetor por timestep; a quantização vetorial residual (RVQ) converte cada vetor em uma cascata de K índices de dicionário de códigos (codebooks). O decodificador reverte o processo. Áudio 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

Dois paradigmas gerativos por cima

Autorregresivo de tokens (Token-autoregressive). Achata os tokens RVQ em uma sequência, executa um transformer apenas decodificador (decoder-only). O MusicGen usa "paralelo atrasado" (delayed parallel) para emitir K fluxos de codebooks em paralelo com desvios (offsets) por fluxo. O VALL-E gera tokens de fala a partir de um prompt de texto + uma amostra de voz de 3 segundos.

Difusão latente (Latent diffusion). Compacta os tokens do codec como latentes contínuos ou os modela com difusão categórica. O Stable Audio 2.5 usa correspondência de fluxo (flow matching) em latentes de áudio contínuos. O AudioLDM 2 usa difusão text-to-mel-to-audio.

A tendência para 2024-2026: a correspondência de fluxo (flow matching) está ganhando para música (inferência mais rápida, amostras mais limpas), enquanto o token-AR ainda domina na fala porque é naturalmente causal e transmite (stream) bem.

Cenário de produção

Sistema Tarefa Backbone Latência
ElevenLabs V3 TTS Token-AR + vocoder neural ~300ms primeiro token
OpenAI GPT-4o audio Fala full-duplex AR multimodal de ponta a ponta ~200ms
NaturalSpeech 3 TTS Flow matching latente Sem transmissão (non-streaming)
Stable Audio 2.5 Música / SFX DiT + flow matching em latentes de áudio ~10s para clipe de 1 minuto
Suno v4 Músicas completas Não divulgado; suspeita-se de token-AR ~30s por música
Udio v1.5 Músicas completas Não divulgado ~30s por música
MusicGen 3.3B Música Token-AR em Encodec 32kHz Tempo real
AudioCraft 2 Música + SFX Flow matching ~5s para clipe de 5s
Riffusion v2 Música Difusão de espectrograma ~10s

Construa

code/main.py simula a ideia central: treinar um pequeno transformer de próximo token em sequências de "tokens de áudio" sintéticos gerados a partir de dois "estilos" distintos (tokens baixos e altos alternados para o estilo A, rampa monotônica para o estilo B). Condicione no estilo e faça a amostragem.

Passo 1: tokens de áudio 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)]

Passo 2: treinar um pequeno preditor de tokens

Um preditor estilo bigrama condicionado ao estilo. O ponto importante é o padrão: tokens de codec → treinamento por entropia cruzada (cross-entropy) → amostragem autorregresiva.

Passo 3: amostragem condicional

Dado o token de estilo e um token inicial, faça a amostragem do próximo token a partir da distribuição prevista. Continue por 20-40 tokens.

Armadilhas

  • A qualidade do codec limita a qualidade de saída. Se o codec não puder representar um som fielmente, nenhuma quantidade de qualidade do gerador ajudará. O DAC é o melhor modelo aberto atualmente.
  • Acúmulo de erro de RVQ. Cada camada de RVQ modela o resíduo da anterior. Erros na camada 1 se propagam. Fazer a amostragem com temperatura 0 nas camadas superiores ajuda.
  • Estrutura musical. 30 segundos de tokens equivalem a mais de 20 mil tokens a 75 Hz. Difícil para transformers. O MusicGen usa janela deslizante + continuação de prompt; o Stable Audio usa clipes mais curtos + crossfading.
  • Artefatos nos limites. O crossfading entre clipes gerados precisa de uma operação cuidadosa de overlap-add.
  • Apetite por dados limpos. Geradores de música precisam de dezenas de milhares de horas de música com termos associados. O processo judicial da RIAA contra Suno / Udio (2024) trouxe isso à tona.
  • Ética na clonagem de voz. Uma amostra de 3 segundos mais um prompt de texto é suficiente para VALL-E / XTTS / ElevenLabs clonarem uma voz. Todo modelo em produção precisa de detecção de abuso + listas de opt-out (exclusão).

Use

Tarefa Stack de 2026
TTS Comercial ElevenLabs, OpenAI TTS ou Azure Neural
Clonagem de voz (consentimento verificado) XTTS v2 (aberto) ou ElevenLabs Pro
Música de fundo, rápida Stable Audio 2.5 API, Suno ou Udio
Música com letras Suno v4 ou Udio v1.5
Efeitos sonoros / Foley AudioCraft 2, ElevenLabs SFX ou Stable Audio Open
Agente de voz em tempo real GPT-4o realtime ou Gemini Live
Pesquisa de música com pesos abertos MusicGen 3.3B, Stable Audio Open 1.0, AudioLDM 2
Dublagem / tradução HeyGen, ElevenLabs Dubbing

Coloque em Produção

Salve outputs/skill-audio-brief.md. A Skill recebe um resumo de áudio (tarefa, duração, estilo, voz, licença) e gera: modelo + hospedagem, formato do prompt (tags de gênero, descritores de estilo, marcadores estruturais), cadeia de codec + gerador + vocoder, protocolo de seed e plano de avaliação (MOS / CLAP score / CER para TTS / teste A/B do usuário).

Exercícios

  1. Fácil. Execute code/main.py e defina o estilo explicitamente. Verifique se as sequências geradas correspondem ao padrão do estilo.
  2. Médio. Adicione decodificação paralela atrasada (delayed parallel decoding): simule 2 fluxos de tokens que devem permanecer com desvio (offset) de 1 passo. Treine um preditor conjunto.
  3. Difícil. Use transformers do HuggingFace para rodar o MusicGen-small localmente. Gere um clipe de 10 segundos com três prompts diferentes; faça um teste A/B para aderência ao estilo.

Termos-Chave

Termo O que as pessoas dizem O que realmente significa
Codec "Compressão neural" Codificador / decodificador para áudio; a saída típica são tokens de 50-75 Hz.
RVQ "VQ residual" Cascata de K quantizadores; cada um modela o resíduo do anterior.
Token "Um símbolo de codec" Índice discreto em um codebook; tipicamente 1024 ou 2048.
Paralelo atrasado (Delayed parallel) "Codebooks com desvio (offset)" Emitir K fluxos de tokens com desvios escalonados para reduzir o comprimento da sequência.
Correspondência de fluxo (Flow matching) "A vitória de 2024 para o áudio" Alternativa de caminho mais reto à difusão; amostragem mais rápida.
Prompt de voz "Amostra de 3 segundos" Embedding de locutor ou prefixo de token que direciona a voz clonada.
Espectrograma de Mel "O visual" Espectrograma perceptual de magnitude logarítmica; usado por muitos sistemas TTS.
Vocoder "Mel para onda" Componente neural que converte espectrogramas de Mel de volta em áudio.

Nota de produção: áudio é um problema de streaming

O áudio é a única modalidade de saída que os usuários esperam receber à medida que é gerado, e não de uma só vez. Em termos de produção, isso significa que o TPOT importa (Tempo por Token de Saída - Time Per Output Token) porque a velocidade de escuta do usuário é a taxa de transferência alvo — não a sua velocidade de leitura. Para áudio de 16kHz tokenizado a ~75 tokens/segundo (Encodec), o servidor deve gerar ≥75 tokens/seg por usuário para manter a reprodução suave.

Duas consequências arquitetônicas:

  • Modelos de áudio de correspondência de fluxo (flow-matching) não transmitem por streaming de forma trivial. O Stable Audio 2.5 e o AudioCraft 2 renderizam um comprimento de clipe fixo em uma única passagem. Para transmitir por streaming, você divide o clipe em blocos (chunks) e sobrepõe os limites — pense em difusão de janela deslizante — adicionando 100-300ms de latência de overhead em comparação com um modelo AR de codec.

Se o produto for "chat de voz ao vivo" ou "continuação de música em tempo real", escolha o caminho do codec AR. Se for "renderizar um clipe de 30 segundos ao enviar", o flow-matching vence em qualidade e latência total.

Leituras Adicionais

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