Retour à l'accueil

CLI tapeback : diarisation stéréo des appels Linux

Tapeback — CLI pour l'enregistrement d'appels Linux avec diarisation stéréo : microphone sur canal gauche, moniteur sur droit. Transcription faster-whisper, pyannote et LLM-summary optionnels en Markdown pour Obsidian. Extras modulaires minimisent les dépendances.

Tapeback : enregistreur d'appels local avec diarisation
Advertisement 728x90

# Enregistreur CLI de réunions local pour Linux : Séparation stéréo des locuteurs et résumés IA

L'outil CLI tapeback capture l'audio via PipeWire/PulseAudio, transcrit avec faster-whisper, sépare les locuteurs par canaux stéréo et génère des résumés via des LLM. Le résultat est un fichier Markdown déposé dans le répertoire de votre choix — même dans vos coffres Obsidian. Une seule commande lance l'enregistrement, Ctrl+C l'arrête et déclenche le pipeline : capture → transcription → diarisation → résumé.

Compatible Zoom, Teams, Meet, Discord, Telegram. Capture l'audio système — pas besoin d'API de services.

tapeback start
# la réunion se déroule
# Ctrl+C → traitement → Markdown

Séparation stéréo des locuteurs

L'architecture exploite les fichiers WAV stéréo : canal gauche pour votre micro (« Vous »), canal droit pour la source moniteur (tout le monde d'autre). Whisper traite chaque canal séparément. La diarisation pyannote ne s'exécute que sur le canal droit pour étiqueter Locuteur 1, 2, etc. Les segments sont classés par niveaux d'énergie RMS.

Google AdInline article slot

La séparation physique des canaux élimine les erreurs de clustering : pas de confusion entre voix similaires, pas de fractionnement d'un locuteur sur plusieurs clusters. L'accélération GPU accélère le tout, avec repli sur CPU en cas d'erreur CUDA.

┌─────────────┐     ┌──────────────┐     ┌────────────────────┐
│   Stéréo    │     │   Whisper    │     │   Classification   │
│  WAV        │───▶│  (par        │───▶│   des canaux :     │
│  G : micro  │     │   canal)     │     │   G → « Vous »     │
│  D : moniteur│     │              │     │   D → pyannote     │
└─────────────┘     └──────────────┘     │   pour les autres  │
                                         └────────────────────┘

Dépendances optionnelles

Installation de base (~320 Mo) : enregistrement + transcription. Les extras évitent le bloat PyTorch de 2 Go dont vous n'avez pas besoin :

| Variante | Ajoute | Taille |

Google AdInline article slot

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

| tapeback | Enregistrement + Whisper| ~320 Mo |

| [llm] | Résumés (Anthropic, OpenAI, Groq...) | +50 Mo |

Google AdInline article slot

| [diarize] | pyannote + PyTorch | +2 Go |

| [tray] | Barre système | +1 Mo |

Dégradation élégante : pas de pyannote ? Le canal droit devient « Autre ». Imports paresseux dans __init__.

Intégration LLM avec replis automatiques

Supporte 7 fournisseurs : Anthropic, OpenAI, Groq, Gemini, DeepSeek, OpenRouter, Qwen. Les compatibles OpenAI utilisent une API unifiée avec URLs de base :

_OPENAI_COMPATIBLE_BASE_URLS = {
    "groq": "https://api.groq.com/openai/v1",
    "gemini": "https://generativelanguage.googleapis.com/v1beta/openai/",
    "deepseek": "https://api.deepseek.com",
    # ...
}

Erreur de fournisseur ? Repli automatique sur le suivant. Les transcriptions sont toujours sauvegardées. Résumé en JSON intégré au Markdown :

## Résumé
Aperçu rapide.
### Tâches à suivre
- [ ] **Vous :** Envoyer rapport vendredi
- [ ] **Locuteur 1 :** Revoir PR
### Décisions clés
- PostgreSQL plutôt que MongoDB

Emballage pour Arch Linux

Disponible dans l'AUR en 4 méta-paquets :

  • tapeback — noyau.
  • tapeback-tray — barre système.
  • tapeback-llm — support LLM.
  • tapeback-diarize — PyTorch + pyannote.

yay gère les dépendances pip dans un venv. Publication via release.sh + CI PyPI (Trusted Publisher) + scripts AUR.

yay -S tapeback tapeback-diarize tapeback-llm tapeback-tray

Config dans ~/.config/tapeback/.env :

TAPEBACK_VAULT_PATH=~/Documents/obsidian/vault

Développement et leçons apprises

MVP en 3 jours, v0.8.9 en 2 semaines (bugs, tests). Développement spec-driven : specs Markdown avec critères de complétion. Code généré par Claude avec revues. Vérifiez tôt les noms PyPI/AUR — la normalisation rend echo-vault == echovault.

Points clés

  • Séparation stéréo : Micro (Vous) vs moniteur (Autres) — déterministe, évite les erreurs probabilistes de pyannote.
  • Traitement local : faster-whisper + PyTorch optionnel, sans cloud.
  • Modularité : Extras pour diarisation/LLM/barre, avec replis fluides.
  • Intégration : Markdown pour Obsidian avec résumés JSON (tâches, décisions).
  • Installation : uv tool install tapeback[tray,diarize,llm] ou AUR.

— Editorial Team

Advertisement 728x90

Lire ensuite