Skip to main content

Transcribe and summarize audio recordings using Groq API (Whisper + LLM)

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meeting_recap-0.1.0.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meeting_recap-0.1.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file meeting_recap-0.1.0.tar.gz.

File metadata

  • Download URL: meeting_recap-0.1.0.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for meeting_recap-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ae839d30f0c680c5e2ddc9de33fdbbb08e03b2136e1b15828135cd142cdf3e0e
MD5 da4d6c278cee43f1cab77cf3f9adf400
BLAKE2b-256 2317b69e13510bdddc965690876e8fa9b16c3cb6f344b141282f2f4ddc5b3f99

See more details on using hashes here.

File details

Details for the file meeting_recap-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: meeting_recap-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for meeting_recap-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3aedb9dbd4d5894abd9355b272d81ee516d2eb5aba5f8502a737b2313b8f5544
MD5 cbaca23b54123000705b4f219a2ee31e
BLAKE2b-256 67f2a5bc4f700520e53afbbfc11e4851ecd16fe7d3f5bf969a931ae9f686cd95

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page