Install, one model download sized to your phone, and up to four permissions — only two of which dictation strictly needs.
The app declares a minimum SDK of 24, which is Android 7.0. Below that it will not install. It compiles and targets SDK 36.
Beyond the Android version, the real requirement is memory, because a speech model has to be resident to transcribe anything. OpenWispr reads your device's total RAM and free storage before the first download and picks a model pair that fits — between roughly 316 MB and just over 1 GB of model files depending on the phone. The full explanation, including the exact thresholds, is on Models and device fit.
Install from Google Play. There is no account step and no sign-in at any point.
On first run, onboarding downloads the model pair chosen for your device and writes the corresponding entries into settings, so the recommended configuration is what you actually end up with rather than something you have to go and select. The download resumes if it is interrupted rather than starting again from zero, and every file is checked against a hash the server supplies before it is used. If your phone does not have room even for the smallest pair, the setup screen says how many megabytes short you are instead of starting a transfer that cannot finish.
You can replay the whole walkthrough later from Settings → General → Replay onboarding.
Only the first two are needed to dictate at all. The other two make the experience better and the app keeps working without them, in a degraded but explained way.
The settings screen shows a status card at the top listing Microphone, Floating bubble and Auto-insert with an Enable button beside anything missing. Once all three are on, the card collapses to "You're all set" and the rows disappear.
| Permission | Needed for | Without it |
|---|---|---|
MicrophoneRECORD_AUDIO | Recording your voice | Nothing works. Requested at the moment you first try to record. |
Display over other appsSYSTEM_ALERT_WINDOW | The floating bubble | No bubble, so no way to start a dictation from another app. Granted through the system's "Display over other apps" screen, not a normal permission prompt. |
| Accessibility service ("Auto-insert") | Typing the text into the field you are in, and hiding the bubble when you are not in a text field | Dictation still works; the result goes to your clipboard instead of the field, and the bubble becomes permanently visible. |
NotificationsPOST_NOTIFICATIONS | The bubble's ongoing notification and the post-dictation "fix a word" tap | On Android 13 and up the follow-up notification is silently skipped. Dictation is unaffected. |
OpenWispr uses Android's accessibility API for the same reason any dictation tool that types into other apps does: it is the only supported way to put text into a field that belongs to someone else's app. The service's own description, shown by Android on the enable screen, reads: "Lets OpenWispr show the dictation bubble when you tap a text field, and type dictated and rewritten text directly into it."
Before the app deep-links you into the accessibility settings, it shows a consent dialog explaining what the service will be able to do. That disclosure is required for an app that uses accessibility for something other than assisting a disability, and OpenWispr does not claim to be an accessibility tool — it uses the API to insert text.
The service is configured to watch focus, selection, window-state and window-content events with a 50 ms notification timeout. It does not read or transmit the content of your screen anywhere; what it does with those events is decide whether a text field has focus, and where your cursor is. The mechanics are on Text insertion and permissions.
The bubble is a 56 dp circle you can drag anywhere on screen; its position is remembered across restarts, and dragging it onto the target at the bottom of the screen turns it off. It has two gestures, and they behave differently on purpose.
The threshold between them is 450 ms, and moving your finger more than about 12 dp cancels the long press and turns the gesture into a drag instead.
When transcription and cleanup finish, the result appears in a sheet with a countdown bar. If you do nothing, it is inserted automatically when the bar runs out. The window is two seconds plus 110 ms per word, clamped to between two and six seconds — short results go in almost immediately, long ones give you time to read them.
Tapping Insert puts it in straight away and Discard throws it away. Tapping into the text to edit stops the countdown. Anything you edit is remembered as an example of how you like your dictation cleaned up, which is what feeds the polish stage later; that is covered under Cleanup and polish.
Afterwards you may see a quiet "Dictated ✓ — Got a name wrong? Tap to fix." notification. Tapping it shows the words from that dictation so you can correct a mis-heard name; the correction is saved into your personal dictionary so it is right next time. It does not re-insert anything.
The bubble runs as a foreground service with a minimum-importance ongoing notification titled "OpenWispr", reading "Tap to dictate · hold to talk, release to send". Aggressive battery managers on Samsung, Xiaomi, OnePlus and Oppo devices will still kill it.
Two things push back on that. The app restores the bubble whenever you open it or return to settings, and it restarts the bubble after a reboot or an app update. Settings → Reliability → Auto-start helper opens your manufacturer's auto-start screen directly where the app can find it, and the app-info screen otherwise. More on this on Troubleshooting.
OpenWispr also registers itself in Android's text-selection toolbar. Select some text in almost any app, tap the overflow menu, and choose OpenWispr; the app opens with that text loaded, and when you accept the result the host app replaces the selection itself. No clipboard and no accessibility service are involved on that path. If the field is read-only, the result is copied to your clipboard instead, because there is nothing to replace.
Open source and entirely on your device. Android from Google Play, macOS from GitHub — no account, no sign-up, just a download.