Transcendez les frontières linguistiques avec des APIs de Machine Learning sur mesure : embarquez dans le développement d’une solution de transcription temps réel de vos contenus multimédias !

A presentation at Devoxx France 2024 in April 2024 in Paris, France by Eléa PETTON

Slide 1

Slide 1

on t t e P Eléa TRANSCENDEZ LES FRONTIÈRES LINGUISTIQUES avec des APIs de Machine Learning sur mesure

Slide 2

Slide 2

PRÉSENTATION ÉL PE TT Machine Learning Engineer ON OVHcloud AI Solutions Team @EleaPetton 02 eleapttn ÉA Eléa PETTON

Slide 3

Slide 3

ÇA VOUS DIT ? “ Embarquez dans le développement d’une solution de transcription temps réel de vos contenus multimédia… ” 03

Slide 4

Slide 4

INTRODUCTION 04

Slide 5

Slide 5

INTRODUCTION “ Quels sont les différents types de contenus multimédia et leur(s) public(s) ? ” 01 VIDÉO 02 PHOTO 03 AUDIO 04 AFFICHE types de multimédia 05 contenu d’un website public ciblé

Slide 6

Slide 6

INTRODUCTION “ Quels sont les différents types de contenus multimédia et leur(s) public(s) ? ” 01 VIDÉO 02 PHOTO 03 AUDIO 04 AFFICHE types de multimédia 05 contenu d’un website publicS cibléS

Slide 7

Slide 7

TRANSFORMER SES CONTENUS MULTIMEDIA, QU’EST-CE QUE ÇA VEUT DIRE ? TRADUCTION TRANSCRIPTION Tran scen dez le APIs s fron de M tières achin dans e Le lingu le istiq temp développ arning su avec r e s rée l de vo ment d’u mesure : des ne so em b a s con lu rq tenu s mu tion de tr a ltimé dias ! nscr 06 Changer la langue de… Passer de l’oral à l’écrit pour… sa page web son post Twitter, LinkedIn, … ses slides sous-titrer des vidéos, podcasts garder le contenu d’une réunion SYNTHÈSE VOCALE DESCRIPTION Et si l’IA vous permettait d’élargir l’impact de vos différents contenus multimédias et de favoriser l’inclusivité ? Aujourd’hui, les médias et les réseaux sociaux sont omniprésents dans nos vies professionnelles et personnelles : vidéos, Tweets, posts, forums ou encore lives Twitch. Ces différents types de médias permettent aux entreprises et créateurs de contenus de promouvoir leurs activités et de fidéliser leurs communautés. Mais vous êtes-vous déjà interrogés sur le rôle de la langue choisie lors de la création de vos contenus ? L’utilisation d’une seule langue peut constituer un obstacle à la promotion de vos activités. La transcription et la traduction de vos contenus multimédias pourraient être la solution ! Adaptez vos vidéos dans différentes langues et rendez le contenu accessible à un public plus large, augmentant ainsi sa portée et son impact. Passer de l’écrit à l’oral pour… favoriser l’accessibilité doubler les voix Décrire ou résumer… une vidéo, un podcast le contenu d’une réunion une documentation

Slide 8

Slide 8

ET EN PRATIQUE, ÇA DONNE QUOI ? Multimedia translator Transcribe your video: https://www.youtube.com/… French Voice Male 07 English Subtitles .mp4 Download

Slide 9

Slide 9

DÉFINIR les besoins 08 SÉLECTIONNER les modèles EXPORTER les modèles DÉPLOYER le serveur d’inférence solutions clé en mains modèles open-source OBJECTIFS DÉVELOPPER la partie client CHOISIR ses AI Endpoints DÉPLOYER l’app end to end

Slide 10

Slide 10

DÉFINIR les besoins 09

Slide 11

Slide 11

QUELS SONT NOS PERSONAE ? Transcrire les meetings Se développer à l’international Retranscrire les meetings à l’écrit Transcrire les meetings dans une autre langues Résumer les meetings Traduire du contenu multimedia pour un usage multilingue Adapter les vidéos pour un public mondial Être plus inclusif ! Élargir son public… En tant que créateur de contenu, j’aimerais élargir ma communauté Créer et publier un contenu plus attrayant 10 Sous-titrer les vidéos pour les personnes malentendantes Inclure les personnes qui ne parlent pas la même langue

