Better tests and more user feedback while doing transcription; WIP.
This commit is contained in:
1 parent
18acead43c
commit
be82ecfe57
19 files changed
+447
-138
No files matched your search
+18
-1
@@ -31,7 +31,7 @@ thread would freeze the UI. Communication via a small typed postMessage protocol
|
||||
(`src/worker/protocol.ts`) shared between UI and worker.
|
||||
|
||||
## D-004 — WebGPU with automatic WASM fallback
|
||||
**Status:** Accepted
|
||||
**Status:** Accepted (amended by D-017 — "auto" now probes WebNN first)
|
||||
Detect via `navigator.gpu?.requestAdapter()` inside the worker; pass
|
||||
`device: "webgpu" | "wasm"` to the pipeline. The active backend is surfaced in the UI
|
||||
but users don't have to configure anything. Encoder-heavy Whisper benefits ~10-40× from
|
||||
@@ -222,3 +222,20 @@ latency); MediaRecorder + re-decoding compressed blobs (adds codec latency and
|
||||
device — the UI must keep tentative text visibly distinct from committed text.
|
||||
Server-engine live input (WebSocket streaming to faster-whisper) is a separate
|
||||
future decision; D-011's "WebSocket if needed" note is the hook.
|
||||
|
||||
## D-017 — "Auto" device order: WebNN → WebGPU → WASM
|
||||
**Status:** Accepted (2026-07-14; amends D-004, which only knew WebGPU → WASM)
|
||||
With WebNN support added (commit "WebNN support initial"), the `"auto"` device
|
||||
preference resolves in priority order **WebNN → WebGPU → WASM**: the worker
|
||||
probes `navigator.ml` (WebNN) first, then `navigator.gpu.requestAdapter()`
|
||||
(WebGPU), and always keeps WASM as the last resort. The probe/ordering policy
|
||||
is pure and unit-tested (`deviceAttempts` in `src/worker/protocol.ts`,
|
||||
`tests/protocol.test.ts`); the worker only supplies the capability probe.
|
||||
Pipeline-creation failures walk the same chain — an auto-detected WebNN that
|
||||
fails still tries WebGPU before WASM. An **explicit** `"webnn"` or `"webgpu"`
|
||||
preference deliberately falls back straight to WASM (no detour through the
|
||||
other accelerator — the user asked for a specific backend, so honor it or take
|
||||
the universal fallback). The selected backend stays user-visible: the worker's
|
||||
`{status:"ready", device}` message drives a "Running on …" badge next to the
|
||||
Backend select (`ModelPicker`) and the engine line in the footer (D-004's
|
||||
"surfaced in the UI" requirement).
|
||||
Reference in new issue
Block a user