Skip to content
runonweb

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

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) and language (es, ja…) for a multilingual Whisper variant. Without language, tiny often guesses English and the transcript comes out translated. The live demo always uses task: "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 onPartial to receive words as they are generated. Results include word timestamps when the model supports them.

Specifications

Package
runonweb/stt
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 runonweb
runonweb/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.