
Scriber
Bot Discord auto-hébergé qui enregistre, transcrit et résume les réunions
Botjuillet 2026Pythondiscord.pyfaster-whisperFastAPIVue 3MCP
Code source Site du projet Guide d’installation Documentation de l’API
Scriber rejoint un salon vocal Discord, transcrit chaque intervenant localement avec Whisper puis fait rédiger le compte rendu par l’IA de son choix (Anthropic, OpenAI ou modèle auto-hébergé). Un tableau de bord Vue 3, une API REST et un serveur MCP donnent accès à tout l’historique.
But du projet
Obtenir le compte rendu d’une réunion Discord sans dépendre d’un service tiers pour l’audio. La transcription se fait par défaut sur le serveur ; seule la transcription finale est envoyée au fournisseur d’IA, et même pas cela avec un modèle auto-hébergé. Après chaque réunion, Scriber met aussi à jour une courte fiche mémoire par participant pour que les noms propres et le vocabulaire des projets restent corrects d’une séance à l’autre.
Fonctionnalités
- Transcription par intervenant, horodatée, en local (faster-whisper) ou via un moteur cloud (Mistral Voxtral, ElevenLabs Scribe, Google Chirp) avec repli automatique sur Whisper.
- Comptes rendus par une liste ordonnée de fournisseurs (
anthropic,openai,openai-compatible: Ollama, vLLM, LM Studio, LocalAI) avec bascule automatique en cas d’échec. - Deux modèles par fournisseur : un modèle principal pour le compte rendu, un modèle moins cher pour la mise à jour des mémoires.
- Avis d’enregistrement publié dans le salon textuel : moteur de transcription, destination exacte de la transcription, moyen de refuser (quitter le salon).
- Conservation de l’audio (30 jours par défaut) avec lecture et téléchargement depuis le tableau de bord.
- Régénération de transcription avec un autre moteur ou modèle, versions conservées et comparaison côte à côte.
- Coût estimé de chaque réunion à partir des jetons consommés.
- API REST authentifiée par jeton (lecture ou lecture-écriture) et serveur MCP pour Claude Code, Claude Desktop, Cursor…
- Un seul conteneur, toutes les données dans
data/.
Commandes
| Commande | Effet |
|---|---|
/scriber start | Rejoint votre salon vocal, publie l’avis d’enregistrement et commence à enregistrer. |
/scriber start lang:fr | Idem, en forçant la langue de transcription (auto pour la détection). |
/scriber stop | Termine la transcription, génère le compte rendu et le publie dans le salon. |
/scriber cancel | Quitte le salon et supprime tout ; rien n’est conservé ni envoyé. |
Le bot s’arrête aussi seul quand il reste seul dans le salon ou après 2 minutes sans parole transcrite.
Fonctionnement
- Le bot reçoit l’audio Discord (déchiffrement DAVE puis Opus), le découpe par intervenant et le transcrit pendant la réunion.
- À l’arrêt, la transcription est écrite sur disque et envoyée au premier fournisseur de la liste ; en cas d’échec, au suivant. Si tous échouent, le fichier de transcription brute est publié pour que rien ne soit perdu.
- Le compte rendu Markdown est publié dans Discord, puis chaque fiche mémoire de participant est réécrite à partir de sa version précédente, du compte rendu et d’un extrait de la transcription.
- Le tableau de bord (FastAPI + Vue 3) affiche statistiques, historique, transcriptions, comptes rendus, détail des appels IA et réglages ; les modifications sont réécrites dans
.envet s’appliquent à la réunion suivante.
Seuls le nombre de jetons et le coût estimé de chaque appel sont enregistrés, jamais les prompts ni les réponses.
Installation
Prérequis : Docker ou Podman (ou Python 3.12+ avec libopus), une application Discord avec un jeton de bot, et une clé Anthropic/OpenAI ou un serveur compatible OpenAI auto-hébergé. Le guide illustré détaille la création du bot et son invitation.
cp .env.example .env # DISCORD_TOKEN + au moins un fournisseur SUMMARY_*_1
docker compose up -d # ou : podman-compose up -d
# tableau de bord : http://localhost:8080Le modèle Whisper est téléchargé au premier usage dans data/models/. Un CPU suffit pour tiny, base ou small ; un GPU CUDA aide pour medium et large-v3. Pensez à changer le mot de passe administrateur par défaut avant d’exposer le port.