Phase 06 - Lesson 09

Geração de Música — MusicGen, Stable Audio, Suno e o Terremoto do Licenciamento

Geração de música em 2026: Suno v5 e Udio v4 dominam o comercial; MusicGen, Stable Audio Open e ACE-Step lideram o código aberto. O problema técnico está, em sua maior parte, resolvido. O problema jurídico (acordo de US$ 500M da Warner Music, acordo da UMG) remodelou o setor em 2025-2026.

Tipo: Build Linguagens: Python Pré-requisitos: Fase 6 · 02 (Espectrogramas), Fase 4 · 10 (Modelos de Difusão) Tempo: ~75 minutos

O Problema

Texto → um clipe de música de 30 segundos a 4 minutos, com letra, vocais e estrutura. Três subproblemas:

  1. Geração instrumental. Texto como "bateria de lo-fi hip-hop com teclas quentes" → áudio. MusicGen, Stable Audio, AudioLDM.
  2. Geração de canção (com vocais + letra). "Música country sobre noites chuvosas no Texas" → canção completa. Suno, Udio, YuE, ACE-Step.
  3. Condicional / controlável. Estender um clipe existente, regerar uma ponte, trocar de gênero, separar stems ou fazer inpainting. O inpainting + separação de stems da Udio é o recurso de 2026 a ser igualado.

O Conceito

Geração de música: LM de tokens vs difusão, o mapa de modelos de 2026

LM de tokens sobre tokens de neural-codec

O MusicGen da Meta (2023, MIT) e muitos derivados: condicionam em embeddings de texto/melodia, predizem autoregressivamente tokens do EnCodec (32 kHz, 4 codebooks), decodificam com o EnCodec. 300M - 3,3B de parâmetros. Baseline forte; tem dificuldades além dos 30 segundos.

O ACE-Step (código aberto, XL de 4B lançado em abril de 2026) estende isso para geração de canção completa condicionada por letra. O equivalente mais próximo do Suno na comunidade aberta.

Difusão sobre mels ou latentes

Stable Audio (2023) e Stable Audio Open (2024): difusão latente sobre áudio comprimido. Excelente em loops, sound design e texturas ambientes. Não muito bom em canções completas estruturadas.

AudioLDM / AudioLDM2: texto-para-áudio via difusão latente no estilo T2I, generalizada para música, efeitos sonoros e fala.

Híbrido (produção) — Suno, Udio, Lyria

Pesos fechados. Provavelmente LM de codec AR + vocoder baseado em difusão com heads especializadas de voz / bateria / melodia. O Suno v5 (2026) é o líder de qualidade com ELO 1293. O Udio v4 adiciona inpainting + separação de stems (downloads separados de baixo, bateria, vocais).

Avaliação

  • FAD (Fréchet Audio Distance). Distância em nível de embedding entre a distribuição de áudio gerado vs real usando features do VGGish ou PANNs. Quanto menor, melhor. MusicGen small: FAD 4,5 no MusicCaps; SOTA ~3,0.
  • Musicalidade (subjetiva). Preferência humana. Suno v5 lidera com ELO 1293.
  • Alinhamento texto-áudio. Score CLAP entre o prompt e a saída.
  • Artefatos de musicalidade. Transições fora do tempo, deriva de frase vocal, perda de estrutura após 30 s.

Mapa de modelos de 2026

Modelo Parâmetros Duração Vocais Licença
MusicGen-large 3,3B 30 s não MIT
Stable Audio Open 1,2B 47 s não Stability não-comercial
ACE-Step XL (abr 2026) 4B > 2 min sim Apache-2.0
YuE 7B > 2 min sim, multilíngue Apache-2.0
Suno v5 (fechado) ? 4 min sim, ELO 1293 comercial
Udio v4 (fechado) ? 4 min sim + stems comercial
Google Lyria 3 (fechado) ? tempo real sim comercial
MiniMax Music 2.5 ? 4 min sim API comercial

O cenário jurídico (2025-2026)

  • Acordo Warner Music vs Suno. US$ 500M. A WMG agora tem supervisão sobre semelhança por IA, direitos musicais e faixas geradas por usuários no Suno. Acordo semelhante da UMG sobre o Udio.
  • EU AI Act + California SB 942: música gerada por IA deve ser declarada.
  • Riffusion / MusicGen sob MIT não têm bagagem de conformidade, mas também não têm vocais comerciais.

