Home / Blog / How Accurate Is On-Device Whisper Transcription on a Mac? A Real WER Benchmark (2026)

How Accurate Is On-Device Whisper Transcription on a Mac? A Real WER Benchmark (2026)

Quick answer: On Ducktate's own benchmark, on-device Whisper (the small.en model) transcribes everyday speech at roughly 12% word error rate with the app's glossary bias on, and about 14% to 15% with it off. That number moves a lot by clip type: numbers and dates score close to 0% WER, ordinary sentences score in the single digits, and out-of-vocabulary brand names and technical jargon are the hard cases, where a custom glossary cuts the error rate roughly in half. This is our own recorded-voice corpus, not a public leaderboard, so treat it as a directional, reproducible number rather than a universal one.

On Ducktate's own transcription benchmark, on-device Whisper (the small.en model, running on Apple's Neural Engine) transcribes everyday speech at roughly 12% word error rate with the app's glossary bias turned on, and closer to 14% to 15% with it off. That is the headline number. The more useful number is underneath it: WER is not one flat figure, it swings from near 0% on plain numbers and sentences to over 20% on brand names and technical jargon the model has never seen, and a custom glossary is what closes most of that gap.

This post is the results table, the methodology, and the caveats behind that number, pulled straight from the eval artifacts Ducktate's own harness writes to disk. Nothing below is a vendor claim about someone else's model. It is what happened when we pointed the app's real transcription code at a fixed set of recorded clips and scored the output against a hand-typed reference.

Results: word error rate by run and by clip

Ducktate's transcription eval (./eval.sh --suite transcription) has been run dozens of times against the small.en model since mid-July 2026, logging every run to eval/history-transcription.jsonl. The numbers below come straight from that log and from the individual run files under eval/runs/transcription/.

Aggregate WER, glossary on vs. off

ConditionVerbatim WERCleaned WERProper-noun accuracyValid runs logged
Glossary on (most recent stable result)14.0%11.9%81.8%most recent of 35
Glossary on (range across all valid runs)8.9% to 15.3%6.3% to 13.1%63.6% to 100%35
Glossary off (no bias, the raw floor)15.9% to 17.2%13.3% to 15.0%45.5%2

"Cleaned WER" strips filler words like um and uh from both sides before scoring (Whisper routinely and legitimately drops them, which is not a real transcription error). "Verbatim WER" scores against the literal spoken words, disfluencies included. See Methodology below for why both are reported.

Per-clip breakdown, first fully documented run (2026-07-16)

This is the clearest side-by-side comparison in our logs: the same 5-clip corpus, same model, glossary on vs. completely off, run back to back.

ClipWhat it targetsFloor WER (no glossary)Real-path WER (glossary on)
01Product/brand proper nouns (Ducktate, Claude, WhisperKit, Ollama, ChatGPT, Obsidian, Stripe, Postgres)23.5%5.9%
02Personal names (five first names)8.7%4.3%
03Numbers, dates, times, money, version strings0.0%0.0%
04Natural disfluencies (um / uh / you know / false starts)21.4% verbatim / 8.3% cleaned21.4% verbatim / 8.3% cleaned
05Compound technical identifiers (AVAudioEngine, CATapDescription)26.1%13.0%
Average cleaned WER13.3%6.3%
Proper-noun accuracy45.5%90.9%

The pattern holds across every later run too: plain speech, numbers, and dates transcribe close to perfectly out of the box. The errors concentrate almost entirely in out-of-vocabulary proper nouns and compound technical terms, and that is exactly where the glossary earns its keep, roughly halving cleaned WER and roughly doubling proper-noun accuracy on the clips that have proper nouns to get wrong.

Methodology

What WER measures. Word Error Rate is the number of word-level substitutions, insertions, and deletions needed to turn the transcript into the reference, divided by the number of words in the reference. Lower is better; 0% is a perfect transcript. It is the standard metric for scoring speech-to-text accuracy, and it is unforgiving: a single wrong proper noun in a short sentence can swing WER by double digits, which is part of why our per-clip numbers above jump around by clip type rather than clustering near one figure.

