Instructions to use Joni000000000/s1-mini-de-v3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Joni000000000/s1-mini-de-v3 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 Joni000000000/s1-mini-de-v3:Q4_K_M # Run inference directly in the terminal: llama cli -hf Joni000000000/s1-mini-de-v3:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Joni000000000/s1-mini-de-v3:Q4_K_M # Run inference directly in the terminal: llama cli -hf Joni000000000/s1-mini-de-v3:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf Joni000000000/s1-mini-de-v3:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf Joni000000000/s1-mini-de-v3:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf Joni000000000/s1-mini-de-v3:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf Joni000000000/s1-mini-de-v3:Q4_K_M
Use Docker
docker model run hf.co/Joni000000000/s1-mini-de-v3:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use Joni000000000/s1-mini-de-v3 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Joni000000000/s1-mini-de-v3" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Joni000000000/s1-mini-de-v3", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Joni000000000/s1-mini-de-v3:Q4_K_M
- Ollama
How to use Joni000000000/s1-mini-de-v3 with Ollama:
ollama run hf.co/Joni000000000/s1-mini-de-v3:Q4_K_M
- Unsloth Desktop
- Pi
How to use Joni000000000/s1-mini-de-v3 with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Joni000000000/s1-mini-de-v3: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": "Joni000000000/s1-mini-de-v3:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Joni000000000/s1-mini-de-v3 with Docker Model Runner:
docker model run hf.co/Joni000000000/s1-mini-de-v3:Q4_K_M
- Lemonade
How to use Joni000000000/s1-mini-de-v3 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Joni000000000/s1-mini-de-v3:Q4_K_M
Run and chat with the model
lemonade run user.s1-mini-de-v3-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use Joni000000000/s1-mini-de-v3 with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Joni000000000/s1-mini-de-v3: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 Joni000000000/s1-mini-de-v3:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Joni000000000/s1-mini-de-v3 with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Joni000000000/s1-mini-de-v3: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 "Joni000000000/s1-mini-de-v3: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-de-v3
A German dictation-normalization model: a full finetune of superwhisper/s1-mini (Qwen3, 596M params) that cleans raw German ASR output โ filler words, stutters, self-corrections, du/Sie styling, list formatting, and spoken-number conversion โ into finished written German.
It is the normalizer stage of yappr, a local press-to-talk dictation app for Hyprland/Wayland (Parakeet TDT v3 German ASR โ this model โ guardrail โ typed into the focused window). It runs in-process via llama.cpp.
This repo ships the v3 checkpoint: s1-mini-q4_k_m-de-v3.gguf (Q4_K_M, 379 MB)
sha256: 1cc4f7e0bad193ed98da7267f26be074f90ad42f2a5bdaecf5521772f0c227a3
What it does
Input is real Parakeet TDT 0.6b v3 German output: already punctuated and capitalized, fillers kept verbatim ("รคh", "รคhm", "halt", "quasi"), numbers usually as words (including German ones-before-tens order: "siebenundachtzig" = 87), occasional compound splits ("Holz Dieb") and misheard words. The model:
- removes fillers and stutter repetitions, repairs self-corrections
- applies a requested styling axis (casual โฆ formal, incl. du โ Sie conversion)
- emits real list lines when the speaker enumerates (structure: lists)
- converts only the saturated number forms: clock times ("vierzehn Uhr dreiรig" โ "14:30 Uhr"), percentages ("siebenundachtzig Prozent" โ "87 Prozent"), dates, years, money with German thousands point ("zwei tausend acht hundert Euro" โ "2.800 Euro"); relative times like "halb drei" deliberately stay as words
- otherwise leaves correct words alone โ the downstream guardrail rejects any output with < 70 % token overlap against the input
Prompt format
ChatML (Qwen3), greedy sampling, with a pre-closed think block. The user turn starts with a control line:
<|im_start|>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.<|im_end|>
<|im_start|>user
[Styling: semi-casual] [Structure: prose] [Context: general]
รhm ja also ich glaub wir sollten das Meeting auf vierzehn Uhr dreiรig verschieben.<|im_end|>
<|im_start|>assistant
<think>
</think>
Styling:casual | semi-casual | semi-formal | formalStructure:prose | listsContext:general | email
Run it with llama.cpp:
llama-server -m s1-mini-q4_k_m-de-v3.gguf -c 4096 --port 8899
python3 probes/run.py --out results.json # needs the yappr source tree, see below
Training
Full SFT (not LoRA) on one RTX 3090 โ see train_s1_de.py:
- base:
superwhisper/s1-mini@88f6b15896c73bbb13a3b596e0afe8ea0d5150b4(the upstream repo replaces weights in place; pin the sha) - 3 epochs, lr 1e-5 cosine (S1-mini is already a finetuned specialist; higher LRs destroy its control-line behaviour), effective batch 32, bf16, max_length 1024, no packing, loss masked to the completion
- exported to GGUF and quantized to Q4_K_M with
export_gguf.py
Dataset and eval code in this repo
SPEC.mdโ the dataset spec: the measured Parakeet output style, the guardrail constraints every row must survive (โฅ 0.70 token overlap is the one that bites), the number-conversion table, and what each part file targets.part-*.jsonlโ the dataset sources (~1000 rows). Parts gโo each pin a measured failure class, written after reproducing it.build_dataset.pyassemblestrain.jsonl/val.jsonlwith per-part oversampling (PART_WEIGHTS).probes/โ 69 held-out failure-class probes (never training data) plus recorded answers for the baseline, v2, v3, and v4 checkpoints.probes/run.pyrenders the prompt byte-identically to yappr'snormalize::render_chat_promptby reading the system prompt out of the Rust source, so it needs the yappr source tree to run; the exact prompt is reproduced above.
Versioning note: v3 was trained on parts aโn. part-o-v3-residuals.jsonl is
included here for completeness but postdates this checkpoint โ it pins what v3 left
broken (auxiliary-switch chains under a lead-in, over-listing of three-item chains,
more "siebenundachtzig" contexts) and feeds the next retune.
License
Inherits the license of superwhisper/s1-mini (license: other), itself a finetune of
Qwen/Qwen3-0.6B. Check the base model's terms before commercial use.
- Downloads last month
- -
4-bit