Slide 12

Slide 12

3 TÂCHES CIBLES AUDIO recognition 11 TEXT translation SPEECH synthesis

Slide 13

Slide 13

SÉLECTIONNER les modèles 12

Slide 14

Slide 14

SÉLECTIONNER LES MODÈLES Speech-to-Text Translation AI TASKS Text-to-Speech Speech-to-Speech Translation 13 Speech-to-Text Translation

Slide 15

Slide 15

SÉLECTIONNER LES MODÈLES Anglais LANGUES Espagnol Allemand 13 Français

Slide 16

Slide 16

SÉLECTIONNER LES MODÈLES ASR en-GB / en-US NMT MODÈLES D’IA es-ES TTS de-DE 13 S2S fr-FR S2T

Slide 17

Slide 17

COMMENT ACCÉDER À CES MODÈLES ? Prendre des modèles Open Source Définir le but de ces modèles “ Le besoin ici n’est pas d’entraîner les modèles mais bien d’en faire l’inférence. Cela implique déployer les modèles de manière optimisée : coûts minimum et meilleur ratio précision / latence ” Accès à de nombreux modèles Possibilité de “personnalisation” Prédictibilité des coûts Connaissances en ML Notion d’optimisation de modèles Des GPUs à disposition Complexité du déploiement Gestion du RUN Licences à non usage commercial …… & du temps ! Sélectionner des solutions clés en main Endpoints API à disposition Simplicité d’utilisation (call APIs) Performances optimales Pas de gestion du RUN Compréhension des paramètres d’entrée du modèle Appropriation des sorties du modèle …… Coût variable - solution “Pay per call” Peu de possibilité de personnalisation 14 & des connaissances en Puzzles !

Slide 18

Slide 18

UTILISER l’Open Source 15

Slide 19

Slide 19

COMMENT TROUVER CES MODÈLES ? https://huggingface.co/tasks 16

Slide 20

Slide 20

HUGGING FACE TASKS ASR 17 NMT TTS

Slide 21

Slide 21

AUTOMATIC SPEECH RECOGNITION openai/whisper-large-v3 18

Slide 22

Slide 22

TRANSLATION google-t5/t5-base 19

Slide 23

Slide 23

TEXT TO SPEECH coqui/XTTS-v2 20

Slide 24

Slide 24

COMMENT DÉPLOYER CES MODÈLES ? ACCÉDER à un notebook avec GPUs 21 TESTER le(s) modèle(s) localement EXPORTER les modèles au format ONNX DÉVELOPPER les fonctions de pré/post processing FORMATER le code et le repo de modèles STOCKER les modèles dans un bucket S3 DÉPLOYER le serveur d’inférence dans le cloud

Slide 25

Slide 25

COMMENT DÉPLOYER CES MODÈLES ? ACCÉDER à un notebook avec GPUs 21 TESTER le(s) modèle(s) localement EXPORTER les modèles au format ONNX DÉVELOPPER les fonctions de pré/post processing FORMATER le code et le repo de modèles STOCKER les modèles dans un bucket S3 DÉPLOYER le serveur d’inférence dans le cloud

Slide 26

Slide 26

ACCÉDER à un notebook 22

Slide 27

Slide 27

ACCÉDER À UN NOTEBOOK AVEC GPUs RESSOURCES DE CALCUL 1 GPU V100S / A100 / H100 RESSOURCES DE CALCUL JUPYTER NOTEBOOK JupyterLab editor Prepackaged environment JUPYTER NOTEBOOK 23 ACCÈS SÉCURISÉ ACCÈS SÉCURISÉ Private mode Personal token access

Slide 28

Slide 28

OVHcloud - AI NOTEBOOKS 24 01 NOTEBOOK AS A SERVICE Nptebooks JupyterLab ou VS Code préconfigurés 02 RESSOURCES DE CALCUL Le notebook est lancé dans le cloud avec GPU (ou CPU)​ 03 MODE DE FACTURATION Le client est facturé à la minute utilisée 04 ENVIRONNEMENT PRÉ-PACKAGÉ Frameworks ML disponibles : PyTorch, TensorFlow, Transformers, … 05 PERSISTANCE DU WORKSPACE Conservation du workspace de l’utilisateur entre les exécutions pour conserver les packages installés

Slide 29

Slide 29

