J'ai donc adopté une approche différente et j'ai essayé d'écrire un programme pour cela. J'ai utilisé Google Cloud Functions pour cela et j'ai créé deux fonctions. Les deux fonctions regardent différents Google Cloud Storage Buckets. Ainsi, le flux est comme le suivant
L'utilisateur télécharge une vidéo sur le seau GCS (appelons-le seau vidéo).
La première fonction cloud nomme extractAudio sera déclenchée et elle utilisera la bibliothèque ffmpeg pour extraire l'audio de la vidéo.
Il convertira ensuite l'audio en un fichier flac et le téléchargera dans le deuxième seau (appelons-le seau audio)
Dès que l'audio sera téléchargé dans le seau audio, la deuxième fonction Cloud nommée transcribeAudio sera déclenchée.
Elle enverra ensuite l'audio à l'API Speech-To-Text de Google Cloud et attendra la réponse.
La réponse sera dans un fichier JSON et sera ensuite téléchargée dans un troisième seau GCS (appelons-le seau de résultat).
Vous avez donc obtenu la transcription de la vidéo dans le troisième seau de résultat, bien que dans un format JSON. Vous pouvez certainement écrire votre propre code pour le convertir dans un format de fichier SRT. Le JSON contient bien l'horodatage de tous les mots prononcés dans la vidéo, donc vous les utilisez pour horodater les dialogues.
Le projet est hébergé sur Github et vous pouvez y jeter un œil. Bien que je sois à peu près sûr que vous ne l'essayerez pas pour obtenir des sous-titres pour un film, car cela vous coûtera beaucoup d'utiliser Cloud Functions et Speech API, sans parler du processus de téléchargement de la vidéo.
Vous pouvez essayer de convertir le projet pour qu'il soit exécuté sur votre machine locale, bien que le coût pour Speech API sera toujours en vigueur. Ils ont une limite gratuite cependant que vous pouvez utiliser.
J'ai des plans pour utiliser le même code à exécuter effectivement sur la machine locale et obtenir un fichier SRT au lieu de JSON à partir de cela. J'attends juste un peu de temps libre pour venir. Au cas où vous seriez intéressé, j'ai écrit un blog[1] à ce sujet. Si vous voulez, vous pouvez le suivre pour les mises à jour.
Notes de bas de page
[1] Le long voyage d'un développeur - Abhishek Jain - Medium.