Instructions to use 0x56696B/S1-mini-dev-dictation with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use 0x56696B/S1-mini-dev-dictation with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="0x56696B/S1-mini-dev-dictation") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("0x56696B/S1-mini-dev-dictation") model = AutoModelForCausalLM.from_pretrained("0x56696B/S1-mini-dev-dictation", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use 0x56696B/S1-mini-dev-dictation with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M # Run inference directly in the terminal: llama cli -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M # Run inference directly in the terminal: llama cli -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama cli -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M
Use Docker
docker model run hf.co/0x56696B/S1-mini-dev-dictation:Q4_K_M
- Llama new
- LM Studio
- Jan
- vLLM
How to use 0x56696B/S1-mini-dev-dictation with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "0x56696B/S1-mini-dev-dictation" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "0x56696B/S1-mini-dev-dictation", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/0x56696B/S1-mini-dev-dictation:Q4_K_M
- SGLang
How to use 0x56696B/S1-mini-dev-dictation with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "0x56696B/S1-mini-dev-dictation" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "0x56696B/S1-mini-dev-dictation", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "0x56696B/S1-mini-dev-dictation" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "0x56696B/S1-mini-dev-dictation", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Ollama
How to use 0x56696B/S1-mini-dev-dictation with Ollama:
ollama run hf.co/0x56696B/S1-mini-dev-dictation:Q4_K_M
- Unsloth Desktop
- Pi
How to use 0x56696B/S1-mini-dev-dictation with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "0x56696B/S1-mini-dev-dictation:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use 0x56696B/S1-mini-dev-dictation with Docker Model Runner:
docker model run hf.co/0x56696B/S1-mini-dev-dictation:Q4_K_M
- Lemonade
How to use 0x56696B/S1-mini-dev-dictation with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull 0x56696B/S1-mini-dev-dictation:Q4_K_M
Run and chat with the model
lemonade run user.S1-mini-dev-dictation-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use 0x56696B/S1-mini-dev-dictation with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default 0x56696B/S1-mini-dev-dictation:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use 0x56696B/S1-mini-dev-dictation with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "0x56696B/S1-mini-dev-dictation:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
S1-mini-dev-dictation
This card is the README of the Hugging Face model repo. The
LICENSEandNOTICEfiles in that repo are S1-mini's own files.
This model is "S1-mini" by "Superwhisper", fine-tuned for dictating software engineering, DevOps and AI-tooling text. It is a modified version of superwhisper/s1-mini, itself a fine-tune of Qwen/Qwen3-0.6B. The input format, the output style and the control line are unchanged: it is a drop-in replacement for S1-mini.
Naming (licence term)
The LICENSE adds one term to Apache 2.0: any use, distribution, or integration of this model, whether unmodified or as part of a derivative work or product, must continue to identify it by its original name, "S1-mini" by "Superwhisper", using that exact capitalization, regardless of any other name under which the model or a product incorporating it is marketed or distributed. "S1-mini-dev-dictation" is only the name of this fine-tune. The model is S1-mini by Superwhisper.
What changed
Modified from S1-mini (Apache 2.0, section 4(b) notice):
- LoRA fine-tune (rank 16, scale 4.0, dropout 0.05) on every linear layer of all 28 blocks, trained with
mlx-lm for 4 epochs at learning rate 1e-4, batch size 8.
The loss covers the cleaned text only; the system prompt, control line, transcript and the empty
<think>block are masked. - The adapter is merged into the bf16 weights. Architecture, vocabulary, tokenizer, chat template and system prompt are the original S1-mini files.
- GGUF builds (
Q8_0,Q4_K_M) are converted from the merged weights with llama.cpp.
Target behaviour added by the fine-tune (these are training targets, not measured results):
| Spoken (ASR) | Written |
|---|---|
so the a d o ticket needs the m c p config |
The ADO ticket needs the MCP config. |
queen three point five four b through sherpa on x |
Qwen3.5-4B through sherpa-onnx. |
tilde slash dot omp slash agent slash watchdog dot yml |
~/.omp/agent/WATCHDOG.yml |
whisper dot c p p with the d e r metric |
whisper.cpp with the DER metric |
A leading filler "so" is dropped. Dictated requests are cleaned, never answered.
Training data
Pairs of raw ASR-style transcripts and cleaned text, 1,248 rows in all (1,123 for training, 125 for validation):
- 249 pairs for the failure cases above, drafted with an AI assistant from the author's dictation style;
- 564 rows from sentence templates filled from a vocabulary list (written form, spoken forms, category), with injected fillers and self-corrections; the template outputs were drafted the same way;
- 36 transcripts cleaned by a larger model (Qwen3.5-9B) with a fixed instruction prompt, then read row by row (32 labels corrected);
- 399 synthetic general non-technical transcripts cleaned by stock S1-mini and then read row by row (59 labels corrected, 1 row dropped), to keep its general behaviour (anti-forgetting).
The rows cover all four styles (1,013 semi-formal, 81 formal, 78 casual, 76 semi-casual) and include 175
Context: email rows. 69 rows show a bullet list. Every row passes four checks: no number that the transcript does not
say, no um, uh or er, no bullets under Structure: prose, and no kept leading "so" in the semi-formal
and formal styles.
No private, customer or credential data is included. A held-out set was never trained on.
Usage
Identical to S1-mini. Send the system prompt and the control line exactly, decode greedily, and turn thinking off:
from transformers import AutoModelForCausalLM, AutoTokenizer
MODEL = "0x56696B/S1-mini-dev-dictation"
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForCausalLM.from_pretrained(MODEL, torch_dtype="auto")
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."
)
control = "[Styling: semi-formal] [Structure: prose] [Context: general]"
messages = [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": f"{control}\nso the a d o ticket needs the m c p config"},
]
text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)
inputs = tok(text, return_tensors="pt")
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
print(tok.decode(out[0][inputs.input_ids.shape[1]:], skip_special_tokens=True))
llama.cpp: llama-server -hf 0x56696B/S1-mini-dev-dictation:Q4_K_M --jinja --chat-template-kwargs '{"enable_thinking":false}' --temp 0.
Ollama: create a Modelfile that starts the assistant turn with the empty think block, set
PARAMETER repeat_penalty 1 and PARAMETER temperature 0, and send "think": false with every request.
Evaluation
Held-out set: 59 cases never used in training, scored on the Q4_K_M GGUF through Ollama (greedy).
| model | cases | exact match | word accuracy | char accuracy |
|---|---|---|---|---|
| S1-mini (base) | 59 | 32.2% | 78.2% | 91.0% |
| S1-mini-dev-dictation (this model) | 59 | 84.7% | 93.8% | 97.3% |
On the ten examples in the S1-mini card (semi-formal, formal and casual, plus a list and an email) this model matches the card output in 9 and the base Q4_K_M build in 7.
Limitations
- English only, tuned to one speaker's dictation vocabulary. Terms outside the training vocabulary get no
special handling:
tsconfig.jsonandparakeet-unified-en-0.6bare not built from the spoken parts. Structure: listsandContext: emailare not a focus of the fine-tune. It reproduces the list example in the S1-mini card but drops that example's leading "So", and one three-itemlistscase in the held-out set stayed prose.- Known held-out failures (9 of 59): the
WATCHDOG.ymlfile name comes out lowercase,pyannoteandWezTermget a wrong capital, a sentence after a spoken "period" can start lowercase, spoken "colon" and "new line" can stay words, and one email case gets an extra comma. - Long run-on dictations: in a spot check of 15 long real dictations kept out of the training data, 4 outputs lost or changed words (a dropped clause, a dropped opening phrase, a rarely seen name replaced by a trained term). The base model kept more of the text there. Compare long outputs with the input.
- Inherits the limits of S1-mini and Qwen3-0.6B. Check the output before you rely on it.
License
Apache License 2.0 plus the S1-mini naming term, the same terms as S1-mini. LICENSE and NOTICE are
included unchanged. S1-mini is Copyright 2026 Superwhisper and a derivative of Qwen3-0.6B, Copyright 2024
Alibaba Cloud.
Citation
@misc{s1mini2026,
title = {S1-mini: a small text normalizer for speech-to-text output},
author = {Superwhisper},
year = {2026},
url = {https://huggingface.co/superwhisper/s1-mini}
}
@misc{qwen3technicalreport,
title = {Qwen3 Technical Report},
author = {Qwen Team},
year = {2025},
eprint = {2505.09388},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2505.09388}
}
- Downloads last month
- 492