Record meetings. Get transcripts. All on your Mac.
| Feature | Description |
|---|---|
| 🎙️ Live Meeting Capture | Record system audio from Zoom, Teams, Meet - transcribe locally |
| 📁 File Transcription | Drag-and-drop audio/video files for instant transcription |
| 🗣️ Speaker Diarization | Automatic speaker identification using local AI |
| 🌊 Live Waveform | Visual feedback showing audio levels while recording |
| 🎨 Dark & Light Themes | Modern floating window with customizable appearance |
| 📜 Session History | Browse and search past transcriptions |
| 🔒 100% Local | Audio never leaves your Mac - privacy first |
git clone https://github.com/regmontanhani/earshot.git
cd earshot
./setup.shThat's it. The setup script:
- Installs dependencies (BlackHole, Ollama, Python packages)
- Guides you through audio device configuration
- Pulls the local AI model for speaker identification
Then launch:
./run_window.sh|
1️⃣ |
Configure Audio Create a Multi-Output Device in Audio MIDI Setup that routes sound to both your speakers AND BlackHole for capture. |
|
2️⃣ |
Record Click Record in the floating window. The waveform shows live audio levels. Your meeting continues normally. |
|
3️⃣ |
Transcribe Click Stop. Earshot transcribes using MLX-Whisper (optimized for Apple Silicon), then identifies speakers with local Ollama. |
|
4️⃣ |
Review The transcript appears with speaker labels. Browse past sessions with the ◀ ▶ buttons. Open files in any format you need. |
Open settings with the ⚙️ button or Cmd+,
| Setting | Options |
|---|---|
| Output Directory | Where transcripts are saved (default: ~/Documents/Earshot) |
| Output Formats | JSON, TXT, SRT, VTT, TSV |
| Model Size | tiny → turbo (larger = more accurate, slower) |
| Theme | Dark or Light |
| Opacity | 50% - 100% window transparency |
| Always on Top | Keep window above other apps |
| OpenAI API Key | Optional - for cloud transcription |
| Shortcut | Action |
|---|---|
| Space | Start/Stop recording |
| ← / → | Navigate session history |
| Cmd+, | Open settings |
| Cmd+Q | Quit |
| Format | Use Case |
|---|---|
| JSON | Full data with timestamps, segments, speakers |
| TXT | Plain text for reading or sharing |
| SRT | Subtitles for video editors |
| VTT | Web subtitles for browsers |
| TSV | Import into spreadsheets |
| Minimum | Recommended | |
|---|---|---|
| macOS | 12.0 Monterey | 14.0+ Sonoma |
| Chip | Intel or Apple Silicon | Apple Silicon (M1+) |
| RAM | 8 GB | 16 GB |
| Disk | 5 GB | 10 GB |
earshot/
├── window.py # PySide6 floating window
├── widgets/ # UI components
│ ├── waveform.py # Live audio visualization
│ ├── transcript.py # Transcript viewer
│ └── settings.py # Settings dialog
├── history.py # Session history manager
├── themes.py # Dark/Light stylesheets
├── audio_capture.py # PyAudio + BlackHole
├── transcriber.py # MLX-Whisper + OpenAI
├── diarization.py # Ollama speaker ID
├── output_writer.py # File output
└── config.py # Settings
- Audio stays local - Transcription runs on your Mac using MLX-Whisper
- Speaker ID is local - Ollama runs entirely offline
- No telemetry - No data collection, no analytics
- Optional cloud - OpenAI API only if you configure it
Contributions welcome! See CONTRIBUTING.md for guidelines.
MIT - see LICENSE for details.
Made with ❤️ for people who take too many meeting notes