Skip to content

title: Offline meeting notes — a local, open-source Otter.ai alternative description: Record a meeting and get a speaker-labelled transcript and minutes entirely on your own machine. No cloud, no account, no per-seat fee, and no bot joining the call. Free and open source.


Offline meeting notes — transcripts and minutes without the cloud

Short answer: if your meetings must not be uploaded anywhere — clinical, legal, HR, pre-publication research, or just internal — YazSes records them on the machine in front of you, writes a speaker-labelled transcript, and can draft minutes with a local LLM. Nothing is uploaded, no account is required, no bot joins the call, and there is no per-seat fee.

This page is deliberately honest about what YazSes does not do. There are good tools in this space; some will fit you better.

The 60-second version

pipx install 'yazses[diarization]'     # speaker labels need this extra (~45 MB of models, fetched once)

yazses meeting start                   # hands-free — no key to hold
# … the meeting happens …
yazses meeting stop                    # → speaker-labelled transcript

You get a transcript like:

Speaker 1: Right, let's start with the migration timeline.
Speaker 2: We're blocked on the staging database until Thursday.
Speaker 1: Then we move the cutover to Monday. I'll tell the customer.

Then, optionally:

yazses meeting relabel <id> --rename speaker_1=Amara         # fix the labels once
yazses meeting enroll  <id> --speaker speaker_1 --name Amara # …or teach it a voice, so it's named next time
yazses meeting notes   <id>                                  # summary, decisions, action items (needs a local LLM)

Everything above runs on CPU. No network access is used at any point.

No terminal? Use the tray icon

Start meeting and Stop meeting are in the tray icon's click-menu, so you can begin recording after the call has already started without alt-tabbing to a shell. It runs the same two commands over IPC. Meeting Mode is off by default — turn it on once in Settings…, or with yazses features enable meeting, and restart.

How it compares

YazSes Otter.ai Fireflies / tl;dv / Granola Meetily, TalkTrack & similar local tools Whisper + your own scripts
Audio leaves your machine Never Yes Yes No No
A bot joins your call No Yes (or app recording) Yes Varies No
Account required No Yes Yes Usually no No
Cost Free, Apache-2.0 Paid per seat — Business is $30/user/month, or $19.99 annual, minimum 5 seats Paid per seat Free Free
Speaker labels Yes (opt-in extra) Yes Yes Usually yes You build it
Minutes / action items Yes (opt-in, local LLM) Yes Yes Often yes You build it
Captures a remote call's other participants Only via the room mic — see below Yes Yes Often yes (system audio) Depends
Also a hold-to-talk dictation tool Yes No No No No
Also transcribes existing recordings Yes (yazses transcribe) Yes Some Some Yes
Install pipx · APT · Snap SaaS SaaS Often Docker n/a

Where YazSes is genuinely different

Local meeting transcription is not a category YazSes invented — Meetily, TalkTrack, and others do it well, and several are excellent if a meeting recorder is all you want.

What is different here is that Meeting Mode is one mode of a general on-device speech daemon, not a separate product:

  • The same install, the same downloaded Whisper model, and the same config also give you hold-to-talk dictation into any app and voice commands for your editor and terminal.
  • The same speaker-embedding machinery powers yazses transcribe <file> for interviews and lectures you recorded elsewhere.
  • No bot, no browser extension, no Docker. It is a daemon you install from pipx, APT, or Snap, and it records the room.
  • Enrolled voiceprints are stored encrypted, on-device only, and are never created without you explicitly asking. Biometric data never leaves the machine.

If you want a meeting recorder and you dictate every day, that consolidation is the argument. If you only ever need meeting notes, a dedicated tool is a reasonable choice.

Where YazSes is the wrong tool

Read this part before you install anything.

  • It records the microphone, not the call. For an in-person meeting — a room, a table, a phone in the middle — this is exactly right, and it is the case Meeting Mode was built for. For a remote call, YazSes hears only what your microphone hears, so remote participants come through your speakers or not at all. If you need clean per-participant audio from Zoom or Teams, use a tool that captures system audio or joins the call.
  • Minutes need a model you supply. yazses meeting notes runs a local GGUF LLM you point it at (the notes extra plus, e.g., a Q4_K_M Phi-4-mini or Qwen2.5-3B). There is no bundled model and no API fallback. Without it you still get the full transcript.
  • Speaker labels are Speaker 1..N until you name them. Diarization finds how many distinct voices there were and groups turns; it does not know who anyone is. You name them once with relabel, or enroll a voiceprint so they are recognised next time. Note that meeting enroll reads the stored recording, so it only works for a meeting captured with [meeting] retain_audio = true — by default the audio is already gone.
  • A name is one person, whatever its capitalisation. Enrolling amara when Amara is already enrolled replaces Amara rather than creating a second participant, and the name keeps the spelling it was first enrolled with. There is no way to hold both: a voiceprint is a file named after the person, and on macOS and Windows the filesystem itself treats those two names as one file. YazSes behaves the same way everywhere rather than making who-you-get depend on which computer you are sitting at.
  • Accuracy is CPU Whisper accuracy. On a good mic in a quiet room this is strong. In a large echoey room with six people talking over each other, a cloud service with per-channel audio will beat it. That is the trade you are making for privacy.
  • English-tuned by default. It ships *.en models; other languages need a different one.

What actually happens to your audio

Stage Where it lives
During the meeting Streamed to a WAV file in the YazSes data directory on your machine, plus a live.jsonl rolling transcript so a crash does not lose the meeting
At meeting stop Transcribed and diarized locally, then the recording is deleted — but only once that post-pass has succeeded, and not at all if [meeting] retain_audio is on
If the post-pass never finishes The recording is kept. yazses meeting list says so and yazses meeting recover <id> re-runs the transcription on it
Afterwards The transcript, and any notes, stay in the meeting folder — plain files you own
Enrolled voiceprints Encrypted in the on-device learning corpus, machine-bound, never transmitted

No telemetry is collected and no network request is made by the meeting pipeline. See the privacy statement.

Recording other people — please read

Consent rules for recording conversations vary by country and, in the US, by state; some jurisdictions require all parties to consent. YazSes gives you the technical ability to record; it does not give you the legal right to. Tell people they are being recorded, and follow the law where you are. Voiceprint enrollment in particular is biometric data — only enroll people who have agreed to it.