watchOS Benchmark: WhisperKit tiny.en PASS on Apple Watch Series 11 (19.2s load, 4.2s transcribe, +43MB) #437
jj33
started this conversation in
Show and tell
Replies: 1 comment
|
Cool! Thanks for the writeup 👍 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
WhisperKit on watchOS — Apple Watch Series 11 Benchmark
Submitted for community reference. Raw spike data from a production EMS app feasibility study.
Summary
We ran a minimal feasibility spike to determine whether WhisperKit
tiny.encan run on Apple Watch Series 11 before committing to a Watch-local offline transcription feature. The result was a clean PASS.Hardware & Software
openai_whisper-tiny.en(73 MB CoreML + tokenizer)Results
[BLANK_AUDIO]Verdict: PASS — no hardware restriction. Series 11 can run WhisperKit
tiny.ento completion.Method
Standalone watchOS spike app. Model files (CoreML
.mlmodelc+ tokenizer files:tokenizer.json,tokenizer_config.json,vocab.json,merges.txt) bundled directly in the Watch app — Watch cannot reach HuggingFace Hub at runtime.Memory measured via
mach_task_basic_info/resident_sizebefore and after.Key Finding: Tokenizer Must Be Bundled
The
argmaxinc/whisperkit-coremlmodel download does not include tokenizer files. watchOS cannot reach HuggingFace Hub at runtime, soloadTokenizerIfNeeded()fails withofflineModeError("Repository not available locally")unless you also bundle the tokenizer files fromopenai/whisper-tiny.en.Required files alongside the
.mlmodelcfolders:tokenizer.jsontokenizer_config.jsonvocab.jsonmerges.txtWhisperKit's
loadTokenizer()searchesadditionalSearchPathsincludingmodelFolderfortokenizer.json— placing all files in the same folder as the.mlmodelcfiles is sufficient.Deployment Note
Direct Watch deployment in Xcode thrashes on Series 11 (repeated "Connecting / Waiting to reconnect" loop). Reliable workaround: start an active workout on the Watch before deploying. This keeps the screen on and prevents aggressive OS sleep/lock that breaks the Xcode debug tunnel.
Design Implication
19.2s load time is not on-demand viable. The model must be pre-warmed at session/call start, not triggered at first voice attempt. For our use case (EMS call logging), we load on call start and the model is ready by the time the medic first speaks.
Context
MedicLog is an EMS medication logging app for Apple Watch + iPhone. We're building Watch-local transcription as a fallback when the phone is unreachable (ambulance RF interference, BT drop). This spike confirmed the hardware is capable; production implementation is underway.
Spike methodology available on request. Happy to share the full test harness if useful for the WhisperKit watchOS documentation.
All reactions