TAI BUI
Back to curriculum
LearnPython

Audio Evaluation — WER, MOS, UTMOS, MMAU, FAD, and the Open Leaderboards

You cannot ship what you cannot measure. This lesson names the 2026 metrics for every audio task: ASR (WER, CER, RTFx), TTS (MOS, UTMOS, SECS, WER-on-ASR-round-trip), audio-language (MMAU, LongAudioBench), music (FAD, CLAP), and speaker (EER). Plus the leaderboards where you compare.

TIME: ~60 minutesPREREQUISITES: Phase 6 · 04, 06, 07, 09, 10; Phase 2 · 09 (Model Evaluation)

Learning Objectives

  • Name the primary and secondary evaluation metric for every audio task in this lesson: ASR, TTS, voice cloning, speaker verification, diarization, classification, music generation, audio-language models, and streaming speech-to-speech.
  • Compute WER, round-trip WER, SECS, EER, and FAD in code, and explain what each score actually measures.
  • Explain why a single aggregate number, like overall WER or MOS, can hide real failures, and report results as distributions and per-slice breakdowns instead.
  • Find the right 2026 leaderboard for a given audio task and use it to benchmark a model release against the field.

The Problem

Every audio task comes with a handful of metrics, and each one measures a different axis of quality. Pick the wrong one and you'll ship a model that looks great on your dashboard and terrible in production. Here's the 2026 canonical list, task by task:

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
Warm-up0/3
1. In any accept/reject system that uses a score threshold, what happens when you raise the threshold so that fewer inputs are accepted?Warm-up
Two overlapping bell curves of scores: one for inputs that should be rejected, on the lower scores, and one for inputs that should be accepted, on the higher scores. A dashed vertical threshold line sits between them, with an arrow showing it being raised to the right.
Illustrative score distributions, not measured data.
2. Two embedding vectors have a cosine similarity close to 1. What does that tell you?Warm-up
Two boxes labelled vector a and vector b joined by a dashed line marked cosine similarity of about 1. Below, a scale from -1 to 1 with a marker near the 1 end.
The scale shows the value the question gives.
3. A classifier scores 95% accuracy on a test set in which 95% of the examples belong to one class. What should you suspect?Warm-up
A 10 by 10 grid of 100 test examples: 95 cells in one colour for a single class and 5 cells in another colour for all other classes. A box beside it reports an accuracy of 95 percent.
The class split and accuracy are the numbers given in the question.
Check: The Problem0/2
1. For text-to-speech quality, which metric is primary, as opposed to WER for ASR?Define
Two rows. The first is ASR, audio in and text out, with primary metric WER. The second is TTS, text in and audio out, with primary metric shown as a question mark.
2. What goes wrong when you pick the wrong metric for an audio task?Explain
Four boxes in a row joined by arrows: Audio task, Metric picked (wrong for the task), Dashboard with a question mark, and Production with a question mark.

The Concept

Audio evaluation matrix — metrics vs tasks vs 2026 leaderboards

ASR metrics

WER and CER both answer the same question: how many words, or characters, did the model get wrong. RTFx and first-token latency measure something different, how fast the model produces an answer at all.

WER (Word Error Rate). (S + D + I) / N. Lowercase, strip punctuation, normalize numbers before scoring. Use jiwer or OpenAI's whisper_normalizer. < 5% = human-parity read speech.

CER (Character Error Rate). Same formula, character-level. Used for tone languages (Mandarin, Cantonese) where word segmentation is ambiguous.

RTFx (inverse real-time factor). Audio seconds processed per wall-clock second. Higher is better. Parakeet-TDT hits 3380×. Whisper-large-v3 is ~30×.

First-token latency. Wall-clock from audio input to first transcript token. Critical for streaming. Deepgram Nova-3: ~150 ms.

TTS metrics

TTS splits that question in two: does it sound like a person, and does it say the right words?

MOS (Mean Opinion Score). 1-5 human rating. Gold standard but slow. Collect 20+ listeners per sample, 100+ samples per model.

UTMOS (2022-2026). Learned MOS predictor. Correlates ~0.9 with human MOS on standard benchmarks. F5-TTS: UTMOS 3.95; ground truth: 4.08.

SECS (Speaker Encoder Cosine Similarity). For voice cloning. ECAPA embedding cosine between reference and cloned output. > 0.75 = recognizable clone.

WER-on-ASR-round-trip. Run Whisper over TTS output, compute WER against the input text. Catches intelligibility regressions. 2026 SOTA: < 2% CER.

