Classificação de Áudio

O que é Classificação de Áudio?

Classificação de áudio é a família de tarefas de aprendizado de máquina (machine learning) em que um sistema prevê rótulos semânticos a partir de um sinal de áudio. Dependendo da aplicação, os rótulos podem descrever:

  • Eventos: latido de cachorro, vidro quebrando, tiro, sirene (frequentemente chamado de detecção/marcação de eventos sonoros)
  • Cenas acústicas: rua, escritório, estação de metrô
  • Propriedades musicais: gênero, humor, instrumento, classe de andamento, classe de tonalidade, presença vocal
  • Tags gerais de áudio: fala, música, ruído, aplausos, risadas (comum em moderação de conteúdo e indexação)

A classificação de áudio se insere no entendimento de Fala e Áudio: ela se sobrepõe, mas é distinta de ASR (fala para texto), Diarização de Locutor (quem falou quando) e tarefas de geração como TTS e Geração de Música. A classificação de áudio geralmente foca em significado não linguístico (ou categorias amplas como “presença de fala”), embora possa incluir pistas paralinguísticas como emoção ou estilo de fala.

Formulações comuns de tarefas

  1. Classificação de rótulo único (multiclasse)
    • Exatamente um rótulo por clipe (por exemplo, ESC-50: “sirene” vs “chuva” vs “cachorro”).
  2. Marcação multilabel
    • Vários rótulos podem estar ativos no mesmo clipe (por exemplo, “fala” + “música” + “aplausos”).
    • Comum para áudio do mundo real (estilo AudioSet).
  3. Detecção de Eventos Sonoros (SED) (Sound Event Detection)
    • Prediz quais eventos ocorrem e quando eles ocorrem (limites temporais).
    • Frequentemente treinada com rótulos fracos (no nível do clipe) e avaliada com métricas baseadas em eventos.

Na prática, elas diferem principalmente em rótulos, funções de perda e avaliação — o kit de ferramentas central de representação e modelagem se sobrepõe fortemente.

Representações de áudio: da forma de onda a atributos tempo–frequência

Áudio bruto é uma forma de onda 1D amostrada a uma taxa como 16 kHz, 22,05 kHz ou 44,1 kHz. O principal desafio é que eventos semânticos frequentemente são melhor descritos por estrutura tempo–frequência (harmônicos, ataques, forma espectral), e não por valores brutos de amostras.

Aprendizado no nível da forma de onda

Modelos profundos (deep models) modernos podem aprender diretamente da forma de onda (por exemplo, CNNs 1D ou front-ends baseados em transformadores). Vantagens:

  • Menos etapas de pré-processamento projetadas manualmente
  • Pode aprender filtros específicos para a tarefa

Trade-offs:

  • Muitas vezes exige mais dados e computação
  • É mais difícil de interpretar e ajustar

Modelos de forma de onda são comuns em pré-treinamento autossupervisionado (self-supervised pretraining) (veja Aprendizado Autossupervisionado).

Espectrogramas: a representação “coringa”

A maioria dos sistemas práticos usa uma representação tempo–frequência derivada da Transformada de Fourier de Curto Tempo (STFT) (Short-Time Fourier Transform). Conceitualmente:

  • Dividir a forma de onda em janelas sobrepostas (por exemplo, janelas de 25 ms com passo de 10 ms)
  • Calcular uma transformada de Fourier por janela
  • Empilhar os resultados em uma matriz 2D: tempo × frequência

Variantes comuns:

  • Espectrograma de magnitude: |STFT|
  • Espectrograma de potência: |STFT|²
  • Espectrograma logarítmico: log(|STFT| + ε) (frequentemente melhora o aprendizado)

Principais parâmetros de projeto:

  • Comprimento da janela: janelas mais longas melhoram a resolução em frequência, mas borram ataques no tempo
  • Comprimento do passo (hop): passos menores dão resolução temporal mais fina, mas aumentam o custo computacional
  • Tamanho da FFT: afeta o espaçamento dos bins de frequência

Espectrogramas mel e MFCCs

A percepção humana não é linear em frequência. A escala mel (mel scale) comprime altas frequências e fornece uma representação mais alinhada com a percepção.

  • Espectrograma mel: aplica um banco de filtros mel a um espectrograma; frequentemente usado com escala logarítmica.
  • MFCCs (Coeficientes Cepstrais em Frequência Mel) (Mel-Frequency Cepstral Coefficients): aplica a DCT às energias log-mel; historicamente dominante em fala e na classificação de áudio inicial.

