A simple, self-hosted web application to record, transcribe, and summarize your meetings. Upload an audio file of your meeting, and this tool will use OpenAI's Whisper for highly accurate transcription, then provide a structured summary using your choice of AI provider: Google Gemini or OpenAI GPT.
- Easy Web Interface: Simple and clean UI for uploading audio files.
- State-of-the-Art Transcription: Uses OpenAI's Whisper for fast and accurate audio-to-text conversion.
- Dual AI Provider Support: Choose between Google Gemini or OpenAI GPT-4o for summarization on a per-upload basis.
- Interactive AI Chat: Engage in a conversation with your meeting's content. Ask follow-up questions, request specific details, and get instant answers based on the full transcript, powered by either Google Gemini or OpenAI.
- Structured Summaries: The AI is prompted to provide a consistent summary format, including:
- A generated meeting title
- Key discussion points
- Decisions made
- Action items
- Meeting Directory: A browsable and searchable list of all your processed meetings.
- Keyword Search: Quickly find relevant meetings by searching through titles, summaries, and full transcripts.
⚠️ Note: Only audio files are supported. Allowed formats:.wav
,.mp3
,.m4a
,.ogg
, and.mp4
. Video files like.mp4
are accepted only for extracting their audio content.
- Backend: Python 3, Flask
- Transcription: OpenAI Whisper
- AI Summarization: Google Gemini API, OpenAI API
- Frontend: Simple HTML & CSS
- Containerization: Docker, Docker Compose
This is the recommended way to run the project.
git clone https://github.com/renantmagalhaes/meeting-summarizer.git
cd meeting-summarizer
Copy the .env.example
to .env
and update it with your real keys:
cp .env.example .env
Edit .env
:
GOOGLE_API_KEY="YOUR_GOOGLE_AI_API_KEY_HERE"
OPENAI_API_KEY="YOUR_OPENAI_API_KEY_HERE"
docker-compose up --build
Then open your browser at: http://localhost:5000
If you'd prefer to run it without Docker:
- Install Python 3.10–3.12 and
ffmpeg
- Create and activate a virtual environment
- Run:
pip install -r requirements.txt
python app.py
This is useful for debugging or tweaking code without rebuilding containers.
.
├── app.py # Main Flask app
├── requirements.txt # Python dependencies
├── Dockerfile # Docker image
├── docker-compose.yml # Container orchestration
├── .env.example # API key config template
├── templates/ # HTML templates
│ ├── index.html
│ └── result.html
└── static/ # (optional) styles, JS, etc.
This app requires API keys to function. You'll need to set:
GOOGLE_API_KEY
— from Google AI StudioOPENAI_API_KEY
— from OpenAI Dashboard
These can be set via a .env
file or directly in the environment.
- Whisper is called locally; make sure your system or container includes
ffmpeg
. - Summarization is cloud-based and will consume your OpenAI/Gemini credits.
- Accuracy and output quality will depend heavily on audio clarity.
- Support audio recording directly in-browser
- Identify different voices with whisperX
- Add support for other AI providers (Claude, Mistral)
- Multi-language transcription & summarization
- User authentication and multi-user support
MIT License. Do whatever you want, but attribution is appreciated.
Made with ❤️ by Renan