31 points par GN⁺ 2025-08-14 | 1 commentaires | Partager sur WhatsApp
  • 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 -  
      

1 commentaires

 
GN⁺ 2025-08-14
Avis sur Hacker News
  • J’ai constaté par moi-même que Whisper est un outil vraiment remarquable ; avec les bons prompts, on peut vivre une expérience qui change positivement la vie.
    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 float32 pour 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.
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  
    
    uv pip install --system torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  
    
    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
    • Avec uv, lors de l’installation des paquets liés à torch, la version des tenseurs adaptée au pilote cuda est sélectionnée automatiquement. Il vaut toutefois mieux l’utiliser dans un environnement virtuel (venv) plutôt qu’avec le Python système.
      La sélection automatique du backend est possible avec la commande suivante :
      uv pip install torch torchvision torchaudio --torch-backend=auto
      Lien 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.
    • Aegisub continue lui aussi à être développé via un fork. Les deux logiciels ont des vocations différentes, donc la comparaison est difficile ; ils peuvent être utilisés de manière complémentaire. Subtitle Edit est bien plus adapté à la transcription proprement dite, tandis qu’Aegisub garde des points forts, notamment pour le travail typographique.
    • Subtitle Edit est excellent, mais il peut y avoir des contraintes matérielles (Python, GPU Nvidia, etc.). Si vous n’avez pas de GPU ou que la configuration serveur est trop lourde, une API simple et peu coûteuse comme lemonfox.ai peut aussi être une option.
    • Je serais curieux d’avoir des exemples concrets de la manière dont Whisper a significativement amélioré votre vie.
    • Whisper est très performant, donc je me demande pourquoi les sous-titres automatiques de YouTube restent encore mauvais. Même le plus petit modèle de Whisper semble meilleur que la solution de Google ; est-ce un problème de licence ou une difficulté de déploiement à grande échelle ?
  • J’espère que si la transcription locale se démocratise, les créateurs vidéo éviteront davantage d’incruster directement dans l’image des sous-titres clignotants et distrayants.
    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.
    • On peut souligner que l’objectif des sous-titres incrustés est souvent davantage d’augmenter l’"engagement" que d’améliorer l’expérience utilisateur.
    • S’il faut vraiment comparer, je trouve que les sous-titres thématiques que les fans faisaient autrefois pour les openings d’anime étaient bien plus stylés que les sous-titres incrustés des vidéos actuelles.
    • Au final, l’algorithme y est pour beaucoup. Même si on obtenait des sous-titres en temps réel exacts à 100 % sur tous les appareils, si les vidéos performent mieux avec des sous-titres incrustés, ils continueront à en mettre.
    • Le problème des sous-titres incrustés, c’est qu’on ne peut pas changer de langue.
    • Ce phénomène vient aussi en partie de la fonction de lecture automatique sans son de YouTube. Les sous-titres incrustés aident à capter l’attention des gens et à les faire entrer dans la vidéo.
  • Comme Whisper est un modèle de transcription audio, je me demande s’il peut revenir en arrière et corriger plus tard ce qui a été transcrit au début pendant qu’il continue d’écouter.
    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.
    • Je recommande l’un de mes titres de papier préférés :
      "How to wreck a nice beach you sing calm incense"
      Lien vers l’article
    • Je me demande si les sous-titreurs humains ou les scénaristes ne réfléchissent pas toujours à la manière de transcrire volontairement des formulations ambiguës, des jeux de mots ou des répliques où le malentendu est important pour l’histoire. Représenter ce qu’on entend n’est pas la même chose qu’écrire le texte source lui-même, c’est-à-dire ce qui a été dit.
      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.
    • Whisper fonctionne par segments de 30 secondes. Cette architecture lui permet de revoir son résultat en tenant compte du contexte avant et après. Mais c’est aussi pour cela qu’il produit beaucoup d’hallucinations.
    • Dans « I scream », j’ai l’impression que la prononciation du « I » est plus marquée que dans « ice cream ». Mais je suis d’accord sur le fait que le contexte est indispensable.
    • Si le sujet vous intéresse, je recommande les chapitres à partir de la section 16.3 du manuel de Stanford “Speech and Language Processing”.
      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 ».
  • À ce sujet, je recommande aussi le blog écrit par l’auteur de ce patch :
    Run Whisper audio transcriptions with one FFmpeg command
  • J’espère que ce sera le début de l’ajout de davantage de filtres basés sur le ML dans FFmpeg.
    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.
  • Le Whisper mentionné ici est bien le modèle d’IA de reconnaissance vocale créé par OpenAI ?
    Voir l’explication Wikipédia de Whisper
    • Oui, et il existe aussi une implémentation en C++ : dépôt GitHub de whisper.cpp
    • Oui. Citation directe de la documentation :

      It runs automatic speech recognition using the OpenAI's Whisper model.

    • Pas exactement au singulier : c’est une famille de modèles de transcription audio (avec plusieurs versions et variantes).
      Liste complète des modèles Whisper
  • Je ne connais absolument pas Whisper, mais je me demande si on peut aussi l’utiliser pour la traduction automatique, en particulier du japonais vers l’anglais.
    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.
    • Whisper peut tout à fait transcrire et traduire du japonais vers l’anglais.
      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.srt
    • D’après mon expérience, c’était globalement exploitable.
      Mê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 :
      faster-whisper-xxl.exe --language English --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      Japonais → anglais :
      faster-whisper-xxl.exe --language Japanese --task translate --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      Lien de référence vers whisper-standalone-win
    • Dans mon expérience, la transcription a été un échec total.
      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.
    • On peut aussi utiliser Whisper pour sous-titrer et traduire des vidéos japonaises (vers l’anglais uniquement).
      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.
    • Les hallucinations de Whisper sont un vrai problème.
      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.
  • Je me demande si la future API de speech d’Apple pourrait elle aussi être ajoutée à ffmpeg.
    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
  • Le seul vrai problème de cette PR / de ce patch, c’est qu’il fournit seulement un wrapper avfilter pour la bibliothèque whisper.cpp, et que l’utilisateur doit gérer lui-même les dépendances.
    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.
    • Ce serait mieux pour l’utilisateur final, mais du point de vue de FFmpeg, c’est compliqué en matière de maintenance.
      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).
  • J’utilise FFmpeg et Whisper pour enregistrer et transcrire en temps réel l’audio du scanner de la police de notre ville, puis mettre à jour immédiatement un site web.
    Même s’il y a des erreurs et des hallucinations, cela fonctionne assez bien pour mon usage.
    • Si le site est public, j’aimerais vraiment le voir.
    • J’aurais aimé appliquer cette fonction aux réunions du conseil de notre comté.
      Dans ce genre de situation, l’identification des locuteurs serait particulièrement importante.