TTFA (time-to-first-audio). Wall-clock latency. Kokoro-82M: ~100 ms; F5-TTS: ~1 s.

Voice-cloning-specific

Run SECS, MOS, and CER together, as a triple, not one at a time. A clone that scores high SECS but low MOS nailed the timbre and lost the naturalness. Flip those two scores and you get the opposite problem: a natural voice that isn't the speaker you asked for.

Speaker verification

Speaker verification asks a binary question: same voice, or not?

EER (Equal Error Rate). The threshold where False Accept Rate equals False Reject Rate. ECAPA on VoxCeleb1-O: 0.87%.

minDCF (min Detection Cost). Weighted cost at a chosen operating point (often FAR=0.01). More production-relevant than EER.

Diarization

Diarization tracks when each speaker is talking, not just who's in the room.

DER (Diarization Error Rate). (FA + Miss + Confusion) / total_speaker_time. Missed speech, false-alarm speech, and speaker-confusion, each counted as a fraction. AMI meetings: DER ~10-20% is realistic. pyannote 3.1 + Precision-2 commercial: <10% DER on well-recorded audio.

JER (Jaccard Error Rate). Alternative to DER, robust to short-segment bias.

Audio classification

Which metric fits depends on the shape of the task, not the audio itself.

Multi-label: mAP (mean Average Precision) over all classes. AudioSet: 0.548 mAP for BEATs-iter3.

Multi-class exclusive: top-1, top-5 accuracy. Speech Commands v2: 99.0% top-1 (Audio-MAE).

Imbalanced: macro F1 plus per-class recall. Report per-class: an aggregate accuracy number hides exactly which classes are failing.

Music generation

FAD (Fréchet Audio Distance). Distance between VGGish-embedding distributions of real vs generated audio. MusicGen-small on MusicCaps: 4.5. MusicLM: 4.0. Lower is better.

CLAP Score. Text-audio alignment score using CLAP embeddings. > 0.3 = reasonable alignment.

Listening panel MOS. Still the final word for consumer-grade music. Suno v5 ELO 1293 on TTS Arena (from paired human preferences).

Audio-language benchmarks

This is where 2026 audio-language models still look weakest, especially once a question spans more than one clip.

MMAU (Massive Multi-Audio Understanding). 10k audio-QA pairs.

MMAU-Pro. 1800 hard items, four categories: speech / sound / music / multi-audio. Random chance is 25% on 4-way questions. Gemini 2.5 Pro's overall score is about 60%, but multi-audio sits at about 22% across every model tested.

LongAudioBench. Multi-minute clips with semantic queries. Audio Flamingo Next beats Gemini 2.5 Pro.

AudioCaps / Clotho. Captioning benchmarks. SPICE, CIDEr, FENSE metrics.

Streaming speech-to-speech

For a streaming system, latency is the metric that decides whether it feels alive or laggy.

Latency P50 / P95 / P99. Wall-clock from end-of-user-speech to first audible response. Moshi: 200 ms; GPT-4o Realtime: 300 ms.

WER / MOS on the output.

Barge-in responsiveness. Time from user interrupt to assistant mute. Target < 150 ms.

The 2026 leaderboards

