Le WordPress d'aujourd'hui, décodé pour les développeurs

IA & MCP

Transcrire des webinaires par IA et les indexer sur Algolia

Étapes pour transcrire automatiquement des enregistrements de webinaires puis les rendre cherchables via un index Algolia dédié au contenu audio, sans traiter le montage vidéo.

Par WordPress Développement • 9 janvier 2023 • 4 min de lecture • Aucun commentaire
Transcrire des webinaires par IA et les indexer sur Algolia

wp algolia index reindex --index=webinaires : cette commande, exécutée en fin de chaîne, marque l’aboutissement d’un pipeline construit pour rendre cherchable le contenu de 46 webinaires enregistrés au fil des deux dernières années, jusque-là inexploités faute de transcription. Le montage vidéo de ces enregistrements, réalisé par ailleurs, n’entre pas dans ce tutoriel.

L’objectif final : permettre à un visiteur de rechercher un mot-clé et de retrouver directement le passage précis d’un webinaire où ce sujet a été abordé, plutôt que de devoir visionner l’intégralité de l’enregistrement.

Étape 1 : extraire l’audio et transcrire

Chaque webinaire, stocké au format vidéo, a d’abord été converti en fichier audio via ffmpeg, avant transcription par un modèle spécialisé dans la reconnaissance vocale. Le résultat brut de cette étape n’est pas un simple bloc de texte : il inclut un horodatage pour chaque segment de parole, information indispensable pour la suite du pipeline.

ffmpeg -i webinaire-046.mp4 -vn -acodec libmp3lame audio-046.mp3

La transcription elle-même a été lancée via un script PHP appelant l’API du modèle de reconnaissance vocale, avec récupération d’un fichier de sortie structuré en segments horodatés plutôt qu’en texte continu.

Étape 2 : découper par horodatage

L'essentiel à retenir : La transcription seule ne suffit pas, il faut un découpage par horodatage ; Un index Algolia dédié permet la recherche à l'intérieur d'un enregistrement ; Le format de sortie conditionne toute l'exploitation ultérieure

Un texte de transcription brut, sans découpage, ne permet pas une recherche pertinente : indexer un webinaire d’une heure comme un seul document ne renverrait qu’un résultat unique, sans indication du passage précis concerné. Chaque segment horodaté a donc été transformé en un enregistrement Algolia distinct, avec son propre horodatage de début :

{
  "objectID": "webinaire-046-segment-12",
  "webinaire_id": 46,
  "titre_webinaire": "Optimiser les Core Web Vitals sur WooCommerce",
  "horodatage_debut": 742,
  "texte": "Le score INP mesure desormais la reactivite percue par l'utilisateur, contrairement au FID qu'il remplace progressivement.",
  "url_lecture": "https://exemple.fr/webinaires/46?t=742"
}

Le champ url_lecture, pointant directement vers l’instant précis de la vidéo grâce à un paramètre de temps, permet à un résultat de recherche de renvoyer l’internaute exactement au bon endroit, sans qu’il ait à chercher manuellement dans l’enregistrement.

Étape 3 : indexer le lot sur Algolia

L’envoi vers Algolia s’est fait par lot de 1 000 segments via l’API d’indexation, avec un index dédié webinaires distinct de l’index principal du site, pour ne pas polluer les résultats de recherche classiques avec des extraits audio :

$index = $client->initIndex( 'webinaires' );
$index->saveObjects( $segments_a_indexer, array(
    'autoGenerateObjectIDIfNotExist' => false,
) );

Une facette a été ajoutée sur le champ titre_webinaire, permettant de filtrer les résultats par webinaire d’origine sans avoir à multiplier les index distincts.

Ce qui a demandé le plus d’ajustements

  • La longueur des segments : trop courts, ils perdaient leur sens hors contexte ; trop longs, ils rendaient la recherche imprécise. Un segment de 30 à 45 secondes s’est révélé le bon compromis.
  • Les erreurs de transcription sur les termes techniques anglophones, corrigées via un dictionnaire de remplacement appliqué après transcription.
  • Le poids du lot complet sur l’index Algolia, qui a nécessité une répartition en plusieurs envois plutôt qu’un seul appel massif.

Un webinaire transcrit sans découpage par horodatage reste un webinaire invisible pour la recherche : c’est le découpage, pas la transcription elle-même, qui rend le contenu réellement exploitable.

Pour aller plus loin

Sur les 46 webinaires traités lors de ce premier lot, la recherche interne a immédiatement montré des requêtes portant sur des sujets abordés uniquement à l’oral, jamais couverts par un article écrit du site. Ce pipeline ouvre la voie à un enrichissement futur du contenu écrit à partir de ces zones de recherche jusque-là sans réponse.

Le prochain lot prévu portera sur les webinaires plus anciens, dont certains dépassent les deux heures d’enregistrement et poseront probablement de nouveaux défis de découpage : à cette durée, le nombre de segments horodatés à générer et indexer dépasse largement celui traité jusqu’ici, ce qui obligera sans doute à revoir la taille des lots envoyés à Algolia pour rester dans les limites d’un envoi raisonnable.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi