The annoying thing about dictation is that code and conversation need completely different handling. Saying "open paren" should give you ( in your IDE, but "(open paren)" in your email. Most tools just pick one behavior and stick with it.
Whisperer switches automatically based on which app you're in.
How It Works#
You create a profile and assign it to apps. Whisperer checks which app is in front and switches to the right profile. No manual toggling.
Defaults#
Out of the box, everything uses natural language mode. With Pro Pack, you can set up custom profiles:
| App | Suggested Mode | Behavior |
|---|---|---|
| VS Code | Code Mode | Symbols by voice, casing commands, no autocorrection |
| Cursor | Code Mode | Same as VS Code |
| Terminal | Code Mode | Handles dashes, dots, paths correctly |
| JetBrains IDEs | Code Mode | Full IDE support |
| Slack | Chat style | Casual, lowercase-friendly, natural flow |
| Gmail | Email style | Proper sentences, natural punctuation |
| Apple Notes | Natural language | Standard dictation |
| Safari/Chrome | Natural language | Web forms, search queries |
Setting Up Profiles#
Open Whisperer from the menu bar
Click the Whisperer icon in your menu bar
Go to Settings > Profiles
Navigate to the Profiles section in Settings
Click Add Profile
Create a new profile for your app
Name your profile
Give it a descriptive name (e.g., "IDE - Code Mode")
Select the mode
Choose Code Mode or Natural Language
Assign apps
Click Add App and select from your Applications
What You Can Customize#
Mode
Code Mode or Natural Language. Pick per profile.
Language
English for code, Spanish for personal stuff, whatever you need.
Dictionary
Different terms for different contexts. Work jargon in one profile, not everywhere.
Real Examples#
Morning Standup (Slack)#
Open Slack, dictate your update:
“Good morning. Yesterday I finished the API migration and opened a PR. Today I'm working on the onboarding flow redesign. No blockers.”
Good morning. Yesterday I finished the API migration and opened a PR. Today I'm working on the onboarding flow redesign. No blockers.Clean, casual. Good for Slack.
Coding (VS Code)#
Switch to VS Code, Code Mode kicks in:
“async function camel case fetch user data open paren user id colon string close paren colon promise”
async function fetchUserData(userId: string): PromiseClient Email (Gmail)#
Open Gmail, get proper sentences:
“Hi Michael. Thanks for the feedback on the prototype. I've incorporated your suggestions and the updated version is attached. Let me know if you'd like to schedule a walkthrough.”
Hi Michael. Thanks for the feedback on the prototype. I've incorporated your suggestions and the updated version is attached. Let me know if you'd like to schedule a walkthrough.Terminal#
Code Mode handles commands too:
“kubectl get pods dash n production dash o wide”
kubectl get pods -n production -o wideNone of this requires any manual switching. It just happens.
Tips#
Separate Profiles for Different Languages
Python (snake_case in PyCharm) vs JavaScript (camelCase in VS Code). Different profiles if you want.
Profile-Specific Dictionaries
Project jargon only where you need it.
Set a Good Default
The default catches anything without a profile. Natural language is probably what you want there.
Group Similar Apps
Multiple apps can share one profile. All your IDEs together, all chat apps together.
Why Bother?#
Without this, you'd manually switch modes every time you alt-tab. That friction kills the whole workflow. With profiles, you just talk and it works.
Related: Dictation for Slack, Gmail & Notion, Code Mode, Voice Coding Guide. See pricing and all features.
Ready to try voice dictation on your Mac?
Free download. No account required. 100% offline.
Download on the Mac App Store