Phase 06 - Lesson 17

Avaliação de áudio — WER, MOS, UTMOS, MMAU, FAD e os leaderboards abertos

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

Você não pode lançar o que não consegue medir. Esta lição nomeia as métricas de 2026 para cada tarefa de áudio: ASR (WER, CER, RTFx), TTS (MOS, UTMOS, SECS, WER por ida-e-volta no ASR), áudio-linguagem (MMAU, LongAudioBench), música (FAD, CLAP) e locutor (EER). Além dos leaderboards onde você compara.

Tipo: Aprender Linguagens: Python Pré-requisitos: Fase 6 · 04, 06, 07, 09, 10; Fase 2 · 09 (Avaliação de Modelos) Tempo: ~60 minutos

O Problema

Toda tarefa de áudio tem múltiplas métricas, cada uma medindo um eixo diferente. Usar a métrica errada é como você lança um modelo que parece ótimo no seu dashboard e péssimo em produção. A lista canônica de 2026:

Tarefa Primária Secundária
ASR WER CER · RTFx · latência do primeiro token
TTS MOS / UTMOS SECS · WER por ida-e-volta no ASR · CER · TTFA
Clonagem de voz SECS (cosseno ECAPA) MOS · CER
Verificação de locutor EER minDCF · FAR / FRR no ponto de operação
Diarização DER JER · confusão de locutores
Classificação de áudio top-1 · mAP F1 macro · recall por classe
Geração de música FAD CLAP · MOS de painel de escuta
Modelo de áudio-linguagem MMAU-Pro LongAudioBench · AudioCaps FENSE
S2S em streaming latência P50/P95 WER · MOS

O Conceito

Matriz de avaliação de áudio — métricas vs tarefas vs leaderboards de 2026

Métricas de ASR

WER (Word Error Rate). (S + D + I) / N. Passe para minúsculas, remova pontuação, normalize números antes de pontuar. Use jiwer ou o whisper_normalizer da OpenAI. < 5% = paridade humana em fala lida.

CER (Character Error Rate). Mesma fórmula, em nível de caractere. Usada para línguas tonais (mandarim, cantonês) onde a segmentação de palavras é ambígua.

RTFx (fator inverso de tempo real). Segundos de áudio processados por segundo de relógio. Maior é melhor. O Parakeet-TDT atinge 3380×. O Whisper-large-v3 fica em ~30×.

Latência do primeiro token. Tempo de relógio desde a entrada de áudio até o primeiro token da transcrição. Crítico para streaming. Deepgram Nova-3: ~150 ms.

Métricas de TTS

MOS (Mean Opinion Score). Nota humana de 1 a 5. Padrão-ouro, mas lento. Colete mais de 20 ouvintes por amostra, mais de 100 amostras por modelo.

UTMOS (2022-2026). Preditor de MOS aprendido. Correlaciona ~0,9 com o MOS humano em benchmarks padrão. F5-TTS: UTMOS 3,95; verdade de referência: 4,08.

SECS (Speaker Encoder Cosine Similarity). Para clonagem de voz. Cosseno do embedding ECAPA entre a referência e a saída clonada. > 0,75 = clone reconhecível.

WER por ida-e-volta no ASR. Rode o Whisper sobre a saída do TTS e compute o WER contra o texto de entrada. Captura regressões de inteligibilidade. SOTA de 2026: < 2% CER.

TTFA (time-to-first-audio). Latência de relógio. Kokoro-82M: ~100 ms; F5-TTS: ~1 s.

Específico de clonagem de voz

SECS + MOS + CER como um trio. Uma clonagem com SECS alto mas MOS baixo significa timbre-certo-mas-não-natural; o oposto significa voz natural mas locutor errado.

Verificação de locutor

EER (Equal Error Rate). O limiar onde a Taxa de Falsa Aceitação iguala a Taxa de Falsa Rejeição. ECAPA no VoxCeleb1-O: 0,87%.

minDCF (custo mínimo de detecção). Custo ponderado em um ponto de operação escolhido (frequentemente FAR=0,01). Mais relevante para produção do que o EER.

