← Back to Blog

Short answer: Android Studio has no dictation of its own, so use a system-wide Mac dictation tool that inserts finished text at the cursor. It works in the editor, the commit dialog and every input field. Dictate prose: comments, KDoc, commit messages, strings and bug reports. Keep typing the code.

Free to start Dictate into any app on your Mac or iPhone — hold a key, speak, release. Download for MaciPhone

Most articles about voice and code start from the wrong premise: that the point is to speak code. It is not, at least not for the average Android developer with a deadline. Dictating Kotlin character by character is slower than typing it, more error-prone, and deeply annoying to correct.

But open your last twenty commits and look at what you actually wrote. Commit messages. A KDoc block on a public function. A paragraph in the PR description explaining why the coroutine scope changed. Two string resources of user-facing copy. A reply on a code review. A bug report for the flaky instrumented test. A Slack message asking a colleague if the feature flag can be flipped. That is a lot of English, written at typing speed inside an IDE, and it is the part of the job that voice handles well.

This guide covers how to make dictation reliable inside Android Studio on a Mac: where the text lands, how to stop code completion from eating it, which hotkey to pick so you do not collide with the keymap, and which parts of the workflow are genuinely worth switching over.

Android Studio has no dictation feature, and that is fine

There is no built-in voice input in the IDE and no first-party plugin you need to install. What you need is dictation that operates at the operating-system level, inserting text into whatever field currently has focus. That model works in an IDE precisely because the IDE does not have to cooperate.

You have two realistic options on a Mac.

macOS built-in dictation is free and already on your machine. Turn it on in System Settings → Keyboard → Dictation, then press its shortcut in any text field. It works, and for short bursts it is fine. The friction shows up in an editor: it streams provisional text that it revises as you keep speaking, and an editor with live completion, inspections and auto-indent is doing its own work on the same buffer at the same time. The two do not always agree about what is on screen.

A system-wide dictation app that inserts finished text avoids that entire class of problem. Nothing appears in the buffer until you stop talking, and then it lands as one insertion. That is how Voice Keyboard Pro works on the Mac: it sits in the menu bar, you hold a hotkey, speak, release, and the finished text appears at your cursor in whichever app is in front. The editor sees a single paste-like insertion rather than a stream of edits, which is far easier for it to handle correctly.

Setting it up so it does not fight the keymap

Android Studio inherits a dense keymap. Between refactor shortcuts, run configurations, Logcat controls and the debugger, a lot of modifier combinations are already taken, and the one thing you do not want is a dictation trigger that also opens a tool window.

Practical choices:

Where dictated text actually lands

System-wide dictation types into the focused field, and Android Studio has a lot of focused fields. It helps to know which behave well:

The pattern worth noticing: dictation is excellent wherever the field holds sentences, and mediocre wherever the field holds syntax. Sort your usage along that line and everything gets easier.

Keeping the completion popup out of the way

The single most common frustration when dictating into an IDE is the completion popup. You insert a chunk of text, the editor interprets the leading characters as the start of an identifier, and a suggestion list opens. If your next keystroke happens to be one that accepts a completion, you get a class name spliced into the middle of your sentence.

Three habits remove nearly all of it:

  1. Open the comment first, then dictate. Type // or open a block comment before you speak. Inside a comment, the editor is not trying to complete anything, and the whole problem disappears.
  2. Press Escape before you start. If a popup is already open from your last keystroke, Escape closes it and returns focus cleanly to the buffer.
  3. Never dictate into an empty line of live code. An empty line in a class body is the most completion-happy place in the file. If you are drafting a thought that is not yet code, put it in a comment and convert it later.

If your text is consistently arriving in the wrong location rather than being mangled by completion, that is a different failure, and why dictated text appears in the wrong place covers the causes.

Comments and KDoc: the highest-value use

Documentation is the classic thing developers skip because writing it interrupts the work. Speaking it does not interrupt in the same way, because you are already holding the explanation in your head. You just finished the function. You know exactly why the retry count is three and why the caller must not be on the main thread. Saying that out loud takes fifteen seconds. Typing it takes two minutes and often does not happen.

A workflow that holds up:

  1. Finish the function.
  2. Put the cursor above it and open a KDoc block so the editor generates the skeleton.
  3. Hold your hotkey and describe the function the way you would explain it to a colleague: what it does, what the caller has to know, what breaks if they get it wrong.
  4. Tidy the tags and parameter names by hand, since those are syntax, not prose.

The tone comes out slightly more conversational than typed documentation, which in practice is an improvement. Spoken explanations tend to include the "why" that typed ones leave out. Our guide to dictating code comments goes deeper on structuring them.

Commit messages, PR descriptions and review replies

The commit dialog is where dictation pays for itself fastest. A good commit message has a short subject and a body explaining the reasoning, and the body is the part everyone skips. Speak it while the change is fresh: what was wrong, what you changed, what you deliberately did not change.

Pull request descriptions are the same task at greater length, and they are usually written in a browser rather than the IDE, which makes no difference to system-wide dictation. We wrote about that specific habit in dictating pull request descriptions.

Code review replies benefit in a subtler way. Typed review comments get terse, and terse reads as brusque. Spoken ones come out closer to how you would say it in person, which is usually the tone you actually intended.

String resources and user-facing copy

