Meeting Audio Summarizer
Dieses Python-Programm transkribiert Audio-Dateien von Meetings mit Whisper (lokal) und erstellt automatisch eine Zusammenfassung mit einem LLM über eine OpenAI-kompatible API.
Features
- 🎤 Lokale Transkription mit OpenAI Whisper (keine Cloud erforderlich)
- 🤖 Flexible LLM-Integration über OpenAI-kompatible APIs
- 📝 Strukturierte Zusammenfassungen mit Hauptthemen, Entscheidungen und Action Items
- 🔄 Provider-unabhängig - funktioniert mit OpenAI, Anthropic, Ollama, LM Studio, etc.
- 💾 Automatisches Speichern von Transkript und Zusammenfassung
Installation
Voraussetzungen
- Python 3.8 oder höher
- ffmpeg (für Audio-Verarbeitung)
ffmpeg Installation
Ubuntu/Debian:
sudo apt update
sudo apt install ffmpeg
macOS:
brew install ffmpeg
Windows: Lade ffmpeg von https://ffmpeg.org/download.html herunter und füge es zum PATH hinzu.
Python-Pakete installieren
pip install -r requirements.txt
Whisper benötigt beim ersten Start einige Zeit zum Herunterladen der Modelle.
Konfiguration
API-Key setzen
Setze deinen API-Key als Umgebungsvariable:
export OPENAI_API_KEY="dein-api-key"
Oder übergebe ihn direkt beim Aufruf mit --api-key.
Alternative LLM-Provider
Das Programm funktioniert mit jedem OpenAI-kompatiblen Endpunkt:
Ollama (lokal)
python meeting_summarizer.py meeting.mp3 \
--api-base http://localhost:11434/v1 \
--api-key ollama \
--model llama3.2
LM Studio (lokal)
python meeting_summarizer.py meeting.mp3 \
--api-base http://localhost:1234/v1 \
--api-key lm-studio \
--model local-model
Anthropic Claude (via OpenAI-Kompatibilitätslayer)
python meeting_summarizer.py meeting.mp3 \
--api-base https://api.anthropic.com/v1 \
--api-key $ANTHROPIC_API_KEY \
--model claude-3-5-sonnet-20241022
OpenRouter
python meeting_summarizer.py meeting.mp3 \
--api-base https://openrouter.ai/api/v1 \
--api-key $OPENROUTER_API_KEY \
--model anthropic/claude-3.5-sonnet
Verwendung
Basis-Verwendung
python meeting_summarizer.py meeting.mp3
Dies erstellt:
meeting_transcript.txt- Vollständiges Transkriptmeeting_summary.txt- Zusammenfassung
Mit Optionen
python meeting_summarizer.py meeting.wav \
--whisper-model medium \
--model gpt-4 \
--output-dir ./summaries \
--api-base https://api.openai.com/v1
Alle Optionen
Optionen:
audio_file Pfad zur Audio-Datei (mp3, wav, m4a, etc.)
--whisper-model MODEL Whisper-Modellgröße (default: base)
Optionen: tiny, base, small, medium, large
--api-base URL Base URL für OpenAI-kompatible API
(default: https://api.openai.com/v1)
--api-key KEY API-Key (nutzt OPENAI_API_KEY wenn nicht angegeben)
--model MODEL LLM-Modellname (default: gpt-4)
--output-dir DIR Ausgabeverzeichnis für Transkript und Zusammenfassung
(default: gleiches Verzeichnis wie Audio-Datei)
--no-transcript Vollständiges Transkript nicht speichern
Whisper-Modelle
Die Wahl des Whisper-Modells beeinflusst Geschwindigkeit und Genauigkeit:
| Modell | Parameter | Geschwindigkeit | Genauigkeit | Empfehlung |
|---|---|---|---|---|
| tiny | 39M | Sehr schnell | Niedrig | Schnelle Tests |
| base | 74M | Schnell | Gut | Standard |
| small | 244M | Mittel | Sehr gut | Gute Balance |
| medium | 769M | Langsam | Ausgezeichnet | Hohe Qualität |
| large | 1550M | Sehr langsam | Beste | Produktionsumgebung |
Empfehlung für Meetings: base oder small für gute Balance zwischen Geschwindigkeit und Qualität.
Unterstützte Audio-Formate
Alle Formate, die von ffmpeg unterstützt werden:
- MP3
- WAV
- M4A
- FLAC
- OGG
- WMA
- AAC
Programmatische Verwendung
Du kannst das Programm auch als Modul verwenden:
from meeting_summarizer import MeetingSummarizer
# Initialisiere den Summarizer
summarizer = MeetingSummarizer(
whisper_model="base",
api_base_url="http://localhost:11434/v1",
api_key="ollama",
model_name="llama3.2"
)
# Verarbeite ein Meeting
transcript, summary = summarizer.process_meeting(
audio_path="meeting.mp3",
output_dir="./output",
save_transcript=True
)
print(summary)
Performance-Tipps
Für schnellere Transkription:
- Nutze kleinere Whisper-Modelle (
tinyoderbase) - Nutze GPU-Beschleunigung (CUDA) falls verfügbar
- Whisper installiert automatisch die passende Version für deine Hardware
Für bessere Qualität:
- Nutze größere Whisper-Modelle (
mediumoderlarge) - Stelle sicher, dass die Audio-Qualität gut ist
- Bei mehrsprachigen Meetings: Entferne
language="de"im Code für Auto-Detection
Tipps für embedded Systems
Da du mit embedded Systems arbeitest, hier einige Hinweise für ressourcenbeschränkte Umgebungen:
- Raspberry Pi: Nutze
tinyoderbaseModell - Echtzeit-Verarbeitung: Whisper ist nicht für Echtzeit optimiert, verarbeite Aufnahmen nachträglich
- Speicher:
basebenötigt ~140MB RAM,large~3GB - Alternative: Nutze Whisper.cpp für C++-Integration in embedded Systems
Troubleshooting
"No module named 'whisper'"
pip install openai-whisper
"ffmpeg not found"
Installiere ffmpeg (siehe Installationsanleitung oben)
"API key not provided"
Setze die Umgebungsvariable oder übergebe --api-key
Langsame Transkription
Nutze ein kleineres Modell oder aktiviere GPU-Beschleunigung
Lizenz
Frei verwendbar für private und kommerzielle Zwecke.
Hinweise
- Whisper läuft komplett lokal - keine Audio-Daten werden gesendet
- Nur der transkribierte Text wird an das LLM gesendet
- Achte auf Datenschutz bei sensiblen Meeting-Inhalten
- Die Qualität der Zusammenfassung hängt vom gewählten LLM ab