Key takeaways
- SpeakoFlow Mini is an 833 MB dictation cleanup model, fine-tuned from Qwen3.5-0.8B, Apache-2.0, English, running offline on a CPU at a median of 2,509 ms per transcript.
- It returns already-correct transcripts untouched 92.6% of the time and produces the exactly-right output on 48.8% of transcripts that needed an edit, for 70.7% overall.
- A program that changes nothing scores exactly 50.0% on this scale. Four of the seven systems tested score below it, and two of those look safe if you read only the restraint column.
- Fine-tuning took edit accuracy from 4.9% to 48.8% against the identical untuned base model, at the same file size, prompt and hardware, and cost nothing measurable in restraint.
- 10.7% of transcripts still come back missing a word the speaker said. That is published because it is the number to beat.
Disclosure: SpeakoFlow is our product and I both built this model and wrote the evaluation it is scored on, so read this as an informed account rather than a neutral review. Where a hosted frontier model wins is stated in full below, including a sensitivity analysis that puts it ahead of Mini on one metric.
SpeakoFlow Mini is out. It is an 833 MB model that takes a dictated transcript, applies the correction the speaker actually made, and leaves everything else exactly as it was said. It runs offline on a CPU, it is Apache-2.0, and you can pull it from Hugging Face today.
The reason it exists is narrower than "clean up dictation". A current recogniser already punctuates, capitalises, drops filler words and formats numbers. Say "the deposit is three hundred dollars, um, and the meeting is at nine thirty" into SpeakoFlow with cleanup switched off and you get "The deposit is $300 and the meeting is at 9:30" back, with no language model in the loop. What is left over is small, and it is all judgement.
What does SpeakoFlow Mini actually do?
It handles the residue a recogniser cannot reason about. You corrected yourself mid-sentence. You said an email address out loud. You asked for a new paragraph. You said a word that came through the recogniser perfectly and was still the wrong word. Those need a decision about what you meant, and a pattern cannot make one.
| You dictate | It returns |
|---|---|
| Let's ship it Thursday, no, Friday. | Let's ship it Friday. |
| Email me at sam at example dot com | Email me at sam@example.com |
| Thanks for the update. New paragraph. I'll review it tonight. | Thanks for the update. I'll review it tonight. |
| Thanks for the update. I'll review it tonight. | Thanks for the update. I'll review it tonight. |
The fourth row is the whole point. Nothing was wrong with it, so nothing changed, down to the character. Fifteen categories are trained and scored, from retractions and spoken symbols through to empty input, truncated input and recogniser hallucination loops. Every one of them is a decision, and in several of them the correct decision is to do nothing.
SpeakoFlow Mini is not a rewriter and not an assistant. A question inside your transcript gets transcribed, never answered. An instruction inside your transcript is content, not a command. Tone and formality are out of scope, because changing how formally you speak means replacing words you said.
Why is knowing when not to edit the hard part?
Hand a capable language model a sentence that is already correct and it will find something to improve. A comma becomes a full stop. A sentence becomes a heading. A paragraph becomes bullets. A word becomes a smoother synonym.
Each of those edits is defensible on its own, and each one is wrong, because you said the other thing and now you have to undo the improvement. Undoing an unwanted edit costs more than making the edit by hand would have. A cleanup feature that does this is worse than no cleanup feature.
So the evaluation scores two things separately. Restraint is the share of already-correct transcripts returned untouched. Edit accuracy is the share of transcripts needing a change that came back exactly right, on an exact string match with no partial credit. Overall is the unweighted mean of the two.
The mean is unweighted for one reason: the evaluation set is close to evenly split between transcripts that need an edit and transcripts that do not, so a plain accuracy figure would score a program that changes nothing at 45.3%, which reads like it half works. The mean scores that same do-nothing strategy at exactly 50.0%. Anything under 50 is worse than leaving the transcript alone.
What are the numbers?
Held-out evaluation, temperature 0, every system given the same short system prompt with reasoning off. Restraint and edit accuracy are the two scored axes; content damage is the share of transcripts that lost a word the speaker said, reported separately because no penalty weight for it would be anything but arbitrary.
| System | Overall | Restraint | Edit accuracy | Content damage |
|---|---|---|---|---|
| SpeakoFlow Mini (0.8B, local CPU) | 70.7% | 92.6% | 48.8% | 10.7% |
| GPT-5.6 Luna (hosted frontier) | 65.0% | 82.4% | 47.6% | 12.0% |
| Qwen3.5 9B (hosted) | 55.8% | 89.7% | 22.0% | 6.7% |
| Do nothing (baseline) | 50.0% | 100.0% | 0.0% | 0.0% |
| Qwen3.5 0.8B, the untuned base | 47.3% | 89.7% | 4.9% | 6.0% |
| Gemma 4 E2B (local CPU) | 47.0% | 79.4% | 14.6% | 13.3% |
| S1-mini (shipped cleanup model) | 15.3% | 22.1% | 8.5% | 55.3% |
| Sotto 350M (shipped cleanup model) | 11.7% | 16.2% | 7.3% | 60.7% |
Read the untuned base row and the Gemma row together. Both look respectable on restraint, at 89.7% and 79.4%, and both score below doing nothing. They alter text they should have left alone and then fail to make the change that was actually needed. Restraint on its own is not competence, which is exactly why the overall score is never printed here without both halves beside it.
The strongest result on the page is not the comparison against anything hosted. It is the controlled one. Against the identical untuned Qwen3.5-0.8B at the same file size, quantisation, prompt and hardware, edit accuracy went from 4.9% to 48.8%, a gain of 23.4 points overall with a 95% confidence interval of +16.3 to +30.3. Restraint went from 89.7% to 92.6%, a difference of a single case that this set cannot resolve.
The usual expectation is that teaching a model to edit costs restraint. Here it cost nothing measurable.
Every published rate is deterministic exact string match. A tier that used frontier models to judge disputed outputs was built and run: four models from four vendors adjudicated the same cases and agreed on too few of them to be usable, so the choice of judge moved the result more than the answers did. That tier was dropped rather than tuned, and no judge score is published anywhere.
How do you run it?
It is a GGUF, so anything that loads GGUF loads it. Send the transcript as the user message with nothing added: no instructions, no delimiters, no examples. The system prompt was fine-tuned into the model and is printed in full on the model card.
- llama.cpp, straight from the Hub.
llama-cli -hf SpeakoFlow/speakoflow-mini:Q8_0, orllama-serverfor an OpenAI-compatible endpoint on port 8080. - Ollama.
ollama run hf.co/SpeakoFlow/speakoflow-mini - LM Studio. Search
speakoflowin the app, orlms get SpeakoFlow/speakoflow-mini@Q8_0. - Two settings are not optional. Do not cap
max_tokens, because a truncated long transcript counts as lost content. Disable thinking, because any reasoning text in the output fails every already-correct case for reasons that have nothing to do with cleanup. At its defaults this model emits zero reasoning characters.
Five quantisations are published and every one was run through the same evaluation, so the ladder states its own cost rather than leaving you to guess.
| File | Size | Overall | Outputs differing from Q8_0 |
|---|---|---|---|
| Q8_0, the reference build | 833 MB | 70.7% | reference |
| BF16 | 1,558 MB | 70.7% | 2.0% |
| Q6_K | 647 MB | 70.1% | 1.3% |
| Q5_K_M | 593 MB | 70.0% | 2.0% |
| Q4_K_M | 542 MB | 69.4% | 7.3% |
Take Q8_0. The spread down the ladder is smaller than this evaluation can resolve, so Q4_K_M being 1.3 points behind means very little. What is a count rather than an estimate is that 7.3% of its outputs differ from Q8_0, so it demonstrably changes what the model says without demonstrably changing how often it is right.
Speed, measured on a Ryzen 7 7700X with 8 threads and reasoning off: 2,509 ms median on CPU, 311 ms with all layers on a GPU. That is 8.1x on median latency from one flag, with restraint and edit accuracy unmoved. Every published accuracy rate is the CPU rate.
How does it compare to a hosted frontier model?
Overall, it is a tie, and I want to be precise about that. The gap over GPT-5.6 Luna is 5.8 points with a 95% confidence interval of -1.5 to +12.9. That interval contains zero. Gaps under about six points are not resolvable by this evaluation at all.
What is resolved is length. On passages of 500 words and up the gap is +20.9 points, interval +7.0 to +35.6. Long passages are what people actually dictate, so that is the result I care about, but it is one band and not the headline.
Where SpeakoFlow Mini wins
- Restraint, by 10.2 points, on the cases where correct means changing nothing.
- Long dictation, on passages of 500 words and up, by a resolved margin.
- 833 MB, offline, no network round trip, no per-call cost.
- It works unconfigured. The convention is in its weights rather than in a prompt you have to get right on every call.
Where the hosted model wins
- Everyday use, genuinely. Real dictation throws up oddballs no category anticipated, and a far larger model reads those situations better. I have watched it happen often enough to say so plainly.
- It was not tested at its best. Both systems got the same short prompt with no reasoning budget, which is the configuration Mini was trained for. Given a longer prompt and room to reason, Luna does better than the figure here.
- On the audited subset it is ahead. Removing the scored cases an internal audit found defective or disputed puts its edit accuracy above Mini's, 55.9% against 54.4%.
- No 833 MB download, no local hardware, and it handles languages this model does not.
So the honest claim is narrow and worth stating exactly: under one fixed short prompt with no reasoning budget, a 0.8B model running locally matches a hosted frontier model on this task. Not beats. Matches, and the confidence interval says the same thing.
The mechanism behind that is the same one behind the fine-tuning gain. Mini has the convention in its weights. Anything hosted has to be told the convention in a prompt on every single call and then has to follow it. Training on a written specification beats prompting for it, and that is a smaller and more defensible finding than beating a frontier model.
The constraint is also the product, not a handicap picked to flatter the result. Cleanup runs while somebody waits for text to appear in the box they are typing into. A longer prompt costs tokens on every call, a reasoning budget costs seconds, and both cost a network round trip.
What does it get wrong?
10.7% of transcripts come back missing a word the speaker said. Losing content is the failure mode I care most about and the one I would most like to see somebody beat, which is why the figure is on the model card rather than in a footnote.
It works on text, so if the recogniser heard the wrong word and nothing in the sentence gives that away, this model cannot recover it. It is English-only: the specification, the training and every number are English, and the only non-English behaviour taught or scored is leaving it alone under an absolute rule never to translate. The base tokenizer covers languages this work does not, so it will produce output for non-English input that nothing here evaluates.
Deterministic fixes are out of scope on purpose. Filler removal, punctuation, capitalisation and number formatting are not trained into it, because the rules layer already does them and a rule is faster and auditable. That layer is published separately under MIT, in Python and TypeScript, with a specification, pattern tables and a conformance suite. The two-stage design has its own write-up, including why the ordering matters.
And the evaluation shares an author with the model, which is a real conflict. The mitigations are structural rather than reassuring: the scoring is deterministic with no model in the loop, the judge experiment that would have flattered this model was discarded and reported, and the sensitivity analysis that puts a competitor ahead is published because it is true.
Frequently asked questions
What does SpeakoFlow Mini actually do?
It reads a transcript and returns the corrected version, applying the fix the speaker made and changing nothing else. It handles retractions, spoken symbols and dictation commands, wrong words that were transcribed correctly, and recogniser stumbles. It does not answer questions in the text, translate it, or rewrite its tone.
Do I need a GPU to run it?
No. Every published accuracy figure comes from a CPU run on a Ryzen 7 7700X using 8 threads, at a median of 2,509 ms per transcript. A GPU cuts that to 311 ms, an 8.1x improvement on median latency, but the scores are the same either way.
Which quantisation should I download?
Q8_0, at 833 MB. It is the build the app downloads and the one every number on the model card describes. Q4_K_M is 542 MB and scores 69.4% against Q8_0's 70.7%, which this evaluation cannot resolve, but 7.3% of its outputs differ from Q8_0. It changes what the model says without measurably changing how often it is right.
Is it better than a hosted frontier model?
Overall, no. The gap over GPT-5.6 Luna is 5.8 points with a 95% confidence interval of -1.5 to +12.9, which contains zero, so that is a tie. Only on passages of 500 words and up is the gap resolved, at +20.9 points. Both models ran under the same short prompt with reasoning off, which is the configuration Mini was trained for and not the hosted model at its best.
Does it replace filler removal and punctuation?
No, and that is deliberate. Filler words, punctuation, capitalisation and number formatting are handled by the recogniser and by a separate deterministic rules layer, which is published on its own under an MIT licence. A pattern does that work faster, for free, and auditably. Run the two together.
What is the biggest weakness?
10.7% of transcripts come back missing a word the speaker said. That is the number worth beating, and it is published for exactly that reason. The model is also English-only, and an internal audit found some scored reference cases defective; with those removed the hosted model's edit accuracy comes out above Mini's, 55.9% against 54.4%.
Dictate into anything, with the cleanup running on your own machine
SpeakoFlow transcribes and cleans up locally. Your voice never leaves the computer, and there is no account and no usage cap.
Windows, macOS, and Linux. MIT licensed. No account, no telemetry.