A voice keyboard for Android. Talk naturally, check the result, switch its language with a tap, and send it.
Every step either removes effort or adds delight. The two effortful moments — the key and the permissions — get the most design help.
Getting started, a sign-in choice, then just three setup steps — each with an illustration that shows what it does. It ends with a real first dictation.
Home answers three questions: is Speako ready, how is it set up, and is it helping. Every setting changes in a sheet, without leaving Home.
By default your words go straight into the box. The Pill then lets you switch their language, edit them right in the box, or undo. Prefer to check first? Turn on Review first.
Speako also listens to whole meetings. Tap record, talk, tap stop: a summary, action items, decisions and a speaker transcript appear. Every meeting and dictation is kept in History with its recording.
The Pill is Speako. It is the bubble, the keyboard key and the listening bar. Glass-black body, a living colour ring, and content that morphs between states.
Black and white, green for “on”, and the Aurora spectrum only while Speako hears or thinks. Inspired by how Gemini reserves colour for AI moments.
Every word in the app, written for a global audience: simple English, verbs first, no jargon. Ready to translate into every language Speako writes.
“Show me” opens Android Settings with a tiny video that points to the right switch and says it out loud. Settings stay on one short screen.
Everything here is buildable on Android 13+ with our current architecture. Phase 1 is the full free product; Speako AI arrives in Phase 2.
| Feature | How |
|---|---|
| Review card | Keyboard: the IME view grows from 84 dp to ~330 dp with a spring, then shrinks back. Bubble: a card in the accessibility overlay. Shown only when Auto-insert is off. |
| After inserting | The Pill keeps the inserted range for ~15 s (restarted on every interaction; ends when you send or leave the field). Language chip: replaces that range with a re-write of its current text (so your edits are kept) in the new language. Edit: keyboard mode shows Speako's letter keys that commitText straight into the field; bubble mode puts the cursor at the end of the inserted text and your own keyboard edits it. Undo: restores the field. The range is tracked through edits (onUpdateSelection / TYPE_VIEW_TEXT_CHANGED); if it can no longer be found, the chips hide. |
| Switch language later | Re-runs only the AI step on the stored transcript (no new recording). Results cached per language. After inserting, “Undo” or the chip replaces the inserted range (InputConnection in the keyboard, text merge in bubble mode). |
| Edit with keyboard | Keyboard: Speako shows a clean letter layout only in Edit; the globe key switches to your usual keyboard for other scripts. Bubble: the card becomes focusable so your own keyboard types into it. |
| Screen glow | Gemini-style light around the whole screen. Bubble mode: a full-screen, non-touchable accessibility overlay draws it while listening / thinking, plus a 1.2 s burst on Insert. Inside Speako: drawn in the app window (sign-in, film, success). Keyboard mode: Android limits a keyboard to its own window, so the light stays inside the bar. Compose + AGSL, fed by the live mic level; strongest in the outer ~20 dp; off with reduce-motion or battery saver. |
| Languages | Output: 100+ (any language the chosen AI writes), native names in pickers. Input depends on the speech model: Gemini / Whisper ≈ 100 languages; Sarvam 22 Indian languages. Fonts: Geist + Noto (Indic, Arabic, CJK); Arabic and Hebrew render right-to-left. |
| Provider logos | Mock uses LobeHub icons (MIT). In the app, ship each provider's official mark per its brand guidelines, or a neutral monogram if not permitted. |
| Illustrations | Lottie loops produced from these specs; Material Symbols Rounded icons; Geist + Noto type. |
| Phone preview | Open speako-design.html?phone on a device for a full-screen, tappable prototype (add &s=try to jump to the live demo). Over ADB: adb reverse tcp:8765 tcp:8765. |
| Home stats | Counted on the phone only: words and minutes saved (words ÷ 40 wpm typing vs. speaking time). Shown at the top of History. Never uploaded. |
| Meetings | Record: foreground service (type microphone) started from a visible screen; keeps going with the screen off; notification with Pause / Stop. Phone's mic only — Android does not allow recording calls or other apps' call audio. While recording: audio saved as 16 kHz mono AAC (~15 MB/hour) and sent in ~30 s chunks to speech-to-text, which powers live captions and makes notes ready seconds after Stop. Speakers: Gemini (prompted labels) or Sarvam batch (diarization); Whisper has none → "Speaker" only. Notes: one AI call with a JSON schema (title, summary, action items with owner/date, decisions, key points). Other languages: AI step only, cached per language. Long meetings: up to 2 h in Phase 1. |
| History | Room database on the phone: sessions (dictation / meeting, app, time, duration, audio file), transcript segments (speaker, start, end, text), outputs per language. Audio in app-private storage (encrypted by Android), excluded from backup. Defaults: history on; dictation audio kept 30 days, meetings until deleted; one switch turns it all off; Delete all. |
| Phase 2 | Speako AI tiers (Swift · Pro · Studio, prices TBD) via Google Play; model names never shown. |