Files
whisper_web/PRODUCT.md
T
Lucas WintherandClaude Opus 5.5 e195883b45 Record the product audience and copy tone in PRODUCT.md
Primary users are non-technical people who want Whisper without docs or
ML setup; technical users must keep full control as if running it on
their own device.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 21:14:41 +01:00

3.2 KiB
Raw Blame History

Product

Whisper Web — on-device speech-to-text. A browser-first transcription app powered by OpenAI Whisper, running through Transformers.js (@huggingface/transformers). (Moved here from the original docs/CLAUDE.md §1.)

Audience

Primary: non-technical people who want Whisper transcription without reading docs or setting up any ML tooling themselves. Also: technical people, who must be able to do what they want and need with it — the same control they'd have running Whisper on their own device.

What that means for the UI and its copy:

  • Works with zero knowledge. Defaults are good enough to just drop a file or press record and get a transcript. No step should require knowing what a backend, dtype, or quantization is.
  • Plain language first. Labels, statuses, and errors say what is happening and what to do next in everyday words ("Downloading the model (~44 MB, one time)", not "Fetching ONNX weights").
  • Control is there, not in the way. Technical choices (model size/variant, backend, language, task, timestamps, export formats, storage) stay available and honest, but visually secondary — never hidden behind a "simple mode" that removes them, and never required.
  • Technical truth on demand. Where a technical term is the real answer (WebGPU, WASM, model ids), show it alongside the plain description rather than replacing it.

Users and what they get

Anonymous users (no login) can:

  • Run Whisper models fully in the browser — no audio or transcript leaves the device.
  • Choose which Whisper model to use (tiny → large, English-only and multilingual, quantized variants).
  • Keep working when the network — or our own server — is offline (installable PWA + cached model weights).
  • Accelerate inference with WebNN or WebGPU (auto-selected in that order, D-017; never WebGPU on Firefox, D-026), falling back to WASM automatically.
  • Transcribe an uploaded audio/video file, or live from the microphone (D-016).
  • Export transcripts as .txt / .srt and manage cached model storage.

Logged-in users (Passport.js, when AUTH_ENABLED) get all of the above, plus:

  • A toggle to choose where inference runs: their own device (browser engine) or the server (server engine).
  • The server engine MUST use faster-whisper (CTranslate2) — not Transformers.js (D-013). faster-whisper cannot run in a browser, so the browser engine stays on Transformers.js.

Product principles (from docs/Architecture.md §5)

  • Privacy: browser-engine audio never touches the network.
  • Anonymous-first: login only unlocks the server engine; nothing else is gated.
  • Offline-first: app shell + previously downloaded models work with no network.
  • Honest status: the UI must not claim a state it isn't in — e.g. "Downloading" vs "Loading model from cache" (D-033), no "Listening" before the model is ready (D-034).
  • User-initiated downloads: selecting a model never downloads it (D-020); large models on mobile get a warn/confirm gate (D-027–D-029).

Out of scope (from docs/WorkBreakdown.md)

Arbitrary Hub model ids, OAuth providers, multi-user transcript storage, whisper.cpp server backend, i18n of the UI.