Back to Blog

Dictation for Developers: Writing Code Docs With Your Voice

How developers can use voice input for comments, commit messages, PR descriptions, and READMEs, while typing identifiers and code, and keeping proprietary details on the Mac.

Auditory team
May 11, 202610 min read

You just renamed a variable across a dozen files, wired up new authentication middleware, and watched the tests pass. Now comes the part you dread: explaining what you did and why. You stare at the commit message field, type "refactored auth," and hit enter. The PR description gets a ticket number and "see Jira." The README section on the new auth flow will wait until next sprint, which means it may wait forever.

This pattern is common, and not because developers are lazy. Documentation happens at the worst moment, after your sharpest focus has gone to logic, edge cases, and debugging. Writing prose about what you built feels like a second job done with your remaining energy.

There is another way to produce that prose. Talking through what your code does, the way you would explain it to a colleague, and letting a dictation tool capture and clean it up, can make the explanation easier to produce while you still remember the details.

The Documentation Tax Every Developer Pays

A lot of engineering work is writing that is not code: inline comments, docstrings, commit messages, PR descriptions, architecture notes, review feedback, and onboarding material. How much time that takes varies by team and role, but most developers recognize the feeling that it competes with coding for the same hours.

The bigger problem is when it happens. Documentation tasks cluster at the end of a coding session, when you are most tired. The result is predictable: terse commit messages, missing context in PR descriptions, and docstrings that never get written.

Typing also pulls you into editing mode early. The moment your fingers hit the keyboard, you start fussing over sentence structure and word choice, and that internal editor slows the flow of ideas. When you speak, you tend to explain code the way you would to a colleague next to you: in full sentences, with the reason included alongside the behavior.

Why Talking Through Code Can Produce Better Docs

There is a reason rubber duck debugging works. Explaining your logic out loud forces you to put it in order, and in doing so you fill in steps that feel obvious while the code is on screen but are invisible to someone reading the docs months later.

Spoken explanations also tend to include the reasoning. Instead of typing `// Sorts users by last active date`, a developer explaining the same line aloud is more likely to say "We sort users by last active date here because the front end expects the most recently active users first, and the database query doesn't guarantee that order." That sentence carries two extra pieces of context, the consumer's expectation and the database behavior, that a hurried typed comment usually leaves out.

The obvious concern is that speech is messy. People say "um," repeat themselves, and wander. That is where cleanup helps. Filler removal, punctuation, and grammar fixes turn conversational speech into readable prose that you then edit. Our article on how AI text cleanup works explains what those steps do and where they can go wrong.

5
Documentation artifacts that suit voice input, covered below
2
Input modes to split deliberately: voice for prose, keyboard for code
1
Global hotkey to start and stop dictation from any Mac text field
1
Metric to track: time per documentation artifact

Five Documentation Artifacts That Work Best With Voice

Not everything in a developer's day suits dictation. Writing a regex or naming a variable? Keep the keyboard. But prose-heavy artifacts, the ones that explain rather than execute, are where voice input fits.

Inline Doc Comments and Docstrings

Function purpose, parameter descriptions, return values, and edge-case warnings are all natural language. Dictate them the way you would explain the function to a developer joining the team tomorrow.

Git Commit Messages and PR Descriptions

A short spoken summary of what changed and why usually beats a one-word typed message. PR descriptions benefit even more, because they are short narratives about intent, trade-offs, and testing. Speak it, review the cleaned text, and paste it in.

README Files and Architecture Docs

The narrative sections of a README, such as the overview, setup walk-through, and design rationale, are prose. Dictate those. Type the dependency lists, configuration values, and code blocks.

Code Review Comments

Tone is hard to get right in written reviews. Speaking your feedback and then editing it can produce comments that are specific without sounding curt.

API Documentation

Describing endpoints, request payloads, error responses, and authentication is onboarding-style explanation. If you can explain your API to a new hire out loud, you can dictate a first draft of its docs.

ArtifactDictateTypeVoice strategy
Commit messagesSummary of what and whyTicket IDs, file namesSpeak one or two sentences
PR descriptionsIntent, trade-offs, testing notesLinks, code referencesNarrate the change as if briefing your tech lead
Function docstringsPurpose, parameters, edge casesIdentifiers, typesExplain conversationally, then insert names
README sectionsOverview, rationale, setup narrativeCommands, config, codeDictate prose blocks, type snippets
Code review commentsThe feedback itselfLine referencesSpeak naturally, then edit for tone

Setting Up a Dictation Workflow in Your Editor

The practical question is how voice fits into a keyboard-centric environment. The answer is to treat it as a prose mode alongside your existing tools.