Hoje, espectrogramas log-mel são a entrada padrão para modelos CNN/transformadores para marcação e classificação de eventos, enquanto MFCCs ainda são úteis para baselines de aprendizado de máquina clássico e modelos de baixo consumo de recursos.

Normalização

A normalização afeta fortemente desempenho e estabilidade:

  • Normalização de média/variância por exemplo (comum em classificação de clipes)
  • Normalização no nível do conjunto de dados (mais consistente entre batches)
  • PCEN (Normalização de Energia por Canal) (Per-Channel Energy Normalization) pode melhorar robustez a mudanças de volume, especialmente para detecção de eventos

Abordagens de modelagem

Modelos de classificação de áudio seguem os mesmos princípios de aprendizado que Redes Neurais treinadas com Descida do Gradiente e Retropropagação, mas exploram estrutura em padrões tempo–frequência.

Baselines de aprendizado de máquina clássico (ainda úteis)

Pipeline:

  1. Calcular MFCCs ou atributos log-mel
  2. Agregar estatísticas ao longo do tempo (média, desvio padrão, percentis)
  3. Treinar um classificador:
    • Regressão logística
    • SVM
    • Floresta aleatória / gradient boosting

Esses baselines são rápidos, interpretáveis e fortes em conjuntos de dados pequenos — muitas vezes vale a pena implementá-los para estabelecer um piso.

Redes convolucionais em espectrogramas

Trate um espectrograma como uma imagem (tempo × frequência) e aplique convoluções 2D. CNNs aprendem padrões locais como:

  • Pilhas harmônicas
  • Explosões de banda larga (por exemplo, palmas)
  • Ataques e transientes

Arquiteturas comuns:

  • Estilo VGG
  • Estilo ResNet
  • Estilo EfficientNet

Este é um dos setups mais usados para marcação de áudio e classificação de cenas. Veja também: Redes Neurais Convolucionais.

Modelos temporais: CRNN e pooling por atenção

Para tarefas em que o quando importa (ou em que os clipes são longos), frequentemente você deseja modelagem temporal:

  • CRNN (Rede Neural Recorrente Convolucional) (CRNN): front-end CNN + RNN (GRU/LSTM) ao longo dos frames no tempo
  • Pooling por atenção (attention pooling): aprende pesos ao longo do tempo para agregar embeddings de frames em um embedding do clipe

Isso é particularmente comum em detecção de eventos sonoros com supervisão fraca: o modelo aprende a destacar frames que provavelmente contêm os eventos rotulados.

Transformadores para áudio

Transformadores podem modelar dependências de longo alcance e hoje são comuns em marcação de áudio:

  • Transformador de Espectrograma de Áudio (AST) (Audio Spectrogram Transformer): divide um espectrograma log-mel em patches e executa um transformador no estilo ViT
  • Híbridos no estilo Conformer (convolução + transformador) também são usados em fala, embora a classificação frequentemente use codificadores no estilo AST

Transformadores tendem a se destacar quando você tem dados suficientes ou um bom pré-treinamento. Relacionado: Arquitetura Transformer.

Codificadores de áudio autossupervisionados e pré-treinados

Uma grande mudança prática é a disponibilidade de codificadores pré-treinados:

  • wav2vec 2.0 / HuBERT / WavLM: codificadores de aprendizado autossupervisionado baseados em forma de onda
  • AST pré-treinado no AudioSet: atributos fortes de uso geral para marcação

O fine-tuning de modelos pré-treinados frequentemente supera o treinamento do zero, especialmente quando os dados rotulados são limitados.

Objetivos de treinamento e armadilhas práticas

Funções de perda

  • Multiclasse: softmax + entropia cruzada
  • Marcação multilabel: sigmoid por classe + entropia cruzada binária (BCE)
  • Tratamento de desbalanceamento de classes:
    • BCE ponderada
    • Focal loss (foca em positivos difíceis)
    • Amostragem balanceada

Para marcação multilabel, a saída é um vetor de probabilidades. A implantação tipicamente exige escolher limiares por classe (0,5 global raramente é ideal).

Rótulos fracos e aprendizado por múltiplas instâncias (MIL) (multi-instance learning)

