Overhear is a privacy-first, offline-capable desktop application for transcribing meetings in real-time and generating intelligent summaries using LLMs. It captures both your microphone and system audio (e.g., Zoom, Google Meet, Teams) to provide a complete, timestamped transcript and an actionable summary of your conversations.
- 100% Local Processing (Transcription): Transcriptions are performed on your machine using
faster-whisper. No audio data ever leaves your computer. - Agnostic Summarization (LLM): Generate summaries using any provider supported by
litellm(Gemini, OpenAI, Anthropic, etc.). - Auto-Summarize: Automatically trigger a summary generation immediately after a recording stops.
- Meeting-Relative Timestamps: Generates transcripts with
[HH:MM:SS - HH:MM:SS]timestamps relative to the start of the meeting. - Automatic Organization: Transcripts and summaries are saved as Markdown files (
.md) and organized by date. - Real-time Volume Indicator: Visual feedback to ensure your audio levels are correct.
- Python 3.9+
- Audio Loopback Software:
- macOS: BlackHole (2ch) is required. Download here.
- Windows: VB-Cable is recommended. Download here.
git clone https://github.com/jpbohorquez/overhear.git
cd overhearRun the provided setup script:
chmod +x setup.sh
./setup.shRun these commands in PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txtTo capture both your microphone and system audio (e.g., Zoom/Google Meet), configure Audio MIDI Setup. You can create as many common configurations as you like (e.g. speakers, headphones, airpods, etc.)
- Open Audio MIDI Setup.
- Click
+> Create Multi-Output Device. - Name it
Overhear - Listen. - Check BlackHole 2ch AND your actual output (e.g., "External Headphones").
- Set your output device as the Master Device.
- Click
+> Create Aggregate Device. - Name it
Overhear - Aggregate. - Check BlackHole 2ch AND your Microphone.
- Right-click the Volume icon in the Taskbar and select Sound settings.
- Set Output to CABLE Input (VB-Audio Virtual Cable).
- (Optional but recommended): To hear the audio yourself, go to the Recording tab in the old Sound Control Panel, right-click CABLE Output, select Properties > Listen, check "Listen to this device", and select your actual headphones/speakers.
In the app's dropdown, select CABLE Output (VB-Audio Virtual Cable) to capture the system audio. If you want to capture your microphone simultaneously, you may need to use a tool like VoiceMeeter to mix them into the virtual cable.
Before starting your meeting, click the Volume icon in your macOS menu bar (or Windows Sound Settings) and set your output to your virtual loopback device (e.g., Overhear - Listen on Mac or VB-Cable on Windows)
- macOS: Double-click
launch.command. - Windows: Double-click
launch.bat.
- Go to the Settings tab.
- Select your API Provider (e.g., GEMINI).
- Enter your API Key.
- The LLM Model dropdown will dynamically populate with available models for that provider.
- Click Save Settings.
- Recording Tab: Enter meeting name, select device, and click Record.
- Auto-Summarize: Toggle "Auto-Summarize after stop" to get an instant summary when you finish.
- Summarization Tab: Manually process any existing transcript by selecting it and clicking Generate Summary.
Settings are stored in config.toml. Secrets are stored in .secrets.toml (which is git-ignored).
[transcription]
model_size = "base"
output_dir = "transcriptions"
[summarization]
model_name = "gemini/gemini-1.5-flash"
summaries_dir = "summaries"
system_prompt = "..."- No Audio: Verify MIDI/Sound settings and ensure the correct Aggregate/CABLE device is selected in the app.
- LLM Errors: Ensure your API key is correct and you have internet access for the summarization phase.
- Permissions: Grant Microphone permissions to your terminal/Python in System Settings.