Measuring verbatimness
- 7,505
- labeled disfluencies · 2 datasets · EN & DE
- 16
- ASR systems scored head-to-head
- 20+
- interpretable metrics · typed, not one WER
Inside the Nyra Verbatim Speech Benchmark: an open suite that scores not just the words, but the fillers, repetitions, cut-offs, and vocal sounds that make speech real.
Word Error Rate collapses everything that makes speech real into a single number. Whether a filler was kept, a stutter preserved, a laugh written down, a false start repaired: WER folds all of it into one figure, then quietly punishes whichever choice the reference happened to make. The Nyra Verbatim Speech Benchmark takes those phenomena back out, and scores them as separate, typed, and interpretable metrics.
This is a technical walk-through of how that works: why ordinary WER is the wrong yardstick for verbatim transcription, how the benchmark derives gold disfluency labels from nothing more than two transcripts and an alignment, the canonical annotation convention behind it, why cut-offs are genuinely ambiguous and how we handle that honestly, and finally the full leaderboard across English and German.
One number, many hidden decisions
Every speech-to-text system has to make a choice it almost never states out loud: does it write down what was said, or what was meant? Most never decide, and leave the choice implicit, inheriting it from their training data and applying it inconsistently, keeping a filler here, dropping a stutter there, swallowing a laugh, silently repairing a false start.
WER cannot see any of this. It compares a hypothesis to one reference and counts substitutions, insertions, and deletions. But on spontaneous speech, the reference itself encodes an unstated policy. The two transcripts below describe the same audio, side by side. Ask which one a low WER is rewarding.
[UM] So we we need to reschedule the th* Thursday meeting to [UH] March third at nine thirty [laughter].
So we need to reschedule the Thursday meeting to March 3rd at 9:30.
Both can be "correct." A system tuned for clean captions is penalized against the verbatim reference for every disfluency it correctly dropped; a verbatim system is penalized against the intended reference for every hesitation it faithfully kept. A single WER score can't tell a careful transcriber from a careless one; it only tells you how well a model matched whichever transcription policy the reference happened to use.
One thing the verbatim line does not drop is ordinary writing: it keeps normal capitalization, proper nouns, and punctuation: it is as grammatically correct a transcript as the speech allows, just with the disfluencies left in. The single deliberate exception is numbers and dates, which it spells out as spoken (March third at nine thirty) while the intended line normalizes them for reading (March 3rd at 9:30). That mismatch is a second, orthogonal source of noise: punish a model for writing "3rd" instead of "third" and you are measuring formatting, not recognition. To keep the benchmark's normalization simple and unambiguous, the evaluation sets deliberately contain no numeric or date material: every gold transcript across both languages is digit-free, so number formatting never confounds a score. Models that do emit digits are still mapped to spoken forms by a conservative normalizer, but the datasets are built so that path is never load-bearing.
The annotation convention
Before any of that can be measured, we have to pin down what the two transcripts actually are. Each follows a small, strict convention: the verbatim track is almost entirely "write what you hear," while the intended track is "write what they meant." Here are the two rule sets side by side:
- Cut-offs: interrupted words and word fragments are marked with a trailing
*:th*,w*. - Fillers: filled pauses are bracketed and upper-cased:
[UH],[UM](Germanäh/ähmmap to the same tags). - Vocal sound events: non-speech sounds are bracketed:
[laughter],[cough],[breath],[sigh],[sniff],[lipsmack],[throatclearing],[yawn],[noise]. - Numbers, dates, times & emails: written out exactly as spoken (
March third at nine thirty), not as digits or symbols. - Everything else: transcribed word for word, with normal casing and punctuation preserved; repetitions, false starts, fillers, fragments, and sounds are all left in place.
- Fillers & vocal sounds removed: every
[UH],[UM],[laughter],[cough]and the like is dropped. - Repetitions & stutters collapsed: a word repeated in the verbatim line is kept just once.
- False starts repairs: abandoned beginnings are replaced by what the speaker settled on, and interrupted fragments (
th*) are removed entirely. - Numbers, dates, times & emails: formatted for readability the way you would write them (
March 3rd,9:30,name@acme.com), not as they were spoken. - Everything else: kept as a clean, grammatical sentence, with the same casing and punctuation as the verbatim line.
The two tracks describe one and the same audio; the verbatim/intended example near the top of this article is exactly this convention applied. Models that emit a different spelling, such as a - instead of * for cut-offs or [laughs] instead of [laughter], are mapped onto this canonical set by a conservative, idempotent normalizer before any scoring happens.
Two transcripts, and the rest follows
With the convention fixed, the benchmark's input is just two transcripts of the same utterance: the verbatim one, written to the convention above, and the intended one, the clean, readable version of what the speaker meant, with disfluencies removed and numbers and dates normalized. The verbatim/intended pair at the top of this article is exactly such an input.
The verbatim transcript does carry real annotation: its fillers, sounds, and cut-offs have to be marked correctly under the convention: genuine labeling effort, not something the benchmark gets for free. What it avoids is a second layer on top of that. The intended transcript is, by construction, a subset of the verbatim one (produced only by deleting and collapsing tokens, never by inventing new words), so aligning the two reveals exactly which verbatim tokens were dropped. Those dropped tokens are the disfluencies, and their type can be read straight off their surface form: brackets mean a filler or a sound, a trailing marker means a cut-off, an unmatched repeat means a repetition.
That is the whole framework, and it is a compact one. Two transcripts in; every typed label and metric in this benchmark then falls out of the alignment between them: no separate per-disfluency tagging pass, and nothing to re-annotate when you add a new dataset or language.
Deriving gold labels from alignment
Here is the heart of the benchmark. The verbatim transcript already carries its surface markers (brackets for fillers and sounds, a cut-off marker for fragments), so labeling reduces to two steps: align, then read off the labels. The figure below plays both steps on a loop; hover any token to see why it got its tag.
Step 1 · align. A minimum-edit alignment links each verbatim token to its intended counterpart. Five tokens find a match; what aligns is intended content, what is left dangling is disfluent.
The logic is a two-pass rule set. Pass one assigns each token by surface form and alignment, in priority order: a cut-off marker wins first, then bracketed fillers, then bracketed sound events, then any token that aligns to an intended word with a matching normalized form becomes Fluent. Anything left over is Other: the bucket for false starts, substitutions, and discourse markers like the "I mean" above. Pass two finds repetitions: walking backward from each kept fluent token, consecutive unmatched copies of the same word become Rep. The repeated "we" is caught exactly this way.
The alignment itself is a standard minimum-edit-distance alignment over normalized tokens, the same machinery behind WER, but used here to discover structure rather than to score it.
Scoring a model, tag-aware
Once the gold labels exist, a model's verbatim prediction is aligned against the gold verbatim transcript a second time. This alignment is deliberately tag-aware: matching a fluent token is preferred over matching a disfluent one, and deleting a disfluent token is cheaper than deleting a fluent one. A tiny epsilon nudges the edit-distance costs so that ties always break the linguistically sensible way.
Why it matters is clearest with repetitions. Consider a stutter "I I think…" where the model only writes "I" once:
A cost-blind aligner sees a tie: the predicted “I” matches either gold “I” equally well. It grabs the first copy, the Rep, and the kept fluent “I” is scored as deleted: both the repetition and the fluency metrics scramble.
The single predicted "I" is aligned to the Fluent gold "I", and the Rep token is treated as deleted, exactly the right read. A naïve aligner would have matched the prediction to the first "I" and called the keeper a deletion, scrambling both the repetition and fluency metrics; the epsilon is what tips the tie the right way. Tag-aware alignment is what keeps the typed scores honest.
Transcript-level accuracy (vWER, vCER, iWER, iCER) is computed separately from raw normalized text: the verbatim prediction against the verbatim reference, the intended prediction against the intended reference. The intended comparison is its own kind of test: it asks whether a model removes the right disfluencies while keeping all the real content intact.
The cut-off problem
Cut-offs are the one place where there often isn't a single right answer, not never, but often enough that the benchmark can't pretend otherwise. The trouble is acoustic. Imagine a speaker stumbling toward the word "bird": pi- pi- bird, or b- bir- bird, or be- beer- bird. A broken-off fragment is, by definition, only a sliver of a word, and those slivers are genuinely confusable: pi-, bi-, be- and beer- can sound nearly identical on their own. So even a perfect transcriber is left under-determined here: there is no acoustic fact that fixes exactly how much of the word came out, or which letters to commit to.
That doesn't make typed cut-offs worthless; quite the opposite. A system that emits a fragment as a cut-off (bir- rather than a confidently wrong full word) is telling you something true and useful: it heard a break, not a complete word. That signal is worth having. But because the exact spelling is underdetermined, it can't be the only thing we score: penalizing a model for writing bir- when the gold says b- would be measuring guesswork. That tension is exactly why the benchmark reports four cut-off metrics, from strict to lenient.
| Prediction | Marker F1 | Strict F1 | Lenient F1 | Lenient recall |
|---|---|---|---|---|
| b- (marker + same stem) | Counts | Counts | Counts | Counts |
| bir- (marker, more of the word) | Counts | Misses | Counts | Counts |
| bird (committed full word) | Misses | Misses | Counts | Counts |
| ∅ (dropped entirely) | Misses | Misses | Misses | Misses |
| b- … wor- (spurious extra marker) | Costs precision | Costs precision | Costs precision | Counts |
b- (fragment of "bird"). How each rendering scores against the four cut-off metrics.Two cases are worth separating, because they are easy to confuse. A wrong fragment at the right place (bir- for a gold b-) still aligns to the cut-off position, so marker, lenient, and recall all credit it; only strict, which compares stems, holds the spelling against it. A spurious marker at the wrong place (wor- on a word that was never broken off) is different: it is a clean false positive that costs precision on every F1, but it cannot touch recall, because recall only asks whether the genuine gold cut-offs were acknowledged. Hallucinating cut-offs hurts you, just not by pretending you missed a real one.
The leaderboard's headline Cutoff F1 is the lenient one: a gold cut-off counts as covered if the model places any aligned token there, while hallucinated markers still cost precision. It is the fairest single number, because some excellent systems preserve interrupted speech perfectly well without ever emitting a dedicated cut-off symbol. The stricter variants are still reported, so you can see whether a model genuinely marks fragments or merely happens to land a token nearby.
What gets reported
Rather than one opaque score, the benchmark emits typed metrics so you can see exactly how a model fails: which phenomena it silently drops, which it hallucinates, which it mislabels.
Word and character error rates, computed separately for the verbatim and intended tracks. The intended track further splits into substitution (real errors), deletion (over-removal of content), and insertion (under-removal of disfluencies) rates.
Detection F1 for [UH] / [UM], plus an exact-label variant that requires [UH] vs [UM] to be told apart, and per-label breakdowns.
Detection of [laughter], [cough], [breath] and the rest, with and without requiring the exact event label to match.
The four-way spectrum from the section above, from marker-strict to position-lenient.
Detection F1 plus accuracy of the predicted repetition-group count per utterance: whether the model gets the number of repeats right, not just their presence.
disfluency_f1 is the single headline number: a combined F1 over fillers, sounds, lenient cut-offs, and repetitions. Alongside it, omission and hallucination rates and a full tag-confusion matrix show what a model drops, invents, or mislabels.
The two datasets
The benchmark ships with two open, verbatim-annotated speech datasets (English and German) together carrying over 7,500 labeled disfluencies (6,120 in English, 1,385 in German). They are the first of their kind released together for the two languages. Each sample carries audio plus the verbatim/intended transcript pair the evaluator needs.
Both are conversational speech datasets containing spontaneous speech rich in disfluencies: the regime where disfluencies actually occur, and where clean read-speech benchmarks conflate accuracy with annotation convention and become uninformative and potentially misleading. Here is the full typed inventory, derived by the same alignment described above:
Plus ~11.2k false starts & discourse markers (the Other bucket), against ~96k fluent words.
Cut-offs run nearly two per clip on average: the densest cut-off material in the suite.
What matters is that each dataset contains enough events of every type to draw statistically meaningful conclusions about how a system handles fillers, repetitions, cut-offs, and sounds. Any HuggingFace audio dataset exposing id, audio, verbatim_transcript, and intended_transcript drops straight into the same evaluator; the design is meant to grow to new languages as verbatim data becomes available.
The leaderboard
Sixteen systems, scored on the same audio. Tables are sorted by Disfluency F1, the headline metric. Switch languages with the toggle. Nyra Health models are highlighted. The gap between general-purpose ASR and verbatim-aware systems is stark: several strong commercial models score in the single digits because they silently clean speech before you ever see it.
| Model | Disfluency F1 | Filler F1 | Vocal Sound F1 | Cutoff F1 | Rep F1 | vWER |
|---|---|---|---|---|---|---|
| CrisperWhisper 2.0 pro | 93.2% | 95.7% | 94.8% | 90.7% | 88.3% | 3.0% |
| CrisperWhisper 2.0 | 90.7% | 94.3% | 83.5% | 89.3% | 87.8% | 3.6% |
| ElevenLabs Scribe v2 | 90.3% | 95.5% | 83.4% | 80.1% | 87.9% | 3.2% |
| Inworld STT | 84.4% | 95.2% | 10.7% | 84.8% | 86.8% | 4.0% |
| MAI-Transcribe-1.5 | 84.0% | 95.8% | 0.0% | 83.3% | 86.8% | 3.6% |
| xAI Grok STT | 73.9% | 84.4% | 0.0% | 60.3% | 83.4% | 4.7% |
| CrisperWhisper 1.0 | 71.4% | 81.8% | 0.0% | 81.1% | 67.9% | 6.2% |
| AssemblyAI Universal-3 Pro | 67.9% | 90.8% | 2.8% | 27.9% | 82.7% | 4.5% |
| Deepgram Nova-3 | 57.3% | 45.7% | 0.0% | 72.2% | 83.2% | 6.3% |
| Fish Audio ASR | 49.7% | 30.5% | 0.0% | 60.1% | 82.1% | 5.9% |
| Gradium ASR | 34.0% | 13.7% | 0.0% | 57.5% | 61.3% | 9.7% |
| NVIDIA Canary 1B v2 | 26.6% | 26.7% | 0.0% | 48.9% | 30.5% | 9.0% |
| Cohere Transcribe | 17.6% | 15.8% | 0.0% | 45.0% | 18.9% | 9.9% |
| Whisper Large v3 | 9.7% | 9.4% | 0.0% | 31.4% | 6.4% | 10.2% |
| Cartesia Ink-Whisper | 7.6% | 6.0% | 0.0% | 32.5% | 3.7% | 10.4% |
English · 15 systems · 4,957 scored clips per system. Higher is better for every column except vWER. Nyra Health models highlighted.
How to read it
Two patterns dominate. First, vocal-sound detection is where most systems fall off a cliff: a column of 0.0% marks every model that simply never writes down a laugh or a cough. Second, the spread on verbatim WER tracks disfluency handling closely: models that drop fillers and repetitions don't just miss those events, they accumulate ordinary word errors against a verbatim reference. CrisperWhisper 2.0 leads both languages on the headline metric while keeping vWER at the bottom of the field; the full ten-language leaderboard lives in the overview post.
Run the benchmark
Every prediction, metric, and dataset is public. Reproduce the tables from cached predictions, or score your own system in three steps. Any HuggingFace audio dataset exposing id, audio, verbatim_transcript, and intended_transcript drops straight into the same evaluator.
Related research
CrisperWhisper 2.0
The most accurate verbatim speech recognition you can run in production: controllable, multilingual, and timed to the word.
Closing the verbatim data gap
How to upgrade existing spontaneous-speech corpora into faithful verbatim datasets while preserving the transcripts you already trust.
Turning emergent cross-attention into a precise aligner
How CrisperWhisper 2.0 reads millisecond-accurate word timings out of an ASR decoder's cross-attention: by making the output policy explicit, then supervising the heads that already lean toward alignment.