Transcribes meeting audio and generates structured minutes with action items. Uses OpenAI Whisper for transcription and your choice of model for the minutes:
- GPT-4.1 Mini (OpenAI, closed-source) — fast, no GPU required
- Llama 3.1 8B (Meta, open-source) — runs locally, requires a CUDA GPU
1. Install dependencies
uv syncFor the open-source Llama path, also install the llm extras:
uv sync --extra llm2. Configure environment
cp .env.example .envThen edit .env:
OPENAI_API_KEY=sk-... # required for Whisper transcription and GPT minutes
HF_TOKEN=hf_... # required only when using the Llama model
To use Llama 3.1 8B you also need to accept the license on HuggingFace.
Note: You do not need to download the model manually. On the first run with Llama selected, the weights (~16 GB) are downloaded automatically to your HuggingFace cache (
~/.cache/huggingface/). Subsequent runs use the cached copy. A CUDA-capable NVIDIA GPU is required.
3. Run
uv run meeting-scribeThen open the local URL printed to the terminal (default: http://127.0.0.1:7860).
- Upload an MP3 or WAV recording of your meeting
- Select a model (GPT-4.1 Mini or Llama 3.1 8B)
- Click Generate Minutes
The app returns:
- Full transcript of the audio
- Markdown meeting minutes with summary, key discussion points, takeaways, and action items with owners
src/meeting_scribe/
├── transcribe.py # Whisper transcription via OpenAI API
├── minutes.py # Minutes generation (GPT and Llama backends)
└── app.py # Gradio UI and entry point
The original course used a Denver City Council meeting extract. You can download it here or find the full dataset on HuggingFace.