Every metric above needs somewhere to compare against. These are the boards that matter in 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 reasoningmmaubenchmark.github.io
SpeakerBench / VoxSRCSpeaker recognitionvoxsrc.github.io
MMAU music subsetMusic LALM(within MMAU)
HEAR benchmarkSelf-supervised audiohearbenchmark.com
Check: The Concept0/24
1. What is WER (Word Error Rate)?Define
Two rows of seven word cells. The reference row reads turn, on, the, kitchen, lights, please, then an empty slot; the model row reads turn, an empty slot, the, kitchen, light, please, now. The three columns where the rows differ are outlined in red.
Typed example, not captured. Cells outlined in red differ between the two rows.
2. What is MOS (Mean Opinion Score)?Define
A synthesized clip drawn as a waveform with an arrow to a box labelled Mean Opinion Score of the clip, whose output is a question mark.
Schematic of the metric named in the question.
3. What is UTMOS?Define
A bar chart of UTMOS on a scale up to 5: F5-TTS at 3.95 and ground-truth speech at 4.08.
Values as quoted in the lesson.
4. What is SECS, used for evaluating voice cloning?Define
Two files, reference.wav and cloned.wav, both feed a box labelled SECS, voice cloning score, whose output is a question mark.
File names are the ones used in the lesson's Step 3 code.
5. What is EER in speaker verification?Define
Two number lines from 0 to 1 for similarity scores. Same-speaker pairs score 0.4, 0.6, 0.7 and 0.9 in blue; different-speaker pairs score 0.1, 0.2, 0.35 and 0.5 in red. A dashed vertical line marks a threshold that can sit anywhere.
Toy scores typed for illustration.
6. What is FAD (Fréchet Audio Distance)?Define
A scatter plot titled a real reference set and a generated set, with two clouds of points: blue points for real reference clips and orange points for generated clips, overlapping partly. A legend and the text FAD equals a question mark sit to the right.
Random points for illustration only; real embeddings have many more dimensions than the two drawn.
7. What does RTFx measure?Define
A bar chart: Parakeet-TDT at 3380 times and Whisper-large-v3 at about 30 times, on a scale to 3800.
Values as quoted in the lesson (Whisper-large-v3 is given as about 30).
8. What is CER, and why does it suit tone languages such as Mandarin and Cantonese?Define
Six Chinese characters in a reference row, with pinyin readings beneath, and six characters in a model row. The fourth character differs and is outlined in red. Below, the text CER equals a question mark.
Typed example, not captured. The reference means 'the weather is nice today'; the outlined character differs.
9. What is DER, the Diarization Error Rate?Define
Two timelines of 56 seconds. In the reference, speaker A talks to second 14, B from 16 to 30, A from 30 to 38 and B from 38 to 52. The system output has A from 2 to 14, B from 16 to 52 without a change at 30, and A from 52 to 56. Colours show the speaker; blank is no speech.
Illustrative timelines, not real data.
10. What SECS value is commonly taken as the cutoff for a recognizable voice clone?Define
A horizontal scale from 0 to 1 for the SECS score, with 0 marked different voice and 1 marked identical embeddings. A question mark sits above the middle of the scale.
The position of the question mark is not meaningful.
11. Which leaderboard tracks reasoning for audio-language models (LALMs)?Define
An audio clip and a typed question feed a box labelled LALM, audio-language model, which outputs a text answer. Below, a question about which leaderboard tracks its reasoning.
Schematic of a model that takes audio and text.
12. A voice clone scores high SECS but low MOS. What does that combination indicate?Explain
Two horizontal gauges for one voice clone: SECS filled most of the way and labelled high, MOS filled about a fifth of the way and labelled low.
Qualitative: the question gives only 'high' and 'low'.
13. On MMAU-Pro, what is the random-chance level for 4-way questions, and how does the multi-audio category compare?Explain
Four category chips: speech, sound, music and multi-audio. Below, a panel showing an audio clip and a question with four answer choices, and two lines of text each ending in a question mark: the chance level, and the score of models on multi-audio questions.
Schematic of the benchmark layout described in the lesson.
14. Which metric choice fits each shape of audio classification task?Explain
Three panels. The first shows a clip with the two labels Speech and Music. The second shows a clip with the single label yes. The third shows three class bars of very different size. Each panel ends with metric equals a question mark.
Illustrative examples; the class sizes in the third panel are made up.
15. For music generation, how do you read FAD and a CLAP score?Explain
Two cards. The FAD card shows MusicGen-small on MusicCaps with a value of 4.5 and a question mark for which direction is better. The CLAP score card asks what a score above 0.3 means, with a question mark.
16. How should a streaming speech-to-speech system report latency, and what barge-in target does it need?Explain
Two timelines. In one turn, a blue user speaks block is followed by a dashed gap marked with a question mark and then an orange assistant replies block. In an interruption, an orange assistant talking block ends at a red line where the user cuts in, followed by a dashed gap marked with a question mark and a silence block.
Schematic, not to scale.
17. How do minDCF and JER differ from EER and DER?Explain
A grid with rows speaker verification (headline EER) and diarization (headline DER), each followed by a dashed empty cell with a question mark under the heading other metric. Two unplaced chips, minDCF and JER, are listed below.
Which chip belongs in which row is not shown.
18. How do TTFA and ASR first-token latency relate, and what TTFA values are given for Kokoro-82M and F5-TTS?Explain
Two cards. The TTFA card, time-to-first-audio, lists Kokoro-82M and F5-TTS, each with a question mark for its value. The first-token latency card asks how it relates to TTFA, with a question mark.
19. A reference transcript has 20 words. After normalization, the hypothesis has 2 substitutions, 1 deletion and 1 insertion. What is the WER?Apply
A row of 20 numbered cells for the reference words. Two cells are marked S for substitution, one cell is marked D for deletion, and an orange bar between two cells marks one insertion. A legend gives the counts 2, 1 and 1. Below, WER equals a question mark.
Which word positions carry the errors is arbitrary; only the counts come from the question.
20. A 100-second meeting has 2 s of false-alarm speech, 3 s of missed speech and 5 s of speaker confusion. What is the DER?Apply
A bar for a 100-second meeting from 0 to 100 seconds, with three coloured stretches marked below it: 2 seconds of false-alarm speech, 3 seconds of missed speech and 5 seconds of speaker confusion. Below, DER equals a question mark.
The positions of the error stretches are arbitrary; only the durations come from the question.
21. A cloned voice scores SECS 0.62, below the 0.75 cutoff, but its MOS and CER both look excellent. What is the most likely diagnosis?Analyze
Three cards for one voice clone: SECS 0.62 with a note that the lesson's cutoff is 0.75, MOS described as excellent, and CER described as excellent.
MOS and CER are given only as 'excellent' in the question.
22. A new audio-language model scores 60% overall on MMAU-Pro but 22% on the multi-audio category. What is the right reading?Analyze
A bar chart on a scale to 100 percent: the new model scores 60 percent overall and 22 percent on the multi-audio category.
23. You are shipping a streaming voice assistant that must feel responsive and sound natural. Which evaluation set fits?Design
User speech goes into a streaming assistant that returns a spoken reply. Two requirement tags read must feel responsive and must sound natural. Below, a question about which evaluation set fits.
24. You are evaluating a speaker verification system for door access, where false accepts are costly. Which reporting fits best?Design
A voice at the door goes into a speaker verification system that decides whether the door opens. A note says false accepts are costly. Below, a question about which reporting fits best.

