- En el juego, cuando un personaje habla en un idioma extranjero, primero se muestran subtítulos en el idioma original sobre su cabeza y luego se traducen en tiempo real al propio idioma del jugador
- Presentación detallada del código y del funcionamiento de una implementación de esta función usando reconocimiento de voz profundo, reconocimiento facial y más
- OpenAI Whisper + NVDIA NeMo + DeepL + RetinaFace + DeepFace + Sckikit-learn + Gradio + Modal + PIL/OpenCV + ffpmpeg
Cómo funciona
- Descargar un video de YouTube con
yt-dlp
- Separar video y audio con
ffmpeg
- El audio
- Se procesa con Whisper para generar transcripciones y se traduce con DeepL
- Se procesa con NeMo para extraer el ID del hablante (quién está hablando)
- Ambos se emparejan con base en timestamps para generar texto con el ID del hablante adjunto
- El video
- Extraer la posición de los rostros con MTCNN/RetinaFace. Se paraleliza con Modal para hacerlo más rápido.
- Extraer embeddings de cada rostro con DeepFace/Scikit-Learn y asignar un ID único
- Emparejar FaceID y SpeakerID con Jaccard Index
- Usar los metadatos de los frames generados para agregar anotaciones a los frames con PIL/OpenCV
- Generar el video con
ffmpeg Writer
1 comentarios
El diseño de cómo funciona está buenísimo.