Phase 06: Speech & Audio

Avaliação de áudio WER, MOS, UTMOS, MMAU, FAD e as tablas de classificação abertas

Esta lição nomeia as métricas 2026 para cada tarefa de áudio: ASR (WER, CER, RTFx), TTS (MOS, UTMOS, SECS, WER-on-ASR-round-trip), áudio-linguagem (MMAU, LongAudioBench), música (FAD, CLAP) e alto-falantes (EER).

Type: Learn

Languages: Python

Prerequisites: Phase 6 · 04, 06, 07, 09, 10; Phase 2 · 09 (Model Evaluation)

Time: ~60 minutes

O problema

Cada tarefa de áudio tem múltiplas métricas, cada uma medindo um eixo diferente. Usando a métrica errada é como você envia um modelo que parece ótimo no seu painel de controle e terrível em produção.

TaskPrimarySecondary
ASRWERCER · RTFx · first-token latency
TTSMOS / UTMOSSECS · WER-on-ASR-round-trip · CER · TTFA
Voice cloningSECS (ECAPA cosine)MOS · CER
Speaker verificationEERminDCF · FAR / FRR at operating point
DiarizationDERJER · speaker confusion
Audio classificationtop-1 · mAPmacro F1 · per-class recall
Music generationFADCLAP · listening panel MOS
Audio language modelMMAU-ProLongAudioBench · AudioCaps FENSE
Streaming S2Slatency P50/P95WER · MOS

O conceito

!Audio evaluation matrix — metrics vs tasks vs 2026 leaderboards

Metricas de RAS

WER (Word Error Rate). (S + D + I) / N- Baixa letra, pontuação de strip, normalização de números antes de marcar.jiwerou da OpenAI whisper_normalizer. <5% = leitura de fala em paridade humana.

CER (Character Error Rate).A mesma fórmula, nível de caracteres. Usado para línguas de tom (mandarim, cantonês) onde a segmentação de palavras é ambígua.

RTFx (inverse real-time factor).Segundo de áudio processado por segundo de relógio de parede. Mais alto é melhor. Parakeet-TDT atinge 3380x.

First-token latency.O relógio de parede da entrada de áudio para o primeiro token de transcrição.

Metricas de TTS

MOS (Mean Opinion Score).1-5 de classificação humana. Padrão de ouro, mas lento. Coletar mais de 20 ouvintes por amostra, 100+ amostras por modelo.

UTMOS (2022-2026).Aprendi predictor MOS. Correlação de ~ 0,9 com MOS humano em padrões de referência. F5-TTS: UTMOS 3,95; verdade fundamental: 4,08.

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

WER-on-ASR-round-trip.Execute Whisper sobre a saída TTS, computa WER contra o texto de entrada. Capta regressões de inteligibilidade. 2026 SOTA: < 2% CER.

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

Específico para clonagem vocal

SECS + MOS + CERCloning que tem um alto SECS mas baixo MOS significa timbre-direito-mas-naturalmente; o oposto significa voz natural mas falhante.

Verificação de alto-falantes

EER (Equal Error Rate).O limite em que a taxa de rejeição falsa é igual à taxa de rejeição falsa.

minDCF (min Detection Cost).Custo ponderado num ponto de exploração escolhido (frequentemente FAR=0,01).

Diarização

DER (Diarization Error Rate). (FA + Miss + Confusion) / total_speaker_time. Falsa fala + fala de falsa alarme + confusão de alto-falantes, 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 à DER, robusta para o viés de segmentos curtos.

Classificação de áudio

Multi-etiqueta: mAP (mean Average Precision)AudioSet: 0,548 mAP para BEATs-iter3.

Exclusivos para várias classes: top-1, top-5 accuracyComando de fala v2: 99,0% top-1 (Audio-MAE).

Desbalançado: macro F1+ per-class recall. Relatório por classe A precisão agregada oculta quais classes falham.

Geração de música

FAD (Fréchet Audio Distance).Distância entre distribuições de áudio real em VGGish versus gerado. MusicGen-small em MusicCaps: 4.5. MusicLM: 4.0. Baixo melhor.

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

Listening panel MOS.Ainda a última palavra para música de nível de consumo. Suno v5 ELO 1293 no TTS Arena (de preferências humanas emparelhadas).

