initial commit
This commit is contained in:
232
README.md
232
README.md
@@ -0,0 +1,232 @@
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user