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:
- 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.
- 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.
- 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
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
- Fácil. Execute
code/main.pye defina o estilo explicitamente. Verifique se as sequências geradas correspondem ao padrão do estilo. - 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.
- 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
- Défossez et al. (2022). Encodec: High Fidelity Neural Audio Compression — o padrão de codec.
- Zeghidour et al. (2021). SoundStream — o primeiro codec de áudio neural amplamente 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 — geração de texto para música em 2025 com flow matching.