🎙️ 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.).
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.
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).
python scripts_communs/pipeline.py preflightTé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/.
python scripts_communs/pipeline.py download --langpairs fr-endatasets/raw/ + corpus extraitPré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).
python scripts_communs/pipeline.py prepare --langpair fr-endatasets/processed/ + datasets/manifests/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.
scripts_communs/config_utils.py · scripts_communs/eval_protocol.py · scripts_communs/variant_bootstrap.py
📦 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.
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 |
🔀 É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..