Push to Talk Mac: Voice Capture That Stays Local

GuidesAugust 24, 20267 min readBy PinVari
Push to Talk Mac: Voice Capture That Stays Local

Push to talk Mac is a global hotkey that records your voice while you hold or toggle it, then turns that audio into text you can paste, send, or hand to an agent. Native macOS dictation (press ⌘⌘ in a text field) is free and on-device, but it is not push-to-talk in the radio sense and it dies the moment you are not in a text field.

Most roundups treat Wispr Flow as the whole category. That is one paid habit. The other question is whether the transcript is just words, or words bound to the exact control you were pointing at.

What is push to talk Mac, versus dictation?

Dictation inserts text at the caret. Push-to-talk is a capture gesture: hotkey down, speak, hotkey up, result lands somewhere you chose.

macOS dictation is caret-scoped. Click a Notes field, press ⌘⌘, speak, done. Fine for email. Useless on a Figma canvas, a running iOS simulator, or a native preference pane with no focused field.

Push to talk Mac tools install a CGEventTap or similar global listener. They work over any app, including ones that do not accept text input.

That is why developers pay for them. The cursor is over a broken button, not in a textarea.

Key

If the tool only pastes into the frontmost text field, you bought dictation with a nicer shortcut. Real push-to-talk works when there is no field at all.

How do I turn on native Mac dictation first?

Do this even if you will buy a third-party app. It is free and covers Messages, Mail, and Slack.

  1. System Settings → Keyboard → Dictation → On.
  2. Shortcut: Press ⌘⌘, or Right ⌘, or Fn twice.
  3. Language: pick one. English (US) understands "period" and "new paragraph."
  4. Enable auto-punctuation if you hate saying "comma."

Click a text field. Press the shortcut. Speak. Press it again.

On-device models download once. After that, no account.

Limits: no global overlay, no screenshot, no element name. See voice to text on Mac for the full native path.

Which push to talk Mac apps are actually used?

Here are the ones I see on developer machines, stated fairly.

macOS Dictation

Type: system, caret-only Hotkey: ⌘⌘ or Fn Fn Privacy: on-device after model download Price: free Limit: text fields only

Wispr Flow

Type: third-party overlay Hotkey: configurable hold-to-talk Privacy: cloud-assisted transcription on their stack Price: about $12–15/month Limit: a subscription for words; no named UI element

Superwhisper and similar local apps

Type: local whisper.cpp style Hotkey: hold-to-talk Privacy: on-device Price: one-time or cheap Limit: transcript only; you still type "the green button in the modal"

PinVari

Type: point-and-speak capture Hotkey: ⌥⌘A mark, ⌥⌘V voice-only Privacy: on-device speech and OCR; nothing uploaded by default Price: $39 launch license (first 500, then $59), one-time Limit: macOS 14+; AX empty on some canvas and games, then OCR

Wispr proved people will pay monthly to talk instead of type. That is a real strength. If you only need words in Slack, it is a fit.

If you need words plus "this" bound to a timestamped pointer trail, you want a capture app, not a dictation overlay. Dictation apps for Mac compares the typing tools.

Tip

⌥⌘V is voice-only when you already know the target window. ⌥⌘A is press-to-toggle marking: circle or point, speak, press again or hit ⏎. Do not remap those to ⌥Space; that is a different product's myth.

How do I set up push to talk for an AI coding agent?

A transcript in the clipboard is half the job. The Agent still has to guess the control.

The loop that works on my machine:

  1. Install a capture app that runs a local MCP server on 127.0.0.1.
  2. Connect Cursor or Claude Code (PinVari → Connect, or claude mcp add --scope user pinvari -- "$HOME/.pinvari/mcp/pinvari-mcp").
  3. Hold ⌥⌘A, circle the control, say the change.
  4. Let the Agent call pinvari_next_instruction.
  5. When it is done, pinvari_mark_done.

The Agent gets the spoken words, the AX role and label, the frame, a confidence score, circled-versus-dwelled provenance, and a crop. Deictic words bind to where the pointer was when you said them.

That is push to talk Mac aimed at agents, not at email. The Claude-specific version is push to talk voice for Claude Code.

Mid-task the Agent can request another capture. The notch island lights up. You point again. The result flows back without a paste.

What should I check in System Settings?

