Local-first meeting transcription, speaker diarization, and LLM-powered analysis. Runs entirely on your laptop — no cloud, no subscriptions.
MeetingMind is a multi-stage pipeline that captures audio, converts speech to text, assigns speaker identities, generates live summaries, and enables post-session querying via a retrieval-augmented generation (RAG) system.
| Layer | Technology |
|---|---|
| Audio capture | sounddevice |
| Transcription | faster-whisper (CTranslate2) |
| Diarization | pyannote/speaker-diarization-3.1 |
| LLM | Ollama (qwen2.5:3b by default) |
| Backend | FastAPI + WebSocket |
| Vector store | ChromaDB |
| Frontend | Plain HTML/JS (no build step) |
Audio Input → Audio Capture (chunking with overlap) → Transcription (Faster-Whisper) → Diarization (pyannote) → Speaker Resolution → Session Management → LLM Processing (live + post) → RAG Indexing → WebSocket Delivery to UI
Each stage is modular and can be tested independently.
cd meetingmind
python -m venv venv
source venv/bin/activate # Windows: venv\\Scripts\\activate
pip install -r requirements.txtcp .env.example .env
# Edit .env and add your HF_TOKENHF Token setup (one-time):
- Create a free account at https://huggingface.co
- Accept model terms at https://hf.co/pyannote/speaker-diarization-3.1
- Accept model terms at https://hf.co/pyannote/segmentation-3.0
- Generate a token at https://hf.co/settings/tokens
- Paste it into
.envasHF_TOKEN=hf_...
ollama pull qwen2.5:3b # live summaries
ollama pull nomic-embed-text # RAG embeddings (post-session Q&A)
# Optional: larger model for post-session analysis
ollama pull llama3.1:8bcd backend
python main.pyOpen http://localhost:8000 in your browser.
- Enter known speaker names (comma-separated)
- Press Start to begin recording
- Speak; transcript appears in real time with speaker labels
- Live summary refreshes periodically
- Press Stop when the meeting ends
- Press Analyse for post-session insights
- Use the Q&A tab to query the transcript
Rename any anonymous speaker ("Speaker N") from the UI.
cd backend
python audio_capture.py
python transcriber.py path/to/audio.wav
python diarizer.py path/to/audio.wavmeetingmind/
├── backend/
│ ├── main.py # FastAPI app + WebSocket
│ ├── audio_capture.py # Mic input → chunking
│ ├── transcriber.py # faster-whisper wrapper
│ ├── diarizer.py # pyannote diarization
│ ├── speaker_registry.py # Cross-chunk speaker identity
│ ├── session_manager.py # Session state + persistence
│ ├── llm_client.py # Ollama client (live + post)
│ ├── rag.py # RAG pipeline
│ └── config.py # Configuration
├── frontend/
│ └── index.html # Single-file UI
├── sessions/ # Stored transcripts
├── requirements.txt
└── .env
| Machine | Recommended Whisper model | Notes |
|---|---|---|
| MacBook (Intel) | base or tiny |
CPU-only |
| GPU system | small or medium |
Faster inference |
Adjust in backend/config.py.
- Near-live processing introduces latency
- Diarization consistency can drift across long sessions
- CPU inference may be slow on low-end machines
- Single active session at a time
MeetingMind converts conversations into structured, queryable data using speech recognition, speaker diarization, language models, and vector search. It is designed as a complete system blueprint with clear extension points for future development.