FFmpeg 8.0 ajoute la prise en charge de Whisper
(code.ffmpeg.org)- La version 8.0 de FFmpeg ajoute officiellement la prise en charge du modèle de reconnaissance vocale Whisper
- Whisper est un modèle open source de reconnaissance vocale développé par OpenAI, utilisé pour la conversion automatique de la parole dans de nombreuses langues
- Cette intégration accroît les possibilités d’automatiser directement des workflows de transcription parole-texte dans les tâches de traitement vidéo et audio
- Elle renforce fortement la polyvalence et l’efficacité de FFmpeg pour les développeurs et dans les domaines de l’automatisation des médias
- En intégrant des fonctions récentes de reconnaissance vocale, elle réduit le besoin d’outils externes supplémentaires ou d’intégrations complexes
Aperçu de la prise en charge de Whisper dans FFmpeg 8.0
- La version 8.0 de FFmpeg ajoute la prise en charge du modèle de reconnaissance vocale Whisper, offrant une fonction de conversion automatique des données vocales en texte dans différentes langues
- Whisper s’appuie sur un algorithme basé sur le deep learning conçu par OpenAI, garantissant des performances de transcription parole-texte de haute précision
- Les utilisateurs actuels de FFmpeg peuvent désormais générer des sous-titres ou extraire le contenu parlé de fichiers vidéo et audio grâce à la prise en charge intégrée de Whisper, sans passer par des outils externes
Principaux avantages de l’intégration de Whisper
- Grâce à l’intégration de Whisper, il devient possible de mettre en place des workflows de reconnaissance vocale efficaces et hautement extensibles dans des pipelines de traitement et d’automatisation des médias basés sur FFmpeg
- Avec l’algorithme de reconnaissance vocale intégré, les développeurs peuvent obtenir des résultats de transcription texte avec une simple commande, sans avoir à gérer des intégrations complexes supplémentaires ni à écrire des scripts séparés
Portée industrielle de la combinaison FFmpeg et Whisper
- Dans des domaines variés comme la gestion de vastes ressources médias, la génération de sous-titres ou l’archivage de données vidéo, la combinaison FFmpeg + Whisper présente l’avantage de réunir rentabilité et automatisation
- Alors qu’auparavant il fallait relier un outil open source distinct de reconnaissance vocale à FFmpeg, il est désormais possible de traiter cela directement dans FFmpeg, avec à la clé une simplification du workflow et une amélioration attendue de la vitesse de traitement
Détails techniques
- Un filtre audio a été ajouté à FFmpeg sur la base de la bibliothèque Whisper.cpp, afin d’exécuter directement de la reconnaissance automatique de la parole (ASR) à l’intérieur de FFmpeg
- Il peut être activé avec l’option
--enable-whisper, et le chemin du modèle (model) est obligatoire - Principales options : réglage de la langue (language), utilisation du GPU (use_gpu), taille de file (queue), format de sortie (format: text/srt/json), modèle et seuils de VAD (détection d’activité vocale), etc.
- Une valeur queue faible améliore la réactivité, mais réduit la précision et augmente la charge CPU ; une valeur élevée améliore la précision, mais augmente la latence
- L’option destination permet d’enregistrer les résultats dans un fichier de sortie, une URL ou des métadonnées, et prend aussi en charge le protocole AVIO
- Des exemples sont fournis pour des scénarios comme la génération de sous-titres SRT, l’envoi HTTP au format JSON et la transcription en temps réel depuis une entrée micro (avec VAD)
- Exemple de génération d’un fichier de sous-titres SRT
ffmpeg -i input.mp4 -vn \ -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin:language=en:queue=3:destination=output.srt:format=srt" \ -f null -
- Exemple de génération d’un fichier de sous-titres SRT
1 commentaires
Avis sur Hacker News
J’aimerais recommander Subtitle Edit (et soutenir le développeur est aussi une bonne idée). Subtitle Edit offre une bonne interface pour expérimenter avec Whisper. Si vous avez déjà utilisé Aegisub, vous pourriez considérer Subtitle Edit comme un Aegisub 2.0.
HOWTO : faites glisser une vidéo ou un fichier audio dans le volet de droite, puis allez dans Video > Audio to text (Whisper). En général, c’est Faster-Whisper-XXL qui m’a donné les meilleures performances. Si possible, je recommande d’utiliser large-v2 (large-v3 a même eu quelques régressions). Ce n’est pas parfait, mais on peut largement corriger avec des fonctions comme Tools > Fix common errors de Subtitle Edit.
Avec une carte graphique Nvidia récente, il faut saisir
--compute_type float32pour que ça fonctionne correctement. En cas d’erreur, il peut être nécessaire de réinstaller la bibliothèque torch depuis un index spécifique avec les commandes ci-dessous. Si cela résout votre erreur, laissez un commentaire indiquant quel était le problème et comment vous l’avez résolu ; cela pourra aider d’autres personnes (et servira aussi aux recherches web).Site officiel de Subtitle Edit
Page de dons au développeur de Subtitle Edit
Dernières releases de Subtitle Edit
La sélection automatique du backend est possible avec la commande suivante :
uv pip install torch torchvision torchaudio --torch-backend=autoLien vers le guide détaillé
Les paquets liés à torch sont téléchargés depuis l’index torch, et le reste depuis PyPI, donc pas d’inquiétude à avoir concernant les conflits.
J’ai déjà vu des vidéos techniques produites de manière professionnelle avec des sous-titres impossibles à retirer alors qu’ils n’étaient pas nécessaires. Ce n’est pas une vidéo de chats, c’est excessif.
Avec la transcription locale, la traduction automatique devient possible, et on évite aussi cette expérience pénible où il faut afficher des sous-titres par-dessus des sous-titres déjà incrustés.
Par exemple, dans un cas comme « I scream » et « Ice cream », où la prononciation est proche mais le sens complètement différent, j’aimerais savoir s’il peut modifier le texte précédent à partir d’informations contextuelles arrivant plus tard.
Je pense que ce genre de fonctionnement est une condition nécessaire pour concilier temps réel et précision. J’ai d’ailleurs vu sur Android des systèmes de transcription qui ajustent le texte au fur et à mesure que la personne parle.
"How to wreck a nice beach you sing calm incense"
Lien vers l’article
Je me demande aussi si les personnes sourdes de naissance étudient de façon spécifique les jeux de mots sonores (jeux linguistiques, rythme, etc.) pour pouvoir les comprendre ou en créer.
Cela ressemble un peu à faire des mathématiques abstraites sans intuition empirique ; cela dit, comme les mathématiciens affirment eux aussi produire à partir de leurs abstractions des phénomènes presque expérientiels, comme la musique, c’est un aspect intéressant.
Lien vers le PDF
Je ne connais pas très bien l’architecture de Whisper, mais en général les modèles ASR utilisent aussi, côté décodeur, les sons qui suivent le segment actuel pour comprendre le contexte. Ensuite, un modèle de langue corrige le tout afin d’inférer une forme grammaticalement naturelle, comme dans « I like ice cream ».
Run Whisper audio transcriptions with one FFmpeg command
Il y a bien eu autrefois l’ajout d’un filtre sr (super resolution), mais il est ancien et même obtenir les poids est compliqué ; le support de plusieurs bibliothèques ML (libtorch, etc.) a aussi été ajouté, mais ce n’est pas simple pour démarrer.
J’aimerais plutôt qu’on puisse rassembler des modèles prêts à l’emploi dans un dossier “models” et utiliser rapidement différents modèles pour l’upscaling, la réduction de bruit, l’upscaling temporel, etc.
Aujourd’hui, la plupart de la recherche sur les filtres audio et vidéo repose sur le ML, et les nouveaux codecs seront probablement eux aussi basés sur le ML.
Voir l’explication Wikipédia de Whisper
Liste complète des modèles Whisper
J’ai un très vieux film japonais sans version anglaise, donc je ne peux pas le regarder.
J’avais déjà essayé de trouver un traducteur sur Fiverr ; au tarif officiel ça montait à plusieurs milliers de dollars, puis après négociation on était descendu à quelques centaines, mais la personne a fini par disparaître.
La qualité dépend du dialecte et de la qualité audio, et le modèle "large-v3" donne les meilleurs résultats.
On peut utiliser l’intégration FFmpeg avec une commande comme :
ffmpeg -i movie.mp4 -af whisper=model=large-v3:task=translate output.srtMême le modèle “anglais” prend en réalité en charge de nombreuses langues et traduit directement vers l’anglais.
On peut aussi d’abord transcrire en japonais puis utiliser un autre traducteur pour passer en anglais. Pour des dialogues sémantiquement complexes, cette méthode peut parfois être meilleure.
Exemple :
Traduction directe : Japonais → anglais : Lien de référence vers whisper-standalone-win
Il inventait souvent du contenu qui n’existait pas dans l’audio, et dès qu’il y avait plusieurs langues mélangées dans la vidéo, il devenait complètement confus.
Il ne comprend absolument pas le contexte, donc on retrouve souvent les erreurs qu’on voit dans les traductions automatiques de type YouTube.
Les meilleures performances s’obtiennent avec le plus gros modèle, mais la vitesse dépend du matériel.
Une autre possibilité consiste à utiliser quelque chose comme VideoToTextAI pour extraire les sous-titres, les traduire dans plus de 100 langues, puis les enregistrer en fichier SRT.
Il ajoute souvent de manière aléatoire des phrases qui n’existent pas.
Ça peut convenir pour de la classification, mais pour la transcription de sous-titres, c’est insuffisant.
Ce serait bien si ça fonctionnait directement sur Mac, sans avoir à récupérer soi-même les modèles.
Documentation SpeechTranscriber
Documentation SpeechAnalyzer
Retour d’usage réel et comparaison avec Whisper
En pratique :
1. cloner whisper.cpp via git
2. installer les dépendances de cette bibliothèque
3. réussir la compilation
4. télécharger le vrai modèle
Ce n’est qu’ensuite qu’on peut utiliser le filtre
-af "whisper=model....Sans préparation préalable, ça échoue, et ce sera très frustrant pour les débutants.
Il serait plus efficace de créer plutôt un avfilter Whisper natif et de ne demander que le téléchargement du modèle ; ce serait aussi beaucoup plus utilisé en pratique.
Il faut tenir compte du rythme de changement du projet whisper-cpp.
Comme pour d’autres filtres (vmaf, etc.) qui nécessitent de compiler des dépendances et de télécharger des modèles, on peut s’attendre à voir arriver bientôt des binaires précompilés pour les débutants (d’autant que whisper-cpp est sous licence MIT).
Même s’il y a des erreurs et des hallucinations, cela fonctionne assez bien pour mon usage.
Dans ce genre de situation, l’identification des locuteurs serait particulièrement importante.