Files
meeting-notes/README.md
2025-11-04 20:54:13 +01:00

233 lines
6.1 KiB
Markdown

# 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