COMMENT DÉPLOYER CES MODÈLES ? ACCÉDER à un notebook avec GPUs 25 TESTER le(s) modèle(s) localement EXPORTER les modèles au format ONNX DÉVELOPPER les fonctions de pré/post processing FORMATER le code et le repo de modèles STOCKER les modèles dans un bucket S3 DÉPLOYER le serveur d’inférence dans le cloud

Slide 30

Slide 30

TESTER les modèles 26

Slide 31

Slide 31

TESTER LES MODÈLES LOCALEMENT 27

Slide 32

Slide 32

COMMENT DÉPLOYER CES MODÈLES ? ACCÉDER à un notebook avec GPUs 28 TESTER le(s) modèle(s) localement EXPORTER les modèles au format ONNX DÉVELOPPER les fonctions de pré/post processing FORMATER le code et le repo de modèles STOCKER les modèles dans un bucket S3 DÉPLOYER le serveur d’inférence dans le cloud

Slide 33

Slide 33

OONNNNX X EXPORTER les modèles 29

Slide 34

Slide 34

EXPORTER LES MODÈLES AU FORMAT ONNX 30

Slide 35

Slide 35

COMMENT DÉPLOYER CES MODÈLES ? ACCÉDER à un notebook avec GPUs 31 TESTER le(s) modèle(s) localement EXPORTER les modèles au format ONNX DÉVELOPPER les fonctions de pré/post processing FORMATER le code et le repo de modèles STOCKER les modèles dans un bucket S3 DÉPLOYER le serveur d’inférence dans le cloud

Slide 36

Slide 36

DÉVELOPPER les fonctions pre/post 32

Slide 37

Slide 37

