Benchmarks · updated 2026-09-25

How fast, how accurate, on what.

Every row is a run we did, on a machine described below. Unmeasured rows say so. Nothing is estimated.

Results
AudioLengthBackendBrowserMachineTimeReal-time factorWERNotes
Clean studio-style speech
Synthetic clean speech, one Windows text-to-speech voice, our own passage
audio · transcript
00:01:11
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 25.4 s
model cached
0.36 0.0% Second run in the same browser profile. A first run in a fresh profile, including the 206 MB model download, took 27.0 s on this connection. WER: Against a reconstructed reference, not yet checked by listening; case and punctuation ignored.
Clean studio-style speech
Same clip as above
audio · transcript
00:01:11
MP3, mono, 48 kbps
CPU (WASM) Chrome 153, headless, WebGPU and WebCodecs disabled by script Development laptop (2021) 46.2 s
download included
0.65 0.0% CPU mode: single-threaded WebAssembly inference with whole-file Web Audio decoding. Fresh profile, so the model download is included in the time. WER: Same text as the WebGPU run; same reference and caveat.
Background noise
The clean clip with steady pink noise mixed in at about 10 dB SNR
audio · transcript
00:01:11
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 25.2 s
model cached
0.35 1.2% The clean clip with pink noise mixed in with ffmpeg. WER: Against the same reconstructed reference as the clean clip.
Quiet speech
The clean clip at -24 dB
audio · transcript
00:01:11
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 25.3 s
model cached
0.35 0.0% The clean clip turned down by 24 dB, so its loudest peak is at -25 dBFS. WER: Against the same reconstructed reference as the clean clip.
Fast speech
The clean clip at 1.5x speed with pitch preserved
audio · transcript
00:00:47
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 21.8 s
model cached
0.46 1.2% The clean clip sped up by half again with pitch preserved, so 71 seconds of speech fit in 48. WER: Against the same reconstructed reference as the clean clip.
Multiple speakers
Two synthetic voices taking turns, scripted interview, no overlap
audio · transcript
00:01:02
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 28.1 s
model cached
0.45 2.3% Two voices in turn without overlap; easier than a real interview, and there are no speaker labels. WER: Against the exact script given to the text-to-speech engine.
Clean studio-style speech
Dutch passage, one synthetic voice, multilingual base model with language set to Dutch
audio · transcript
00:00:41
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 22.4 s
download included
0.54 13.1% First run of the multilingual model; the download is included in the time. WER: Against the exact script; Dutch, so compound words and diacritics count strictly.
Clean studio-style speech
Same clean clip, large-v3-turbo model, first run (565 MB download included)
audio · transcript
00:01:11
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 73.9 s
download included
1.04 0.0% First run of the turbo model in this profile, download included. Three times the base model's time on this integrated GPU. WER: Identical text to the base model run; same reconstructed reference and caveat.
Background noise
The noisy variant (about 10 dB SNR), large-v3-turbo model, cached
audio · transcript
00:01:11
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 67.6 s
model cached
0.95 0.6% Second turbo run in the profile, so the model came from cache: about the length of the recording on this integrated GPU. WER: The only difference from the reference is "1" for "one"; the base model's "Play text" error did not occur. Computed by hand from the run output, not by the page, because the examples entry for this clip shows the base model run.
Clean studio-style speech
Same clean clip, tiny English model (the default on phones), first run with the 120 MB download included
audio · transcript
00:01:11
MP3, mono, 48 kbps
WebGPU Chrome 153, headless Development laptop (2021) 14.9 s
download included
0.21 2.4% Run on the laptop, not a phone; it shows the accuracy cost of the small model, not phone speed. Phone timings are still to be measured. WER: Four differences from the reference, counted by hand from the run: "cashed" for "cached", "browser's" for "browsers", "200 MB" for "200 megabytes", "the second" for "a second".
Multiple speakers
Same two-voice interview clip, large-v3-turbo model, cached
audio · transcript
00:01:02
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 68.3 s
model cached
1.09 1.2% Run by accident on the turbo model because the browser profile remembered it from the previous run, which is worth knowing about the picker: it keeps your last choice. WER: Two differences from the script, both numerals written as digits ("40-minute", "30 megabytes"); computed by hand from the run output. The base model run on the examples page also wrote them as digits and split "bitrate" into two words.
Long recording
The clean passage looped 4 times (4:45), MP3 64 kbps mono; not published because it is the same audio repeated
00:04:45
MP3, mono, 64 kbps
WebGPU Chrome 153 Development laptop (2021) 74.8 s
model cached
0.26 no reference 660 words in 58 segments; every loop transcribed. Faster per minute than the 71 s clip because the model load is a smaller share of the time.
Long recording
The clean passage looped 21 times (24:58), MP3 48 kbps mono; not published for the same reason
00:24:58
MP3, mono, 48 kbps
WebGPU Chrome 153 Development laptop (2021) 383.6 s
model cached
0.26 no reference 3,465 words in 315 segments, which is every loop. The run was unattended; tab memory was not recorded.
Long recording
The clean passage looped 51 times (60:39), MP3 64 kbps mono; not published for the same reason
01:00:38
MP3, mono, 64 kbps
WebGPU Chrome 153 Development laptop (2021) 967.6 s
model cached
0.27 no reference 8,481 words in 750 segments against 8,415 in the source, so every loop came through with a few dozen extra or split words over the hour. Sixteen minutes for an hour of audio; the rate did not fall off as the file went on. Tab memory was not recorded.
Podcast or interview Not yet measured A real two-person conversation, one microphone, with permission to publish Crosstalk and two voices are the common real-world case; synthetic speech cannot stand in for it
Lecture Not yet measured Twenty minutes of a real lecture with permission Long stretches, one voice, room acoustics
Strong accent Not yet measured A non-native English speaker, recorded with consent Accent is the weak spot most often reported for the base model
Technical terminology Not yet measured A passage of software and medical vocabulary read by a person Jargon is where a small model substitutes plausible words

