Benchmarks

LokalBot local model benchmarks

Accuracy and speed of the models that transcribe, search, summarize, and autocomplete on your Mac, with the methods, sources, and what has not been measured.

Key results

Every number comes from a report checked into the LokalBot repository. These are engine-level measurements on one machine, an Apple M4 Max MacBook Pro with 48 GB of unified memory. They are not end-to-end UI timings. The same data is summarized on the LokalBot benchmarks Space on Hugging Face.

Speech recognition accuracy and speed

The fixed set is 44 public clips totalling 271.3 seconds: 24 conversational clips from the AMI meeting corpus and 20 clean LibriSpeech clips. Every model received identical 16 kHz mono audio. Word error rate uses the standard Whisper English normalizer, so contractions such as “I've” and “I have” score the same. Run date: September 7, 2026.

MeasureGranite 4.1 Q4Granite 4.1 Q8Granite 5 TurboCTC
Normalized word error rate4.42%4.93%5.18%
AMI meeting audio8.83%9.09%10.13%
LibriSpeech read speech0.25%0.99%0.49%
Audio seconds per second (warm)33.2×29.3×280.2×
Median clip latency161 ms187 ms17.5 ms
Sampled peak memory (RSS)2.87 GiB3.62 GiB1.05 GiB

Granite Speech 5 was about 8× faster but English-only and unpunctuated, and it is not integrated into LokalBot. With a set this small, the accuracy differences do not establish a reliable ranking. Qwen3-ASR 1.7B, the default since LokalBot 0.8.1, was not part of this run. Parakeet and Whisper large-v3 turbo have not been scored against this set either. Source: model alternatives report.

Semantic search quality

Search was tested on 48 authored queries: 24 in English and 24 in Serbian/Montenegrin, across Latin and Cyrillic scripts. Queries ran against 110 passages, 86 of them distractors. The relevant passage for each query was fixed before inference. Both models used Q8 weights and 1,024-dimension vectors.

MeasureQwen3-Embedding 0.6BHarrier 0.6B
Correct passage ranked first35/48 (72.9%)40/48 (83.3%)
Correct passage in top five45/48 (93.8%)47/48 (97.9%)
English, ranked first22/2422/24
Serbian/Montenegrin, ranked first13/2418/24
Mean reciprocal rank0.8140.903
Median query latency11.85 ms11.97 ms

The gain came almost entirely from non-English queries. Forty-eight correlated queries are a pilot, not a general retrieval benchmark. Source: model alternatives report.

Meeting summary and action-item speed

This replay runs LokalBot's production summary and action extractor against two meeting transcripts with Qwen3.5 4B (Q4_K_M) on llama.cpp b10173. “Cold” includes starting the model runtime; “warm” reuses a loaded runtime. Transcription time is excluded. Run date: September 9, 2026.

MeetingTranscriptColdWarmModel calls
26-minute meeting4,477 words59.8 s33.4 s5
91-minute meeting11,229 words71.5 s74.2 s8

All four runs completed without truncated output. LokalBot's validator dropped notes and actions it could not tie to transcript evidence or to the right owner. That check covers evidence and ownership, not meaning, so factual coverage still needs human review. In the same September 7 pilot, the smaller MiniCPM5 2B model was faster on long context but misattributed action items and looped on one summary. Qwen3.5 4B remains the default. Sources: summary replay results and model alternatives report.

Autocomplete latency

The production --cotyping-bench harness runs 28 scenarios through the in-process llama.cpp engine. A model passes if it clears all 28 safety checks, completes at least 12 of 13 words, and keeps p95 latency at or below 2 seconds. Run date: July 21, 2026.

ModelSafetyWord completionsAveragep95Result
LFM2.5 1.2B Instruct (Q4_K_M)28/2812/13143–151 ms484–494 msPass ×3
Gemma 4 E4B Instruct28/2812/13399 ms1,830 msPass
Qwen3.5 2B27/2811/13437 ms1,629 msFail (quality)
Qwen3.5 4B27/2811/13434 ms1,652 msFail (quality)

Cold Metal kernel compilation on the first scenario took about 19 seconds for LFM2.5 and about 127 seconds for Gemma 4 E4B. Source: autocomplete benchmark.

Screenshot text recognition

When you opt in to saving screen text, LokalBot reads it with Apple Vision. On 5 synthetic screenshots with known text, Apple Vision scored 0.971 token F1 at 120 ms per image. The closest open-source engine, PP-OCRv6 medium, scored 0.974 but took 6.78 seconds per image and about 15 seconds to load. On 15 real screenshots, Apple Vision averaged 243 ms per image; every alternative tested took 1.3 to 22 seconds. Run date: June 24, 2026. Sources: synthetic OCR results and real-screenshot OCR results.

What has not been measured yet

Model choices change between releases. Settings → Models in the app shows your active selections, download sizes, and presets. For choosing a speech engine, see the local transcription model guide.

FAQ

Common questions

What hardware were these benchmarks run on?

All published runs used one Apple M4 Max MacBook Pro with 48 GB of unified memory. Results on M1, M2, and M3 Macs have not been measured yet, so treat the timings as one data point rather than per-chip guidance.

Which speech model does LokalBot use by default?

Qwen3-ASR 1.7B has been the default transcription model since LokalBot 0.8.1. The accuracy run on this page predates that change and compares IBM Granite Speech models; a Qwen3-ASR accuracy run has not been published yet.

How accurate is LokalBot's transcription?

On 44 public AMI and LibriSpeech clips, Granite Speech 4.1 (Q4) reached a 4.42% normalized word error rate: 8.83% on conversational AMI meeting audio and 0.25% on clean LibriSpeech read speech. Accuracy on your own recordings depends on microphones, accents, crosstalk, and vocabulary.

Can I reproduce these results?

Yes. The scripts, pinned model manifests, and raw results are in the Benchmarks folder on GitHub. A few inputs, such as a private transcript used only as a search distractor, are kept out of the repository and are noted in each report.

Try it locally

Find what you said or saw on your Mac.

Free, open source, and no account. Apple Silicon · macOS 15.0+

Download for macOS

Or with Homebrew: brew install --cask stevyhacker/tap/lokalbot