Skip to content
asispanPublic

About

Say it. Reev types it. Open-source Android keyboard with push-to-talk dictation: on-device NVIDIA Parakeet or ElevenLabs / Cartesia / Smallest / Sarvam.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Reev — Speak. Reev types.

The open-source (AGPL-3.0) Android keyboard you can talk to.
English & emoji typing, plus push-to-talk dictation that runs on your phone or in the cloud.

Android 8+ Kotlin On-device Offline No overlays License: AGPL-3.0


Talk in three moves

1 · Tap the mic

The mic sits in the top bar of the keyboard. One tap and the keys give way to a single, big talk button.

2 · Hold & speak

Your words stream live into the top strip as you talk. Want to go hands-free? A short tap locks it on.

3 · Let go

Release, and polished text lands where your cursor is: punctuated, capitalised, with the ums and uhs gone.

Reev in light, dark, voice and emoji modes

What makes Reev different

🔒 Private by default
Parakeet Ultra runs entirely on the phone: no network, no account, nothing leaves the device. The mic is off in password and incognito fields, and any API keys you add are encrypted with an Android Keystore key.

⚡ Built for speed
The model stays warm in memory, and the mic starts the moment your finger lands. Text arrives about half a second after you let go.

🎛️ Your engine, your call
On-device NVIDIA Parakeet, or ElevenLabs, Cartesia, Smallest AI and Sarvam over realtime streaming. Switch from the chip in the voice panel.

⌨️ A real keyboard, too
Glide typing, next-word predictions, context-aware suggestions (we'll vs well), optional Hinglish, long-press accents and digits, cursor swipe on the space bar, and 1,923 emoji.

🌗 Light, dark, or both
It follows your system theme, or you can pin it to light or dark. The change applies instantly.

🫧 Keyboard only, always
No floating bubbles, overlays or toasts. Reev never draws outside its own keyboard.

Release-to-text latency per engine

Engines

Engine Runs Model
🟣 Parakeet Ultra (default) on-device · offline Moondream's upgrade of NVIDIA parakeet-tdt-0.6b-v3, int8 via sherpa-onnx
🟣 NVIDIA Parakeet TDT 0.6B v2 on-device · offline parakeet-tdt-0.6b-v2, int8 via sherpa-onnx
⚫ ElevenLabs realtime WebSocket scribe_v2_realtime
⚫ Cartesia realtime WebSocket ink-2
⚫ Smallest AI realtime WebSocket pulse
⚫ Sarvam realtime WebSocket (beta) saaras:v3-realtime
Full benchmark numbers

Measured on one Snapdragon 8 Elite Gen 5 phone running Android 16. Each engine got the same 8.6 s utterance, streamed at real-time pace through the same code path the mic uses (BenchReceiver). These are single runs on one device, so treat them as indicative rather than a distribution; cloud numbers also depend on the network.

Engine First partial Release → final Transcript
Parakeet Ultra (warm) 0.81 s 0.49 s exact
Parakeet Ultra (cold, model load 2.7 s) 3.5 s 0.97 s exact
Parakeet TDT v2 (warm) 0.82 s 0.50 s exact
Cartesia ink-2 1.71 s 0.11 s exact
Smallest pulse 1.08 s 0.19 s missed one sentence break
ElevenLabs scribe_v2_realtime 2.29 s 0.47 s exact
Sarvam — — not benchmarked yet

Real-mic check (audio played from a speaker into the phone's mic): Parakeet Ultra transcribed 10.9 s of speech in 650 ms, word for word.

Get started

  1. Build & install the APK (see Build from source below).
  2. Open Reev and complete the three setup steps: enable it, switch to it, and allow the microphone.
  3. Choose a voice engine. Download Parakeet Ultra in the app (~630 MB, one time, resumable), or paste an API key for ElevenLabs, Cartesia, Smallest or Sarvam.
  4. In any text field, tap the mic and talk.
Build from source
# JDK 21 · Android SDK 36 · AGP 8.13 · Gradle 9
./tools/fetch_deps.sh        # one-time: sherpa-onnx AAR → app/libs (pinned + SHA-256 checked)
./gradlew assembleDebug      # or: ./tools/deploy.sh to build + install over USB

# release builds need your own upload key; they refuse to fall back to the debug key
REEV_KEYSTORE=/path/to/upload.jks REEV_KEYSTORE_PASSWORD=... ./gradlew bundleRelease

# optional (debug builds): push API keys from env vars instead of typing them
REEV_CARTESIA_KEY=... python3 tools/inject_keys.py

Benchmark any engine on a connected phone:

adb push test.wav /sdcard/Android/data/com.asis.reev/files/test.wav
adb shell am broadcast -n com.asis.reev/.BenchReceiver --es engine local \
    --es wav /sdcard/Android/data/com.asis.reev/files/test.wav
adb logcat -s ReevBench

Download models from inside the app. If you adb push them into Android/data/com.asis.reev, they end up owned by the shell user and the app can't read them.

FAQ

Is "Parakeet Ultra" an NVIDIA model?
It's built on one. Parakeet Ultra is Moondream's further-trained version of NVIDIA's parakeet-tdt-0.6b-v3: same 0.6B architecture, lower error rate. If you want NVIDIA's own weights, Reev also ships NVIDIA's English-only Parakeet TDT v2.
Does my voice leave the phone?
Not with the Parakeet engines; they're fully offline. With a cloud engine, audio streams directly from your phone to the provider you picked. There's no Reev server in between.
Where are my API keys stored?
In the app's private storage on your phone, encrypted with an AES-256-GCM key that never leaves the Android Keystore. They're excluded from backups, hidden from screenshots of the settings screen, and only sent to the matching provider. Clear the field to delete a key. Encryption at rest doesn't protect against a rooted or compromised phone, so use a scoped, spend-limited key where your provider offers one.
Which phones does it support?
Android 8.0+ phones on arm64 or armv7. On-device dictation works best on recent flagship chips; older phones may prefer a cloud engine.

Honest limitations

  • Parakeet isn't a streaming model. Live text comes from re-decoding the growing buffer every 0.7 s, which costs battery on long dictations. Reev doesn't use the phone's NPU yet.
  • English only (with optional Hinglish suggestions); no other languages yet.
  • Cloud engines use your own long-lived provider key on the device. There's no token broker, by design (no Reev server).
  • The benchmark is from a single phone; there's no automated on-device performance suite yet.
  • Emoji come without skin-tone variants for now.

Credits

Ideas for dictation polish (keeping the model warm, removing fillers, detecting a silent mic, windowing long audio) came from studying Spokenly. The flow was inspired by Wispr Flow.

Models are downloaded at runtime from a pinned commit, with every file checked against its SHA-256. They aren't bundled. Full notices and licence texts: THIRD_PARTY_NOTICES.md.

License

Reev's source code is licensed under the GNU Affero General Public License v3.0 only (AGPL-3.0-only). You can read, run, modify and share it. If you distribute Reev or a modified version, or offer a modified version to users over a network, you must release your complete source under the same licence. The lexicon data in app/src/main/assets/lexicon/ is licensed under CC BY-SA 4.0. Third-party components keep their own licences; see THIRD_PARTY_NOTICES.md.

Made in Bangalore · speak freely

About

Say it. Reev types it. Open-source Android keyboard with push-to-talk dictation: on-device NVIDIA Parakeet or ElevenLabs / Cartesia / Smallest / Sarvam.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages