Skip to main content

Offline meeting transcription for macOS with automatic meeting detection

Project description

Meeting Noter

Offline meeting transcription tool for macOS. Captures both your voice and meeting participants' audio, saves to MP3, and transcribes locally using Whisper.

Features

  • No setup required - Just install and run
  • Captures both sides - Your mic + system audio (meeting participants)
  • Offline transcription - Uses Whisper locally, no API calls
  • Auto-detection - Detects active meetings (Zoom, Teams, Meet, Slack)
  • Multiple interfaces - Menu bar app, desktop GUI, or CLI
  • Auto-segmentation - One file per meeting (detects silence)

Installation

# Install dependencies
brew install ffmpeg lame pkg-config python@3.12

# Install meeting-noter (use Python 3.12 for best compatibility)
pipx install meeting-noter --python /opt/homebrew/bin/python3.12

Or with pip:

pip install meeting-noter

Quick Start

Menu Bar App (recommended):

meeting-noter menubar

Desktop GUI:

meeting-noter gui

CLI Recording:

meeting-noter start "Weekly Standup"

The app will request microphone and Screen Recording permissions on first use.

Usage

Recording

  • The menu bar app auto-detects meetings and prompts to record
  • Or manually start recording via the GUI/CLI
  • Press Ctrl+C (CLI) or click Stop to end recording

Transcription

Recordings are auto-transcribed by default. Or manually:

# Transcribe the most recent recording
meeting-noter transcribe

# Transcribe a specific file
meeting-noter transcribe recording.mp3

# List all recordings
meeting-noter list

Commands

Command Description
meeting-noter Launch desktop GUI
meeting-noter menubar Launch menu bar app
meeting-noter gui Launch desktop GUI
meeting-noter start [name] Interactive CLI recording
meeting-noter list List recent recordings
meeting-noter transcribe Transcribe a recording
meeting-noter devices List audio devices
meeting-noter status Check daemon status

Options

start

  • First argument: Meeting name (optional, auto-generates timestamp if omitted)

transcribe

  • -m, --model: Whisper model size (tiny.en, base.en, small.en, medium.en, large-v3)
  • -o, --output-dir: Directory with recordings

list

  • -n, --limit: Number of recordings to show
  • -o, --output-dir: Directory with recordings

How It Works

┌─────────────────────────────────────┐
│         Your Meeting App            │
│      (Zoom/Teams/Meet/Slack)        │
└──────────────────┬──────────────────┘
                   │
     ┌─────────────┴─────────────┐
     ▼                           ▼
┌─────────┐               ┌─────────────┐
│   Mic   │               │ System Audio│
│(default)│               │(ScreenCaptureKit)
└────┬────┘               └──────┬──────┘
     │                           │
     └───────────┬───────────────┘
                 ▼
         ┌─────────────┐
         │Meeting Noter│
         │  (capture)  │
         └──────┬──────┘
                │
                ▼
    ~/meetings/2024-01-15_Weekly_Standup.mp3
                │
                ▼ (auto or on-demand)
         ┌─────────────┐
         │   Whisper   │ (local)
         └──────┬──────┘
                │
                ▼
    ~/meetings/2024-01-15_Weekly_Standup.txt

Permissions

On first use, macOS will ask for:

  1. Microphone - For capturing your voice
  2. Screen Recording - For capturing system audio (meeting participants)

Grant these in System Settings > Privacy & Security.

Configuration

Config file: ~/.config/meeting-noter/config.json

{
    "recordings_dir": "~/meetings",
    "transcripts_dir": "~/meetings",
    "whisper_model": "tiny.en",
    "auto_transcribe": true,
    "silence_timeout": 5,
    "capture_system_audio": true
}

Whisper Models

Model Size Speed Accuracy
tiny.en ~75MB Fastest Good
base.en ~150MB Fast Better
small.en ~500MB Medium High
medium.en ~1.5GB Slow Very High
large-v3 ~3GB Slowest Best

Requirements

  • macOS 12.3+ (for ScreenCaptureKit)
  • Python 3.9+ (3.12 recommended for best compatibility)
  • FFmpeg (brew install ffmpeg) - required for audio processing
  • LAME (brew install lame) - required for MP3 encoding
  • pkg-config (brew install pkg-config) - required for building dependencies

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meeting_noter-0.3.5.tar.gz (67.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meeting_noter-0.3.5-py3-none-any.whl (75.6 kB view details)

Uploaded Python 3

File details

Details for the file meeting_noter-0.3.5.tar.gz.

File metadata

  • Download URL: meeting_noter-0.3.5.tar.gz
  • Upload date:
  • Size: 67.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for meeting_noter-0.3.5.tar.gz
Algorithm Hash digest
SHA256 a06d86e096f8e9013e89431ebff9ed9f3e6824cd525ea02d1546c73c04a5cf27
MD5 9a3da29a75353112340b646a4651afd4
BLAKE2b-256 d84b0919e2bc0ae3d2be8ec48b6da29901cf3dfb8e6146cc9c44f7a7214536f3

See more details on using hashes here.

File details

Details for the file meeting_noter-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: meeting_noter-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 75.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for meeting_noter-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 53c916e462c130606a97d7ce54a7fe407b13711a4b626cd7601bc5d1a178a903
MD5 eecf2bb12fae453b8bf8e5814044aae4
BLAKE2b-256 eb1fe7f1c57ede8253ae09aeac770d3f27de4d232abeeef6d10804ebf0f5d9f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page