Android projects accumulate a lot of English inside XML: labels, empty states, error messages, content descriptions for accessibility. This is writing, not code, and it is the part of the file where dictation belongs.

Two cautions. Speak the copy, not the markup: put the cursor inside the quotes of an existing string element and dictate only the value, rather than trying to say the tags. And check apostrophes afterward, since XML resources are picky about escaping and an apostrophe in dictated copy is easy to miss on a skim. The same applies to literal strings in Compose code.

Content descriptions deserve a special mention. They exist for screen reader users, they are frequently written carelessly or left empty, and they are exactly the kind of short descriptive sentence that is easier to say than to type. Dictating them makes the accessible version more likely to get written at all.

Identifiers, casing and project vocabulary

Two things make technical dictation feel unreliable if you do not set them up.

The first is casing. When you say a class or variable name inside a sentence, transcription will render it as ordinary words. There are conventions for handling this by voice, and we covered them in dictating camelCase and snake_case. The pragmatic version: dictate the prose around identifiers, then type the identifiers themselves, or let autocomplete finish them.

The second is your project's own vocabulary. Every codebase has terms that sound like nothing else: module names, internal acronyms, a feature codenamed after somebody's cat. Generic transcription has no reason to know them, and it will guess.

This is what Smart Vocabulary in Voice Keyboard Pro exists for. You add the terms your project uses along with replacement rules, so the words that matter to your team come out right instead of being corrected by hand every time. Ten minutes of setup covers most of a codebase's proper nouns, and it is the difference between dictation being a novelty and being something you leave on.

Bug reports and the things around the code

Filing a good bug is mostly narration: what you did, what you expected, what happened instead, what the device and build were. Speaking it produces more detail than typing it, because the cost per sentence is lower and you stop truncating. Dictating bug reports covers the structure that keeps spoken reports readable.

The same is true of release notes, incident write-ups, ticket updates and the message you send when you hand a half-finished branch to someone else. None of it is code. All of it is currently being typed at roughly 40 words per minute, which is around the adult average, while ordinary speech runs about 130 to 150 words per minute. Even a proficient developer typing at 80 to 100 words per minute is speaking faster than they type.

What to keep typing

An honest guide has to name the limits. Keep typing:

The realistic split is that voice handles the English and the keyboard handles the syntax, in the same session, switching between them without ceremony. That is why the hotkey matters more than it sounds: if speaking costs you a mode switch, you will not do it.

Troubleshooting

Nothing appears anywhere

Accessibility permission is missing, or was granted to an older copy of the app after an update. Remove the entry and re-add it in System Settings → Privacy & Security → Accessibility.

It works in other apps but not in Android Studio

A shortcut conflict is the usual cause. Change your dictation hotkey to an F-key above F12 and retest. If it still fails, click into the commit dialog and try there: if that works and the editor does not, the editor's completion state is the problem, not the dictation.

Text arrives, then gets partially overwritten

This is the streaming-versus-final-insertion issue. Dictation that revises text as you speak can lose a race with the editor's own edits. Dictating inside a comment block or using a tool that inserts only the finished text both avoid it.

Technical terms come out wrong every time

Add them to your vocabulary rather than correcting them repeatedly. If accents are part of the problem, improving voice-to-text accuracy with an accent is the better starting point.

Gradle sync steals focus mid-sentence

Long syncs and indexing can move focus. Dictate during a stable moment, or use the commit dialog, which holds focus more reliably than the editor during background work.

Frequently asked questions

Is there a dictation plugin for Android Studio?

You do not need one. System-level dictation types into the focused field, so the IDE requires no plugin, no configuration and no update when the IDE updates.

Does this work in IntelliJ IDEA too?

Yes. Android Studio is built on the IntelliJ platform, so the behaviour is nearly identical, and everything here applies to dictating in IntelliJ as well as to Fleet, Zed, VS Code and Xcode.

Can I dictate Kotlin or Java syntax directly?

You can, but it is rarely worth it. Symbol-dense code is faster to type. Voice earns its place in comments, documentation, commit messages and everything written in sentences.

Will my code be sent anywhere?

Dictation transcribes the audio you speak. It does not read your files or your editor contents. On our side, the server stores only operational pings: no audio and no transcript content.

Does it work offline?

Voice Keyboard Pro's transcription engine needs a connection. On a plane or a bad hotel network, fall back to typing or to Apple's on-device dictation.

Getting started in five minutes

Install a system-wide dictation tool, grant Accessibility permission, and set a hotkey that Android Studio does not use. Then pick one habit rather than trying to change everything: dictate the body of your next commit message. It is the lowest-risk field in the IDE, it is a place where more detail is genuinely better, and it is where the speed difference is most obvious.

Once that feels natural, add KDoc on new public functions. Then string resources. Within a week the split between voice and keyboard stops being a decision and becomes reflex, which is the point at which it starts saving real time.

Voice Keyboard Pro has a free tier with daily limits, so you can test the workflow on a real branch before deciding. Pro is $4.99 a month or $34.99 a year, and the same account covers the iPhone keyboard if you also write tickets and review replies away from the desk.

Voice Keyboard Pro
Hold your key · Speak · Release

The words land at your cursor in whatever app you are already in — Mail, Slack, Word, a browser form. No dictation window, nothing to copy across.

Free forever for casual use · Apple Silicon & Intel