Real-time factor is processing time divided by audio length: 0.5 means the transcript took half as long as the recording. Word error rate (WER) is substitutions, insertions and deletions divided by the words in the reference, ignoring case and punctuation. Time is the tool's own measurement from the start of the job to the result view; it includes reading the model from the browser cache or, where marked, downloading it.

Machines
MachineCPUGPU used by the browserRAMOSNotes
Development laptop (2021)Intel Core i7-11390H, 4 cores / 8 threads, 3.4 GHz baseIntel Iris Xe integrated graphics (the WebGPU adapter Chrome selects; the machine also has an NVIDIA GeForce RTX 3050 Laptop GPU that Chrome does not pick)16 GBWindows 11 Home 24H2The machine the site is developed on. Every measurement so far is from it.
Desktop with a discrete graphics cardNot yet measured Not measured. Expected to be faster than the laptop above; how much faster is exactly what we do not know yet.
PhoneNot yet measured Not measured. Chrome for Android and Safari 26 ship WebGPU; whether the base model runs at usable speed on a phone is untested.

Method

A run is this site's transcriber in the named browser, driven by a script (scripts/record-sample-run.mjs in the repository) that picks the file as a visitor would and waits for the result. The time is the one the result view shows, from job start to last segment, including reading or downloading the model.

Word error rate comes from the same code as the examples page: raw segments against the reference, lower-cased, punctuation stripped. "3" against "three" counts as an error. A reconstructed reference passes its caveat on to the WER.

The model is cached unless the row says otherwise, because that is every visit after the first. One run per row; two consecutive cached runs here differed by under two seconds.

Known limitations of these numbers

  • All measurements so far are from one machine, a 2021 laptop using integrated graphics. Nothing here says how a desktop graphics card or a phone performs.
  • The clean-speech clip is synthetic. Text-to-speech is evenly paced and noise-free, and speech models do far better on it than on people. The word error rate on it is a floor, not a typical figure.
  • The reference transcript for the synthetic clip was reconstructed from the generation notes and a second model run, and has not been checked by a person listening. It is labelled so on the examples page.
  • The noisy, quiet and fast variants, when they appear here, are the same synthetic clip processed with ffmpeg, so they measure the model's robustness to those conditions, not a recording made under them.
  • Long-file runs use the same passage looped, which measures throughput and stability over time, not accuracy on new material.

Reproducing a row

Download the row's audio, drop it on the transcriber, compare the time. Your hardware changes the number; it should not change the transcript. Runs on hardware we lack are welcome: send browser version, CPU, GPU and RAM.