Exporter une transcription automatique en TextGrid PRAAT ou fichier ELAN

· YobiYoba
Exporter une transcription automatique en TextGrid PRAAT ou fichier ELAN

Exporter une transcription automatique en TextGrid PRAAT ou fichier ELAN

La transcription manuelle est souvent la première étape d'un projet sur corpus oral, et c'est presque toujours la plus longue. Avant même de commencer l'annotation phonétique dans PRAAT ou l'annotation discursive dans ELAN, il faut déjà avoir le texte aligné sur le signal. Ce travail préliminaire peut représenter plusieurs heures par heure d'enregistrement selon la qualité de l'audio et le nombre de locuteurs.

YobiYoba automatise cette première étape. Le service transcrit l'audio, identifie les locuteurs, aligne chaque segment sur le signal, puis exporte directement au format TextGrid pour PRAAT ou au format .eaf pour ELAN. Vous obtenez un fichier prêt à ouvrir, avec les tiers déjà structurés.

Ce que YobiYoba produit avant l'export

La transcription automatique génère un document structuré qui contient, pour chaque segment de parole :

  • le locuteur identifié (diarisation automatique, avec genre estimé)
  • les timestamps de début et de fin du segment
  • le texte transcrit, avec les timestamps et scores de confiance par mot
  • la langue détectée

C'est cette structure qui permet de produire des fichiers PRAAT et ELAN cohérents, avec un tier par locuteur et des intervalles précisément alignés sur l'audio.

Avant d'exporter, vous pouvez relire et corriger la transcription dans l'éditeur intégré. C'est le bon moment pour vérifier les noms propres, les termes techniques et les passages peu intelligibles. Vous pouvez aussi anonymiser manuellement les segments sensibles si l'enregistrement contient des données personnelles.

Pour lancer l'export, rendez-vous dans Mes fichiers, cliquez sur "Télécharger la transcription" pour le fichier concerné, puis choisissez le format voulu : PRAAT (TextGrid) ou ELAN (.eaf).

Exporter en TextGrid PRAAT

PRAAT utilise le format TextGrid pour les annotations temporelles. Un TextGrid est composé de tiers, chacun couvrant la durée totale du signal. YobiYoba génère un IntervalTier par locuteur détecté. Chaque tier porte l'identifiant du locuteur (MS1, FS3, etc.) et contient les segments de parole comme intervalles annotés, avec des intervalles vides entre les prises de parole.

Exemple de TextGrid produit par YobiYoba pour un enregistrement de 45 secondes avec 3 locuteurs :

File type = "ooTextFile"
Object class = "TextGrid"

xmin = 2.14
xmax = 45
tiers? <exists>
size = 3
item []:
    item [1]:
        class = "IntervalTier"
        name = "MS1"
        xmin = 2.14
        xmax = 45
        intervals: size = 4
        intervals [1]:
            xmin = 2.14
            xmax = 9.80
            text = " On travaille sur ce projet depuis deux ans. L'idée de départ, c'était d'améliorer l'accès aux archives locales."
        intervals [2]:
            xmin = 9.80
            xmax = 12.40
            text = ""
        intervals [3]:
            xmin = 12.40
            xmax = 16.22
            text = " Exactement. On a dû revoir l'ensemble du dispositif à partir du mois de mars."
        intervals [4]:
            xmin = 16.22
            xmax = 45
            text = ""
    item [2]:
        class = "IntervalTier"
        name = "FS1"
        xmin = 2.14
        xmax = 45
        intervals: size = 3
        intervals [1]:
            xmin = 2.14
            xmax = 10.30
            text = ""
        intervals [2]:
            xmin = 10.30
            xmax = 11.80
            text = " Oui, tout à fait. Et ça a évolué très vite dès la première année."
        intervals [3]:
            xmin = 11.80
            xmax = 45
            text = ""
    item [3]:
        class = "IntervalTier"
        name = "MS2"
        xmin = 2.14
        xmax = 45
        intervals: size = 3
        intervals [1]:
            xmin = 2.14
            xmax = 17.50
            text = ""
        intervals [2]:
            xmin = 17.50
            xmax = 22.10
            text = " Pour ma part, je suis arrivé sur le projet en cours de route, en janvier dernier."
        intervals [3]:
            xmin = 22.10
            xmax = 45
            text = ""

