Le pipeline S3T, étape par étape

Cette page décrit comment on passe des fichiers audio bruts du corpus m‑TEDx à des scores BLEUScore standard mesurant la qualité d’une traduction (0–100, plus c’est élevé, mieux c’est). → glossaire et à des traductions, avec une partie commune à toutes les variantes (dans scripts_communs/) et une partie spécifique selon l’approche choisie.

Survolez les termes soulignés en pointillésExplication courte affichée au survol de la souris. pour une définition en langage courant. Si la bulle contient un lien, cliquez d’abord sur le terme pour la maintenir affichée, puis sur le lien — sinon elle disparaît dès que la souris s’éloigne.

« Toujours préparer les données de la même façon, puis comparer des recettes différentes. »

🎙️ Pantagruel, en bref

Pantagruel est l’encodeur acoustiquePartie du modèle qui convertit le signal audio en vecteurs numériques — l’« oreille » du système. → glossaire au cœur de ce projet. Développé au LIG-GETALP (Université Grenoble Alpes), il transforme un signal audio français en vecteurs numériquesListes de nombres qui résument le contenu de la parole à chaque instant — le modèle raisonne sur ces nombres, pas directement sur les ondes sonores. — une sorte de « résumé mathématique » de ce qui est dit dans l’enregistrement.

Il est pré-entraînéEntraîné une première fois sur un très grand corpus avant ce projet ; on charge ses poids déjà appris plutôt que de repartir de zéro. → glossaire sur de très grandes quantités de parole française (jusqu’à 114 000 heures d’archives INA), sans transcription : il apprend à comprendre le son par lui-même (auto-supervisionLe modèle apprend à partir du signal seul, sans étiquettes humaines (pas de texte aligné sur l’audio)., cadre JEPAJoint Embedding Predictive Architecture : prédire des représentations internes plutôt que reconstruire l’audio brut. Cadre théorique de LeCun (2022), implémenté ici par data2vec 2.0. → article LeCun (2022)). Trois tailles sont disponibles : B-1kBase — architecture ~74 M de paramètres, entraînée sur 1 000 h de parole française., L-14kLarge — ~307 M de paramètres, entraînée sur 14 000 h. et L-114kLarge — même architecture que L-14k, mais entraînée sur 114 000 h : la représentation la plus riche, la plus coûteuse en calcul. — plus le modèle est grand, plus la représentation acoustique est riche, mais plus le calcul est coûteux.

Dans le pipeline S3T, Pantagruel joue le rôle de l’« oreille » pour les variantes 1 (TransformerRéseau de type « attention » qui traite une séquence (ici l’audio encodé ou le texte) en parallèle. Architecture décrite dans Attention Is All You Need (2017). → Vaswani et al.), 2 (speechLLMPantagruel branché à un grand modèle de langue (LLM) via un petit adaptateur — seul l’adaptateur est entraîné. → variante 2) et 5 (Speech_TextVariante de Pantagruel pré-entraînée sur parole et texte français — hypothèse : des représentations bimodales aident la traduction. → variante 5). Les variantes 1 et 5 le couplent à un décodeur TransformerRéseau qui lit les vecteurs produits par Pantagruel et génère le texte anglais, mot par mot ou sous-mot par sous-mot. qui produit le texte anglais — architecture décrite dans l’article fondateur Attention Is All You Need (Vaswani et al., 2017). Les poids pré-entraînés et la description scientifique complète sont publiés respectivement sur Hugging FacePlateforme qui héberge les checkpoints Pantagruel (PantagrueLLM/speech-base-1K, etc.) prêts à être chargés par le pipeline. et dans l’article Pantagruel (2026).

🧭 Vue d’ensemble

Les étapes 0–2 produisent des WAV et des manifestsFichiers TSV listant chaque segment audio, sa transcription française et sa traduction anglaise de référence — la « table des matières » du corpus. TSV. Ensuite, chaque variante lance ses propres scripts (entraîner, évaluer, ou simplement appeler une APIInterface programmatique : on envoie une requête à un service distant (ex. Gemini) et on reçoit la traduction, sans entraînement local.).