Build It

Five short scripts, one metric each. Wire these into your eval harness once and reuse every one of them for the next model release.

Step 1: WER with normalization

Normalize before you score anything, or you're measuring casing and punctuation instead of real errors.

python
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.20 (1 substitution / 5 reference words)

Step 2: TTS round-trip WER

No human listener needed. Synthesize the text, transcribe it back with an ASR model, and score the round trip against the original.

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

Step 3: SECS for voice cloning

Encode both clips with the same speaker model and take the cosine similarity between the two embeddings.

python
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()

Step 4: FAD for music generation

There's no transcript to check here, so FAD compares distributions instead: how close a whole batch of generated audio sits to a batch of real audio.

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

Step 5: EER for speaker verification (same code as Lesson 6)

Same threshold sweep you already used for speaker verification: find the point where false accepts and false rejects cross.

python
def eer(same_scores, diff_scores):
    thresholds = sorted(set(same_scores + diff_scores))
    best = (float("inf"), 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]
Check: Build It0/5
1. In the Step 1 jiwer code, what are the Compose transforms (ToLowerCase, RemovePunctuation, Strip) applied to before WER is computed?Apply
Lesson code: importing jiwer, building a transform from ToLowerCase, RemovePunctuation and Strip, then a call to wer with a truth string and a hypothesis string. The remaining arguments are replaced by question marks.
Lines are from the lesson's Step 1; the transform arguments are hidden.
2. What does the ttr_wer function in Step 2 compute?Apply
The function header, an empty errors list, a for loop over texts whose body is shown as a dashed ellipsis, and a return of the sum of errors divided by their count. Below, texts, tts_model and asr_model feed ttr_wer, whose output is a question mark.
The loop body is left out; the other lines are from the lesson's Step 2.
3. In the Step 3 SECS code, how is the similarity score computed?Apply
Lesson code: an import, loading the ECAPA speaker encoder, then two lines that encode reference.wav and cloned.wav into emb_ref and emb_clone. The final line, which sets secs, is replaced by question marks.
Lines are from the lesson's Step 3; the last line is hidden.
4. What does the Step 4 FAD code compare to produce a score?Apply
Lesson code: an import, creating a FrechetAudioDistance object, and a call to get_fad_score whose two arguments are replaced by question marks.
The arguments are hidden; the rest is from the lesson's Step 4.
5. Step 5's eer function gets same_scores = [0.9, 0.8, 0.4] and diff_scores = [0.5, 0.3, 0.1]. What does it return?Apply
The lesson's eer function, followed by a call with same_scores 0.9, 0.8, 0.4 and diff_scores 0.5, 0.3, 0.1 whose return value is a question mark.
The function is the lesson's Step 5 code; the call is the one in the question.

