Lokální CLI nahrávač hovorů pro Linux: stereo diarizace a LLM shrnutí
CLI nástroj tapeback zachycuje audio přes PipeWire/PulseAudio, transkribuje pomocí faster-whisper, rozděluje mluvčí podle stereo kanálů a generuje shrnutí přes LLM. Výsledkem je Markdown soubor v zadaném adresáři, včetně Obsidian vaultu. Jediný příkaz spustí nahrávání, Ctrl+C ukončí pipeline: zachycení → transkripce → diarizace → shrnutí.
Podporuje Zoom, Teams, Meet, Discord, Telegram. Zachycení na úrovni systémového audia, bez API služeb.
tapeback start
# hovor
# Ctrl+C → zpracování → Markdown
Stereo rozdělení mluvčích
Architektura používá stereo WAV: levý kanál je mikrofon („Vy“), pravý kanál je monitor source (ostatní). Whisper zpracovává kanály samostatně. Diarizace pyannote se aplikuje pouze na pravý kanál pro číslování Speaker 1, 2... Segmenty se klasifikují podle RMS energie.
Fyzické oddělení eliminuje chyby shlukování: nedochází k záměně podobných hlasů ani k rozdělení jednoho mluvčího do více shluků. GPU urychluje zpracování, s fallbackem na CPU při chybách CUDA.
┌─────────────┐ ┌──────────────┐ ┌────────────────────┐
│ Stereo │ │ Whisper │ │ Klasifikace │
│ WAV soubor │───▶│ (pro každý │───▶│ podle kanálů: │
│ L: mikrofon│ │ kanál │ │ L → „Vy“ │
│ R: monitor │ │ samostatně)│ │ R → pyannote │
└─────────────┘ └──────────────┘ │ pro Ostatní │
└────────────────────┘
Volitelné závislosti
Základní instalace (~320 MB): nahrávání + transkripce. Další extras se vyhýbají zbytečným 2 GB PyTorch:
| Varianta | Co přidává | Velikost |
|----------|-------------|----------|
| tapeback | Nahrávání + Whisper | ~320 MB |
| [llm] | Shrnutí (Anthropic, OpenAI, Groq...) | +50 MB |
| [diarize] | pyannote + PyTorch | +2 GB |
| [tray] | Systémový tray | +1 MB |
Graceful degradation: bez pyannote je pravý kanál označen jako „Ostatní“. Líné importy v __init__.
LLM integrace s fallbackem
Podpora 7 poskytovatelů: Anthropic, OpenAI, Groq, Gemini, DeepSeek, OpenRouter, Qwen. OpenAI-kompatibilní používají jednotné API s base URL:
_OPENAI_COMPATIBLE_BASE_URLS = {
"groq": "https://api.groq.com/openai/v1",
"gemini": "https://generativelanguage.googleapis.com/v1beta/openai/",
"deepseek": "https://api.deepseek.com",
# ...
}
Chyba poskytovatele → automatický přechod k dalšímu. Transkript se vždy uloží. Shrnutí v JSON uvnitř Markdown:
## Shrnutí
Krátký přehled.
### Úkoly
- [ ] **Vy:** Odeslat report do pátku
- [ ] **Speaker 1:** Zkontrolovat PR
### Klíčová rozhodnutí
- PostgreSQL namísto MongoDB
Balíčkování pro Arch Linux
V AUR 4 meta-balíčky:
tapeback– základní.tapeback-tray– tray.tapeback-llm– LLM.tapeback-diarize– PyTorch + pyannote.
Instalace přes yay doinstaluje pip závislosti ve venv. Release: release.sh + CI na PyPI (Trusted Publisher) + AUR skripty.
yay -S tapeback tapeback-diarize tapeback-llm tapeback-tray
Konfigurace v ~/.config/tapeback/.env:
TAPEBACK_VAULT_PATH=~/Documents/obsidian/vault
Vývoj a poučení
3 dny na MVP, 2 týdny na v0.8.9 (opravy chyb, testy). Spec-driven: Markdown specifikace s kritérii připravenosti. Kód od Clauda s revizí. Kontrolujte názvy na PyPI/AUR předem – normalizace dělá echo-vault == echovault.
Co je důležité
- Stereo oddělení: mikrofon (Vy) vs monitor (Ostatní) – deterministické, bez pravděpodobnostních chyb pyannote.
- Lokální zpracování: faster-whisper + volitelný PyTorch, bez cloudu.
- Modularita: extras pro diarize/llm/tray, graceful fallback.
- Integrace: Markdown v Obsidian s JSON shrnutím (úkoly, rozhodnutí).
- Instalace:
uv tool install tapeback[tray,diarize,llm]nebo AUR.
— Editorial Team
Zatím žádné komentáře.