Speech-to-Text
Scribe
Transcribe audio to text entirely in the browser. Record from the mic or drop a file. Nothing is uploaded, nothing is billed per minute.
Try Scribe
Runs in this tab · nothing uploaded
Pick a language, then a clip, record, or upload
Language
Try with
0:00 / 0:00
Transcript
Transcript will appear here…
What it does
Transcribe audio without a server.
- English-only by default. Pass
model(e.g.onnx-community/whisper-tiny) andlanguage(es,ja…) for a multilingual Whisper variant. Withoutlanguage, tiny often guesses English and the transcript comes out translated. The live demo always usestask: "transcribe"and lets you pick the language. - WebGPU is several times faster; WASM works everywhere else.
- Audio is decoded and resampled to 16 kHz mono in the browser.
- Pass
onPartialto receive words as they are generated. Results include word timestamps when the model supports them.
Specifications
- Package
- runonweb/stt
- Base model
- Whisper tiny.en · OpenAI
- License
- Apache-2.0
- Download
- ~150 MB / ~40 MB
- Quantization
- fp32 on WebGPUq8 on WASM
- Backend
- WebGPUWASM fallback
- Input
- Audio
Get started with runonweb/stt
pnpm add runonwebrunonweb/sttts
import { SpeechToText } from 'runonweb/stt'
const stt = new SpeechToText({
onProgress: (info) => console.log(info.status, info.progress),
})
await stt.load()
// Blob, File, URL string, or Float32Array (16 kHz mono)
const { text } = await stt.transcribe(audioBlob, {
onPartial: (partial) => console.log(partial),
})
console.log(text)
stt.dispose()Same shape everywhere: construct, load(), run, dispose(). Pass onProgressto show download progress on first use.
Questions about Scribe
Does Scribe run on device?
Yes. Weights download once and stay in the browser. Nothing is sent to a server.
What does Scribe cost?
Nothing. runonweb is free and MIT-licensed, with no device limits, tokens or sign-in.
Which browsers support Scribe?
Chromium browsers use WebGPU. Firefox and Safari fall back to WebAssembly automatically, slower but identical output.
Can I use a different model with runonweb/stt?
Yes. See each module’s docs for the options it accepts (model, size, language…). Check the license and test both backends before shipping.