18 points par xguru 2022-12-28 | 1 commentaires | Partager sur WhatsApp
  • Dans le jeu, lorsqu’un personnage parle dans une langue étrangère, des sous-titres s’affichent d’abord au-dessus de sa tête dans la langue d’origine, puis sont traduits en temps réel dans sa propre langue
  • Présentation détaillée du code et du fonctionnement permettant de reproduire cette fonctionnalité à l’aide de la reconnaissance vocale profonde, de la reconnaissance faciale, etc.
  • OpenAI Whisper + NVDIA NeMo + DeepL + RetinaFace + DeepFace + Sckikit-learn + Gradio + Modal + PIL/OpenCV + ffpmpeg

Fonctionnement

  • Téléchargement d’une vidéo YouTube avec yt-dlp
  • Séparation de la vidéo et de l’audio avec ffmpeg
  • Pour l’audio
    • Passage dans Whisper pour générer les transcriptions, puis traduction avec DeepL
    • Passage dans NeMo pour extraire l’ID du locuteur (la personne qui parle)
    • Appariement des deux sur la base des timestamps pour générer un texte avec l’ID du locuteur
  • Pour la vidéo
    • Extraction de la position des visages avec MTCNN/RetinaFace, accélérée via une parallélisation avec Modal
    • Extraction d’embeddings pour chaque visage avec DeepFace/Scikit-Learn et attribution d’un ID unique
  • Appariement entre FaceID et SpeakerID avec l’indice de Jaccard
  • Annotation des frames avec PIL/OpenCV à partir des métadonnées de frame générées
  • Génération de la vidéo avec le writer ffmpeg

1 commentaires

 
chicol 2022-12-28

La conception du fonctionnement est vraiment ingénieuse.