Indicadores de referência de áudio

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

MMAU-Pro.1800 itens rígidos, quatro categorias: fala / som / música / multi-audio. 25% acaso em quatro vias. Gemini 2.5 Pro em geral ~ 60%; multi-audio ~ 22% em todos os modelos.

LongAudioBench.Clips de vários minutos com consultas semânticas.

AudioCaps / Clotho.Captioning benchmarks. SPICE, CIDER, FENSE métricas.

Transmissão de fala para fala

Latency P50 / P95 / P99.O relógio de parede do end-of-user-speech para a primeira resposta audível.

WER / MOS- A saída.

Barge-in responsiveness.Tempo de interrupção do usuário para assistente mudo.

As tabela de liderança de 2026

LeaderboardTracksURL
Open ASR Leaderboard (HF)English + multilingual + long-formhuggingface.co/spaces/hf-audio/open_asr_leaderboard
TTS Arena (HF)English TTShuggingface.co/spaces/TTS-AGI/TTS-Arena
Artificial Analysis SpeechTTS + STT, ELO from paired votesartificialanalysis.ai/speech
MMAU-ProLALM reasoningsonalkum.github.io/mmau-pro
SpeakerBench / VoxSRCSpeaker recognitionvoxsrc.github.io
MMAU music subsetMusic LALM(within MMAU)
HEAR benchmarkSelf-supervised audiohearbenchmark.com

Construí-lo

Passo 1: REM com normalização

pythonfrom 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: TTS WER de ida e volta

pythondef 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

pythonfrom 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

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

Passo 5: EER para a verificação dos alto-falantes (o mesmo código que a lição 6)

pythondef 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]

Usá-lo

Aparar cada implantação com um arnes de avaliação fixo que é executado em cada atualização do modelo.

  1. Normalize before scoring.Baixa letra, linha de pontuação, número expandido, informe a regra de normalização.
  2. Report distributions, not averages.P50/P95/P99 para latência. Recall por classe para classificação.
  3. Run one canonical public benchmark.Mesmo que os seus dados de produção sejam diferentes, relatar no Open ASR / TTS Arena / MMAU permite que os revisores comparem maçãs a maçãs.

Encurralagens

  • UTMOS extrapolation.Treinado em discurso limpo no estilo VCTK; pontuação ruidosa / clonado / áudio emocional mal.
  • MOS panel bias.20 trabalhadores da Amazon Mechanical Turk ≠ 20 usuários alvo. Pague por um painel de domínio se as apostas forem altas.
  • FAD depends on reference set.Comparar com a mesma distribuição de referência entre os modelos.
  • Aggregate WER.Uma REM de 5% em geral pode ocultar 30% da REM em discurso acentuado.
  • Public benchmark saturation.A maioria dos modelos de fronteira está perto do teto em referência padrão.

Envia-o

Salva comooutputs/skill-audio-evaluator.mdSelecionar métricas, referências e formato de relatório para qualquer lançamento de modelo de áudio.

Exercícios

  1. Easy.Corra .code/main.py- Calcular WER / CER / EER / SECS / FAD-ish / MMAU-ish em entradas de brinquedos.
  2. Medium.Construir um arame WER de ida e volta TTS. Exibir sua saída Kokoro ou F5-TTS através de Whisper. Compute WER acima de 50 instruções. Flag instruções com WER &gt; 10%.
  3. Hard.Marque a sua escolha de aula 10 LALM em discurso MMAU-Pro + subconjuntos de áudio múltiplos (50 itens cada).

Termos-chave

TermWhat people sayWhat it actually means
WERASR score(S+D+I)/N at word level after normalization.
CERCharacter WERFor tone languages or char-level systems.
MOSHuman opinion1-5 rating; 20+ listeners × 100 samples.
UTMOSML MOS predictorLearned model; correlates ~0.9 with human MOS.
SECSVoice-clone similarityECAPA cosine between reference and clone.
EERSpeaker verif scoreThreshold where FAR = FRR.
DERDiarization score(FA + Miss + Confusion) / total.
FADMusic-gen qualityFréchet distance on VGGish embeddings.
RTFxThroughputAudio seconds per wall-clock second.

Mais leitura

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.