Choosing a model¶
Every number on this page is measured on this project's own benchmark harness, not quoted from a model card. The method and the machine are in benchmarks; if your CPU is slower, expect the same ordering with different absolute numbers.
The short answer¶
base.en is the default because it is the point where accuracy stops being annoying and latency is still under two seconds. Change it only if one of the rows below describes you.
English models, measured¶
| Model | Word-error rate | Median latency | Download | RSS after load¹ | Pick it when |
|---|---|---|---|---|---|
tiny.en | 4.82 % | 0.89 s | 78 MB | 165 MB | An old or very slow machine, or you value latency over the occasional wrong word |
base.en (default) | 4.07 % | 1.56 s | 148 MB | 202 MB | You have no specific reason to change |
small.en | 2.59 % | 5.05 s | 486 MB | 384 MB | Accuracy matters more than waiting — names, jargon, long-form writing |
¹ Resident memory of a process that has imported yazses.core.daemon and loaded the model (int8, CPU), re-measured 2026-10-21 on an AMD Ryzen 5 PRO 4650U. Decoding an 11 s clip then peaks at 272 / 344 / 618 MB. The earlier 857 / 874 / 1,340 MB figures were taken on 2026-08-06, when importing the daemon's dependencies alone cost about 820 MB; see the benchmarks memory section. The running daemon adds whatever switched-on features load at start.
Read the two ends of that table together: small.en cuts errors by roughly a third, and costs more than three times the wait on the same machine. For a sentence of dictation that is the difference between 1.5 s and 5 s, every time. The default sits at base.en because of that trade. This repository holds no usage data on how often people switch models, so treat the choice as a measured trade-off, not as observed behaviour.
How far to trust the latency column
The latency figures are single-run historical numbers from one laptop. They are good for ranking the three models against each other, not for predicting what your machine will do. The run recorded no load average and no thread count, so it cannot be shown to have been on an idle machine, and its model revisions and weight digests were not recorded.
The same documentation carries other latency figures for the same laptop CPU that disagree with this column: the low-RAM guide gives a much shorter decode for one clip, and the benchmarks Xeon matrix reports far lower real-time factors on a different machine. The three sets were never reconciled. The word-error-rate column is different: its rows trace to the committed benchmark data.
Fix the words it gets wrong, rather than buying a bigger model
A larger model does not know your colleagues' names or your codebase's identifiers. yazses vocab add <word> teaches the recogniser those directly, and [stt] vocab_correction repairs them after the fact — both are free and both help more than a model tier for the words you care about. See dictating code and technical vocabulary.
How to change it¶
Then apply it:
The model downloads once, on first use, and is cached in ~/.cache/huggingface/hub (the same path on Linux, macOS and Windows). Only the model you configure is downloaded — there is no bundle of all three. (The Hub is only the download host: see YazSes and Hugging Face for what runs where.)
Installing a model without network access¶
Transcription is offline. The model is not: it has to reach the machine once. That single download is the only moment YazSes needs the network, and on a locked-down machine — a personal firewall, a corporate proxy, an air-gapped box — it is exactly the moment that fails.
You do not have to leave it to chance. Fetch it as its own step:
yazses model list # every model, and which are already here
yazses model download base.en # fetch one deliberately, with progress
yazses quickstart checks this for you and puts the download in front of yazses start when the model is not yet on disk, so you do not have to know to come here first.
If the machine cannot reach huggingface.co at all, copy the model in by hand. yazses model list prints the cache directory; download the repo on any machine that does have access and place it there:
| Model | Repository |
|---|---|
tiny.en | https://huggingface.co/Systran/faster-whisper-tiny.en |
base.en | https://huggingface.co/Systran/faster-whisper-base.en |
small.en | https://huggingface.co/Systran/faster-whisper-small.en |
The names are not a pattern you can extrapolate — large resolves to large-v3, and turbo comes from a different organisation entirely — so take the repository from yazses model list rather than guessing.
You can also point [stt] model straight at a directory, which skips the cache and the hub completely:
yazses doctor reports whether the configured model is present either way, and if the daemon ever starts without one it says which of these routes to take instead of failing silently.
Non-English¶
Drop the .en. base.en is English-only — those checkpoints carry no language tokens at all, so pointing one at German does not fail, it transliterates into fluent-looking English nonsense. base is the multilingual build of the same size. Full detail, presets and a smoke test: dictating in more than one language.
The other engines¶
Whisper is not the only option; [stt] engine selects among three.
| Engine | Choose it for | Cost |
|---|---|---|
faster-whisper (default) | works everywhere, multilingual, word timings | — |
parakeet | best English accuracy per unit of CPU | ~600 MB model, English only, no initial_prompt |
moonshine | short bursts on a small machine; installs without torch | English only, no word timings |
This page does not record the model revision, weight digest or licence of the Parakeet, Moonshine or Systran faster-whisper checkpoints behind these rows (model revision not recorded). Check the checkpoint's own model card for its licence before you redistribute or build on it.
Both alternatives ignore initial_prompt, which is a Whisper concept. Your personal dictionary still reaches them — [stt] vocab_correction repairs mis-heard vocabulary after decoding, which is why it was built to be engine-agnostic.
Enable either with yazses features enable stt-parakeet / stt-moonshine; that installs only that engine's dependencies. Disabling restores faster-whisper. Both load English-only checkpoints, so enabling either is refused, with nothing written, while [stt] language names a language other than English; yazses doctor would otherwise report the pair as a failure and dictation would be refused at the next start.
What this page does not claim¶
These are English figures from one benchmark corpus on one machine. They are useful for ranking the models, which is the decision this page exists for. They are not a claim about your accent, your microphone, or your room — and per-language quality varies far more than model size alone predicts.