Lokales CLI-Meeting-Recorder für Linux: Stereo-Lautsprechertrennung und KI-Zusammenfassungen
Das CLI-Tool tapeback zeichnet Audio über PipeWire/PulseAudio auf, transkribiert mit faster-whisper, trennt Sprecher nach Stereo-Kanälen und erzeugt Zusammenfassungen mit LLMs. Das Ergebnis ist eine Markdown-Datei, die in Ihren angegebenen Ordner fällt – sogar in Obsidian-Vaults. Ein Befehl startet die Aufnahme, Ctrl+C beendet sie und löst den Pipeline-Prozess aus: Aufnahme → Transkription → Sprechererkennung → Zusammenfassung.
Unterstützt Zoom, Teams, Meet, Discord, Telegram. Erfassen des System-Audios – keine Service-APIs nötig.
tapeback start
# Meeting läuft
# Ctrl+C → Verarbeitung → Markdown
Stereo-Lautsprechertrennung
Die Architektur nutzt Stereo-WAV-Dateien: Linker Kanal für Ihr Mikrofon („Du“), rechter Kanal für die Monitor-Quelle (alle anderen). Whisper verarbeitet jeden Kanal separat. Pyannote-Diarisierung läuft nur auf dem rechten Kanal, um Sprecher 1, 2 usw. zu labeln. Segmente werden nach RMS-Energieniveaus klassifiziert.
Die physische Kanaltrennung eliminiert Clustering-Fehler: Keine Verwechslungen ähnlicher Stimmen, kein Aufteilen eines Sprechers auf Cluster. GPU-Beschleunigung macht es schneller, mit CPU-Fallback bei CUDA-Fehlern.
┌─────────────┐ ┌──────────────┐ ┌────────────────────┐
│ Stereo │ │ Whisper │ │ Kanal- │
│ WAV-Datei │───▶│ (pro │───▶│ Klassifikation: │
│ L: Mikro │ │ Kanal) │ │ L → „Du“ │
│ R: Monitor │ │ │ │ R → pyannote │
└─────────────┘ └──────────────┘ │ für Andere │
└────────────────────┘
Optionale Abhängigkeiten
Basisinstallation (~320 MB): Aufnahme + Transkription. Extras sparen den 2-GB-PyTorch-Ballast, den Sie nicht brauchen:
| Variante | Ergänzt | Größe |
|---------------|------------------------|--------|
| tapeback | Aufnahme + Whisper | ~320 MB|
| [llm] | Zusammenfassungen (Anthropic, OpenAI, Groq...) | +50 MB |
| [diarize] | pyannote + PyTorch | +2 GB |
| [tray] | System-Tray | +1 MB |
Sanftes Herabstufen: Kein pyannote? Rechter Kanal wird „Andere“. Lazy Imports in __init__.
LLM-Integration mit Fallbacks
Unterstützt 7 Anbieter: Anthropic, OpenAI, Groq, Gemini, DeepSeek, OpenRouter, Qwen. OpenAI-kompatible nutzen eine einheitliche API mit Base-URLs:
_OPENAI_COMPATIBLE_BASE_URLS = {
"groq": "https://api.groq.com/openai/v1",
"gemini": "https://generativelanguage.googleapis.com/v1beta/openai/",
"deepseek": "https://api.deepseek.com",
# ...
}
Anbieterfehler? Automatischer Fallback auf den Nächsten. Transkripte werden immer gespeichert. Zusammenfassung als JSON in Markdown eingebettet:
## Zusammenfassung
Kurzer Überblick.
### Aufgaben
- [ ] **Du:** Bericht bis Freitag senden
- [ ] **Sprecher 1:** PR prüfen
### Wichtige Entscheidungen
- PostgreSQL statt MongoDB
Verpackung für Arch Linux
Im AUR als 4 Meta-Pakete verfügbar:
tapeback— Kern.tapeback-tray— Tray.tapeback-llm— LLM-Unterstützung.tapeback-diarize— PyTorch + pyannote.
yay kümmert sich um pip-Abhängigkeiten in einer venv. Release über release.sh + PyPI CI (Trusted Publisher) + AUR-Skripte.
yay -S tapeback tapeback-diarize tapeback-llm tapeback-tray
Konfig in ~/.config/tapeback/.env:
TAPEBACK_VAULT_PATH=~/Documents/obsidian/vault
Entwicklung und Erkenntnisse
MVP in 3 Tagen, v0.8.9 in 2 Wochen (Bugs, Tests). Spezifikationsgetrieben: Markdown-Specs mit Done-Kriterien. Code von Claude mit Reviews. PyPI/AUR-Namen früh prüfen – Normalisierung macht echo-vault == echovault.
Wichtige Erkenntnisse
- Stereo-Trennung: Mikro (Du) vs. Monitor (Andere) – deterministisch, umgeht pyannote-Wahrscheinlichkeitsfehler.
- Lokale Verarbeitung: faster-whisper + optionales PyTorch, keine Cloud.
- Modularität: Extras für Diarisation/LLM/Tray mit sanften Fallbacks.
- Integration: Markdown für Obsidian mit JSON-Zusammenfassungen (Aufgaben, Entscheidungen).
- Installation:
uv tool install tapeback[tray,diarize,llm]oder AUR.
— Editorial Team
Noch keine Kommentare.