β οΈ WORK IN PROGRESS: This project is under active development. Features may be incomplete, and breaking changes may occur. Use at your own discretion.
Vox Populi is an AI-powered meeting intelligence system that transcribes audio recordings, generates structured summaries, maps transcripts to agenda items, and extracts actionable insights from meetings.
- Audio Transcription: Convert meeting recordings to text using NVIDIA's Parakeet TDT ASR model
- Smart Summarization: Generate comprehensive meeting summaries with executive overviews, key decisions, and action items
- Agenda Mapping: Automatically align transcript sections with meeting agenda topics
- Action Item Extraction: Identify and structure tasks, assignees, and deadlines
- Multi-format Support: Process WAV audio files (with M4A conversion support)
- GPU Acceleration: Supports CUDA (NVIDIA), MPS (Apple Silicon), and CPU inference
The system consists of several specialized AI agents:
- Transcription Module (
transcript.py): Uses NVIDIA NeMo's Parakeet model for speech-to-text - Summarizer Agent (
summarizer_agent.py): Generates structured meeting summaries using Google Gemini - Agenda Parser Agent (
agenda_parser_agent.py): Maps transcript sections to agenda topics - Action Item Extractor (planned): Extracts and structures action items
- Python: 3.11
- pip: Latest version recommended
- Operating System: macOS, Linux, or Windows
- Google API Key: Required for Gemini-powered agents
- GPU (optional but recommended):
- NVIDIA GPU with CUDA support, or
- Apple Silicon with MPS support
git clone <repository-url>
cd vox-populipython3 -m venv .venv
source .venv/bin/activate # On macOS/Linux
# or
.venv\Scripts\activate # On WindowsUse the provided Makefile for simplified installation:
make installThis will:
- Install
nemo_toolkit(without dependencies to avoid conflicts) - Install all requirements from
requirements.txt - Install
texterrorswith binary-only option
If you prefer manual installation:
pip install nemo_toolkit --no-deps
pip install -r requirements.txt
pip install --only-binary=:all: texterrorsDownload NVIDIA's Parakeet TDT ASR model and place it in the data/ folder:
cd data
# Download parakeet-tdt-0.6b-v3.nemo from NVIDIA NGC
# Direct link: https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/parakeet-tdt-0.6bExpected location: data/parakeet-tdt-0.6b-v3.nemo
You can also use wget or curl:
cd data
wget <parakeet-model-download-url> -O parakeet-tdt-0.6b-v3.nemoThe summarizer and agenda parser agents require a Google API key for Gemini access.
Option A: Environment Variable (Recommended)
export GOOGLE_API_KEY="your-api-key-here"Add this to your ~/.zshrc or ~/.bashrc for persistence.
Option B: Create .env File
Create a .env file in the summarizer_agent/ directory:
echo "GOOGLE_API_KEY=your-api-key-here" > summarizer_agent/.envPlace your audio recordings in the data/ folder:
cp /path/to/your/meeting.wav data/Supported formats:
.wav(direct processing).m4a(automatic conversion to WAV)
For agenda mapping features, create an agenda file:
nano data/agenda.mdExample format:
# Meeting Agenda
## Date: 2025-12-01
## Attendees: Alice, Bob, Charlie
### Agenda Items
1. Introduction & Objectives (5 min)
2. Requirements Discussion (10 min)
3. Technical Review (15 min)
4. Next Steps (5 min)cd src/vox-machine
python transcript.pyThis will:
- Load the Parakeet model
- Process the audio file
- Generate a timestamped transcript:
data/transcript_YYYYMMDD_HH-MM-SS.txt
cd src/vox-machine
python summarizer_agent.pyOutput includes:
- One-line summary
- Executive summary (3-4 paragraphs)
- Key decisions with rationale
- Action items with assignees and priorities
- Attendee list
- Open questions
- Sentiment analysis
cd src/vox-machine
python agenda_parser_agent.pyThis maps each section of the transcript to the corresponding agenda topic and saves the result as: data/agenda_mapping_YYYYMMDD_HH-MM-SS.json
vox-populi/
βββ README.md # This file
βββ LICENSE # License information
βββ Makefile # Installation and cleanup automation
βββ requirements.txt # Python dependencies
βββ data/ # Data directory
β βββ parakeet-tdt-0.6b-v3.nemo # ASR model (download required)
β βββ agenda.md # Meeting agenda template
β βββ *.wav # Audio files
β βββ transcript_*.txt # Generated transcripts
β βββ agenda_mapping_*.json # Agenda mappings
βββ src/
β βββ vox-machine/
β βββ main.py # Logging configuration
β βββ transcript.py # Audio transcription module
β βββ summarizer_agent.py # Meeting summarization
β βββ agenda_parser_agent.py # Agenda-transcript mapper
β βββ action_item_extractor_agent.py # Action item extraction (WIP)
βββ summarizer_agent/
βββ __init__.py
βββ agent.py # Simple agent wrapper
βββ .env # API key configuration
Model: Google Gemini 2.5 Flash Lite
Purpose: Generate structured meeting summaries with:
- One-line summary (β€140 chars)
- Executive summary (β€300 words)
- Key decisions with rationale
- Action items (labeled A1, A2, A3...)
- Attendee list
- Open questions
- Follow-ups
- Highlights with timestamps
- Tone and sentiment analysis
Output Format: JSON
Model: Google Gemini 2.5 Flash Lite
Purpose: Map transcript sections to agenda topics
Features:
- Preserves exact transcript text
- Assigns confidence levels (high/medium/low)
- Identifies unmapped sections
- Maintains chronological order
Output Format: JSON
Remove Python cache files and build artifacts:
make cleanIf you encounter signature compatibility errors with the overrides package, ensure you're using the patched version in transcript.py which disables runtime type checking.
Check GPU availability:
import torch
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"MPS available: {torch.backends.mps.is_available()}")Verify your Google API key is set:
echo $GOOGLE_API_KEYIf empty, set it:
export GOOGLE_API_KEY="your-key-here"Agent names must be valid Python identifiers (letters, digits, underscores only). Avoid hyphens in folder names like summarizer-agent. Use summarizer_agent instead.
See LICENSE file for details.
- NVIDIA NeMo: ASR toolkit and Parakeet models
- Google Gemini: LLM-powered agents
- Google ADK: Agent Development Kit
Note: This is an experimental project. Agent behaviors and outputs may vary. Always review generated summaries and action items for accuracy.