DÉVELOPPER LES FONCTIONS DE PRÉ/POST PROCESSING Ensemble model Preprocessing User input request Preprocess user input Postprocessing Inference result 33 response Postprocess model output Inp ut ten sor (s) s) ( r so n te t tpu u O Inference ONNX model inference

Slide 38

Slide 38

COMMENT DÉPLOYER CES MODÈLES ? ACCÉDER à un notebook avec GPUs 34 TESTER le(s) modèle(s) localement EXPORTER les modèles au format ONNX DÉVELOPPER les fonctions de pré/post processing FORMATER le code et le repo de modèles STOCKER les modèles dans un bucket S3 DÉPLOYER le serveur d’inférence dans le cloud

Slide 39

Slide 39

FORMATER le code et le repo 35

Slide 40

Slide 40

FORMATER LE CODE ET LE REPO DE MODÈLES . 36 └── google_t5_t5_large ├── ensemble │ ├── 1 │ │ └── empty │ └── config.pbtxt ├── onnx │ ├── 1 │ │ └── model.onnx │ └── config.pbtxt ├── postprocessing │ ├── 1 │ │ └── model.py │ └── config.pbtxt └── preprocessing ├── 1 │ ├── model.py │ ├── special_tokens_map.json │ ├── tokenizer.json │ ├── tokenizer_config.json │ └── vocab.txt └── config.pbtxt global ensemble: preprocessing -> onnx -> postprocessing ONNX model postprocessing code preprocessing code tokenizer files

Slide 41

Slide 41

COMMENT DÉPLOYER CES MODÈLES ? ACCÉDER à un notebook avec GPUs 37 TESTER le(s) modèle(s) localement EXPORTER les modèles au format ONNX DÉVELOPPER les fonctions de pré/post processing FORMATER le code et le repo de modèles STOCKER les modèles dans un bucket S3 DÉPLOYER le serveur d’inférence dans le cloud

Slide 42

Slide 42

STOCKER les modèles 38

Slide 43

Slide 43

STOCKER LES MODÈLES DANS UN BUCKET S3 ASR NMT TTS 39 PUBLIC CLOUD AI NOTEBOOKS S3 BUCKET PUBLIC CLOUD OBJECT STORAGE

Slide 44

Slide 44

COMMENT DÉPLOYER CES MODÈLES ? ACCÉDER à un notebook avec GPUs 40 TESTER le(s) modèle(s) localement EXPORTER les modèles au format ONNX DÉVELOPPER les fonctions de pré/post processing FORMATER le code et le repo de modèles STOCKER les modèles dans un bucket S3 DÉPLOYER le serveur d’inférence dans le cloud

Slide 45

Slide 45

DÉPLOYER le serveur d’inférence 41

Slide 46

Slide 46

DÉPLOYER LE SERVEUR D’INFÉRENCE DANS LE CLOUD RESSOURCES DE CALCUL 1 GPU V100s RESSOURCES DE CALCUL HAUTE DISPONIBILITÉ API scalable à la volée Nombre de réplicas personnalisable HAUTE DISPONIBILITÉ 42 ACCÈS SÉCURISÉ ACCÈS SÉCURISÉ Model privé Token d’accès unique

Slide 47

Slide 47

OVHcloud - AI DEPLOY 43 01 CONTENEUR AS A SERVICE Le client fournit un conteneur Docker via une registry Docker​ 02 RESSOURCES DE CALCUL Le conteneur s’exécute dans le cloud sur GPU (ou CPU)​ 03 MODE DE FACTURATION Le client est facturé à la minute utilisée 04 DÉPLOIEMENT API/APP Manière industrielle de déployer des API(s) stateless 05 STRATÉGIE D’AUTOSCALING Scalable à la volé

Slide 48

Slide 48

INFERENCE SERVER AVEC AI DEPLOY OVHcloud instance Select the flavor and the number of GPUs 44 ovhai app run —name nmt_model \ —flavor ai1-1-gpu \ —gpu 1 \ —default-http-port 8000 \ —grpc-port 8001 \ -v my_model_repository@S3GRA/google_t5_t5_large/:/data:ro \ -v standalone:/workspace:rw \ nvcr.io/nvidia/tritonserver:22.01-py3 \ — bash -c ‘pip install transformers torch && tritonserver —model-store /data’

Slide 49

Slide 49

INFERENCE SERVER AVEC AI DEPLOY OVHcloud instance Precise HTTP and gRPC port 44 ovhai app run —name nmt_model \ —flavor ai1-1-gpu \ —gpu 1 \ —default-http-port 8000 \ —grpc-port 8001 \ -v my_model_repository@S3GRA/google_t5_t5_large/:/data:ro \ -v standalone:/workspace:rw \ nvcr.io/nvidia/tritonserver:22.01-py3 \ — bash -c ‘pip install transformers torch && tritonserver —model-store /data’

Slide 50

Slide 50

INFERENCE SERVER AVEC AI DEPLOY OVHcloud instance Attach your S3 buckets with your NMT models 44 ovhai app run —name nmt_model \ —flavor ai1-1-gpu \ —gpu 1 \ —default-http-port 8000 \ —grpc-port 8001 \ -v my_model_repository@S3GRA/google_t5_t5_large/:/data:ro \ -v standalone:/workspace:rw \ nvcr.io/nvidia/tritonserver:22.01-py3 \ — bash -c ‘pip install transformers torch && tritonserver —model-store /data’

Slide 51

Slide 51

INFERENCE SERVER AVEC AI DEPLOY OVHcloud instance Select Triton Server docker image 44 ovhai app run —name nmt_model \ —flavor ai1-1-gpu \ —gpu 1 \ —default-http-port 8000 \ —grpc-port 8001 \ -v my_model_repository@S3GRA/google_t5_t5_large/:/data:ro \ -v standalone:/workspace:rw \ nvcr.io/nvidia/tritonserver:22.01-py3 \ — bash -c ‘pip install transformers torch && tritonserver —model-store /data’

Slide 52

Slide 52

INFERENCE SERVER AVEC AI DEPLOY OVHcloud instance Start Triton Inference Server for NMT 44 ovhai app run —name nmt_model \ —flavor ai1-1-gpu \ —gpu 1 \ —default-http-port 8000 \ —grpc-port 8001 \ -v my_model_repository@S3GRA/google_t5_t5_large/:/data:ro \ -v standalone:/workspace:rw \ nvcr.io/nvidia/tritonserver:22.01-py3 \ — bash -c ‘pip install transformers torch && tritonserver —model-store /data’

Slide 53

Slide 53

BESOIN D’UNE SOLUTION CLÉ EN MAIN ? 45

Slide 54

Slide 54

CHOISIR ses AI Endpoints 47

Slide 55

Slide 55

OVHcloud - AI ENDPOINTS 48

Slide 56

Slide 56

OVHcloud - AI ENDPOINTS “ Choisissez les endpoints API qui correspondent à vos besoins ! ” ASR endpoint 49 NMT endpoint TTS endpoint

Slide 57

Slide 57

COMMENT CONNECTER CES AI ENDPOINTS ENTRE EUX ? 50

Slide 58

Slide 58

OVHcloud - AI ENDPOINTS “ Connectez vos AI Endpoints selon vos besoins ! ” Source language Audio input Target voice ASR endpoint AS NMT endpoint R o u t p ut Target language 51 T output M N TTS endpoint TT S o ut p ut Audio output in the target language

Slide 59

Slide 59

DÉVELOPPER la partie client 52

Slide 60

Slide 60

DÉVELOPPER LA PARTIE CLIENT Entrer un lien de vidéo YouTube Transcrire la partie audio de la vidéo en texte Sous-titrer la vidéo dans n’importe quelle langue Doubler la voix de le vidéo dans une autre langue Choisir le genre de la voix de doublage Télécharger la vidéo résultante 53

Slide 61

Slide 61

DÉVELOPPER LA PARTIE CLIENT SRT GÉNÉRER un fichier SRT de sous-titres 54 CONSERVER les silences pendant la traduction DOUBLER l’audio d’une vidéo dans une autre langue

Slide 62

Slide 62

DÉVELOPPER LA PARTIE CLIENT SRT GÉNÉRER un fichier SRT de sous-titres 54 CONSERVER les silences pendant la traduction DOUBLER l’audio d’une vidéo dans une autre langue

Slide 63

Slide 63

GÉNÉRER UN FICHIER SRT 55

Slide 64

Slide 64

DÉVELOPPER LA PARTIE CLIENT SRT GÉNÉRER un fichier SRT de sous-titres 56 CONSERVER les silences pendant la traduction DOUBLER l’audio d’une vidéo dans une autre langue

Slide 65

Slide 65

CONSERVER LES SILENCES 57

Slide 66

Slide 66

DÉVELOPPER LA PARTIE CLIENT SRT GÉNÉRER un fichier SRT de sous-titres 58 CONSERVER les silences pendant la traduction DOUBLER l’audio d’une vidéo dans une autre langue

Slide 67

Slide 67

DOUBLER L’AUDIO D’UNE VIDÉO 59

Slide 68

Slide 68

DÉPLOYER l’app end-to-end 60

Slide 69

Slide 69

DÉPLOYER L’APP END-TO-END Inference Servers 61 Custom client code Docker image AI Deploy app

Slide 70

Slide 70

DÉPLOYER L’APP END-TO-END DOCKER CONTAINER ASR out-of-the-box NMT models TTS 62 DOCKER CONTAINER audio input EXTRACT AUDIO (.WAV) text output CONVERT SUBTITLES (.SRT) audio output MERGE AUDIO AND VIDEO (.MP4) AI Endpoints / Open Source Inference Servers Client Application CHOOSE MODELS ACCORDING TO YOUR NEEDS DEPLOY/SELECT INFERENCE SERVERS IN THE CLOUD DEPLOY CLIENT TROUGH GRADIO APP IN THE CLOUD WITH HIGH AVAILABILITY video input accurate output with translation and/or transcription

Slide 71

Slide 71

DÉMO de l’app 63

Slide 72

Slide 72

DÉMO DE L’APP 64

Slide 73

Slide 73

DÉMO DE L’APP 65 https://bit.ly/multimedia-translator-devoxx

Slide 74

Slide 74

CONCLUSION 66

Slide 75

Slide 75

CONCLUSION Le “multimode multimedia translator“ en résumé… SOLUTION DE TRANSCRIPTION ET TRADUCTION MULTIMÉDIA vidéos traduites et sous-titrées vidéos doublées dans une autre langue 67 OVHcloud AI ENDPOINTS simple d’utilisation gain de temps dans le développement OVHcloud AI DEPLOY solution serverless top des GPUs (H100, A100, L4, L40S, V100S) ET CE N’EST PAS FINI… implémentation de la reconnaissance des émotions ajout de la transcription en temps réel personnalisation de la voix

Slide 76

Slide 76

OVHcloud AI ENDPOINTS 68 https://endpoints.ai.cloud.ovh.net/

Slide 77

Slide 77

MERCI !

Slide 78

Slide 78

À VOUS DE TESTER ! https://bit.ly/multimedia-translator-devoxx