Audio FR m‑TEDx (raw) Étapes communes (0–2) preflight → download → prepare scripts_communs/ WAV 16 kHz + manifests TSV Étapes par variante [1] Transformer ST (SPM → train → evaluate → infer) [2] speechLLM (train → evaluate → infer) [3] Gemini (evaluate / infer via API) [4] Cascade ASR→MT (evaluate / infer) [5] Speech_Text (wrappers de la V1) [6] Open baselines ST (evaluate / infer, zero-shot)
À retenir : les fichiers scripts_communs/0_preflight.py, 1_download.py et 2_prepare.py sont le socle commun. Sans eux, aucune variante ne peut être lancée de façon reproductible.

0 Étapes communes (dans scripts_communs/)

Ces scripts préparent les données et vérifient que la machine est prête. Ils sont utilisés quel que soit le modèle choisi.

0

Pré-vol : vérifier que tout est prêt

scripts_communs/0_preflight.py (via scripts_communs/pipeline.py)

On évite de perdre des heures de GPUProcesseur graphique utilisé pour l’entraînement des réseaux de neurones. → glossaire à cause d’un problème simple (Python trop vieux, CUDACouche logicielle NVIDIA qui permet à PyTorch d’utiliser le GPU pour les calculs. absent, disque plein, réseau indisponible).

Commande
python scripts_communs/pipeline.py preflight
Sortie
rapport console + artefact JSON (diagnostic)
Pour qui
toutes variantes
1

Télécharger le corpus m‑TEDx

scripts_communs/1_download.py

Récupère les archives du corpus (OpenSLR‑100Catalogue de corpus libres pour la recherche en parole ; m‑TEDx y est hébergé.) et les extrait dans datasets/raw/.

Commande
python scripts_communs/pipeline.py download --langpairs fr-en
Sortie
datasets/raw/ + corpus extrait
Pour qui
toutes variantes
2

Préparer : WAV + manifests TSV

scripts_communs/2_prepare.py

Convertit l’audio en WAV 16 kHz mono, normalise les textes, découpe les enregistrements et génère des fichiers manifestFichier TSV : une ligne par segment audio, avec chemins WAV, texte source (FR) et cible (EN). TSV utilisés ensuite par l’entraînement et l’évaluation.

Deux modes existent : utteranceDécoupage par énoncé : chaque segment = une phrase parlée. → glossaire (segments natifs m‑TEDx) et sentence_likeSegments fusionnés en pseudo-phrases plus longues — scores non comparables à utterance. → glossaire (segments fusionnés).

Commande
python scripts_communs/pipeline.py prepare --langpair fr-en
Sortie
datasets/processed/ + datasets/manifests/
Pour qui
toutes variantes

Outils communs (utilisés ensuite)

évaluation, configs, « bootstrap » des variantes

Une partie de la logique est mutualisée dans des modules « utilitaires » : lecture de configsFichiers YAML décrivant les hyperparamètres d’un run (chemins, modèle, durée d’entraînement…)., protocole d’évaluationRègles figées pour calculer le BLEU et écrire les artefacts (metrics.json, protocol.json) de façon comparable., etc.

Modules
scripts_communs/config_utils.py · scripts_communs/eval_protocol.py · scripts_communs/variant_bootstrap.py
But
garantir des sorties et des scores comparables entre variantes

📦 Bibliothèques partagées (ce qui est réutilisé)

Les variantes s’appuient sur quelques modules centraux pour rester cohérentes : même format de données, même protocole BLEUScore de qualité de traduction comparé aux références humaines. → glossaire, mêmes chemins de sortie.