Em muitos conjuntos de dados reais (por exemplo, áudio da web), os rótulos são no nível do clipe: “latido de cachorro presente em algum lugar”, sem timestamps. Para detecção de eventos, uma abordagem comum é MIL:

  • O modelo prevê probabilidades no nível de frame
  • Agrega ao longo do tempo para corresponder aos rótulos no nível do clipe (pooling por máximo/atenção)
  • Na inferência, saídas no nível de frame podem ser limiarizadas para obter segmentos temporais

A supervisão fraca é poderosa, mas pode aprender atalhos (por exemplo, correlações com o fundo), então uma avaliação cuidadosa é importante.

Aumento de dados para robustez

A classificação de áudio se beneficia muito de aumento de dados:

  • Deslocamento no tempo: offset aleatório
  • Alongamento temporal / mudança de pitch: especialmente para tarefas musicais
  • Ruído aditivo: ruído de fundo com SNR aleatório
  • Mixup: mistura dois clipes e mistura rótulos (funciona bem para marcação)
  • SpecAugment: mascaramento em tempo/frequência em espectrogramas
  • Respostas ao impulso de sala (RIRs) (Room impulse responses): simula reverberação

Aumentos ajudam os modelos a generalizar entre microfones, ambientes e condições de gravação.

Avaliação: como medir desempenho

Métricas dependem do tipo de tarefa e da estrutura dos rótulos:

Classificação no nível do clipe (rótulo único)

  • Acurácia / acurácia top-k
  • Análise de matriz de confusão (importante para classes semelhantes)

Marcação multilabel

  • mAP (precisão média) (mean Average Precision): independente de limiar e amplamente usada
  • ROC-AUC / PR-AUC (PR-AUC é mais informativa com desbalanceamento)
  • F1 micro/macro (exige limiares)

Detecção de eventos sonoros (com tempo)

  • F1 baseado em eventos com tolerâncias (collars) de início/fim
  • Métricas baseadas em segmentos (bins temporais fixos)
  • Cenários polifônicos exigem pontuação cuidadosa (múltiplos eventos sobrepostos)

Sempre avalie em divisões realistas (por exemplo, por dispositivo de gravação ou local) quando houver expectativa de mudança de domínio.

Exemplos práticos

Exemplo 1: Um baseline simples com MFCCs + regressão logística

Este baseline é rápido e muitas vezes surpreendentemente forte para conjuntos de dados pequenos.

import numpy as np
import librosa
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

def mfcc_stats(path, sr=16000, n_mfcc=20):
    y, _ = librosa.load(path, sr=sr, mono=True)
    mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=n_mfcc)  # (n_mfcc, T)
    # Pool over time: mean and std
    feats = np.concatenate([mfcc.mean(axis=1), mfcc.std(axis=1)], axis=0)
    return feats

# X: (N, 2*n_mfcc) features, y: labels
# X = np.stack([mfcc_stats(p) for p in paths])
# clf = make_pipeline(StandardScaler(), LogisticRegression(max_iter=2000))
# clf.fit(X, y)

Quando isso falha, o problema frequentemente não é o classificador, mas a representação e a agregação: eventos podem ser breves e “sumir” na média. É aí que modelos CNN/atenção ajudam.

Exemplo 2: Fine-tuning de um AST pré-treinado para marcação de áudio

Usar modelos pré-treinados (por exemplo, AST pré-treinado no AudioSet) é um padrão forte. Em muitos setups você:

  1. Converte o áudio para atributos log-mel esperados pelo modelo
  2. Faz fine-tuning da cabeça do classificador (e opcionalmente do codificador inteiro)

Esqueleto ilustrativo em estilo PyTorch:

import torch
import torch.nn as nn

class Tagger(nn.Module):
    def __init__(self, encoder, num_labels):
        super().__init__()
        self.encoder = encoder          # e.g., AST backbone
        self.head = nn.Linear(encoder.hidden_dim, num_labels)

    def forward(self, x):
        # x: (B, T, F) log-mel or model-specific input
        h = self.encoder(x)             # (B, D)
        logits = self.head(h)           # (B, C)
        return logits

# Multi-label loss
criterion = nn.BCEWithLogitsLoss()

# logits = model(batch_x)
# loss = criterion(logits, batch_y.float())
# loss.backward(); optimizer.step()

Na prática, as “partes difíceis” são a formatação de entrada (taxa de amostragem, parâmetros mel), o batching de clipes com comprimento variável (padding/masking) e a calibração de limiares por classe.

Aplicações no mundo real

