Automatise le speech-to-text du visiobot !
La Batcave #2
Le batsignal est dans le ciel, merci dâĂȘtre venu đŠ !
Dans cette 2de édition, tu vas comprendre comment automatiser la partie speech-to-text !
=> Ă la fin de la rĂ©union Meet, le visiobot tâenverra la transcription de la rĂ©union par mail.
Pour ce faire, jâai fait le choix du NoCode avec Make.
Make est une plateforme qui permet dâautomatiser des process visuellement, sans avoir Ă coder.
Si tu souhaites reconstruire ce prototype toi-mĂȘme, tu trouveras le code source dans les ressources.
Pas de blabla, rentrons dans le vif du sujet ! đ
Le programme des réjouissances
Introduction
Le prototype en vidéo
Top 5 des trucs Ă retenir
Explication âdâun bout de codeâ
Bonus : lâidĂ©e business et pour aller plus loin
Le mot de la fin
Introduction
Si tu as raté la 1re édition, je te fais un rapide rappel :
- un visiobot, câest un programme informatique (un bot) capable de sâinviter dans une visioconfĂ©rence. Et dây ajouter des fonctionnalitĂ©s.
- dans la 1re Ă©dition, jâai mis en place le bot, sans automatiser le speech-to-text.
Si ça tâintĂ©resse => VisioBot Partie 1
Pas besoin de lâavoir suivie pour comprendre la partie dâaujourdâhui.
Jâai fait Ă©voluer le format par rapport Ă la semaine derniĂšre.
Jâai privilĂ©giĂ© une vidĂ©o courte et dynamique ( < 5 min) :
- je te montre le résultat final
- je construis le prototype en accéléré
Et je tâexplique les points importants par Ă©crit, directement dans le mail.
NâhĂ©site pas Ă me dire ce que tu penses de cette mĂ©thode !
Le prototype
Schéma
Parce quâun schĂ©ma vaut 1000 mots !
Lâarchitecture du prototype dâaujourdâhui, avec des lego :
Tout lâenjeu câest de comprendre comment les imbriquer đ.
La vidéo
Je te laisse la regarder et on se retrouve aprĂšs :)
Je tâexplique tout ensuite.
Explication : Top 5 de ce que tu dois retenir
1. Pourquoi le service rev.ai ?
Ce quâil faut comprendre, câest que ce service peut ĂȘtre remplacĂ© par nâimporte quel autre service de speech-to-text : assemblyAI, Whisper, Amazon Transcribe, Azure Speech to text, etc.
Jâai choisi rev.ai car ils ont un SDK* pour Node qui est simple Ă utiliser.
(Pour rappel, Node, câest la techno utilisĂ©e pour faire ce prototype, avec du Typescript).
*Un SDK (Software Development Kit) est un outil qui facilite lâutilisation dâun service avec du code.
Ăa Ă©vite de rĂ©inventer la roue, tu utilises directement la roue fournie par le service.
Tu gagnes donc du temps !
Ensuite, rev.ai a un bon rapport qualitĂ©-prix, mĂȘme sâil nâest pas toujours trĂšs juste pour le français.
Tu as le droit Ă 5 heures de transcription offertes par mois.
Donc largement de quoi tâamuser pour ton usage personnel !
2. Quand envoyer lâaudio Ă rev.ai ?
Dans lâidĂ©al Ă la fin du Google Meet si tu arrives Ă dĂ©tecter quand le meet se termine.
Quand je fais un prototype, je cherche toujours la solution la plus simple et efficace.
Pas la plus belle.
Puppeteer, la librairie qui permet de scripter le bot, traque pour toi quand une page se ferme, quand le navigateur est ouvert ou fermé ⊠=> Bingo !
Quand le Meet est terminé, tu fermes le navigateur du bot.
La solution nâest pas idĂ©ale, mais elle fonctionne trĂšs bien :
browser.once('disconnected', async () => {
//les actions que tu veux faire ensuite
});
Quand Puppeeter perd la connexion avec le navigateur, il envoie un Ă©vĂšnement âdisconnectedâ.
Cet évÚnement sert aussi à gérer quand le navigateur plante et que tu souhaites le redémarrer.
3. Synchrone / asynchrone, quésaco ?
Quand tu fais la queue dans un magasin, tu es bloquĂ© et tu dois attendre de passer Ă la caisse. Tu ne peux rien faire dâautre.
Câest synchrone.
Quand tu souhaites une pizza Ă emporter, tu commandes, tu tâoccupes et tu vas la chercher quand elle est prĂȘte .
Câest asynchrone. Tu peux faire autre chose le temps de la prĂ©paration de la pizza.
Lâutilisation dâun service speech-to-text est asynchrone.
Tu passes commande pour faire la transcription de ton audio.
Puis tu attends quâelle soit prĂȘte.
Quand elle est prĂȘte, tu la rĂ©cupĂšres.
Petit détail : Le code de début de la doc de rev.ai a une erreur pour cette raison (Doc rev.ai).
Il nâattend pas que la commande soit prĂȘte pour la demander et je ne comprenais pas lâerreur au dĂ©but ^^.
Il faut attendre.
4. Câest quoi un webhook et Ă quoi ça sert ?
La pĂȘche, tu connais forcĂ©ment ? Câest pareil.
Le webhook câest ton hameçon.
Il attend que ça morde.
Le poisson ? Câest la donnĂ©e que tu veux rĂ©cupĂ©rer.
Dans notre cas câest lâid du job qui sâoccupe de transcrire notre audio.
Quand ça mord, tu reçois la donnĂ©e, elle sâaccroche Ă ton hameçon : le webhook.
Tu tires et tu récupÚres la donnée.
La technique du Webhook est trÚs utilisée pour transmettre des données entre des outils.
Par exemple, jâai créé un webhook avec Make, qui permet dâenvoyer des donnĂ©es : code du visiobot => Make.
5. Pourquoi avoir utilisé Make ?
Comme je te lâai dit sur la partie synchrone / asynchrone : quand tu fais ta commande pour transcrire ton audio, tu dois attendre quâelle soit prĂȘte.
Sauf que rev.ai est feignant et ne te le dit pas** :/ (en fait si, je tâexplique plus bas).
Tu dois donc lui demander rĂ©guliĂšrement quand câest prĂȘt.
Avec Make, câest facile de lancer une tĂąche toutes les N minutes.
Tu crées un scénario et voilà !
AprĂšs avoir reçu la transcription, tu dĂ©cides de lâenvoyer par mail.
Mais ça peut vite ĂȘtre prise de tĂȘte de le faire avec du code.
Lâavantage, câest que Make le fait pour toi et ça tâĂ©vite de rĂ©inventer la roue !
Pragmatisme, encore et toujours ! :P
Entre nous, configurer Make pour quâil puisse envoyer un mail depuis un gmail perso, ce nâest pas si simple :/
Le tuto est ici : Make et Gmail (Integromat, câest lâancien nom de Make).
Ce nâest pas trĂšs compliquĂ©, mais tu as quand mĂȘme une manipâ non Ă©vidente Ă faire.
Ă part cette petite mĂ©saventure pour configurer le mail, lâalgorithmique est plutĂŽt simple :
Il faut mettre en place un webhook pour recevoir lâid du job (qui processe la transcription de lâaudio).
Quand le webhook reçoit lâid (Ă la fin dâune visio), il stocke cet id dans le data store de Make. Câest une base de donnĂ©es intĂ©grĂ©e.
à chaque minute, un scénario vérifie les id du data store.
Et il regarde si le transcript est prĂȘt :
Câest prĂȘt : il envoie mail avec le texte et supprime lâid dans le store (car on nâen nâaura plus besoin)
Ce nâest pas prĂȘt : on attend.
** Je me suis rendu compte (jeudi dernier) quâil y avait une solution plus simple. Je nâai pas eu le temps de changer le code.
Quand tu envoies lâaudio pour la transcription, tu peux aussi donner lâurl dâun webhook. Quand le travail est terminĂ©, rev.ai envoie le rĂ©sultat directement Ă ce webhook.
Câest donc beaucoup plus simple !
Dans la doc de rev.ai Rev.ai Doc, câest le paramĂštre ânotification_configâ.
Si tu souhaites refaire ce prototype, je tâinvite plutĂŽt Ă partir sur cette solution đ
Explication âdâun bout de codeâ
try {
//Ton code
} catch (error) {
console.log(error);
}
Ce bout de code sert à gérer les erreurs dans ton code et éviter que ton programme plante sauvagement.
Sâil plante, tu peux gĂ©rer lâerreur, contrĂŽler le comportement de ton programme et afficher un message que TU as dĂ©cidĂ©.
Bonus
LâidĂ©e business
ProblĂšme ?
Tu veux ajouter des fonctionnalitĂ©s Ă tes rĂ©unions visios mais câest compliquĂ© :
- transcription puis services tiers (indexation des visios, prise de note, remplissage auto de formulaire, etc.)
- systĂšme de commande vocale
- mesure de lâattention des participants et actions
Bref, beaucoup de possibilités, mais les outils visios (Zoom, Meet, Teams) ont des API trÚs peu permissives.
Tu es donc limitĂ© par ce quâils proposent.
Solution ?
Tu proposes un service de visiobot Ă la demande.
Le chatbot est aux messageries ce que le visiobot est aux visioconférences.
Ton but nâest pas de construire des visiobots mais de permettre aux autres dâen faire, facilement. Tu mets Ă disposition les fondations pour que dâautres construisent dessus.
Je laisse ça là .
Si je ne venais pas de lancer cette newsletter, je pense que je testerais cette idée.
Mon intuition dâentrepreneur me dit quâil y a quelque chose Ă creuser.
Et si tu lances ce business grĂące Ă La Batcave, alors jâaurais rĂ©ussi mon pari !
Mais stp dis-le-moi :)
Pour aller plus loin
Au moment de te loguer au compte Google, tu peux enregistrer les cookies.
Ă la prochaine connexion, il te suffit de charger les cookies et dâactualiser la page. Tu seras directement loguĂ© :).
Câest aussi un bon moyen dâĂ©viter le captcha qui peut survenir Ă force de te loguer trop souvent.Au lieu dâenvoyer par mail, tu peux aussi stocker dans Google Drive ou autre.
Dans le mail envoyĂ©, ajouter des infos en plus : la date, lâheure, les participants, etc.
Pour ça, tu dois transmettre ces infos en mĂȘme temps que tu envoies lâid du job Ă Make (pour rĂ©cupĂ©rer la transcription).Tu peux aussi crĂ©er une fonctionnalitĂ© avec lâagenda et les invitations.
Tu invites le visiobot et il arrive automatiquement quand câest lâheure.
Plus besoin de lui transmettre lâURL.
Ressources
Code source :
Sources :
Revai Doc Node => pour débuter avec le SDK
Redvai Doc GetTranscript => la doc de la requĂȘte pour rĂ©cupĂ©rer la transcription
Le mot de la fin
JâespĂšre que ce format tâa plu ! NâhĂ©site pas Ă me rĂ©pondre directement Ă la suite de ce mail pour me donner ton avis :).
Un like fait toujours plaisir pour me montrer que tu as apprĂ©ciĂ© et mâencourager Ă continuer.
La semaine prochaine, nous allons continuer Ă explorer le speech-to-text avec un cas dâusage trĂšs pratique.
Et ce sera en NoCode.
NâhĂ©site pas Ă me dire si ce format (vidĂ©o courte + Ă©crit) te convient !
Jâai encore plein dâidĂ©es pour lâamĂ©liorer, mais je suis encore en phase dâitĂ©ration.
Vincent đŠ