Multimodal · Ingénierie des données · Accessibilité
Sign Bridge
Parole, texte et vidéo traduits en langue des signes par un avatar 3D.
Sign Bridge traduit parole, texte et vidéo en langue des signes rendue par un avatar 3D, en traitant la langue des signes comme une langue cible et non comme un sous-titre. Le projet réunit deux bases de code : un backend FastAPI pour la transcription et le NLP, et un client Unity qui pilote l'avatar.
Problème
La langue des signes n'est pas un encodage mot à mot de la parole. Une transcription littérale produit un résultat illisible pour une personne sourde : la traduction doit se faire au niveau du sens.
Objectifs
- Transformer un corpus de vidéos de personnes signant en données de mouvement reproductibles par un avatar.
- Accepter parole, texte et vidéo sans trois implémentations distinctes.
- Traduire au niveau du sens plutôt que mot à mot.
- Produire une animation dont le vocabulaire peut s'étendre sans nouveaux enregistrements.
Mise en œuvre
- Un pipeline hors ligne sur le corpus signé : nettoyage de chaque vidéo, extraction des images, puis exécution d'OpenPose pour produire un JSON de points clés décrivant les positions du corps et des mains, image par image.
- Ce sont ces données de points clés que Unity consomme : l'avatar reproduit un mouvement humain enregistré plutôt qu'une animation créée à la main.
- Un service FastAPI normalisant les trois modalités d'entrée en une représentation interne unique avant toute traduction.
- Une étape NLP fondée sur BERT, appuyée par un prétraitement NLTK, convertissant l'entrée en glose signée.
- L'estimation de pose OpenPose fournissant le vocabulaire de points clés qui pilote le mouvement de l'avatar.
- Un avatar 3D Unity animant la séquence de gloses comme sortie destinée à l'utilisateur.
Architecture
Pipeline de données hors ligne
- signed video corpus
- 32k sentences
- 4k words
- cleaning
- per-frame extraction
- OpenPose
- per-frame keypoint JSON
Chemin de la requête
- speech
- text
- video
- Whisper STT
- BERT
- NLTK
- sign gloss
- Unity 3D avatar
- keypoint-driven
Technologies
- FastAPI
- Whisper
- BERT
- Transformers
- OpenPose
- Unity
- NLTK
- PostgreSQL
- Pandas
Difficultés & solutions
Difficulté
La grammaire de la langue des signes ne suit pas l'ordre des mots parlés : une transcription littérale produit un résultat illisible.
Solution
Introduction de la glose comme représentation intermédiaire, faisant de la traduction une étape explicite plutôt qu'implicite.
Difficulté
Trois modalités d'entrée risquent de devenir trois chemins de code divergents.
Solution
Convergence de toutes les entrées vers une représentation unique en amont : les étapes de traduction et de rendu n'ont qu'un seul contrat à respecter.
Résultats
- Un seul service FastAPI traite parole, texte et vidéo par un chemin de traduction unique, empêchant les trois points d'entrée de diverger.
- La traduction se fait au niveau de la glose et non de l'ordre des mots : la sortie suit la grammaire signée plutôt que la parole transcrite.
- La sortie est un avatar 3D rendu et non une vidéo pré-enregistrée : le vocabulaire peut s'étendre sans nouveau tournage.
- Le vocabulaire couvre environ 32 000 phrases et 4 000 mots isolés, auxquels s'ajoutent l'alphabet et les chiffres pour épeler tout ce qui n'y figure pas.
- Constituer ce vocabulaire a d'abord été un travail d'ingénierie des données : chaque vidéo du corpus devait être prétraitée puis passée dans OpenPose image par image pour produire le JSON de points clés qui anime l'avatar.
Enseignements
- L'essentiel du travail se situait en amont du modèle. Amener 32 000 phrases signées dans un format de points clés exploitable a pris plus de temps que tout le chemin de traduction.
- Une représentation intermédiaire est ce qui transforme une démo en système : elle donne à chaque étape un contrat au lieu d'une hypothèse.
- Le travail d'accessibilité récompense davantage les échanges avec les personnes concernées que le choix du modèle.