Zurück zur Startseite

CLI tapeback: Stereo-Diarisierung von Anrufen unter Linux

Tapeback — CLI für Linux-Anrufaufzeichnung mit Stereo-Diarisierung: Mikrofon im linken Kanal, Monitor im rechten. Transkription mit faster-whisper, optional pyannote und LLM-summary in Markdown für Obsidian. Modulare Extras minimieren Abhängigkeiten.

Tapeback: lokaler Anrufrekorder mit Diarisierung
Advertisement 728x90

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.

Google AdInline article slot

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 |

Google AdInline article slot

|---------------|------------------------|--------|

| tapeback | Aufnahme + Whisper | ~320 MB|

| [llm] | Zusammenfassungen (Anthropic, OpenAI, Groq...) | +50 MB |

Google AdInline article slot

| [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

Advertisement 728x90

Weiterlesen