The corpus. Fixtures/bench/transcription/ in the app repo is real recorded human speech (the founder's own voice, not synthesized), 16kHz mono WAV, each clip paired with a hand-typed reference transcript that is the WER ground truth. Clips are short and deliberately built to isolate a failure mode each: brand and product names, personal names, numbers and dates, natural disfluencies, and compound technical jargon, plus one clip that regression-tests a leading-silence-trim fix in the app's streaming pipeline. A seventh clip of longer natural conversation exists locally but is gitignored (personal content) and is skipped, not scored, in the runs behind this table.

The model. small.en, the Whisper model Ducktate ships by default, transcribing on Apple's Neural Engine, fully on-device. No audio leaves the machine to produce these numbers.

The real pipeline, not a synthetic benchmark. The eval harness decodes each clip and calls the app's actual Transcriber.transcribe(samples:) code path, the same glossary-biasing and language-resolution logic that runs when you dictate, rather than a standalone WhisperKit call. That is a deliberate design choice: it means these numbers are production behavior, not a best-case lab number. --no-glossary reproduces the raw floor for an apples-to-apples comparison.

Two WERs, always. Verbatim WER scores against exactly what was said. Cleaned WER strips bracketed non-speech tokens and disfluencies from both the hypothesis and the reference before scoring, because Whisper models routinely drop filler words as part of normal behavior, not as an error. We report both and treat cleaned WER as the real signal.

Reproduce it yourself: `` ./eval.sh --suite transcription # real path, glossary on ./eval.sh --suite transcription --no-glossary # reproduce the raw floor ``

Honest caveats

This is our own benchmark, and it has real limits worth stating plainly, because the caveats are what make a number trustworthy rather than just favorable.

  • - Small corpus. 6 to 7 short clips, a few sentences each, not a large standardized test set like LibriSpeech. A handful of clips is enough to see a clear pattern, not enough to bound accuracy tightly to a decimal point.
  • - One voice. Every clip is the founder's own recorded speech. We have not yet measured WER across different accents, speaking speeds, microphones, or background noise conditions, all of which are known to move Whisper's accuracy meaningfully.
  • - Real run-to-run variance. Running the identical model against the identical corpus did not produce the identical number. Across 35 valid glossary-on runs in our log, cleaned WER ranged from 6.3% to 13.1%. That spread is on-device decoding variance, not a data-entry error, and we are reporting it rather than picking the most flattering run.
  • - We excluded broken runs, and are telling you so. A stretch of runs in our log show cleaned WER as high as 81% with only 25% to 50% of clips scoring at all (passRate below 1). Those came from a period where the app itself was mid-debugging and clips were failing to transcribe, not a measurement of real transcription quality, so we left them out of the table above. We are naming that exclusion explicitly rather than quietly dropping the rows.
  • - Thin glossary-off sample. Only 2 logged runs exist with the glossary fully disabled, versus 35-plus with it on. The direction of the effect (glossary lowers WER, especially on proper nouns) is consistent and large, but the off-condition sample size is small.
  • - One model size. These numbers are all small.en. We have separately observed that a larger model (distil-large-v3) does not fix the out-of-vocabulary failure mode that drives most of the error here, but we have not run the full WER suite against every model tier Ducktate ships.
  • - Your results will differ. WER is sensitive to accent, audio quality, background noise, and how much domain-specific or invented vocabulary you use. Treat these numbers as evidence about the shape of the problem (plain speech is easy, proper nouns and jargon are hard, a glossary helps) rather than a guarantee of a specific percentage on your own voice.

Why this matters for dictation, not just transcripts

Raw transcription accuracy is the floor under everything else a dictation app does. Talking to an AI is faster than typing to one only holds up if what gets transcribed is actually what you said, and a good Mac dictation app has to get proper nouns and jargon right, since those are exactly the words a wrong guess makes you stop and manually fix. That is the whole argument for a glossary: it is not a nice-to-have, it is roughly a 2x accuracy difference on the words that cost you the most time to correct by hand.

If you want to see how much of your own speech is filler words and disfluencies, the kind that verbatim WER counts and cleaned WER forgives, try the free filler word counter: paste or record a sample and see your own um/uh rate instead of someone else's average.

Frequently asked questions

How accurate is on-device Whisper transcription on a Mac?

On Ducktate's benchmark corpus, the small.en Whisper model transcribing on-device scored roughly 12% cleaned word error rate (about 14% verbatim) with the app's glossary bias turned on, across clips covering brand names, personal names, numbers, disfluencies, and technical jargon. Without the glossary, cleaned WER ran closer to 13% to 15%. Plain conversational sentences and numbers scored much better than that average, close to 0% to 9% WER; the average gets pulled up by out-of-vocabulary proper nouns and compound technical terms.

What is Word Error Rate (WER)?

Word Error Rate counts how many words in a transcript are wrong (substituted, inserted, or deleted) compared to a correct reference transcript, divided by the number of words in the reference. A 10% WER means roughly 1 word in 10 differs from what was actually said. Lower is better, and 0% means a perfect transcript.

What is the difference between verbatim WER and cleaned WER?

Verbatim WER scores the transcript against exactly what was said, including filler words like um and uh. Cleaned WER strips disfluencies from both the transcript and the reference before scoring, because Whisper models routinely and legitimately drop filler words, which is not really a transcription error. Ducktate's eval reports both, and treats cleaned WER as the real accuracy signal.

Does a bigger Whisper model produce lower word error rate?

Not automatically, and not for the failure mode that matters most in practice. In Ducktate's own testing, moving to a larger model (distil-large-v3) did not fix out-of-vocabulary brand names or jargon; it still produced errors like 'Olamma' and 'ChatGVT.' Vocabulary the model has never seen is an out-of-vocabulary problem, not a model-size problem, so a bigger model is not the lever.

Does a custom glossary actually improve transcription accuracy?

Yes, measurably, on Ducktate's benchmark. Biasing decoding toward a list of known proper nouns roughly halved cleaned word error rate on the hardest clips (23.5% down to 5.9% on a brand-name clip, 26.1% down to 13.0% on a technical-jargon clip in one measured run) and roughly doubled proper-noun accuracy (45.5% to 90.9% in that same run). The gap was smallest on clips with no proper nouns at all, like plain numbers and dates, where the glossary has nothing to fix.

Is this an independent, third-party Whisper benchmark?

No. This is Ducktate's own internal eval, run on a small corpus of the founder's own recorded voice, and published as-is including the run-to-run variance we saw. It is reproducible with the app's own eval harness, but it is not a standardized public benchmark like LibriSpeech, and it should be read as directional evidence about our pipeline, not a universal accuracy claim.

Follow Ducktate on Google

Add us as a preferred source so our guides show up in your Google Top Stories and AI results.

Add as a preferred source

Think out loud. Ducktate writes it down.

On-device transcription that files your ideas and meetings as searchable notes.

Get early access