Use It

Pair every deploy with a fixed eval harness that runs on every model update, no exceptions. Three rules govern how you report the results:

  1. Normalize before scoring. Lowercase, punctuation-strip, number-expand, and report the normalization rule you used.
  2. Report distributions, not averages. P50/P95/P99 for latency, per-class recall for classification, per-category for MMAU.
  3. Run one canonical public benchmark. Your production data will look different from the benchmark's, but reporting on Open ASR, TTS Arena, or MMAU is what lets reviewers compare your numbers apples-to-apples with everyone else's.
Check: Use It0/1
1. Which three rules should govern how you report results from an eval harness?Explain
A vertical list of four steps joined by arrows: model outputs and references, then three dashed boxes labelled reporting rule 1, 2 and 3, each with a question mark.

Pitfalls

  • UTMOS extrapolation. It's trained on VCTK-style clean speech, so it scores noisy, cloned, or emotional audio poorly.
  • MOS panel bias. Twenty Amazon Mechanical Turk workers aren't twenty target users. Pay for a domain panel if the stakes are high.
  • FAD depends on the reference set. Compare every model against the same reference distribution, or the numbers won't mean anything next to each other.
  • Aggregate WER. A 5% overall WER can hide a 30% WER on accented speech. Report by demographic slice.
  • Public benchmark saturation. Most frontier models already sit near the ceiling on standard benchmarks. Build an in-house held-out set that actually reflects your traffic.
Check: Pitfalls0/5
1. Why can a single aggregate WER number mislead?Explain
A tile labelled overall WER showing one number, and a list of three slices, slice 1, slice 2 and slice 3, each with an empty dashed bar and a question mark.
The slice values are not given.
2. A team ships a model with a 4% WER, then customers complain about garbled numbers and dates. Their normalization step had been excluding that slice from the count. What went wrong?Analyze
A flow from a test set of all kinds of speech through a normalization step that excludes numbers and dates to a reported WER of 4 percent. Below, a note that after release customers complain about garbled numbers and dates.
Schematic of the story in the question.
3. Team A reports a FAD of 4.0 against reference set X, and Team B reports 4.5 against reference set Y. Can you conclude that A's model is better?Analyze
Two cards. Team A reports a FAD of 4.0 measured against reference set X. Team B reports a FAD of 4.5 measured against reference set Y.
4. Your TTS system posts an unexpectedly low UTMOS on a batch of emotional, expressive speech, yet listeners call it natural. What should you suspect first?Analyze
A batch of expressive TTS clips goes to UTMOS, which gives a low score, and to listeners, who call the clips natural. The two results point at a question mark.
5. Frontier models already sit near the ceiling on public ASR benchmarks. How should you report your own release so reviewers can trust it?Design
A horizontal scale from worse to better. Eight blue dots for frontier models bunch tightly near the better end, and an orange ring labelled your release sits to their left. A line below asks how to report so reviewers can trust it.
Dot positions are illustrative, not real scores.

Ship It

Save this as outputs/skill-audio-evaluator.md: a reference for picking metrics, benchmarks, and a reporting format for any audio model you ship.

Author's Note

The failure mode I see most with audio evaluation isn't picking the wrong metric. It's picking one metric and defending it long after it stopped telling you anything useful. A team ships a 4% WER model, throws a party, then finds out customers are furious about garbled numbers and dates — exactly the slice their number-normalization step was quietly excluding from the count. Every metric on this page has a blind spot like that: UTMOS goes soft on anything that isn't clean read speech, FAD only means something relative to whatever reference set you picked, and one aggregate WER number hides exactly which accent your model is actually failing on.

No single smarter metric fixes that. What works is running several of them against a slice that looks like your real traffic, and staying suspicious of any number that only ever goes up.

Exercises

  1. Easy. Run code/main.py. Compute WER / CER / EER / SECS / FAD-ish / MMAU-ish on toy inputs.
  2. Medium. Build a TTS round-trip WER harness. Run your Kokoro or F5-TTS output through Whisper. Compute WER over 50 prompts. Flag prompts with WER > 10%.
  3. Hard. Score your Lesson 10 LALM choice on MMAU-Pro speech + multi-audio subsets (50 items each). Report per-category accuracy and compare with the published number.

Key Terms

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.

Further Reading

Code

Ships With