Deux niveaux de partage — ne pas confondre : le dossier scripts_communs/ regroupe les étapes 0–2 et les utilitaires transverses (nom français communs). Les fichiers st_common.py, speechllm_lib.py, etc. sont des bibliothèques Python importées par le code — le suffixe _common ou _lib indique une librairie réutilisable, pas le dossier pipeline.
Fichier Périmètre Rôle Variantes
scripts_communs/st_common.py toutes · dans scripts_communs/ « boîte à outils » du Transformer : lecture manifests, décodageGénération de la traduction anglaise à partir des vecteurs audio (greedy ou beam search). → glossaire, SpecAugmentMasquage aléatoire temps/fréquence sur le spectrogramme pendant l’entraînement. → glossaire, utilitaires audio V1 + wrappers V5
2_speechLLM/speechllm_lib.py V2 uniquement définit l’architecture speechLLM (projecteurPetit adaptateur entre l’encodeur audio et le LLM — seul composant entraîné en mode B1. → glossaire + LLMGrand modèle de langue pré-entraîné qui génère la traduction. → glossaire), les prompts et le chargement des configs V2 (+ utils config Gemini/Cascade)
scripts_communs/config_utils.py toutes · dans scripts_communs/ lecture/écriture de YAMLFormat de fichier texte structuré pour décrire les réglages d’une expérience (hyperparamètres, chemins…). et JSON, accès à des champs imbriqués toutes
scripts_communs/eval_protocol.py toutes · dans scripts_communs/ protocole d’évaluationRègles figées : SacreBLEU signé, version du protocole, écriture de protocol.json pour reproductibilité. « figé » (mêmes métriques, mêmes artefacts) toutes
scripts_communs/variant_bootstrap.py toutes · dans scripts_communs/ rend importables les variantes numérotées (dossiers préfixés par un chiffreEx. 2_speechLLM/ n’est pas un package Python standard — ce module permet de l’importer comme speechLLM.) toutes
Pourquoi c’est important : la comparaison n’a de sens que si tout le monde lit les mêmes données et calcule le BLEUMême métrique SacreBLEU pour toutes les variantes — sinon les scores ne seraient pas comparables. → glossaire de la même façon.

🔀 Étapes par variante (3–6)

Après la préparation (étape 2), chaque variante suit sa propre recette. Certaines entraînentAjustent les poids du modèle sur le corpus d’entraînement (étape 4 · Train). un modèle, d’autres appellent une API.

Étape Variante 1 Variante 2 Variante 3 Variante 4 Variante 5 Variante 6
3 · SPMSentencePiece : vocabulaire de sous-mots appris sur les traductions anglaises (~1 000 unités) avant l’entraînement du décodeur. 1_Transformer/3_spm.py wrapperScript qui délègue à la variante 1 (Transformer) avec une config adaptée (ex. encodeur Speech_Text). (via V1)
4 · TrainFine-tuning : le modèle apprend à traduire à partir des paires audio–texte du corpus d’entraînement. 1_Transformer/4_train.py 2_speechLLM/train.py wrapperScript qui délègue à la variante 1 (Transformer) avec une config adaptée (ex. encodeur Speech_Text). (via V1)
5 · ÉvaluerDécodage sur valid/test + calcul BLEU (et autres métriques) — produit eval/metrics.json. 1_Transformer/5_evaluate.py 2_speechLLM/evaluate.py 3_Gemini/evaluate_gemini.py 4_cascade/evaluate_cascade.py wrapperScript qui délègue à la variante 1 (Transformer) avec une config adaptée (ex. encodeur Speech_Text). (via V1) 6_open_baselines/evaluate_open.py
6 · InférerTraduction d’un fichier audio arbitraire (hors corpus) — sortie JSONL avec l’hypothèse anglaise. 1_Transformer/6_infer.py 2_speechLLM/infer.py 3_Gemini/infer_gemini.py 4_cascade/infer_cascade.py wrapperScript qui délègue à la variante 1 (Transformer) avec une config adaptée (ex. encodeur Speech_Text). (via V1) 6_open_baselines/infer_open.py

🖥 Scripts « opérationnels » (lancer des runs)

En plus des scripts Python, le dépôt contient des scripts shell qui automatisent des lancements (nohup, SSH, synchronisation).

Exemples : scripts_communs/bootstrap.sh (créer un environnement Python), scripts/extract_web_audio.py (extraire les WAV d’exemples vers docs/audio/), et des scripts run_modyco_*.sh/run_ovh_*.sh qui enchaînent des expériences sur des machines GPUServeurs distants équipés de cartes graphiques pour l’entraînement. → glossaire.

Ils facilitent l’exécution, mais la logique du pipeline (ce qui est produit à chaque étape) est dans les scripts Python listés ci‑dessus. Les lancements en arrière-plan utilisent souvent nohupCommande Unix qui laisse un script tourner après fermeture du terminal — pratique pour des entraînements de plusieurs heures..

À propos

Morgane Bona-Pellissier est étudiante en master de traitement automatique des langues à l’Université Paris Nanterre après un doctorat en traductologie (Université de Genève, 2023). Ses recherches portent sur la traduction automatique neuronale et les langues peu dotées et minorisées ; elle parle notamment catalan et étudie le breton.