Diarização

DER (Diarization Error Rate). (FA + Miss + Confusion) / total_speaker_time. Fala perdida + fala de falso alarme + confusão de locutores, cada uma como uma fração. Reuniões AMI: DER ~10-20% é realista. pyannote 3.1 + Precision-2 comercial: <10% DER em áudio bem gravado.

JER (Jaccard Error Rate). Alternativa ao DER, robusta ao viés de segmentos curtos.

Classificação de áudio

Multirrótulo: mAP (mean Average Precision) sobre todas as classes. AudioSet: 0,548 mAP para o BEATs-iter3.

Multiclasse exclusiva: acurácia top-1, top-5. Speech Commands v2: 99,0% top-1 (Audio-MAE).

Desbalanceada: F1 macro + recall por classe. Reporte por classe — a acurácia agregada esconde quais classes falham.

Geração de música

FAD (Fréchet Audio Distance). Distância entre as distribuições de embeddings VGGish de áudio real vs gerado. MusicGen-small no MusicCaps: 4,5. MusicLM: 4,0. Menor é melhor.

CLAP Score. Pontuação de alinhamento texto-áudio usando embeddings CLAP. > 0,3 = alinhamento razoável.

MOS de painel de escuta. Ainda a palavra final para música de nível de consumo. Suno v5 ELO 1293 na TTS Arena (de preferências humanas pareadas).

Benchmarks de áudio-linguagem

MMAU (Massive Multi-Audio Understanding). 10k pares áudio-QA.

MMAU-Pro. 1800 itens difíceis, quatro categorias: fala / som / música / multi-áudio. Acerto aleatório de 25% em 4 vias. Gemini 2.5 Pro geral ~60%; multi-áudio ~22% em todos os modelos.

LongAudioBench. Clipes de vários minutos com consultas semânticas. Audio Flamingo Next supera o Gemini 2.5 Pro.

AudioCaps / Clotho. Benchmarks de legendagem. Métricas SPICE, CIDEr, FENSE.

Fala-para-fala em streaming

Latência P50 / P95 / P99. Tempo de relógio do fim da fala do usuário até a primeira resposta audível. Moshi: 200 ms; GPT-4o Realtime: 300 ms.

WER / MOS na saída.

Responsividade a barge-in. Tempo da interrupção do usuário até o silenciamento do assistente. Alvo < 150 ms.

Os leaderboards de 2026

Leaderboard Acompanha URL
Open ASR Leaderboard (HF) inglês + multilíngue + forma longa huggingface.co/spaces/hf-audio/open_asr_leaderboard
TTS Arena (HF) TTS em inglês huggingface.co/spaces/TTS-AGI/TTS-Arena
Artificial Analysis Speech TTS + STT, ELO de votos pareados artificialanalysis.ai/speech
MMAU-Pro raciocínio LALM mmaubenchmark.github.io
SpeakerBench / VoxSRC reconhecimento de locutor voxsrc.github.io
Subconjunto de música do MMAU LALM de música (dentro do MMAU)
Benchmark HEAR áudio autossupervisionado hearbenchmark.com

Construa

Passo 1: WER com normalização

from jiwer import wer, Compose, ToLowerCase, RemovePunctuation, Strip

transform = Compose([ToLowerCase(), RemovePunctuation(), Strip()])
score = wer(
    truth="Please turn on the lights.",
    hypothesis="please turn on the light",
    truth_transform=transform,
    hypothesis_transform=transform,
)
# ~0.17

Passo 2: WER de ida-e-volta no TTS

def ttr_wer(tts_model, asr_model, texts):
    errors = []
    for txt in texts:
        audio = tts_model.synthesize(txt)
        recog = asr_model.transcribe(audio)
        errors.append(wer(truth=txt, hypothesis=recog))
    return sum(errors) / len(errors)

Passo 3: SECS para clonagem de voz

