# 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:** ```bash sudo apt update sudo apt install ffmpeg ``` **macOS:** ```bash brew install ffmpeg ``` **Windows:** Lade ffmpeg von https://ffmpeg.org/download.html herunter und füge es zum PATH hinzu. ### Python-Pakete installieren ```bash 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: ```bash 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) ```bash python meeting_summarizer.py meeting.mp3 \ --api-base http://localhost:11434/v1 \ --api-key ollama \ --model llama3.2 ``` #### LM Studio (lokal) ```bash 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) ```bash 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 ```bash 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 ```bash python meeting_summarizer.py meeting.mp3 ``` Dies erstellt: - `meeting_transcript.txt` - Vollständiges Transkript - `meeting_summary.txt` - Zusammenfassung ### Mit Optionen ```bash 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: ```python 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 (`tiny` oder `base`) - 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 (`medium` oder `large`) - 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 `tiny` oder `base` Modell - **Echtzeit-Verarbeitung:** Whisper ist nicht für Echtzeit optimiert, verarbeite Aufnahmen nachträglich - **Speicher:** `base` benötigt ~140MB RAM, `large` ~3GB - **Alternative:** Nutze Whisper.cpp für C++-Integration in embedded Systems ## Troubleshooting ### "No module named 'whisper'" ```bash 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