Quelques points à noter sur ce format :

Le xmin du TextGrid correspond au début du premier segment détecté, pas nécessairement à 0. Le xmax correspond à la durée totale du signal audio. Les intervalles vides (text = "") remplissent les silences entre les prises de parole de chaque locuteur. C'est la structure standard attendue par PRAAT pour un IntervalTier.

Une fois le fichier ouvert dans PRAAT, vous pouvez renommer les tiers (MS1, FS3...) avec les vrais prénoms ou pseudonymes des locuteurs. Vous pouvez aussi ajouter de nouveaux tiers : phonèmes, prosodie, étiquettes d'événements, notes de terrain.

Exporter en fichier ELAN

ELAN utilise le format .eaf (ELAN Annotation Format), un XML conforme au schéma du MPI. YobiYoba produit un fichier EAFv3.0 avec un TIER par locuteur, aligné sur le fichier audio via l'URL du média.

Exemple de structure .eaf produit par YobiYoba :

<?xml version="1.0" encoding="UTF-8"?>
<ANNOTATION_DOCUMENT FORMAT="3.0" VERSION="3.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://www.mpi.nl/tools/elan/EAFv3.0.xsd">
  <HEADER MEDIA_FILE="" TIME_UNITS="milliseconds">
    <MEDIA_DESCRIPTOR MEDIA_URL="file:///interview.wav" MIME_TYPE="audio/x-wav"/>
  </HEADER>
  <TIME_ORDER>
    <TIME_SLOT TIME_SLOT_ID="ts1" TIME_VALUE="2140"/>
    <TIME_SLOT TIME_SLOT_ID="ts2" TIME_VALUE="9800"/>
    <TIME_SLOT TIME_SLOT_ID="ts3" TIME_VALUE="10300"/>
    <TIME_SLOT TIME_SLOT_ID="ts4" TIME_VALUE="11800"/>
    <TIME_SLOT TIME_SLOT_ID="ts5" TIME_VALUE="12400"/>
    <TIME_SLOT TIME_SLOT_ID="ts6" TIME_VALUE="16220"/>
    <TIME_SLOT TIME_SLOT_ID="ts7" TIME_VALUE="17500"/>
    <TIME_SLOT TIME_SLOT_ID="ts8" TIME_VALUE="22100"/>
  </TIME_ORDER>
  <TIER LINGUISTIC_TYPE_REF="default-lt" PARTICIPANT="MS1" TIER_ID="MS1">
    <ANNOTATION>
      <ALIGNABLE_ANNOTATION ANNOTATION_ID="a1"
        TIME_SLOT_REF1="ts1" TIME_SLOT_REF2="ts2">
        <ANNOTATION_VALUE> On travaille sur ce projet depuis deux ans. L'idée de départ, c'était d'améliorer l'accès aux archives locales.</ANNOTATION_VALUE>
      </ALIGNABLE_ANNOTATION>
    </ANNOTATION>
    <ANNOTATION>
      <ALIGNABLE_ANNOTATION ANNOTATION_ID="a3"
        TIME_SLOT_REF1="ts5" TIME_SLOT_REF2="ts6">
        <ANNOTATION_VALUE> Exactement. On a dû revoir l'ensemble du dispositif à partir du mois de mars.</ANNOTATION_VALUE>
      </ALIGNABLE_ANNOTATION>
    </ANNOTATION>
  </TIER>
  <TIER LINGUISTIC_TYPE_REF="default-lt" PARTICIPANT="FS1" TIER_ID="FS1">
    <ANNOTATION>
      <ALIGNABLE_ANNOTATION ANNOTATION_ID="a2"
        TIME_SLOT_REF1="ts3" TIME_SLOT_REF2="ts4">
        <ANNOTATION_VALUE> Oui, tout à fait. Et ça a évolué très vite dès la première année.</ANNOTATION_VALUE>
      </ALIGNABLE_ANNOTATION>
    </ANNOTATION>
  </TIER>
  <TIER LINGUISTIC_TYPE_REF="default-lt" PARTICIPANT="MS2" TIER_ID="MS2">
    <ANNOTATION>
      <ALIGNABLE_ANNOTATION ANNOTATION_ID="a4"
        TIME_SLOT_REF1="ts7" TIME_SLOT_REF2="ts8">
        <ANNOTATION_VALUE> Pour ma part, je suis arrivé sur le projet en cours de route, en janvier dernier.</ANNOTATION_VALUE>
      </ALIGNABLE_ANNOTATION>
    </ANNOTATION>
  </TIER>
  <LINGUISTIC_TYPE GRAPHIC_REFERENCES="false"
    LINGUISTIC_TYPE_ID="default-lt" TIME_ALIGNABLE="true"/>
