The wake phrase on the phone is unproven until it has spent a day on the phone #91
Labels
No labels
needs-info
needs-triage
ready-for-agent
ready-for-human
v2
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wayfinder:ticket
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
aiko/denpa#91
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Everything in
#87–#90can be built, tested, and demonstrated without a phone ever being involved, and every one of its costs is a desktop cost, where they are invisible. The phone is where a wake word is actually worth having and where it is actually expensive — and nothing about that is known until it has run on one for a day.This issue is the measurement, not a build. It gates the default in
#90.What is different on Android
Capture is a separate implementation (
src-tauri/src/audio/android.rs— Kotlin recorder handing PCM across by JNI,Cargo.toml:64) rather thancpal(Cargo.toml:61). The wake chain runs downstream of the resampler, so in principle it does not care which side fed it. In principle.Two known constraints it inherits rather than creates, both from
#44:ort's Android prebuilt is arm64-v8a only — a build must pin--target aarch64, because Tauri builds all four ABIs by default and fails to link on the rest.dlopenwith a libc++ symbol error at runtime, so a clean build proves nothing here.The three ONNX files also have to actually ship in the APK and be loadable at the path the Rust expects. Desktop and Android do not resolve assets the same way, and this is the sort of thing that works in
tauri devand fails in a release bundle.What has to be measured
Three graphs run every 80 ms for as long as the microphone is open. On a laptop that is a rounding error. On a phone it is the feature's whole viability, and there are three separate questions hiding in it:
#55flagged that a phone doing continuous inference is a thermal question nobody has measured; this is a smaller version of the same question and it is the one that arrives first.#87's threshold was chosen on whatever hardware trained it.Also worth catching here: what happens when Android takes the microphone away. A call, another app, the recorder being killed in the background. The armed state has to survive or fail visibly, not sit there looking armed while nothing is being heard.
Done means
#90's default matches it.Related
#44— ort on Android, arm64-only, NDK r28, anddocs/android-build.md#90— the default this decides#55— the same thermal question at whisper scale#23— the Android overlay pal, the other thing that wants to run while nothing is on screen