On-device · Apple Neural Engine

Live captions for
whatever your Mac is playing.

Videos, calls, podcasts — transcribed as they play and drawn as an always-on-top overlay. Nothing is uploaded, nothing is recorded, nothing is written to disk.

One-time $9, every future update included · macOS 14.2 or later · Apple Silicon · or build it yourself from source

Universal live subtitles

Subtitles captions any audio your Mac can play, because it taps the app itself rather than integrating with any one service. Three situations come up again and again.

01

Meetings and calls

Zoom, Google Meet, Teams, a Slack huddle, a call in a browser tab — all of it is just audio coming out of an app, so all of it gets captioned. Second language or not, it earns its place the moment an accent is unfamiliar, someone's microphone is bad, or two people talk over each other: reading a word you only half-heard is faster than asking for it again, and it doesn't interrupt anyone.

02

Keeping the thread while you work

Audio doesn't wait. The moment you switch to your notes, your editor or a browser window, you start losing the conversation. The overlay is always on top of every window and click-through, so it stays where it is while you work in front of it — you can take notes, look something up, and still follow what's being said.

03

Videos, podcasts and lectures

A video with no captions, or with automatic ones that are worse than none. A podcast in a language you're still learning. A recorded lecture, an interview, a film with quiet dialogue. Captions appear over whichever window is playing it, at whatever text size you set, in nine languages with the language detected for you.

All three have the same thing in common: a meeting, a call and a private recording are none of a server's business. None of this audio is uploaded, because none of it has to be — the model runs on your Mac.

Built around three constraints

Live audio can't be paused, can't be re-run, and shouldn't have to leave your machine. Everything here follows from that.

Nothing leaves the Mac

No network calls, no accounts, no telemetry. Audio goes from the tap straight into the recogniser and is discarded. The only thing ever downloaded is the model itself, once.

Neural Engine, not CPU

Roughly 0.15 real-time factor — six seconds of speech transcribed per second of compute. The same model on the CPU measured about 100× too slow to keep up with a live stream.

Any app, one at a time

Pick a source from the menu bar and it captures that app and every helper process it spawns — which is what makes it work for browsers and Electron apps, where audio never comes from the main process.

Music doesn't become lyrics

A voice detector runs ahead of the recogniser so backing tracks never reach it. Without it, music fills the model's context and the first words after it are lost.

A new box per speaker

Optionally start a fresh subtitle when someone else starts talking, the same way a pause does. Off by default — it runs a second model alongside the first.

Nine languages

The default model detects the language itself. English gets seven dedicated checkpoints on top, trading latency against accuracy from 160 ms upward.

How it works

A realtime audio thread that only ever copies, a portable core that never transcribes, and a model running where it belongs.

  1. 1

    Core Audio process tap

    48 kHz stereo, a callback every 10.7 ms. The realtime thread copies into a lock-free ring buffer and does nothing else.

  2. 2

    Resample and gate

    Down to 16 kHz mono on a worker thread, silence skipped, with about a second replayed ahead of speech so no word starts cold.

  3. 3

    Parakeet on the Neural Engine

    A streaming model, not a 30-second-window one — the difference between captions that track the audio and captions that arrive seconds late.

  4. 4

    Overlay

    Three-line pages that clear and restart the way broadcast subtitles do, fading four seconds after the last new text rather than after the audio stops.

Everything from the ring buffer to the model boundary is portable Rust that deliberately doesn't transcribe — it hands out frames. The tap and the overlay are the only Mac-specific parts.

Pick a language, not a model

Language is the first thing that rules a model in or out, so it's the top level of the menu. Switching within a pack is instant; crossing between packs fetches the other one and keeps whatever you already have.

Change your mind mid-download and it cancels and starts the new one straight away. Switch back later and it resumes instead of starting over.

It lives in the menu bar

No Dock icon, no window to manage. The icon tells you what it's doing: indigo while listening, blue while a model downloads, yellow if the pipeline starts falling behind — and never red, because red means recording, and nothing is ever written anywhere.

S
Pause and resume
Hold
Make the overlay draggable — it's click-through otherwise
Menu bar
Model, source, text size, overlay position, permission state

Worth knowing before you download

  • First launch takes minutes. The model is about 633 MB and fetches itself on first run. The menu bar shows the progress.
  • macOS will ask to record system audio. Skip that prompt and every sample arrives as digital silence with no error anywhere — so the app keeps a permission check in the menu rather than pretending to know.
  • Singing counts as speech. The voice detector can't tell the difference, so vocal music comes through as lyrics.
  • Speaker breaks are retrospective. Diarization reports on a cadence, so a word or two of the new speaker can land on the outgoing box before it clears.
  • One display. The overlay uses the main screen.

Captions for anything, without sending audio anywhere.

One-time $9, every future update included · macOS 14.2 or later · Apple Silicon