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):

  1. Planejar em forma simbólica (acordes, melodia, estrutura, instrumentação)
  2. 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_ON a 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.