</ANNOTATION_DOCUMENT>

Les temps sont en millisecondes (contrairement au TextGrid PRAAT qui utilise les secondes). Le champ MEDIA_URL pointe vers le fichier audio local : pensez à mettre à jour ce chemin si vous déplacez le fichier .eaf sur votre poste ou vers un serveur partagé.

Dans ELAN, vous pouvez ensuite ajouter des tiers enfants sous chaque tier locuteur : traductions, gloses, commentaires, étiquettes de tour de parole. ELAN permet aussi de lier l'annotation à une piste vidéo si l'enregistrement en contient une.

Ce que vous pouvez faire ensuite

Dans PRAAT : Chaque tier locuteur est un point de départ, pas un résultat final. Vous pouvez y ajouter des tiers de transcription phonétique, des tiers prosodiques (F0, intensité), ou des étiquettes d'événements para-verbaux (rires, chevauchements, pauses). La précision temporelle au mot près est disponible dans les données brutes de YobiYoba si vous avez besoin d'aller plus loin.

Dans ELAN : Le fichier .eaf généré respecte la structure du MPI. Vous pouvez l'importer directement dans un projet ELAN existant, lui ajouter des types linguistiques personnalisés, des vocabulaires contrôlés, ou le partager avec des collaborateurs via IMDI ou CMDI.

Pour les corpus volumineux : Si vous traitez des dizaines ou des centaines de fichiers, l'API YobiYoba permet d'automatiser le pipeline complet : envoi de l'audio, récupération du XML, conversion en TextGrid ou .eaf par script. Cela évite le passage manuel par l'interface pour chaque enregistrement.

Ce que la transcription automatique ne remplace pas

La diarisation assigne des identifiants automatiques aux locuteurs (MS1, FS3, etc. selon le genre estimé). Ces identifiants sont à renommer selon votre propre système de codage. Sur des enregistrements avec beaucoup de chevauchements ou de bruit de fond, il peut y avoir des erreurs d'attribution de tour de parole : une vérification reste nécessaire avant toute analyse quantitative.

La transcription se fait au niveau du segment de parole. Les timestamps mot à mot sont disponibles dans le XML source, mais l'export TextGrid et ELAN travaille à la granularité du segment. Si votre recherche nécessite l'alignement phonème par phonème ou mot par mot dans PRAAT, l'étape de forced alignment reste à faire en aval (par exemple avec l'outil Phonalign ou EasyAlign).

Ce que YobiYoba automatise, c'est la couche la plus longue : passer du signal brut à un document annoté, locuteur par locuteur, aligné sur la timeline. Le reste de l'annotation reste votre travail.


Aussi disponible en : EN DE

← Retour aux articles