# 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.

- Auteur : WordPress Développement
- Publié le : 2023-01-09
- Mis à jour le : 2023-01-09
- Catégorie : IA &amp; MCP
- URL : https://www.wpmoderne.fr/ia-mcp/transcriptions-webinaires-algolia/

## L’essentiel

- 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

`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.
