Bot Telegram de transcription
Concevez un bot Telegram qui transcrit des messages audio et vidéo dans plus de 90 langues avec TypeScript, Deno et les fonctions Edge de Supabase.
Guide pratique · Suppose que vous avez suivi le guide de démarrage rapide de Speech to Text et que vous disposez d’un jeton de bot Telegram ainsi que d’un compte Supabase.
Introduction
Dans ce tutoriel, vous apprendrez à concevoir un bot Telegram qui transcrit des messages audio et vidéo dans plus de 90 langues à l’aide de TypeScript et du modèle Scribe d’ElevenLabs, via l’API Speech to Text.
Prérequis
- Un compte ElevenLabs avec une clé API.
- Un compte Supabase (vous pouvez créer un compte gratuit via database.new).
- La CLI Supabase installée sur votre machine.
- L’environnement d’exécution Deno installé sur votre machine et, si vous le souhaitez, configuré dans votre IDE préféré.
- Un compte Telegram.
Configuration
Enregistrer un bot Telegram
Utilisez le BotFather pour créer un bot Telegram. Exécutez la commande /newbot et suivez les instructions pour créer votre bot. À la fin, vous recevrez votre jeton de bot secret. Conservez-le en lieu sûr pour l’étape suivante.

Créer un projet Supabase en local
Après avoir installé la CLI Supabase, exécutez la commande suivante pour créer un projet Supabase en local :
Créer une table de base de données pour enregistrer les résultats de transcription
Créez ensuite une table de base de données pour enregistrer les résultats de transcription :
Cette commande crée un fichier de migration dans le répertoire supabase/migrations. Ouvrez ce fichier et ajoutez le SQL suivant :
Créer une fonction Edge Supabase pour gérer les requêtes webhook Telegram
Créez ensuite une fonction Edge pour gérer les requêtes webhook Telegram :
Si vous utilisez VS Code ou Cursor, sélectionnez y lorsque la CLI vous demande « Generate VS Code settings for Deno? [y/N] ».
Configurer les variables d’environnement
Dans le répertoire supabase/functions, créez un fichier .env et ajoutez les variables suivantes :
Dépendances
Le projet utilise quelques dépendances :
- Le framework open source grammY pour gérer les requêtes webhook Telegram.
- La bibliothèque @supabase/supabase-js pour interagir avec la base de données Supabase.
- Le SDK JavaScript d’ElevenLabs pour interagir avec l’API Speech to Text.
Les fonctions Edge Supabase utilisent l’environnement d’exécution Deno. Vous n’avez donc pas besoin d’installer les dépendances, mais pouvez les importer avec le préfixe npm:.
Programmer le bot Telegram
Dans votre nouveau fichier scribe-bot/index.ts, ajoutez le code suivant :
Analyse détaillée du code
Quelques éléments du code méritent votre attention. Examinons-les étape par étape.
Gestion de la requête entrante
Pour gérer la requête entrante, utilisez le gestionnaire Deno.serve. Il vérifie que la requête contient le bon secret, puis la transmet à la fonction handleUpdate.
Gérer les messages vocaux, audio et vidéo
Le framework grammY permet facilement de filtrer des types de messages spécifiques. Ici, le bot écoute les messages vocaux, audio et vidéo.
À partir du contexte de la requête, le bot extrait les métadonnées du fichier, puis utilise EdgeRuntime.waitUntil des tâches d’arrière-plan Supabase pour exécuter la transcription en arrière-plan.
Vous pouvez ainsi répondre immédiatement à l’utilisateur tout en traitant la transcription du fichier en arrière-plan.
Transcription avec l'API ElevenLabs
Enfin, dans le worker d’arrière-plan, le bot utilise le SDK JavaScript d’ElevenLabs pour transcrire le fichier. Une fois la transcription terminée, il répond à l’utilisateur avec le texte transcrit et ajoute une entrée de journal dans la base de données Supabase à l’aide de supabase-js.
Déployer sur Supabase
Si ce n’est pas déjà fait, créez un compte Supabase sur database.new, puis liez le projet local à votre compte Supabase :
Appliquer les migrations de base de données
Exécutez la commande suivante pour appliquer les migrations de base de données du répertoire supabase/migrations :
Accédez à l’éditeur de tables de votre Dashboard Supabase. Vous devriez voir une table transcription_logs vide.

Enfin, exécutez la commande suivante pour déployer la fonction Edge :
Accédez à la vue des fonctions Edge de votre Dashboard Supabase. Vous devriez voir la fonction scribe-bot déployée. Notez l’URL de la fonction, car vous en aurez besoin plus tard. Elle devrait ressembler à https://<project-ref>.functions.supabase.co/scribe-bot.

Configurer le webhook
Définissez l’URL webhook de votre bot sur https://<PROJECT_REFERENCE>.functions.supabase.co/telegram-bot (remplacez <...> par les valeurs correspondantes). Pour cela, envoyez simplement une requête GET à l’URL suivante, par exemple dans votre navigateur :
Notez que FUNCTION_SECRET correspond au secret défini dans votre fichier .env.

Définir les secrets de la fonction
Maintenant que tous vos secrets sont configurés en local, exécutez la commande suivante pour les définir dans votre projet Supabase :
Tester le bot
Vous pouvez maintenant tester le bot en lui envoyant un message vocal, un fichier audio ou une vidéo.

Après avoir reçu le texte transcrit en réponse, revenez à l’éditeur de tables de votre Dashboard Supabase. Vous devriez voir une nouvelle ligne dans votre table transcription_logs.
