System-wide voice dictation for Android using xAI Grok STT. Works anywhere the microphone / voice-input affordance appears (keyboard, browser, apps) by implementing Android’s RecognitionService.
Desktop sibling: voice-input (COSMIC / Linux).
- Records speech when the system starts voice input (16 kHz mono PCM).
- Trims leading/trailing silence (simple RMS threshold).
- Sends WAV to
POST https://api.x.ai/v1/stt. - Returns the transcript to the focused field.
STT uses format=true (inverse text normalization — spoken numbers become digits/symbols where supported) and your chosen language code (e.g. ru, en).
GitHub Releases: github.com/erik-balfe/voice-input-android/releases — download grok-voice-input-<version>.apk, install on your phone.
Or build locally (see below).
- Install the APK (from Releases or local build).
- Open Grok Voice Input → save your xAI API key → grant microphone.
- Enable the keyboard (this is where Whisper-style apps show up):
Settings → System → Languages & input → On-screen keyboard → Manage keyboards → Grok Voice Input → ON - Switch to it from the keyboard switcher (🌐/mic), or set Default voice input method to Grok Voice Input for the system mic button.
Requires Android SDK, JDK 17–21 (JDK 25 is not supported by Gradle yet), and ANDROID_HOME.
export ANDROID_HOME=~/Android/Sdk
export JAVA_HOME=~/.local/jdks/jdk-21.0.11+10 # example
./scripts/check.sh # build + unit tests + lint + APK sanity checksOr just ./gradlew :app:assembleRelease.
APK: app/build/outputs/apk/release/app-release.apk
Install: adb install -r app/build/outputs/apk/release/app-release.apk
Audio is sent to xAI for transcription. The API key is stored locally with EncryptedSharedPreferences.
MIT