Detecção de eventos acústicos e monitoramento de segurança

  • Vidro quebrando, alarmes de fumaça, tiros, detecção de choro de bebê
  • Monitoramento industrial: falhas de máquinas, desgaste de rolamentos, vazamentos

Principais restrições: poucos falsos positivos, robustez a ruído, frequentemente inferência no dispositivo.

Entendimento e indexação de conteúdo

  • Auto-tagging para busca (“aplausos”, “risadas”, “multidão”)
  • Segmentação de podcasts: fala vs música vs anúncios
  • Monitoramento de transmissão e conformidade

Frequentemente requer modelos multilabel e pipelines de inferência escaláveis.

Recuperação de informação musical (MIR) (music information retrieval)

  • Classificação de gênero, detecção de instrumentos, humor/valência
  • Estimativa de classe de batida/andamento, classificação de tonalidade
  • Atributos para recomendação de playlists

Tarefas musicais frequentemente precisam de contexto mais longo e podem se beneficiar de aumentos como mudança de pitch/alongamento temporal.

Saúde e bioacústica

  • Classificação de tosse, detecção de chiado (suporte à decisão clínica)
  • Monitoramento de vida selvagem: chamados de espécies, estimativas de biodiversidade

Esses domínios exigem governança cuidadosa de conjuntos de dados, avaliação entre demografias/ambientes e análise interpretável de erros.

Considerações de implantação

Latência e streaming

Muitos produtos precisam de decisões em tempo real ou quase em tempo real:

  • Usar janelas deslizantes (por exemplo, 1–2 s) com sobreposição
  • Manter extração de atributos em streaming (STFT incremental)
  • Suavizar previsões ao longo do tempo para reduzir oscilação (EMA, limiares com histerese)

No dispositivo vs servidor

  • No dispositivo: modelos menores, quantização, menos bins mel, menor taxa de amostragem
  • Servidor: transformadores maiores, modelos em ensemble, pós-processamento mais caro

Treinamento com consciência de quantização e destilação podem reduzir o tamanho mantendo a acurácia.

Mudança de domínio e calibração

Modelos de áudio são sensíveis a:

  • Resposta em frequência do microfone
  • Acústica do ambiente e reverberação
  • Artefatos de compressão
  • Tipos de ruído de fundo

Mitigações:

  • Treinar com aumentos diversos e fontes de dados variadas
  • Usar conjuntos de validação que correspondam às condições de implantação
  • Calibrar limiares por classe e por tipo de dispositivo quando possível

Conjuntos de dados e benchmarks (comumente usados)

  • AudioSet: ontologia multilabel em larga escala (rótulos fracos, áudio da web)
  • ESC-50 / UrbanSound8K: classificação de sons ambientais
  • Desafios DCASE: benchmarks de classificação de cenas acústicas e detecção de eventos sonoros
  • GTZAN (gênero musical): historicamente popular, mas com problemas conhecidos; usar com cautela

A escolha do conjunto de dados molda fortemente o que “bom desempenho” significa — especialmente para marcação multilabel com rótulos ruidosos.

Tendências atuais e direções de pesquisa

  • Codificadores de áudio fundacionais: modelos autossupervisionados pré-treinados e transformadores de espectrograma impulsionando muitas tarefas downstream
  • SED com supervisão fraca: melhor pooling, localização a partir de rótulos de clipe e robustez a ruído de rótulos
  • Aprendizado multimodal: áudio + vídeo (eventos se alinham com pistas visuais) ou áudio + texto (consultas textuais para recuperação)
  • Áudio open-set e few-shot: lidar com classes desconhecidas e aprender novos eventos com poucos exemplos
  • Eficiência de modelos: destilação, pruning e quantização para dispositivos de borda

Resumo

A classificação de áudio transforma som bruto em rótulos semânticos como eventos, cenas e atributos musicais. Sistemas modernos tipicamente usam espectrogramas log-mel (ou atributos de aprendizado autossupervisionado em forma de onda), treinados com CNNs ou transformadores, e são avaliados de forma diferente dependendo se a tarefa é multiclasse, marcação multilabel ou detecção de eventos localizada no tempo. Bom desempenho depende tanto de qualidade dos dados, aumento e calibração quanto da arquitetura — especialmente em cenários reais, ruidosos e multilabel.

Tópicos relacionados que você pode querer ler em seguida incluem ASR (se você se importa com conteúdo de fala), Diarização de Locutor (quem falou quando) e Modelos de Fala-para-Fala (pipelines diretos de entendimento/geração de fala).