feat: add offline wake-word detection with sherpa-onnx

- Integrate sherpa-onnx for local "Computer" wake-word detection
- Add foreground service (microphone type) for continued listening across apps
- Request RECORD_AUDIO, POST_NOTIFICATIONS, and foreground service permissions
- Download and verify pinned sherpa-onnx model (17 MB) on first enable
- Update LauncherViewModel with wake-word state and controller
- Add WorkManager and commons-compress dependencies for model extraction
- Update README with wake-word feature details and limitations
This commit is contained in:
jahruz67
2026-07-25 14:48:05 -07:00
parent 29fc34dbdf
commit 3e1c2e714a
13 changed files with 1117 additions and 9 deletions
+9 -1
View File
@@ -11,6 +11,8 @@ An Android tablet home-screen replacement written in Kotlin and Jetpack Compose.
- Floating searchable app tray with persistent pinned apps
- Keep-awake options, including charging-only
- Scheduled ultra-dim/night presentation while the launcher is visible
- Offline “Computer” wake-word detection that opens Androids default assistant
- Continued listening across other apps through a visible microphone foreground service
- Honest capability and permission status screen
- Manual Android media output panel shortcut
@@ -22,4 +24,10 @@ No API key is required. The initial location is San Francisco; change latitude,
## Deliberately not claimed
Always-listening wake-word detection, system-wide audio routing, and overlays over unrelated apps are not included. Those features require a wake-word engine/model and/or sensitive Android services and permissions. The permissions screen explains these boundaries.
System-wide audio routing and overlays over unrelated apps are not included. Android may block an assistant activity from opening over another app; when that happens, the wake-word service posts a one-tap **Open assistant** notification.
## Wake word
Enabling wake word downloads the pinned open-source sherpa-onnx English keyword model (about 17 MB), verifies its SHA-256 digest, and installs only the required int8 model files in private app storage. Audio is analyzed locally and is never saved or transmitted.
The pinned sherpa-onnx 1.13.4 Android AAR is resolved from the projects versioned GitHub release repository during a future Gradle build. Listening can only be started while the launcher is visible and requires microphone and notification permission. It does not automatically start from a boot receiver.