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

56 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Product
Whisper Web — on-device speech-to-text. A browser-first transcription app powered by OpenAI Whisper,
running through [Transformers.js](https://github.com/huggingface/transformers) (`@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](https://github.com/SYSTRAN/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.