Back to AI guides

S1-mini: A 600M Parameter Model for Cleaning ASR Transcripts Locally

Stanley Ulili
Updated on August 31, 2026

Raw ASR output is accurate but messy. It captures everything you say including filler words, self-corrections, false starts, and spoken numbers and email addresses that need formatting. Cleaning this manually is tedious; routing it through a cloud LLM costs money and raises privacy concerns. S1-mini is a 0.6-billion-parameter model from Superwhisper built for exactly this one task: taking raw ASR output and rewriting it as clean written text, entirely on-device.

The model is fine-tuned from Qwen3-0.6B, released in August 2026, and available in GGUF format at superwhisper/s1-mini-GGUF on Hugging Face. The Q4KM quantized build is 462 MB. It runs comfortably on a laptop CPU. On a held-out evaluation set of 7,519 English cases across 104 transcripts, it reaches 94.8% token accuracy with a text-edit error rate of 11.6%.

Important: S1-mini ships under a custom license, not MIT or Apache. Check the license on the Hugging Face model card before building a product on top of it.

What it does and doesn't do

S1-mini is not a speech model and does not process audio. It takes an existing text transcript and normalizes it:

  • Removes filler words (um, uh, like, you know)
  • Resolves self-corrections to the value the speaker landed on
  • Applies punctuation and capitalization
  • Formats spoken numbers, dates, times, currencies, and email addresses as written text

A visual representation of the Speech-to-Text pipeline, showing how an audio signal (Speech) is turned into raw text (ASR) and then refined into a final, readable format (Clean Text).

It will not add content you didn't say, correct facts, soften profanity, or rewrite your dialect. Superwhisper describes it as "ruthlessly obedient." If the input is filler-only or noise-only, it correctly returns an empty string. Fewer than 1% of generations show degenerate behavior such as looping or truncation.

It is not a chat model and won't follow general instructions. It does one job, steered by a control line at the top of the input.

A clear diagram illustrating the S1-mini workflow. It shows "Raw transcript" as the input, which goes into the "S1-mini" model, resulting in "Clean text" as the output.

Installation with Ollama

GGUF builds work with Ollama, LM Studio, and any runner built on llama.cpp. Download the Q4KM build:

 
curl -L -o ~/Desktop/s1-mini-q4_k_m.gguf "https://huggingface.co/superwhisper/s1-mini-GGUF/resolve/main/s1-mini-q4_k_m.gguf"

A terminal window showing the exact `curl` command used to download the S1-mini GGUF model file from Huggingace.

Create a Modelfile on the desktop:

s1-mini-modelfile
FROM ./s1-mini-q4_k_m.gguf
SYSTEM "You are a text normalizer for speech-to-text transcripts. The input begins with a control line specifying the styling, structure, and context settings; clean the transcript to match those settings and output only the cleaned text."

The model card warns explicitly: if you change the system prompt wording, or send values outside the trained control sets, the model can hallucinate or produce garbled output. Use the system prompt exactly as shown.

Create the Ollama model (run from the directory containing both files):

 
ollama create s1-mini -f ./s1-mini-modelfile

Run it:

 
ollama run s1-mini

The control line format

Every input starts with a control line that steers the output. The three axes are:

  • Styling: casual, semi-formal, or formal
  • Structure: prose or lists
  • Context: general, email, or others
 
[Styling: semi-formal] [Structure: prose] [Context: general]
<raw transcript here>

All three axes were included in training. Send all three, in the format shown. Omitting one or using untrained values can cause unexpected behavior.

Examples

Support ticket dictation

Raw input:

Output
So uh the login is broken on mobile, wait no, it's only broken on iOS safari, android is fine, users are getting a blank screen after they enter their password and hit submit, started happening after the last deploy yesterday. Email support at better stack dot com.

Clean output:

Output
So the login is broken on iOS Safari. Android is fine. Users are getting a blank screen after they enter their password and hit submit. It started happening after the last deploy yesterday. Email support@betterstack.com.

The terminal output showing the "before" and "after" text. The raw, messy input is at the top, and the perfectly cleaned and formatted output from S1-mini is shown directly below it.

Filler removed, self-correction resolved to "iOS Safari," punctuation added, email address formatted.

Action items as a list

Using [Structure: lists] with ordinal words in the transcript:

Raw input:

Output
Okay so action items from the call, first we need to bump the rate limit on the public API, second someone should investigate the memory leak in the worker process, and third we should schedule a follow-up with the security team next week... ok.

Clean output:

Output
Okay, so action items from the call:
1. Bump the rate limit on the public API.
2. Someone should investigate the memory leak in the worker process.
3. We should schedule a follow-up with the security team next week.

The model identifies the ordinal words and formats the output as a numbered list.

Building a complete local pipeline

With mlx-whisper or any other CLI ASR tool, you can pipe output directly to S1-mini:

 
mlx_whisper audio.m4a --model mlx-community/whisper-large-v3-mlx --output_format txt
 
ollama run s1-mini "[Styling: semi-formal] [Structure: prose] [Context: general] $(cat audio.txt)"

A composite view of the terminal. The top part shows the MLX Whisper transcription process, while the bottom part shows the `ollama run` command that pipes the generated text into S1-mini for cleaning.

$(cat audio.txt) substitutes the file contents inline. The control line comes first, followed by the raw transcript. The final clean text prints to stdout. No network requests, no API keys.

Why a specialized model instead of a general LLM

General-purpose LLMs can clean transcripts, but their broad capabilities are sometimes a liability for this task. They may rewrite sentences rather than just normalizing them, change phrasing, or add content that wasn't said.

A conceptual diagram comparing a general model to a task-specific model. The general model has many potential output paths (rewrite, summarize, expand), while the task model has a single, focused path: "Normalize".

S1-mini's narrow training means it's predictable: it normalizes and stops. It doesn't interpret intent or add context. For transcript cleanup specifically, that constraint is a feature. The size difference also matters at scale: 0.6B parameters versus 70B or more means much lower memory requirements, near-instant latency, and zero inference cost once downloaded.

Current limitations

S1-mini v1 covers English only. The model processes transcripts segment by segment, so self-correction resolution doesn't work across segment boundaries, which matters if you're feeding it short utterances from a live ASR pipeline rather than full transcripts. As with any release-v1 model, edge cases exist. Check the model card and benchmark it on your actual transcription output before relying on it in production.

Got an article suggestion? Let us know
Licensed under CC-BY-NC-SA

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.