product update16 min de lecture

Cinq étapes, quatre artefacts : ce que Telli.sh fait réellement d'un enregistrement de réunion

Une visite guidée de toute la chaîne Telli.sh — enregistrement en direct ou import audio, transcription de réunion par IA avec identification des locuteurs, traduction de réunion en temps réel vers 44 langues cibles, résumés IA en 10 formats et note partageable. Avec les limites assumées, les prix exacts et ce qu'exige vraiment la précision de transcription.

K
Ken Jo
#product-update#ai-meeting-transcription#meeting-transcription-accuracy#speaker-identification#real-time-meeting-translation#multilingual-meeting-notes#meeting-minutes-automation#ai-meeting-notes

Huit personnes sont debout dans une pièce. L'une explique pourquoi la migration a glissé. Deux écoutent à moitié. Quelqu'un au fond prononce la phrase qui comptera dans trois semaines, et personne ne la note.

Voilà la matière première. Cet article décrit ce que notre système en fait, étape par étape, depuis l'instant où l'audio commence à circuler jusqu'à celui où vous collez un lien dans un canal.

Disons-le d'emblée : ceci est un article produit sur Telli.sh, écrit par l'équipe qui le construit. Nous en publions régulièrement, à côté de nos articles de recherche. Ce que nous avons cherché à faire ici, c'est décrire la mécanique avec assez de précision pour qu'un lecteur sceptique puisse vérifier — de vrais noms de modèles, de vrais chiffres, de vraies limites, plutôt que le brouillard habituel de « propulsé par l'IA ».

En bref :

  • Un enregistrement traverse cinq étapes de traitement et laisse derrière lui quatre artefacts stockés séparément : la transcription brute, la carte des locuteurs, le script condensé et un résumé par format appliqué.
  • L'identification des locuteurs tourne sur pyannote/speaker-diarization-community-1, bloc par bloc, en reportant les empreintes vocales d'un bloc à l'autre pour qu'une même personne garde la même étiquette de la minute 5 à la minute 50.
  • La traduction vise 44 codes de langue ; l'interface elle-même existe en 15 langues ; les résumés arrivent en 10 formats intégrés, plus les formats personnalisés que vous définissez par nom, consignes et liste de sections.
  • L'offre gratuite est de 60 minutes par mois, sans carte. Les offres payantes sont à 5, 8 et 10 dollars par mois pour 300, 500 et 1 000 minutes.

Huit collègues debout autour d'ordinateurs portables lors d'une réunion quotidienne de type stand-up

Image : Klean Denmark, « Daily sprint meeting », Wikimedia Commons, CC BY-SA 2.0. Le genre de réunion pour lequel toute cette chaîne existe.

Deux façons d'entrer, et ce ne sont pas les mêmes

Il y a exactement deux points d'entrée, et leur différence conditionne tout l'aval.

Le premier est l'enregistrement en direct. Le navigateur ouvre un AudioContext fixé à 16 000 Hz, charge un AudioWorklet et met en tampon l'entrée micro par blocs de 4 096 échantillons — soit, à 16 kHz, un paquet toutes les 256 millisecondes. Chaque bloc passe du flottant 32 bits au PCM entier 16 bits et part par WebSocket vers /ws/audio/{sessionId}. Un second socket, /ws/session/{id}, porte le canal de commande : changements de langue, mises à jour du contexte, commande SUMMARIZE, et la commande FINISH qui clôt la session et écrit la note.