Global hotkeys fail for boring reasons.

Input Monitoring. The app must see key events. Without it, the hotkey never fires over other apps.

Accessibility. Required to read AXUIElement under the pointer. Without it you get a screenshot and a guess.

Microphone. On-device transcription still needs the mic entitlement.

Screen Recording. Needed for the crop and for OCR fallback.

Grant these per app. A second copy from a DMG in Downloads will look like a new app to TCC. Keep one install.

Intel and Apple Silicon both work on PinVari. Distribution is a notarized Developer-ID DMG, not the Mac App Store, because the MAS sandbox blocks a global CGEventTap plus reading other apps' AX trees.

When does push-to-talk fail on a Mac?

No focused field, and the tool is dictation. You spoke into the void. Use a global overlay.

Meeting apps steal the mic. Zoom or Meet held the audio device. Quit the call or switch the input.

Hotkey collision. Raycast, CleanShot, and Alfred already own nearby chords. Pick something unused. ⌥⌘A is the PinVari default.

Quiet room is a myth. HVAC noise wrecks small models. A cheap headset beats a better model in a loud kitchen.

AX-blind surfaces. Games, raw canvas, some Electron views. Honest tools fall back to on-device Vision OCR and say so. They do not invent a button name.

Low confidence. Below about 0.8, the capture should ask which control you meant. Silent guesses create wrong edits.

Heads up

Cloud push-to-talk apps can be accurate and still be the wrong default for a codebase on screen. If the audio or screenshot leaves the Mac, treat it like pasting the UI into a vendor. On-device is the conservative choice.

Is a subscription worth it, or a one-time app?

Wispr's price is a habit tax. Fine if you dictate all day into every field.

A one-time Mac app is the usual power-user preference (CleanShot X, Raycast Pro debates aside). PinVari is $39 at launch via Polar, then $59, team seats extra, no subscription for the core app. See pricing.

Buy dictation if you want words in the caret. Buy capture if you want words plus a named element for Claude Code, Cursor, Codex, or a Linear ticket.

I use native dictation for Slack and push-to-talk capture for UI work. Two tools, two jobs.

How do I practice push to talk Mac without wrecking a meeting?

Do a dry run in Notes first, then in a throwaway repo, then over a running app.

In Notes you are testing the mic and the shortcut only. In the repo you are testing whether the transcript lands where you meant. Over a running app you are testing whether the tool can work with no caret at all.

Say one sentence, stop, read it. If the tool inserts into Slack because Slack was focused, it is dictation wearing a push-to-talk costume.

Keep a second shortcut for abort. I have ended more than one capture by talking to a person while the overlay was still live. Pause (⌥⌘P) is the habit; quitting the app is the panic move.

Hold to talk, then look at the focus before you trust the tool in a standup.

FAQ

Does macOS have built-in push to talk?

Not in the radio sense. Dictation is a text-field shortcut. There is no system overlay that records over any window and pastes anywhere. Third-party apps add that.

What is the best push to talk Mac shortcut?

The best shortcut is one nothing else owns. ⌘⌘ is taken by dictation. ⌥⌘A and ⌥⌘V are PinVari's defaults. Avoid single modifiers; they collide with menus.

Is Wispr Flow the same as push to talk Mac?

Wispr is one commercial push-to-talk layer with strong transcription. It is not the only option, and it does not resolve Accessibility names. Pick it for prose. Pick a capture app for UI briefs.

Can I use push to talk Mac offline?

Native dictation can, after the voice model is downloaded. Local whisper.cpp apps can. Cloud apps cannot. PinVari transcribes on-device with Apple frameworks.

Will push to talk work in a terminal or in Xcode?

A global capture hotkey works over those windows. Caret dictation only works if the view accepts the system input source. For agent work, prefer the global tool so you can talk over a running build.

Does push to talk Mac upload my screen?

Only if the app you chose does. Read the privacy page. A local MCP capture stays on 127.0.0.1 until you send a tool result to your own model.

Hand your agent the exact element

PinVari resolves what you point at into a named, executable instruction — on-device, no keys, your own agent. One click inside PinVari connects Claude Code, Cursor, VS Code or Codex — or paste one CLI line from pinvari.com/connect.

PinVari → Connect → your agent (one click)
Get PinVari — $39 →