Geração de Música
A geração de música é a tarefa de criar sequências musicalmente coerentes — notas, ritmos, timbres e formas de onda de áudio completas — usando modelos computacionais. Diferentemente da síntese de áudio geral, a geração de música deve satisfazer estrutura de longo alcance (motivos, repetição, forma), regras harmônicas (tonalidades, acordes) e nuances de performance (tempo, dinâmica). Sistemas modernos vão desde composição simbólica (eventos tipo MIDI) até geração de forma de onda ponta a ponta condicionada por prompts de texto, áudio de referência ou restrições musicais.
Este artigo foca em três pilares:
- Geração de música e áudio (o que gerar, como representar e quais famílias de modelos dominam hoje)
- Controlabilidade (como usuários direcionam a saída: prompts, acordes, estrutura, instrumentação, edição)
- Avaliação (como medir qualidade musical, fidelidade ao controle e diversidade — apesar da ausência de uma única resposta “correta”)
A geração de música se situa dentro de Fala e Áudio ao lado de TTS e Modelos de Fala para Fala, mas difere porque a correção raramente é objetiva: múltiplas saídas podem ser igualmente válidas, e “qualidade” é profundamente perceptiva e contextual.
O que “geração de música” significa na prática
Cenários comuns incluem:
- Geração incondicional: amostrar uma nova peça a partir de uma distribuição aprendida (por exemplo, “compor música para piano”).
- Geração condicional: criar música que satisfaça restrições:
- Texto-para-música (“uma batida lo-fi suave com acordes jazzísticos”)
- Condicionada por acordes (“siga esta progressão de acordes a 90 BPM”)
- Harmonização de melodia (“harmonize esta melodia no estilo de bossa nova”)
- Transferência de estilo (“renderizar uma peça ‘como se fosse executada por um quarteto de cordas’”)
- Continuação / preenchimento (infilling): estender um clipe ou preencher compassos ausentes (útil para edição).
- Acompanhamento: gerar trilhas de acompanhamento dado vocal principal ou uma melodia.
- Stems e arranjo: gerar faixas separadas de instrumentos ou orquestrar a partir de um esboço.
Duas saídas são comuns:
- Música simbólica (notas/eventos): fácil de editar e restringir, mas exige renderização para áudio.
- Áudio (forma de onda): timbre e produção realistas, mas mais difícil de controlar/editar com precisão.
Representações: a escolha que molda tudo
Representações simbólicas (notas e eventos)
A música simbólica captura mais o que é tocado do que como soa.
Formatos típicos:
- Eventos de nota tipo MIDI: (altura, início, duração, velocidade, instrumento)
- Piano roll: uma grade tempo × altura, às vezes com velocidade
- Formatos de partitura: MusicXML, ABC (mais expressivos, porém mais complexos)
A maioria dos geradores simbólicos modernos usa uma tokenização baseada em eventos (event-based tokenization), por exemplo:
NOTE_ON(pitch),NOTE_OFF(pitch)TIME_SHIFT(Δt)VELOCITY(v)PROGRAM_CHANGE(inst)para instrumentos
Prós
- Controle preciso sobre harmonia, ritmo e estrutura
- Eficiência de dados e avaliação mais fácil (é possível interpretar as notas)
- Edição fácil em DAWs e softwares de notação
Contras
- Não captura timbre/produção
- Expressividade depende da codificação (microtempo, pedal, articulação)
Representações de áudio (ondas sonoras e recursos tempo–frequência)
Áudio bruto é tipicamente formas de onda PCM de 16–48 kHz. Como modelar amostras brutas diretamente é caro, muitos sistemas usam representações intermediárias:
- Espectrogramas (por exemplo, mel-espectrograma): comuns em vocoders neurais mais antigos e pipelines de difusão
- Tokens de áudio discretos (discrete audio tokens) via codecs neurais (neural codecs) (por exemplo, no estilo SoundStream/EnCodec):
- Um codificador comprime a forma de onda em códigos discretos
- Um gerador modela sequências de códigos
- Um decodificador reconstrói o áudio
Essa abordagem de “áudio tokenizado” transforma a geração de áudio em um problema de modelagem de sequência semelhante ao texto, permitindo métodos no estilo Arquitetura Transformer enquanto preserva o realismo do áudio.
Prós
- Gera timbre, mixagem e nuance de performance realistas
- Viabiliza texto-para-música ponta a ponta e continuação de áudio
Contras
- Mais difícil impor notas/acordes exatos
- Coerência e estrutura de longo prazo continuam desafiadoras
- Avaliação é mais difícil e subjetiva
Pipelines híbridos (planejamento simbólico + renderização de áudio)
Uma abordagem prática é a geração em duas etapas (two-stage generation):
- Planejar em forma simbólica (acordes, melodia, estrutura, instrumentação)
- Renderizar para áudio com um sintetizador, sampler ou renderizador neural
Isso melhora a controlabilidade e a estrutura musical, ao mesmo tempo em que produz áudio de alta qualidade.
Principais famílias de modelos para geração de música
A geração de música se apoia em modelagem generativa mais ampla — especialmente modelos de sequência e difusão.
Modelos autorregressivos de sequência (RNNs e Transformers)
Modelos autorregressivos aprendem:
[ p(x) = \prod_{t=1}^{T} p(x_t \mid x_{<t}) ]
Eles geram um token por vez, condicionando no histórico. Trabalhos iniciais usaram RNN/LSTM; hoje, Transformers dominam por escalabilidade e modelagem de contexto longo.
Onde se destacam
- Música simbólica (tokens de evento)
- Códigos de áudio tokenizado (tokens de codec)
Desafios
- Estrutura musical de longo alcance (minutos de música) pode exceder janelas de contexto
- Acúmulo de erro: um pequeno erro pode se propagar
- Escolhas de amostragem (temperatura/top-p) afetam fortemente a qualidade
Controles práticos de amostragem
- Temperatura: maior = mais surpreendente, menor = mais conservador
- Top-k / top-p (núcleo): limita a amostragem a tokens prováveis
Autoencoders Variacionais (VAEs)
Autoencoders variacionais (VAEs) aprendem um espaço latente contínuo (z) no qual é possível interpolar entre ideias musicais. Eles otimizam reconstrução mais um termo de regularização (divergência KL).
- Úteis para interpolação de estilo, geração de variações e edição latente controlável
- Comuns em música simbólica e texturas curtas de áudio
Veja: Autoencoders Variacionais.
GANs (menos dominantes hoje)
GANs foram aplicadas a espectrogramas e grades simbólicas, mas a instabilidade de treinamento e dificuldades de avaliação as tornaram menos centrais para a geração de música moderna em comparação com difusão e Transformers.
Veja: Redes Adversariais Generativas.
Modelos de difusão (um grande motor dos ganhos recentes de qualidade)
Modelos de difusão aprendem a remover ruído de dados a partir de ruído (ou operam em espaços latentes). Para áudio/música, eles frequentemente rodam sobre:
- Espectrogramas (depois invertidos para forma de onda)
- Latentes/tokens de codec (variantes de difusão latente)
- Formas de onda (menos comum devido ao custo)
A difusão é particularmente forte para:
- Textura de áudio de alta fidelidade
- Inpainting/preenchimento (infilling) (editar um segmento mantendo o contexto)
- Treinamento estável e boa qualidade perceptual
Veja: Modelos de Difusão.
Representações áudio–texto auto-supervisionadas e contrastivas
Sistemas de texto-para-música tipicamente dependem de espaços de embedding compartilhados aprendidos via objetivos contrastivos (alinhando áudio e texto). Essas representações também apoiam avaliação (por exemplo, “este áudio corresponde ao prompt?”).
Veja: Aprendizado Auto-Supervisionado e Aprendizado Contrastivo.
Dados de treinamento e objetivos
Fontes de dados (e realidades de licenciamento)
Dados musicais vêm em dois tipos amplos:
- Conjuntos de dados simbólicos: MAESTRO (performances alinhadas), Lakh MIDI (grande, mas ruidoso), corpora proprietários de MIDI
- Conjuntos de dados de áudio: conjuntos curados com legendas (por exemplo, do tipo MusicCaps), bibliotecas de música de produção, áudio da web (frequentemente legalmente complexo)
Na prática, licenciamento de dados é uma das maiores restrições na geração de música comercial, afetando o que pode ser treinado, distribuído e implantado com segurança.
Objetivos comuns de treinamento
- Entropia cruzada autorregressiva na predição do próximo token (tokens simbólicos ou tokens de codec)
- Perda de denoising de difusão (predizer ruído ou sinal limpo)
- Perdas perceptuais/de áudio para reconstrução (STFT multi-resolução, feature matching)
- Perdas de alinhamento texto–áudio para condicionamento (contrastivas)
Controlabilidade: direcionando saídas musicais
Controlabilidade é a diferença entre “gera algo” e “gera o que eu quero”. Em música, o controle frequentemente abrange múltiplas escalas de tempo:
- Micro: notas, temporização, articulação
- Meso: compassos, progressões de acordes, grooves
- Macro: forma (verso/refrão), desenvolvimento, clímax
Prompting (texto e tags)
Prompts de texto-para-música tipicamente codificam:
- Gênero/estilo: “ambient”, “drum and bass”, “barroco”
- Instrumentação: “piano solo”, “quarteto de cordas”
- Humor: “sombrio”, “animador”
- Produção: “lo-fi”, “fita analógica”, “mix seca”
- Andamento/métrica: “120 BPM”, “3/4”
Muitos sistemas também suportam tags estruturadas (structured tags) (BPM/tonalidade explícitos) que são mais confiáveis do que texto livre.
Geradores baseados em difusão frequentemente usam orientação sem classificador (classifier-free guidance) para balancear aderência ao prompt vs. diversidade:
- Orientação mais alta → mais alinhado ao prompt, mas às vezes menos natural / mais repetitivo
- Orientação mais baixa → mais variado, porém menos alinhado
Condicionamento por restrições musicais (acordes, melodia, ritmo)
Modelos simbólicos são especialmente adequados para condicionamento por restrições:
- Fornecer uma sequência de acordes como tokens alinhados ao tempo (por exemplo, um acorde por compasso)
- Condicionar em uma trilha de melodia principal
- Fornecer um padrão de bateria ou template de groove
Exemplo: geração condicionada por acordes
- Entrada:
C:maj | A:min | D:min | G:maj - Saída: um arranjo multivozes que respeita esses acordes
Para modelos de áudio, as restrições frequentemente são aplicadas indiretamente:
- Gerar plano simbólico → renderizar para áudio
- Ou codificar melodia/acordes em embeddings usados pelo gerador
Estrutura e planejamento de longo alcance
Uma dificuldade central é garantir forma global: repetição com variação, desenvolvimento temático e transições.
Estratégias comuns:
- Modelos hierárquicos: gerar um plano de alto nível (seções, acordes) e depois preencher detalhes
- Geração em blocos com sobreposição: gerar segmentos e costurar com crossfades ou janelas de contexto
- Geração aumentada por recuperação (retrieval-augmented generation): recuperar exemplos estruturalmente similares e condicionar neles (útil para forma)
Edição: continuação, infilling e “Photoshop musical”
Edição costuma ser mais valiosa do que composição totalmente automática.
- Continuação: estender um loop de 8 compassos para uma faixa completa
- Infilling: substituir uma região mantendo o contexto anterior/posterior
- Reescrita de estilo: manter melodia, mudar instrumentação/gênero
- Regeneração com restrições: “mantenha a bateria, mude a linha de baixo”
Modelos de difusão são naturalmente adequados para inpainting porque você pode fixar partes do sinal e remover ruído apenas nas regiões mascaradas.
Exemplo prático: tokenização simbólica e amostragem com restrições
Abaixo está uma ilustração mínima de como a tokenização simbólica baseada em eventos pode funcionar. Sistemas reais adicionam instrumentos, pedais, microtempo e estrutura multifaixa.
# Simplified example: MIDI-like event tokenization (illustrative)
from dataclasses import dataclass
@dataclass(frozen=True)
class Event:
type: str # "TIME_SHIFT", "NOTE_ON", "NOTE_OFF", "VELOCITY"
value: int # e.g., pitch or ticks or velocity bucket
def tokenize_notes(notes, ticks_per_step=30):
"""
notes: list of (start_tick, end_tick, pitch, velocity)
returns: list[Event]
"""
events = []
time = 0
# sort by onset
for start, end, pitch, vel in sorted(notes, key=lambda x: x[0]):
# advance time
dt = start - time
while dt > 0:
step = min(dt, ticks_per_step)
events.append(Event("TIME_SHIFT", step))
dt -= step
time += step
events.append(Event("VELOCITY", vel // 8)) # bucket velocity
events.append(Event("NOTE_ON", pitch))
# naive: emit NOTE_OFF immediately after duration (better: separate sorting)
duration = end - start
while duration > 0:
step = min(duration, ticks_per_step)
events.append(Event("TIME_SHIFT", step))
duration -= step
time += step
events.append(Event("NOTE_OFF", pitch))
return events
Restringindo a geração (conceitualmente):
- Durante a amostragem, restringir tokens
NOTE_ONa alturas compatíveis com o acorde atual (restrição suave) ou proibir notas fora da escala (restrição rígida). - Isso pode ser feito mascarando logits antes da amostragem.
def apply_scale_mask(logits, allowed_token_ids):
masked = logits.copy()
masked[:] = -1e9
masked[allowed_token_ids] = logits[allowed_token_ids]
return masked
Restrições rígidas podem melhorar a correção harmônica, mas podem reduzir a expressividade (por exemplo, notas cromáticas de passagem). Muitos sistemas preferem restrições suaves (penalizar em vez de proibir).
Avaliação: como julgamos música gerada?
Avaliação é difícil porque:
- Raramente há uma única saída de referência
- “Bom” depende do gênero, do ouvinte e do caso de uso
- Algumas falhas são musicalmente sutis (por exemplo, deriva harmônica, falta de fraseado)
Uma estratégia de avaliação robusta tipicamente mistura métricas objetivas, verificações de aderência a restrições e testes de escuta humana.
Métricas objetivas para qualidade de áudio (use com cautela)
Métricas comuns incluem:
- Distância de Fréchet em Áudio (FAD) (Fréchet Audio Distance): compara distribuições de embeddings de um modelo de áudio pré-treinado entre áudio real e gerado. Menor é melhor.
- Distâncias espectrais (por exemplo, log-mel, STFT): capturam similaridade tímbrica, mas não estrutura musical.
- CLAP/escores de similaridade áudio-texto: avaliam alinhamento ao prompt usando modelos de embedding áudio–texto (bom para “corresponde à legenda?”, não “é boa música?”).
Armadilhas:
- Essas métricas podem recompensar saídas “com som médio” e penalizar novidade.
- Elas podem não detectar problemas de estrutura de longo alcance.
Métricas para música simbólica
Saídas simbólicas permitem medições musicoteóricas:
- Distância do histograma de classe de altura (similaridade tonal)
- Consistência de tonalidade e razão de notas do acorde
- Complexidade rítmica e métricas de sincopação
- Repetição e estrutura (recorrência de motivos, estatísticas de n-gram)
- Perplexidade / log-verossimilhança negativa sob um modelo de referência (principalmente para comparação de modelos, não “musicalidade”)
No entanto, otimizar apenas por isso pode levar a “jogo de métrica” (música que satisfaz estatísticas, mas soa sem graça).
Métricas de controlabilidade e aderência a restrições
Se seu sistema promete controle, você deve medi-lo diretamente:
- Acurácia de andamento: BPM estimado vs solicitado
- Acurácia de acordes: porcentagem de batidas em que as notas correspondem aos tons do acorde pretendido (permitindo notas de passagem)
- Acurácia de instrumentação: concordância de um classificador de instrumentos com os instrumentos solicitados
- Aderência ao prompt: similaridade de embedding áudio–texto ou rotulagem humana
- Fidelidade de edição (para inpainting): quão bem regiões não alteradas permanecem inalteradas
Avaliação humana: ainda essencial
Aproveitando ideias de MOS (mean opinion score) e ranking de síntese de fala:
- Testes de preferência pareada: ouvintes escolhem A vs B (frequentemente mais confiável do que pontuação absoluta)
- Avaliações estilo MOS: notas 1–5 para “qualidade geral”, “musicalidade”, “correspondência ao prompt”
- Avaliações de especialistas: músicos avaliam harmonia, forma e realismo de performance
- Avaliação contextual: testar no fluxo de trabalho alvo (loop de jogo, música de fundo, ferramenta para criadores)
Boa prática:
- Incluir tanto especialistas quanto não especialistas
- Aleatorizar ordem e normalizar loudness do áudio
- Separar “qualidade” de “preferência” e de “correspondência ao prompt”
Aplicações práticas
Ferramentas para criadores e co-composição
- Gerar rascunhos, variações ou harmonizações
- Explorar estilos rapidamente (“tente isso como synthwave”)
- Produzir stems (bateria/baixo/pads) para edição
Música adaptativa e interativa (jogos, VR)
- Geração em tempo real condicionada ao estado do jogo (nível de tensão, localização)
- Continuação de loops e transições contínuas
- Exige baixa latência e estrutura estável (frequentemente híbrido simbólico+áudio)
Produção de mídia e prototipagem
- Trilhas temporárias (temp tracks) para filme/anúncios
- Exploração de “parecido com” (levantando questões legais/éticas)
- Música de fundo para conteúdo de formato curto
Educação e prática
- Gerar acompanhamento em uma tonalidade/andamento escolhido
- Estudos de estilo (“escrever uma harmonização coral à la Bach”)
- Material de treino auditivo (cadências, progressões de acordes)
Aumento de dados (limitado, mas útil)
- Aumentar dados de treinamento para tarefas de Classificação de Áudio (por exemplo, reconhecimento de instrumentos)
- Deve evitar vazamento e mudança de distribuição (artefatos sintéticos podem prejudicar)
Limitações e desafios em aberto
- Coerência de longo alcance: sustentar estrutura narrativa por minutos
- Controle de alta granularidade: impor acordes/melodia de forma confiável em saídas de áudio sem artefatos
- Originalidade vs memorização: evitar regurgitação de dados de treino mantendo precisão estilística
- Lacunas de avaliação: não há uma métrica única que correlacione bem com “boa música”
- Viés e representação: sobre-representação de certos gêneros e estilos de produção nos dados de treino
- Direitos autorais e proveniência: determinar o que é permitido treinar e como atribuir ou compensar criadores
Considerações de implantação
- Latência e streaming: casos de uso interativos preferem geração em streaming; decodificação autorregressiva pode ser lenta, difusão pode ser pesada, mas paralelizável em algumas variantes.
- Computação e memória: modelos de áudio são grandes; quantização e destilação ajudam.
- Pós-processamento: normalização de loudness, limiting, reverb ou mixagem de stems pode ser necessária para áudio pronto para produção.
- Segurança: mitigar uso indevido (por exemplo, gerar “sound-alikes” enganosos) e oferecer transparência sobre origem sintética.
Resumo
A geração de música combina modelagem de sequência, síntese de áudio e controle centrado no humano. O campo passou de composição simbólica com RNNs para áudio de alta fidelidade condicionado por texto via Transformers, codecs neurais de áudio e difusão. Os sistemas mais úteis enfatizam controlabilidade (prompting, restrições de acordes/melodia, ferramentas de edição) e dependem de avaliação por múltiplos métodos (métricas objetivas de áudio + checagens de restrição + escuta humana).
Para leitores vindos de tópicos adjacentes, a geração de música compartilha ferramentas de modelagem com síntese de fala, mas difere fortemente em objetivos e avaliação; veja TTS para medidas de qualidade de fala e Modelos de Fala para Fala para trade-offs de geração direta áudio-para-áudio.