March 28, 20264 min read

Per-App Dictation Profiles: Context-Aware Voice Input on Mac

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:

AppSuggested ModeBehavior
VS CodeCode ModeSymbols by voice, casing commands, no autocorrection
CursorCode ModeSame as VS Code
TerminalCode ModeHandles dashes, dots, paths correctly
JetBrains IDEsCode ModeFull IDE support
SlackChat styleCasual, lowercase-friendly, natural flow
GmailEmail styleProper sentences, natural punctuation
Apple NotesNatural languageStandard dictation
Safari/ChromeNatural languageWeb forms, search queries

Setting Up Profiles#

1

Open Whisperer from the menu bar

Click the Whisperer icon in your menu bar

2

Go to Settings > Profiles

Navigate to the Profiles section in Settings

3

Click Add Profile

Create a new profile for your app

4

Name your profile

Give it a descriptive name (e.g., "IDE - Code Mode")

5

Select the mode

Choose Code Mode or Natural Language

6

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:

You say

Good morning. Yesterday I finished the API migration and opened a PR. Today I'm working on the onboarding flow redesign. No blockers.

OutputSlack
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:

You say

async function camel case fetch user data open paren user id colon string close paren colon promise

OutputTypeScript
async function fetchUserData(userId: string): Promise

Client Email (Gmail)#

Open Gmail, get proper sentences:

You say

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.

OutputEmail
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:

You say

kubectl get pods dash n production dash o wide

OutputBash
kubectl get pods -n production -o wide

None 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?#

Tip

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

Related articles

Try it.

Pay once. Keep it forever. Nothing goes to the cloud.

Free trial included. Pro Pack $14.99 lifetime.