Target
Test whether long-form ASR can run locally in Chrome through WebGPU.
Failure this recipe addresses
Browser audio ingestion may be too slow, too large, nondeterministic, or network-dependent.
Data contract
Eight pinned LibriSpeech test-clean clips: 34.365 seconds, 82 normalized words, eight speakers/chapters, and exact audio hashes.
Method or policy
Run the official pinned Parakeet v3 engine on real Apple WebGPU and WhisperKit large-v3 turbo through Core ML on the identical seeded clip order, then score both with one deterministic ruler.
Evaluation contract
Paired WER within 2 points plus median browser RTFx >=50, no repetition regression, exact proper-noun reporting, and zero warm external requests.
- cold download
- warm runtime
- Chrome
- Safari
- WER
- domain terms
- memory
Budget and stop rule
34.365 seconds of audio, 652.7 MiB browser download, and one bounded browser/native run.
Stop on software GPU fallback, model/fixture drift, warm external requests, or any resource cap.
Decision rule
Reject under the frozen conjunction because median short-clip RTFx was 33.84x; preserve the 0.0% WER and 3.51x native-latency wins.
Learning exercise
Re-score the two prediction files, identify which WhisperKit errors come from numeric normalization, and compare aggregate with median per-clip RTFx.
Explain why 0.0% WER and a 3.51x paired latency win can coexist with a correct reject decision under the frozen 50x gate.
How to read this dossier
This canonical page separates the retained repository decision from the material that informed it. A source may describe an external claim, historical measurement, local observation, or planned procedure; those evidence classes are not interchangeable. Follow the provenance links before reusing a number or method.
Status and disposition describe what PostTrainLLM retained when this record was indexed. They are not a live product promise, a newly run benchmark, or permission to restart historical work. Unknown or unmeasured fields remain unknown rather than being treated as zero.
To reuse the record, first name the exact claim you need and trace it to the linked source. Then check whether the original environment, model revision, data split, evaluator, hardware, and budget match the proposed use. If they do not, treat the record as a hypothesis or design reference and run the smallest fresh comparison that can falsify it. Preserve negative outcomes and regressions beside any improvement; a local win on one slice does not silently become a general capability claim.
Source provenance
The normalized record comes from docs/recipes/registry.json. The links below are the tracked evidence and explanatory sources preserved with the record.