Le second est l'import de fichier. Vous déposez un enregistrement dans la fenêtre d'import, il part en flux vers POST /upload, et la réponse revient en JSON délimité par lignes — un flux, pas un sablier — pour que l'interface affiche une vraie progression par étapes nommées plutôt qu'un pourcentage inventé. Les limites méritent d'être dites franchement : 500 Mo par fichier, et le sélecteur n'accepte que audio/*. Si votre réunion est enfermée dans une capture d'écran MP4, il faut d'abord en extraire la piste audio. Nous ne le faisons pas à votre place aujourd'hui.

Les deux chemins rejoignent la même colonne de traitement. À partir de l'étape 1, un direct et un fichier importé sont traités à l'identique.

Schéma de la chaîne Telli.sh : l'enregistrement en direct et l'import de fichier convergent vers la reconnaissance vocale, la séparation des locuteurs, la traduction et la condensation, puis le résumé, chaque étape produisant un artefact

Chaque étape conserve sa propre sortie. Rien n'est écrasé par l'étape suivante.

Étapes 1 et 2 : entendre les mots, puis établir à qui ils appartenaient

La reconnaissance vocale passe en premier. En production, le chemin par lots comme le chemin en flux utilisent le modèle nova-3-general de Deepgram ; la base de code embarque aussi un chemin entièrement local bâti sur faster-whisper pour les déploiements auto-hébergés, sélectionné par un seul réglage de fournisseur. Ce choix compte moins qu'on ne l'imagine, pour une raison que nous avons longuement développée : les meilleurs modèles vocaux des classements indépendants se tiennent désormais dans un mouchoir d'environ 1,5 point de taux d'erreur sur les mots. Le moteur n'est plus l'endroit où se joue la différence de qualité.

Elle se joue sur l'identification des locuteurs.

La diarisation tourne sur pyannote/speaker-diarization-community-1. Le détail d'implémentation qui compte vraiment, c'est la gestion des longs enregistrements. Plutôt que de diariser tout le fichier d'un coup, la chaîne traite l'audio par blocs et attribue les locuteurs immédiatement après chaque bloc — tout en tenant un dictionnaire cumulatif d'empreintes vocales par locuteur, et en ré-identifiant contre ce cumul à chaque bloc suivant. C'est ce mécanisme qui empêche le grand classique : un enregistrement de deux heures qui rebaptise discrètement la même personne SPEAKER_00, puis SPEAKER_03, puis SPEAKER_07 au fil de la réunion.

Quand un segment chevauche deux tours de parole, l'étiquette va au tour qui le recouvre le plus, la similarité des empreintes servant d'arbitre dans les cas de faible recouvrement.

Vous obtenez des étiquettes génériques — SPEAKER_00, SPEAKER_01 — parce qu'un modèle ne peut pas deviner que SPEAKER_01 est votre directrice de l'ingénierie. Vous les renommez une fois dans la note, et la correspondance est stockée avec elle puis appliquée partout ensuite, y compris dans les exports et les liens de partage. Voilà l'honnête répartition des rôles : la machine sépare les voix, vous fournissez les noms.

Ce que chaque étape laisse réellement

Notre règle de conception tient en une phrase : aucune étape ne détruit la sortie de la précédente. Vous devez toujours pouvoir revenir aux mots réellement prononcés.

ArtefactProduit parContenuÀ quoi il sert
Transcription bruteÉtapes 1 + 2Lignes horodatées mot à mot, étiquette de locuteur sur chacuneVérifier ce qui a été dit littéralement ; cliquer une ligne pour se caler sur l'audio
Carte des locuteursÉtape 2 (+ vos retouches)La correspondance étiquette-nom de la noteRendre toutes les autres vues lisibles — appliquée dans la note, les exports et les partages
Script condenséÉtape 4Chaque bloc réécrit en une ligne de sujet en gras plus 3 points au maximumSurvoler une longue réunion sans la lire
Lignes traduitesÉtape 3Une traduction attachée à chaque ligne, à côté de l'originalLire une réunion tenue dans une langue que vous ne pratiquez pas
RésuméÉtape 5Un document structuré par format appliquéCe que vous envoyez réellement aux gens

Dans l'interface, cela apparaît en trois sortes d'onglets — Historique (transcription brute), Script (version condensée), et un onglet par format de résumé généré. Si l'audio a été conservé, un lecteur se place au-dessus, et cliquer sur n'importe quelle ligne de transcription positionne l'audio à cet horodatage.

Étape 3 : en traduction, le chiffre qui compte est 44

La traduction de réunion en temps réel est la fonctionnalité qui a attiré le plus d'utilisateurs des débuts, et il vaut la peine d'en préciser la portée : « plus de 100 langues prises en charge » est l'affirmation la moins vérifiable de cette catégorie.

Deux chiffres différents s'appliquent, et ce ne sont pas les mêmes :

  • 44 codes de langue cible sont acceptés pour la traduction. Cet ensemble est énuméré explicitement dans la configuration du backend et distingue zh-TW de zh — ce qui pèse plus qu'il n'y paraît si vous travaillez entre Taïwan et la Chine continentale.
  • 15 langues sont prises en charge pour l'interface elle-même et pour la langue dans laquelle l'IA rédige votre résumé : anglais, coréen, japonais, chinois, allemand, français, espagnol, italien, portugais, russe, polonais, vietnamien, thaï, indonésien et malais.

En session live, la traduction est incrémentale, pas regroupée en fin de parcours. Dès qu'une frontière de ponctuation arrive dans la transcription, la traduction de ce segment s'écoule à côté de l'original, et un cache par session évite de retraduire un texte inchangé. À l'import de fichier, les lignes sont au contraire regroupées par lots : quand personne ne regarde un écran, le débit prime sur la latence.

Il existe aussi un mode de flux traduction, distinct du mode note, pour le cas où la traduction est le livrable — une conversation bilingue à suivre en direct plutôt qu'une réunion dont il faut tirer un compte rendu.

Étape 4 : celle que personne ne demande et dont tout le monde a besoin

Ici, la description bascule en opinion, et nous ne l'atténuerons pas : la condensation est l'étape la plus sous-estimée de cette chaîne.

Une transcription mot à mot de parole humaine est quasi illisible. Les gens recommencent leurs phrases, laissent traîner, répètent quatre fois « oui, oui, voilà », et enterrent une décision dans quatre-vingt-dix secondes de raclements de gorge. Transcrire cela sans une erreur donne encore quatre-vingt-dix secondes de raclements de gorge.

L'étape de condensation prend donc chaque bloc de conversation et le réécrit sous contraintes serrées, définies dans un gabarit de prompt plutôt que dans le code, ce qui permet de l'ajuster sans déploiement. Chaque bloc devient une ligne de sujet en gras dérivée du contenu — pas d'un nom de rôle, pas entre crochets — suivie de trois puces au maximum, en visant environ 300 caractères par bloc. Les noms de locuteurs et les horodatages sont explicitement retirés : ils figurent déjà dans la transcription brute, et les répéter rend la vue de survol moins survolable.

Une contrainte de ce gabarit mérite d'être nommée : le modèle a pour consigne d'épouser le registre de ce qu'il a entendu et, explicitement, de ne pas plaquer un ton de réunion d'affaires sur une conversation informelle. Une discussion de couloir résumée comme un procès-verbal de conseil est un artefact pire que pas de résumé du tout.

Nous appelons le résultat le script — la version lisible d'un coup d'œil, à un onglet de la version citable en cas de litige.

Étape 5 : dix formats de résumé, parce que « résumé » n'est pas une seule chose

La dernière étape produit le document que vous envoyez vraiment. Demander « un résumé » à un LLM donne le résumé de rien en particulier ; le format est donc ici un choix de premier ordre, pas une valeur par défaut cachée.

Dix formats sont intégrés : Résumé IA (général), Compte rendu de réunion, Note de synthèse, Notes de cours, Sermon / Conférence, Compte rendu d'entretien d'accompagnement, Résumé d'appel, Interview, Notes d'idées et Trame de présentation. Chacun porte sa propre structure de sections : le compte rendu produit un aperçu, les points discutés, les décisions et les prochaines étapes ; la trame de présentation produit un plan, l'enchaînement des diapositives, les messages clés, les notes d'orateur et les actions suivantes. Les titres de sections sont eux-mêmes localisés par langue plutôt que traduits au moment de la génération — d'où le fait qu'un résumé en japonais se lise comme un document japonais et non comme un texte anglais traduit.

Si aucun des dix ne convient, vous définissez un format personnalisé : un nom, un jeu de consignes et la liste de sections souhaitée, enregistrés et réutilisables. « Point hebdomadaire au conseil, avec risques et décisions en suspens » est un format qu'on écrit une fois.

N'importe quel format peut être appliqué après coup à une note et génère son propre onglet. Résumer trois fois le même enregistrement pour trois publics est ici un usage normal, pas un contournement.

La précision de transcription est une pile, pas un chiffre

Si vous comparez des outils de cette catégorie, c'est la section à contester.

L'industrie publie un chiffre — le taux d'erreur sur les mots — et il a cessé d'être utile pour choisir entre produits, puisque tout le monde s'entasse près du plancher. Nous avons démonté cet argument en détail dans La précision STT ne suffit pas, y compris le cas où un seul « ne… pas » manquant inverse une décision tout en coûtant 0,016% du budget de précision.

Version pratique : la précision de transcription qui survit au contact d'une vraie réunion se construit en cinq couches, et le modèle acoustique n'est que celle du bas.

Diagramme empilé de cinq couches de précision : modèle acoustique à la base, puis attribution des locuteurs, contexte fourni, condensation et relecture humaine, le taux d'erreur ne mesurant que la base

Le taux d'erreur mesure la couche 1. Ce sont les couches 2 à 5 qui décident si la transcription est utilisable.

La couche 3 est celle que les utilisateurs contrôlent directement et que la plupart sautent. Avant d'enregistrer ou d'importer, vous pouvez fournir un bloc de contexte de 500 caractères maximum — sujet, noms des participants, codes produits, acronymes — et joindre jusqu'à 3 fichiers de référence (PDF, image ou texte), dont le texte est extrait dans le navigateur et replié dans ce même budget. Ce contexte est transmis aux étapes IA.

Ce n'est pas un agrément. Les noms propres sont à la fois les mots les plus porteurs d'information et les moins fréquents d'une réunion : noms de projets internes, patronymes rares, références produit. Dire au système à l'avance que « Kestrel » est un produit et « Ravi » une personne coûte quinze secondes et supprime les erreurs que vous corrigeriez sinon à la main pendant dix minutes. Si vous ne changez qu'une seule chose après cet article, remplissez le champ de contexte.

De rien à une note partagée, en onze étapes

Concrètement, du premier essai à l'artefact partageable :

  1. Inscrivez-vous. L'offre gratuite, c'est 60 minutes par mois, sans carte bancaire, et elle fait tourner exactement la même chaîne que les offres payantes — c'est une différence de quota, pas de fonctionnalités.
  2. Choisissez le chemin : lancez un enregistrement en direct, ou ouvrez la fenêtre d'import et déposez un fichier audio (audio/*, moins de 500 Mo).
  3. Réglez la paire de langues. La source peut rester en détection automatique ; la langue cible décide de la langue de la traduction et du résumé.
  4. Remplissez le champ de contexte — sujet, noms, acronymes, jusqu'à 500 caractères. Joignez jusqu'à 3 fichiers de référence si vous avez un support ou un ordre du jour.
  5. Choisissez un dossier si la note doit être rangée quelque part de précis. Vous pourrez la déplacer plus tard.
  6. Enregistrez, ou attendez le flux d'import. En direct, la transcription apparaît au fil de la parole, la traduction s'écoulant à côté si une langue cible est réglée. Pendant un import, vous voyez des étapes nommées : reconnaissance vocale, analyse, condensation, résumé, finalisation.
  7. Terminez la session. Cela déclenche le message de commande FINISH, qui vide le dernier segment, attend la condensation en cours, enregistre l'audio, génère le résumé et écrit la note.
  8. Renommez les locuteurs. SPEAKER_00 devient un prénom une fois, et la correspondance se propage à toutes les vues et à tous les exports.
  9. Lisez l'onglet Script pour saisir le sujet de la réunion ; passez à Historique et cliquez une ligne pour écouter l'audio à cet instant précis dès que quelque chose semble faux.
  10. Générez d'autres formats de résumé si un public a besoin du compte rendu et un autre de la note de synthèse.
  11. Partagez ou exportez. Un lien de partage est en lecture seule, expire au bout de 7 jours et peut porter un mot de passe optionnel. L'export fournit du Markdown ou du JSON, avec le résumé, les blocs condensés et la transcription complète dans un seul fichier.

Importer un enregistrement que vous avez déjà

Le coût, en chiffres exacts

Le quota se compte en minutes d'audio traitées, et c'est la seule chose qui sépare les paliers.

OffreMinutes par moisMensuelAnnuelCoût effectif pour 100 min
Gratuite60USD 0
Plus300USD 5,00USD 51,00USD 1,67
Pro500USD 8,00USD 81,60USD 1,60
Pro+1 000USD 10,00USD 102,00USD 1,00

Diagramme en barres comparant les minutes d'enregistrement mensuelles des offres Gratuite, Plus, Pro et Pro Plus, avec les prix indiqués

La facturation annuelle vaut mensuel × 12 × 0,85. Le tarif à la minute s'améliore avec le palier ; la chaîne, elle, ne change pas.

Soixante minutes gratuites, c'est une longue réunion ou trois stand-ups. De quoi répondre à la seule question qui compte : est-ce que cela produit une note que vous enverriez vraiment ? Sur votre propre audio, pas sur une démo d'éditeur.

Enregistrer votre prochaine réunion en direct

Ce que Telli.sh ne fait pas

Un article produit qui n'aligne que des capacités est une publicité. Voici l'autre colonne.

Il ne prend pas de fichiers vidéo. L'import accepte audio/*. Extrayez d'abord la piste audio.

Il ne rejoint pas vos appels. Aucun bot ne se connecte à Zoom, Meet ou Teams pour figurer dans la liste des participants. Vous enregistrez la salle, ou l'audio de votre machine, ou vous importez le fichier ensuite.

Il ne répare pas un mauvais audio. C'est la frontière honnête de toute la catégorie. Un micro omnidirectionnel de portable posé au bout d'une table de douze personnes, dans une pièce aux murs durs, dégradera la diarisation quel que soit le modèle qui tourne : la parole superposée et les locuteurs éloignés sont les premiers points de rupture de l'attribution. Un téléphone au centre de la table bat à chaque fois le portable au bout de la table, et ne coûte rien.

Il ne connaît pas votre vocabulaire si vous ne le lui dites pas. Voir la couche 3 ci-dessus. Les noms propres inhabituels sont la première source d'erreurs, et le champ de contexte est le remède.

Les étiquettes de locuteurs partent génériques. Aucun système ne devine que SPEAKER_01 est Priya. Vous renommez une fois par note.

Les liens de partage ont une durée. Sept jours, puis le lien meurt. C'est un choix par défaut assumé pour du contenu de réunion, pas une fonctionnalité oubliée — mais cela veut dire qu'un lien de partage n'est pas une archive. Exportez le Markdown s'il vous faut de la permanence.

Ce qu'il faut retenir

Notre erreur des débuts a été de penser ce produit comme un outil de transcription. Il ne l'est pas. La transcription est l'étape un sur cinq, et c'est celle qui est le plus près d'être résolue.

Ce que nous construisons réellement, c'est la distance entre un enregistrement et une décision : savoir qui a parlé, ramener les quatre-vingt-dix secondes de raclements de gorge à la phrase qu'elles contiennent, rendre cette phrase dans la langue de travail du lecteur, et la déposer là où un collègue peut l'ouvrir. L'enregistrement est une pièce à conviction. La note est ce qui change ce qui se passera la semaine prochaine.

Si un enregistrement de réunion dort sur votre machine en ce moment, c'est le seul benchmark qui vaille. Le nôtre a demandé soixante secondes de mise en place et a produit une note que nous avons envoyée à quatre personnes.

Lancer une session traduite en direct

Sources


Retour au blog