Skip to content
runonweb

Polish: Transcript cleanup

Clean a speech-to-text transcript in the tab: drop fillers, resolve self-corrections, write numbers and emails, and apply punctuation. Pair it with Scribe, or paste any rough transcript.

Try Polish

Runs in this tab · nothing uploaded

Paste a rough transcript, or pick a sample
Try with
~365 MB, cached after the first load
Cleaned text will appear here…

What it does

Turn raw dictation into written text.

  • S1-mini by Superwhisper. Its license is Apache-2.0 plus one term: any product that uses it must keep calling it "S1-mini" by "Superwhisper". Fine-tuned from Qwen3-0.6B to do one job: normalize English ASR output. It is not a chat model.
  • Pass styling (casual · semi-casual · semi-formal · formal), structure (prose · lists) and context (general · email). Defaults are semi-formal prose.
  • English only. Keep a single pass under ~1,000 tokens; chunk longer transcripts at sentence boundaries.
  • Filler-only input (um, uh) returns an empty string. That is a valid result, not a failure.
  • WebGPU prefers q4f16 (~365 MB) and falls back to q4 (~413 MB) if the session fails to start. WASM uses q4.

Specifications

Package
runonweb/clean
License
Apache-2.0 + naming term
Download
~365 MB / ~413 MB
Quantization
q4f16 on WebGPUq4 on WASM
Backend
WebGPUWASM fallback
Input
Text

Get started with runonweb/clean

pnpm add runonweb
runonweb/cleants
import { TranscriptCleaner } from 'runonweb/clean'

const cleaner = new TranscriptCleaner({
  styling: 'semi-formal',
  onProgress: (info) => console.log(info.status, info.progress),
})

await cleaner.load()

const { text } = await cleaner.clean(
  'so um i need to like send the the report by uh friday no wait make that thursday',
  { onPartial: (partial) => console.log(partial) },
)
// "I need to send the report by Thursday."

cleaner.dispose()

Same shape everywhere: construct, load(), run, dispose(). Pass onProgressto show download progress on first use.

Questions about Polish

Does Polish run on device?

Yes. Weights download once and stay in the browser. Nothing is sent to a server.

Which model does Polish use?

S1-mini by Superwhisper, under Apache-2.0 + naming term. runonweb loads the onnx-community/s1-mini-ONNX weights and runs q4f16 on WebGPU · q4 on WASM.

How big is the Polish download?

~365 MB / ~413 MB, fetched once on first use. The browser caches the weights, so later loads skip the network and keep working offline.

What does Polish cost?

Nothing. runonweb is free and MIT-licensed, with no device limits, tokens or sign-in. The weights keep their own license: Apache-2.0 + naming term.

Which browsers support Polish?

Chromium browsers use WebGPU. Firefox and Safari fall back to WebAssembly automatically, slower but identical output.

Can I use a different model with runonweb/clean?

Yes. See each module’s docs for the options it accepts (model, size, language…). Check the license and test both backends before shipping.