Instructions to use whisperstream/stream-1-mini 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 whisperstream/stream-1-mini 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 whisperstream/stream-1-mini:F16 # Run inference directly in the terminal: llama cli -hf whisperstream/stream-1-mini:F16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf whisperstream/stream-1-mini:F16 # Run inference directly in the terminal: llama cli -hf whisperstream/stream-1-mini:F16
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 whisperstream/stream-1-mini:F16 # Run inference directly in the terminal: ./llama-cli -hf whisperstream/stream-1-mini:F16
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 whisperstream/stream-1-mini:F16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf whisperstream/stream-1-mini:F16
Use Docker
docker model run hf.co/whisperstream/stream-1-mini:F16
- LM Studio
- Jan
- vLLM
How to use whisperstream/stream-1-mini with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "whisperstream/stream-1-mini" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "whisperstream/stream-1-mini", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/whisperstream/stream-1-mini:F16
- Ollama
How to use whisperstream/stream-1-mini with Ollama:
ollama run hf.co/whisperstream/stream-1-mini:F16
- Unsloth Desktop
- Pi
How to use whisperstream/stream-1-mini with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf whisperstream/stream-1-mini:F16
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": "whisperstream/stream-1-mini:F16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use whisperstream/stream-1-mini with Docker Model Runner:
docker model run hf.co/whisperstream/stream-1-mini:F16
- Lemonade
How to use whisperstream/stream-1-mini with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull whisperstream/stream-1-mini:F16
Run and chat with the model
lemonade run user.stream-1-mini-F16
List all available models
lemonade list
- Hermes Agent
How to use whisperstream/stream-1-mini with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf whisperstream/stream-1-mini:F16
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 whisperstream/stream-1-mini:F16
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use whisperstream/stream-1-mini with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf whisperstream/stream-1-mini:F16
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 "whisperstream/stream-1-mini:F16" \ --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"
Stream-1 Mini v2 by Whisperstream
Stream-1 Mini turns English dictation transcripts into clean Chat and Email text on your own device. It is trained to remove fillers and accidental repeats, add punctuation, and resolve spoken corrections while preserving your meaning and voice. Email mode also formats dictated greetings, paragraphs and sign-offs.
Version 2 publishes the round-two candidate, checkpoint 624. It adds spoken new-line and new-paragraph cues, exclamation mark/point, explicit bullet-point cues, and improved numbered lists. Literal mentions and requests to someone else should remain dictated text. Use the v2 prompts with the v2 weights. This release trades some earlier cleanup behavior for improved structure and list support; it is not a claim of zero regressions.
Pass in text from your speech recognizer. Stream-1 Mini returns the cleaned text.
| Specification | Value |
|---|---|
| Task | English dictation cleanup |
| Modes | Chat and Email |
| Base model | Qwen3-0.6B-Base |
| Parameters | 751,632,384, with separate input embeddings and output weights |
| Formats | Full-precision FP32 Safetensors, F16 GGUF and Q4_K_M GGUF |
| GGUF download | 484,216,768 bytes (about 484 MB) |
| Tested context | 4,096 tokens, with up to 512 output tokens |
| License | Stream-1 Mini License, permitting commercial use with attribution |
Structural dictation
The intended behavior is to convert in-place commands while preserving literal content. These examples describe the policy, not additional measured tests:
| Dictation cue | Intended output |
|---|---|
| new line | One line break |
| new paragraph | A blank line |
| exclamation mark / exclamation point | ! |
| Packing list. Bullet point socks. Bullet point charger. | A lead-in followed by two bullet items |
| First, passport. Second, charger. Third, jacket. | Three numbered items |
Keep phrases such as "a new line of products" and "Please turn the report into bullet points" as dictated text. Spoken period, full stop, comma and question mark conversion is outside this release's structural-command scope.
Quickstart
Use Python 3, the
Hugging Face CLI (hf), and
llama.cpp b10537.
Download the model and its prompts into a local folder:
hf download whisperstream/stream-1-mini stream-1-mini-q4_k_m.gguf prompts.json chat_template.jinja --local-dir stream-1-mini
Start the CPU server. On Windows, the executable may be named llama-server.exe.
llama-server -m stream-1-mini/stream-1-mini-q4_k_m.gguf --host 127.0.0.1 --port 8080 -c 4096 -b 256 -t 6 -np 1 -ngl 0 --chat-template-file stream-1-mini/chat_template.jinja
Save this as clean.py beside the stream-1-mini folder. It sends one dictation
to the local server:
import json
from pathlib import Path
from urllib.request import Request, urlopen
prompts = json.loads(Path("stream-1-mini/prompts.json").read_text(encoding="utf-8"))
mode = "chat" # Use "email" for Email mode.
transcript = "um let's meet on tuesday no wednesday at three pm"
payload = {
"messages": [
{"role": "system", "content": prompts[mode]},
{"role": "user", "content": f"<TRANSCRIPT>{transcript}</TRANSCRIPT>"},
],
"temperature": 0,
"top_k": 1,
"top_p": 1,
"repeat_penalty": 1,
"max_tokens": 512,
"cache_prompt": True,
}
request = Request(
"http://127.0.0.1:8080/v1/chat/completions",
data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"},
)
with urlopen(request, timeout=120) as response:
choice = json.load(response)["choices"][0]
if choice["finish_reason"] != "stop":
raise RuntimeError("Cleanup did not finish. Keep the original transcript.")
print(choice["message"]["content"])
In another terminal, run python clean.py from that same folder. Change mode
to "email" and replace transcript to try Email mode. Keep each request limited
to its current transcript.
Files
The full-precision distribution contains four FP32 Safetensors shards, their index, tokenizer, configuration and chat template. It supports further modification without starting from quantized weights. Those full-precision weights are the retained source of the GGUF conversion; the evaluation below applies specifically to Q4_K_M with the stated serving setup.
stream-1-mini-f16.gguf provides the 16-bit GGUF export for llama.cpp-compatible
runtimes. It contains 1,509,344,192 bytes (about 1.51 GB).
stream-1-mini-q4_k_m.gguf is the selected inference artifact. It contains
484,216,768 bytes; SHA256:
af8e5333c91eafb7b1f3dd332df741fbf0aefdee6129ba66cfca511e25a51c5d
prompts.json contains the exact Chat and Email system prompts. Keep these
prompts and the supplied template together with the model. See LICENSE,
LICENSE-APACHE-2.0, and NOTICE for terms and attribution.
Integration notes
Use the chosen mode's system prompt and one user message containing only the current transcript, enclosed by
<TRANSCRIPT>and</TRANSCRIPT>. Render with the supplied plain ChatML template, add the assistant generation prefix and do not inject a thinking preamble or conversation history.
The evaluated configuration used llama.cpp b10537 on CPU, six threads, 4,096-token context, batch size 256, one slot and one request at a time. Decode greedily: temperature 0, top-k 1, top-p 1, repeat penalty 1, and at most 512 output tokens. Stop at the end-of-turn token. The training/export stop IDs are 151643 and 151645; the GGUF end-of-turn ID is 151645.
Enable prefix caching and keep Chat and Email sessions separate. Reuse a prompt prefix without adding earlier dictations to the current request. Reject incomplete or invalid generations and retain the original transcript when cleanup fails. Users should be able to inspect and recover the original text.
Training and evaluation
V2 continues the v1 E full13 model through structural-cue training and a numbered-list follow-up. The published round-two checkpoint used a 9,984-position weighted continuation mixture over two passes and 624 optimizer updates, with original-E replay and independently reviewed synthetic command/literal contrasts. Training data and internal transcripts are not included.
The Q4_K_M candidate was evaluated on four full historical cleanup cohorts: 600 C/D development, 200 C/D confirmation, 600 E development and 200 E confirmation requests. These contain 1,205 distinct source/mode combinations; overlapping cases with different request seeds remain separate observations. They are observed regression evidence, not untouched selection tests.
| Configuration / 1,600 | Raw acceptable | Delivered acceptable | Delivered critical | Delivered uncertain | Delivered preserved |
|---|---|---|---|---|---|
| V1 selected E | 1,260 | 1,257 | 62 | 34 | 1,496 |
| V2 round two | 1,250 | 1,252 | 67 | 37 | 1,481 |
Acceptable means pass plus minor warning; uncertainty remains separate. Delivered results use pinned Whisperstream postprocessing, including real chunk inference for long inputs, and are not raw model accuracy. Against v1, v2 introduces 32 critical delivered failures and fixes 26; net totals do not erase individual regressions. Critical failures can include changed numbers, invented units or lost instructions. The full cleanup comparison used CPU inference with the configuration above. It does not establish production error rates or full-suite Vulkan equivalence.
On a separate fresh structural development set, v2 had 135/144 acceptable outputs on both CPU and Vulkan. Primary-feature successes were:
| Feature | CPU | Vulkan |
|---|---|---|
| New line | 10/12 | 9/12 |
| New paragraph | 12/12 | 12/12 |
| Exclamation | 11/12 | 12/12 |
| Explicit bullets | 12/12 | 12/12 |
| Numbered lists | 21/24 | 21/24 |
| Primary literal controls preserved | 72/72 | 72/72 |
Feature success does not imply that every other detail in an output is correct. A separate eight-case preservation extension remains only 3/8 acceptable, including failures to preserve literally discussed hesitation words. New sealed structural and numbered confirmation sets were not opened for this publication. No v2 startup, tail-latency or whole-app reliability claim is made here.
Limitations
The model can change meaning, retain an incorrect number after a correction, or infer the wrong numeric scale. Review names, numbers, restrictions and other consequential details before relying on cleaned text.
This release has not established support for code, arbitrary style controls, multilingual cleanup or general question answering. Instructions within a transcript should remain dictated content, except the supported in-place structural dictation cues described above. The model has not been validated for medical, legal or other high-stakes decisions. Smaller quantizations and changed prompts may behave differently.
License
Personal and commercial use, modification and redistribution are permitted under the Stream-1 Mini License, which combines Apache-2.0 terms with an identification requirement for Stream-1 Mini by Whisperstream. This is a custom license, not unmodified Apache-2.0. See the license for permitted attribution locations and treatment of modified versions.
- Downloads last month
- 336
Model tree for whisperstream/stream-1-mini
Base model
Qwen/Qwen3-0.6B-Base