Two jobs, in detail

The short version is on the home page. This is the whole of it — how dictation behaves, what a meeting leaves on disk, and how long it takes.

01 — Dictation

Hold a hotkey, speak, release.

Hold the key and speak, or switch to tap-to-start; the key is yours to choose. Your words are on the clipboard about a second after you finish. Switch on Insert at cursor and Saykeep pastes them (⌘V) into the field you were typing in — any Mac app that takes a paste: your editor, your mail, your terminal, your chat. That is what the Accessibility permission is for. On the clipboard path, clipboard-history tools will see your dictation like any other copy.

A custom vocabulary — a plain text file of your names and jargon, kept on your Mac — fixes their spelling in dictated text and in what the summariser reads, and hands Whisper the same list as a glossary hint while it transcribes. The saved meeting transcript stays what the model actually heard.

Mail Slack VS Code Terminal Notes Any app that takes a paste
Saykeep Setup, step 8 of 8: “Try it — hold your push-to-talk key”, with a transcribed sentence and chips reading 0.9 s, large-v3-turbo, mlx · Apple GPU, You're all set.
Setup ends with a live test: hold the key, say something, and see the text, the model and the backend it ran on. (Illustration at the measured median.)
0.89 s
median decode time, model warm

The on-device decode of a dictation of up to 30 seconds, once the model is warm: median 0.89 s across 101 dictations from the developer's own logs on one Apple M5 Mac (32 GB), Whisper large-v3-turbo on the GPU — fastest 0.6 s, slowest 10.5 s, measured before the text is pasted. Longer dictations take proportionally longer; there is no cap. On a memory-pressured Mac the first dictation after a long idle has taken several seconds longer while macOS paged the model back in; since 0.3.7 that reload starts the moment you press the key (not yet re-measured).

~5 %
word error rate, English and Polish

The default models on a 100-sentence sample of the public FLEURS test set per language — read speech, not meeting audio — transcribed on an Apple Silicon Mac with stock settings: roughly one word in twenty wrong, in both languages. Names and specialist terms are where any model slips; that is what the custom vocabulary is for.

large-v3-turbo
the dictation model, named

Whisper large-v3-turbo for dictation, Whisper large-v3 for meetings, both running on your Mac's GPU through mlx-whisper. Dictation is the model's own output plus your vocabulary fixes — punctuated, but no rewrite pass and no cloud. Dozens of languages, auto-detected per recording or pinned to one in Settings; pick a smaller model there if you want speed over accuracy.

02 — Meetings

No bot in the call. No cloud behind it.

Start a recording and Saykeep captures your mic and everything your Mac plays, straight from macOS's own audio system — no bot joins the call, no virtual audio driver to install. The capture is system-wide, so it doesn't care which app is talking: Zoom, Meet, Teams, a Slack huddle, a browser tab. Zoom is what the developer records with every day. For meetings, macOS asks for two permissions: Microphone and System Audio Recording.

One meeting = one folder in the place you choose REC
mic.opusyour side~27 MB
system.opuseveryone else~25 MB
meeting.jsonwhen, how long, which tracks<1 KB
transcript.jsontimestamps and speakers~220 KB
transcript.mdreadable anywhere~70 KB
summary.mdif you connected an endpoint3 KB
Sizes for one hour of call, from real recordings. Opus audio (VLC, IINA or any player that handles Opus), JSON, Markdown — open them without Saykeep, no export step. Prefer transcripts only? A setting deletes the audio once the transcript is written.

When the call ends, Saykeep keeps working in the background

On the Mac we measured (an M5), an hour of meeting audio works out to roughly 3–7 minutes of transcription and about 30 more of speaker labelling, which runs on the CPU before the transcript is written — scaled from real 10–17-minute recordings. Older Apple Silicon Macs will be slower; we haven't measured them yet.

A summary has three parts

Topics · Decisions, each marked Decided or Discussed · Action items, where the model is instructed to tag an owner on every item: the person at the microphone, a participant named out loud, or Unassigned. The text is written by the AI endpoint you connect; without one, the summary step is skipped.

## Topics
- …
## Decisions
- [Decided]: …
- [Discussed]: …
## Action items
- [Marek]: …
- [Unassigned]: …

Speaker labels, computed on your Mac

One ~30 MB model download the first time, then fully offline. Open a recording, rename “Speaker 1” to a real name, and that meeting's transcript re-renders with it. Voices picked up by your own mic are marked “You” unless you turn on mic speaker identification in Settings.

Recording is visible by design

Whenever Saykeep is recording a meeting, the menu-bar icon shows it the whole time, and no setting turns that off — a test sweeps every setting to keep it so. Before your first meeting recording, a plain-language notice says recording may need every participant's consent and names jurisdictions to be aware of. The indicator is on your screen only: Saykeep sends nothing into the call, so telling the other people is still up to you. Is it legal to record?

Audio you can let go of

Keep the audio (the default), have Saykeep delete it once the meeting's transcript is written, or have it ask you after each meeting. Audio is only ever deleted after a transcript exists; transcripts and summaries are never deleted automatically.

Trialing Granola? Read the comparison →

Download free trial 30 days · all features · no credit card · no account · macOS 14.2+ (Apple Silicon)