Auditory uses a global hotkey, so you can start dictation from a text field in any Mac app and paste the result where you are working. Its first release set the default hotkey to Ctrl+Shift+Space. That covers VS Code comment blocks, JetBrains documentation panels, terminal-based commit editors, and browser-based PR forms without a plugin for each tool.

The flow is simple: finish a function, press the hotkey, explain it, release, and review the text that lands in your editor.

Model choice matters for technical vocabulary. Smaller models respond faster, which suits short commit messages. Larger models tend to handle uncommon terms such as framework names, API names, and architectural patterns better, at the cost of more memory and a longer wait. Test both on a paragraph full of your own stack's terms. Our Whisper model comparison covers the trade-offs.

The workflow to aim for: write code with the keyboard, switch to voice for prose artifacts. Code stays typed. Explanations get spoken.

Add Your Stack to the Custom Vocabulary First

Before you dictate technical docs, add the names that trip up general speech models: your product names, internal service names, framework terms, and acronyms. A custom vocabulary often fixes the words that annoy you most, and it costs less than switching to a heavier model for every session.

Handling Technical Jargon, Camel Case, and Code Snippets

Voice input handles natural language well and code syntax badly. Dictating `useEffect(() => {})` is not going to work, and you should not try.

Use a hybrid approach. Dictate the explanation, type the code references, then merge them. Say "This hook runs once on component mount and fetches the user's profile data from the API. It updates the loading state and handles the case where the user's session has expired." Then insert `useEffect` and `fetchUserProfile()` by hand. A little editing per doc block is still usually quicker than typing the whole paragraph.

Say technical terms the way they are written. "AWS S3 bucket" tends to transcribe more predictably than a nickname, and "REST API" more predictably than "restful endpoint thingy." Small habits like this reduce corrections.

For identifiers in camelCase or snake_case, do not dictate them at all. Typing `getUserProfile` takes a couple of seconds, which is less than correcting whatever a speech model guesses. Use voice for the surrounding prose and the keyboard for identifiers. The habit forms quickly.

Why Local Processing Matters When You Dictate About Proprietary Code

Here is a scenario many developers do not consider. You are dictating a PR description for a new payment feature. In your explanation you mention internal endpoint structure, the payment provider you are integrating, the retry logic for failed transactions, and an environment variable name.

With cloud dictation, that audio, full of proprietary architecture details, goes to a third-party service for processing. Depending on the provider's terms, it may be retained or used to improve models.

On-device transcription keeps that step on your Mac. Auditory runs speech recognition locally with Whisper models, so the transcription step does not send your audio to a cloud speech service. You can check the behavior yourself by watching the app's network activity while you dictate online and confirming that dictation still works with its network access blocked; our guide to auditing a transcription app walks through both tests.

That matters for teams with security reviews. Many organizations evaluate any tool that sends source-related data to an outside service, and a local speech step removes one data flow from that review. For freelancers and consultants under NDA, it also keeps client details off another vendor's servers. Check your employer's or client's policy either way.

A Sprint Plan: Before and After Dictation Adoption

Here is an illustrative scenario to show how to measure the change, not a measured result. A backend engineer needs to document a batch of new API endpoints during a sprint. Each needs a description, parameter docs, error responses, and an example.

Before: The engineer types each endpoint's docs after implementation, while tired. Descriptions are terse, edge cases appear only when they caused bugs, and reviewers ask for more context.

After: The engineer speaks each endpoint's documentation as if onboarding a new teammate, then types the identifiers and code examples. Spoken explanations are more likely to capture edge cases, error scenarios, and design reasoning, because the engineer is in teaching mode.

To know whether the change helped on your team, measure it: time per endpoint, the number of "needs more context" review comments, and how often docs need a second revision. Compare a sprint before and after.

Start Talking to Your Codebase This Week

Do not try to dictate everything on day one. Build the habit in layers, starting with the lowest-stakes tasks.

Days one to three: commit messages only. Every time you commit, press the hotkey and speak one sentence about what changed and why. "Refactored auth" becomes "Moved the JWT validation logic into a shared middleware function so both the API gateway and the internal service routes use the same token verification."

Weeks one and two: PR descriptions and review comments. Narrate PR descriptions as if briefing your tech lead. Speak review feedback naturally, then edit for tone.

Week two onward: README sections and architecture docs. Dictate the narrative sections that explain design, setup, and rationale. Type the code blocks, config examples, and reference tables.

Track one metric starting today: time per documentation artifact. Time your commit messages, PR descriptions, and doc comments with typing alone. Then measure the same tasks with dictation after a week. Your own before-and-after numbers will make the case better than any article.

You already know how to explain your code clearly. You do it in standups, pairing sessions, and design discussions. Dictation captures those explanations and puts them where they belong: in your codebase, for the next person who needs to understand what you built.

Ready to try Auditory?

Privacy-first speech to text. Download free for macOS.