Skip to main content

Meeting Recap

A CLI tool and Python library that transcribes audio recordings and generates structured meeting summaries using Groq API. Powered by Whisper for speech-to-text and Llama for summarization.

Features

  • Speech-to-text transcription via Groq's Whisper models (near-instant on Groq hardware)
  • AI-powered summarization -- key points, decisions, and action items extracted automatically
  • Automatic chunking for large files (>25 MB free tier limit) with overlapping segments so no words are lost
  • Multilingual support -- works with any language Whisper supports (Russian, English, Spanish, French, German, and many more)
  • Batch processing -- drop multiple audio files into input/ and process them all at once
  • Importable library -- use it in your own Python projects with a clean API

Prerequisites


Install from PyPI

pip install meeting-recap

Python 3.13+ also requires the audioop-lts shim (automatically installed as a dependency).


CLI Usage

From a cloned repo

   git clone https://github.com/talhatek/meeting-recap.git
cd meeting-recap
python -m venv venv && venv\Scripts\activate  # Windows
pip install -e .

Create a .env file with your API key:

GROQ_API_KEY=your_api_key_here

Place one or more audio files into the input/ folder, then run:

# Transcribe & summarize (default: English)
meeting-recap
# or
python main.py

# Specify a different language (ISO-639-1 code)
meeting-recap --language ru

# Use a different Whisper model
meeting-recap --model whisper-large-v3

# Full example with all options
meeting-recap \
  --language en \
  --model whisper-large-v3-turbo \
  --summary-model llama-3.3-70b-versatile \
  --input-dir input \
  --output-dir output

CLI Options

Flag Default Description
-l, --language en ISO-639-1 language code of the audio
-m, --model whisper-large-v3-turbo Whisper model for transcription
--summary-model llama-3.3-70b-versatile LLM model for summarization
--input-dir input Directory containing audio files
--output-dir output Directory for output files

Supported Audio Formats

flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm

Output

For each audio file, two files are generated in the output/ directory:

output/
  meeting_transcription.txt   # Full transcription text
  meeting_summary.txt         # Structured summary with key points

Library Usage

Install and import in any Python project:

pip install meeting-recap

Full pipeline (transcribe + summarize)

from meeting_recap import process

result = process("meeting.mp3", api_key="gsk_...")
print(result.transcription)
print(result.summary)

Transcription only

from meeting_recap import transcribe

text = transcribe("meeting.mp3", api_key="gsk_...", language="ru")
print(text)

Summarization only

from meeting_recap import summarize

summary = summarize(text, api_key="gsk_...", language="ru")
print(summary)

Full API reference

from meeting_recap import process, transcribe, summarize, RecapResult

# process() -- full pipeline
result: RecapResult = process(
    audio_path="meeting.mp3",
    api_key="gsk_...",
    language="en",                        # ISO-639-1 language code
    model="whisper-large-v3-turbo",       # Whisper model
    summary_model="llama-3.3-70b-versatile",  # LLM model
    verbose=True,                         # print progress
)
result.audio_path       # pathlib.Path to the source file
result.transcription    # full transcription string
result.summary          # structured summary string

# transcribe() -- speech-to-text only
text = transcribe(
    audio_path="meeting.mp3",
    api_key="gsk_...",
    language="en",
    model="whisper-large-v3-turbo",
    verbose=True,
)

# summarize() -- summarize existing text
summary = summarize(
    text="...",
    api_key="gsk_...",
    language="en",
    model="llama-3.3-70b-versatile",
)

How It Works

input/*.mp3
    |
    v
[File size check]
    |
    +--> <= 25 MB --> Groq Whisper API --> Transcription
    |
    +--> > 25 MB ---> Split into overlapping chunks (pydub + ffmpeg)
                        |
                        +--> Chunk 1 --> Groq Whisper API --+
                        +--> Chunk 2 --> Groq Whisper API --+--> Merge --> Transcription
                        +--> Chunk N --> Groq Whisper API --+
                                                                    |
                                                                    v
                                                            Groq LLM (summarize)
                                                                    |
                                                                    v
                                                            output/*_summary.txt
                                                            output/*_transcription.txt

Chunking details:

  • Files over 25 MB are split into segments that fit within Groq's free tier upload limit
  • 5-second overlap between chunks prevents words from being cut off at boundaries
  • Chunks are exported as 64 kbps mono MP3 at 16 kHz (optimal for speech recognition)
  • Temporary chunk files are automatically cleaned up after processing

Supported Languages

Any language supported by OpenAI Whisper. Common examples:

Code Language Code Language
ru Russian en English
es Spanish fr French
de German it Italian
pt Portuguese zh Chinese
ja Japanese ko Korean
uk Ukrainian tr Turkish
ar Arabic pl Polish

Full list: Whisper supported languages


Publishing to PyPI

# Build
python -m build

# Upload (requires a PyPI account and API token)
python -m twine upload dist/*

License

MIT

Metadata

Release files for meeting-recap 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for meeting-recap 0.1.0
File Size Uploaded
meeting_recap-0.1.0.tar.gz 10.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for meeting-recap 0.1.0
File Interpreter ABI Platform
meeting_recap-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 20.9 kB

Release files / meeting_recap-0.1.0.tar.gz

Download URL meeting_recap-0.1.0.tar.gz
Size 10.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ae839d30f0c680c5e2ddc9de33fdbbb08e03b2136e1b15828135cd142cdf3e0e
BLAKE2b-256 checksum
How to use checksums
2317b69e13510bdddc965690876e8fa9b16c3cb6f344b141282f2f4ddc5b3f99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / meeting_recap-0.1.0-py3-none-any.whl

Download URL meeting_recap-0.1.0-py3-none-any.whl
Size 10.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3aedb9dbd4d5894abd9355b272d81ee516d2eb5aba5f8502a737b2313b8f5544
BLAKE2b-256 checksum
How to use checksums
67f2a5bc4f700520e53afbbfc11e4851ecd16fe7d3f5bf969a931ae9f686cd95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page