Padrões seguros para lançar:

  1. Gerar apenas instrumental (MusicGen, Stable Audio Open, saídas MIT/CC0).
  2. Usar APIs comerciais (Suno, Udio, ElevenLabs Music) com termos por geração.
  3. Treinar em catálogo próprio ou com termos (a maioria das empresas acaba aqui).
  4. Marcar as gerações com watermarks + metadados.

Mãos à Obra

Passo 1: gerar com MusicGen

from audiocraft.models import MusicGen
import torchaudio

model = MusicGen.get_pretrained("facebook/musicgen-small")
model.set_generation_params(duration=10)
wav = model.generate(["upbeat synthwave with driving drums, 128 BPM"])
torchaudio.save("out.wav", wav[0].cpu(), 32000)

Três tamanhos: small (300M, rápido), medium (1,5B), large (3,3B). O small é suficiente para "a ideia funciona?".

Passo 2: condicionamento por melodia

melody, sr = torchaudio.load("humming.wav")
wav = model.generate_with_chroma(
    ["jazz piano cover"],
    melody.squeeze(),
    sr,
)

O MusicGen-melody recebe um chromagrama e preserva a melodia enquanto troca o timbre. Útil para "me dê esta melodia como um quarteto de cordas".

Passo 3: avaliação FAD

from frechet_audio_distance import FrechetAudioDistance
fad = FrechetAudioDistance()

fad.get_fad_score("generated_folder/", "reference_folder/")

Computa a distância de embedding do VGGish. Útil para testes de regressão em nível de gênero; não substitui ouvintes humanos.

Passo 4: adicionando ao fluxo de trabalho de música com LLM

Combine com as ideias das Lições 7-8:

prompt = "Write a 30-second jazz loop. Describe the drums, bass, and piano voicing."
description = llm.complete(prompt)
music = musicgen.generate([description], duration=30)

Use

Objetivo Stack
Sound design instrumental Stable Audio Open
Música para jogos / adaptativa Google Lyria RealTime (fechado)
Canções completas com vocais (comercial) Suno v5 ou Udio v4 com licença explícita
Canções completas com vocais (aberto) ACE-Step XL ou YuE
Jingle curto de anúncio MusicGen condicionado por melodia a partir de uma referência cantarolada
Trilha de fundo para videoclipe MusicGen + Stable Video Diffusion

Armadilhas que ainda surgem em 2026

  • Prompts de lavagem de copyright. "Música no estilo de Taylor Swift" — Suno/Udio comerciais filtram isso agora, modelos abertos não. Adicione sua própria lista de filtros.
  • Repetição / deriva após 30 s. Modelos AR entram em loop. Faça crossfade de várias gerações ou use ACE-Step para coerência estrutural.
  • Deriva de tempo. Os modelos saem do BPM. Use tags de BPM no prompt e pós-filtre com o beat_track do librosa.
  • Inteligibilidade vocal. O Suno é excelente; modelos abertos costumam embolar as palavras. Se a letra importa, use uma API comercial ou faça fine-tune.
  • Saída mono. Modelos abertos geram mono ou estéreo falso. Faça o upgrade com uma reconstrução estéreo adequada (ezst, difusão estéreo da Cartesia).

Entregue

Salve como outputs/skill-music-designer.md. Escolha o modelo, a estratégia de licença, o plano de duração / estrutura e os metadados de declaração para uma implantação de geração de música.

Exercícios

  1. Fácil. Execute code/main.py. Ele produz uma progressão de acordes "generativa" + padrão de bateria como símbolos ASCII — uma caricatura de geração de música. Reproduza com qualquer renderizador MIDI se quiser.
  2. Médio. Instale o audiocraft, gere clipes de 10 segundos em 4 prompts de gênero com o MusicGen-small e meça o FAD contra um conjunto de gênero de referência.
  3. Difícil. Usando o ACE-Step (ou MusicGen-melody), gere três variações da mesma melodia com prompts de timbre diferentes. Calcule a similaridade CLAP com o prompt para verificar o alinhamento.

Termos-Chave

Termo O que as pessoas dizem O que realmente significa
FAD FID de áudio Distância de Fréchet entre distribuições de embedding de áudio real vs gerado.
Chromagrama Melodia como notas Vetor de 12 dimensões por frame; entrada para o condicionamento por melodia.
Stems Faixas de instrumentos Baixo / bateria / vocais / melodia separados como WAV.
Inpainting Regerar uma seção Mascara uma janela de tempo; o modelo regenera apenas ela.
CLAP CLIP texto-áudio Embedding contrastivo de áudio-texto; avalia o alinhamento texto-áudio.
EnCodec Codec de música Codec neural da Meta usado pelo MusicGen; 32 kHz, 4 codebooks.

Leitura Adicional

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