from speechbrain.inference.speaker import EncoderClassifier
sv = EncoderClassifier.from_hparams("speechbrain/spkrec-ecapa-voxceleb")

emb_ref = sv.encode_batch(load_wav("reference.wav"))
emb_clone = sv.encode_batch(load_wav("cloned.wav"))
secs = torch.nn.functional.cosine_similarity(emb_ref, emb_clone, dim=-1).item()

Passo 4: FAD para geração de música

from frechet_audio_distance import FrechetAudioDistance
fad = FrechetAudioDistance()
score = fad.get_fad_score("generated_folder/", "reference_folder/")

Passo 5: EER para verificação de locutor (mesmo código da Lição 6)

def eer(same_scores, diff_scores):
    thresholds = sorted(set(same_scores + diff_scores))
    best = (1.0, 0.0)
    for t in thresholds:
        far = sum(1 for s in diff_scores if s >= t) / len(diff_scores)
        frr = sum(1 for s in same_scores if s < t) / len(same_scores)
        if abs(far - frr) < best[0]:
            best = (abs(far - frr), (far + frr) / 2)
    return best[1]

Use

Acople cada deploy a um harness de avaliação fixo que roda a cada atualização de modelo. Três regras cardeais:

  1. Normalize antes de pontuar. Minúsculas, remoção de pontuação, expansão de números. Reporte a regra de normalização.
  2. Reporte distribuições, não médias. P50/P95/P99 para latência. Recall por classe para classificação. Por categoria para o MMAU.
  3. Rode um benchmark público canônico. Mesmo que seus dados de produção difiram, reportar no Open ASR / TTS Arena / MMAU permite que revisores comparem maçãs com maçãs.

Armadilhas

  • Extrapolação do UTMOS. Treinado em fala limpa estilo VCTK; pontua mal áudio ruidoso / clonado / emocional.
  • Viés do painel de MOS. 20 trabalhadores do Amazon Mechanical Turk ≠ 20 usuários-alvo. Pague por um painel de domínio se o que está em jogo for alto.
  • FAD depende do conjunto de referência. Compare contra a mesma distribuição de referência entre os modelos.
  • WER agregado. Um WER geral de 5% pode esconder 30% de WER em fala com sotaque. Reporte por fatia demográfica.
  • Saturação de benchmarks públicos. A maioria dos modelos de fronteira está perto do teto em benchmarks padrão. Construa um conjunto interno de teste reservado que reflita seu tráfego.

Lance

Salve como outputs/skill-audio-evaluator.md. Escolha métricas, benchmarks e formato de relatório para qualquer lançamento de modelo de áudio.

Exercícios

  1. Fácil. Rode code/main.py. Compute WER / CER / EER / SECS / FAD-ish / MMAU-ish sobre entradas de brinquedo.
  2. Médio. Construa um harness de WER de ida-e-volta no TTS. Rode a saída do seu Kokoro ou F5-TTS pelo Whisper. Compute o WER sobre 50 prompts. Sinalize prompts com WER > 10%.
  3. Difícil. Pontue a sua escolha de LALM da Lição 10 nos subconjuntos de fala + multi-áudio do MMAU-Pro (50 itens cada). Reporte a acurácia por categoria e compare com o número publicado.

Termos-Chave

Termo O que as pessoas dizem O que realmente significa
WER Pontuação de ASR (S+D+I)/N em nível de palavra após normalização.
CER WER de caractere Para línguas tonais ou sistemas em nível de caractere.
MOS Opinião humana Nota de 1 a 5; mais de 20 ouvintes × 100 amostras.
UTMOS Preditor de MOS por ML Modelo aprendido; correlaciona ~0,9 com o MOS humano.
SECS Similaridade de clone de voz Cosseno ECAPA entre referência e clone.
EER Pontuação de verif. de locutor Limiar onde FAR = FRR.
DER Pontuação de diarização (FA + Miss + Confusion) / total.
FAD Qualidade de geração de música Distância de Fréchet em embeddings VGGish.
RTFx Throughput Segundos de áudio por segundo de relógio.

Leitura Adicional

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