31 Punkte von GN⁺ 2025-08-14 | 1 Kommentare | Auf WhatsApp teilen
  • FFmpeg 8.0 bietet jetzt offiziell Unterstützung für das Whisper-Spracherkennungsmodell
  • Whisper ist ein von OpenAI entwickeltes Open-Source-Spracherkennungsmodell, das für die automatische Transkription in verschiedenen Sprachen verwendet wird
  • Durch diese Einführung steigt die Möglichkeit, Speech-to-Text-Workflows direkt in Video- und Audioverarbeitungsaufgaben zu automatisieren
  • Für Entwickler und den Bereich Medienautomatisierung werden Nutzbarkeit und Effizienz von FFmpeg deutlich verbessert
  • Durch die integrierte Unterstützung moderner Spracherkennung sinkt der Aufwand für zusätzliche externe Tools oder komplexe Integrationsprozesse

Überblick über die Whisper-Unterstützung in FFmpeg 8.0

  • Mit der Unterstützung für das Whisper-Spracherkennungsmodell bietet FFmpeg 8.0 die Funktion, Sprachdaten in verschiedenen Sprachen automatisch in Text umzuwandeln
  • Whisper nutzt einen von OpenAI entwickelten Deep-Learning-basierten Algorithmus und gewährleistet dadurch eine Speech-to-Text-Leistung mit hoher Genauigkeit
  • Bestehende FFmpeg-Nutzer können nun ohne externe Tools über die integrierte Whisper-Unterstützung direkt Untertitel aus Video- und Audiodateien erzeugen oder gesprochene Inhalte extrahieren

Wichtige Vorteile der Whisper-Integration

  • Durch die Whisper-Integration lassen sich in medienverarbeitenden und automatisierten FFmpeg-Pipelines effiziente und hochskalierbare Spracherkennungs-Workflows umsetzen
  • Da der Spracherkennungsalgorithmus integriert ist, können Entwickler ohne aufwendige zusätzliche Anbindungen oder separate Skripte mit einfachen Befehlen Speech-to-Text-Ergebnisse erhalten

Industrielle Bedeutung der Kombination aus FFmpeg und Whisper

  • In Bereichen wie umfangreicher Verwaltung von Medienbeständen, Untertitel-Erstellung und Archivierung von Videodaten bietet die Kombination FFmpeg + Whisper Vorteile bei Kosten­effizienz und Automatisierung zugleich
  • Bisher mussten separate Open-Source-Tools zur Spracherkennung mit FFmpeg gekoppelt werden; nun ist eine direkte Verarbeitung in FFmpeg selbst möglich, was vereinfachte Workflows und schnellere Verarbeitung erwarten lässt

Technische Details

  • Basierend auf der Bibliothek Whisper.cpp wurde FFmpeg ein Audiofilter hinzugefügt, der automatische Spracherkennung (ASR) direkt innerhalb von FFmpeg ausführt
  • Die Funktion kann mit der Option --enable-whisper aktiviert werden; der Modellpfad (model) ist verpflichtend anzugeben
  • Wichtige Optionen: Spracheinstellung (language), GPU-Nutzung (use_gpu), Queue-Größe (queue), Ausgabeformat (format: text/srt/json) sowie VAD-Modell- und Schwellenwert-Einstellungen
    • Wird der Wert für queue klein gesetzt, steigt die Echtzeitfähigkeit, aber die Genauigkeit sinkt und die CPU-Last steigt; bei einem größeren Wert steigt die Genauigkeit, aber auch die Latenz
    • Mit der Option destination kann das Ergebnis in Dateien, URLs oder Metadaten gespeichert werden; das AVIO-Protokoll wird ebenfalls unterstützt
  • Enthalten sind Beispiele für die Erzeugung von SRT-Untertiteln, die Übertragung von JSON per HTTP und Live-Transkription von Mikrofoneingaben mit VAD
    • Beispiel zur Erzeugung einer SRT-Untertiteldatei
      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 Kommentare

 
GN⁺ 2025-08-14
Hacker-News-Kommentare
  • Ich habe erlebt, dass Whisper wirklich ein erstaunliches Tool ist; mit dem richtigen Prompt kann es das Leben spürbar positiv verändern.
    Ich möchte Subtitle Edit empfehlen (eine Spende an den Entwickler ist auch eine gute Idee). Subtitle Edit ist eine gute Oberfläche zum Experimentieren mit Whisper. Wer früher Aegisub benutzt hat, könnte Subtitle Edit gut als Aegisub 2.0 bezeichnen.
    HOWTO: Eine Video- oder Audiodatei in das rechte Fenster ziehen und dann zu Video > Audio to text (Whisper) gehen. Bei mir hatte Faster-Whisper-XXL meistens die beste Leistung. Wenn möglich, empfehle ich large-v2 zu verwenden (large-v3 hat im Gegenteil bei einigen Punkten Regressionen). Es ist nicht perfekt, aber mit Funktionen wie Tools > Fix common errors in Subtitle Edit lässt es sich gut korrigieren.
    Bei aktuellen Nvidia-Grafikkarten muss man --compute_type float32 eingeben, damit es richtig funktioniert. Wenn ein Fehler auftritt, muss man die torch-Bibliothek eventuell wie unten gezeigt mit einem bestimmten Index neu installieren.
    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  
    
    Wenn ihr so ein Problem gelöst bekommt, hinterlasst am besten einen Kommentar dazu, welches Problem es war und wie die Lösung aussah; das hilft auch anderen Leuten weiter (und taugt für Websuchen).
    Subtitle-Edit-Homepage
    Spenden-Seite des Subtitle-Edit-Entwicklers
    Releases der neuesten Subtitle-Edit-Version
    • Bei uv wird bei der Installation von torch-Paketen automatisch eine Tensor-Version passend zum CUDA-Treiber ausgewählt. Trotzdem sollte man es besser in einer virtuellen Umgebung (venv) statt mit dem System-Python verwenden.
      Mit folgendem Befehl ist eine automatische Backend-Auswahl möglich:
      uv pip install torch torchvision torchaudio --torch-backend=auto
      Link mit ausführlicher Anleitung
      Die torch-Pakete werden aus dem torch-Index geladen, der Rest aus PyPI, daher muss man keine Konflikte befürchten.
    • Auch Aegisub wird weiterhin in Forks aktiv weiterentwickelt. Die beiden Programme haben unterschiedliche Schwerpunkte, deshalb ist ein direkter Vergleich schwierig; man kann sie eher komplementär einsetzen. Subtitle Edit eignet sich viel besser für die eigentliche Transkription, während Aegisub bei Typografiearbeiten usw. weiterhin Stärken hat.
    • Subtitle Edit ist großartig, kann aber Hardware-Einschränkungen haben (Python, Nvidia-GPU usw.). Wenn man keine GPU hat oder der Server-Aufbau zu aufwendig ist, sind einfache und günstige APIs wie lemonfox.ai ebenfalls eine Option.
    • Mich würde interessieren, ob du konkrete Beispiele nennen kannst, wie Whisper dein Leben deutlich verbessert hat.
    • Whisper ist so gut, deshalb frage ich mich, warum die automatischen Untertitel von YouTube immer noch so schlecht sind. Sogar das kleinste Whisper-Modell ist besser als die Lösung von Google. Liegt das vielleicht an Lizenzfragen oder an den Schwierigkeiten bei großflächiger Ausrollung?
  • Wenn lokale Transkription breiter genutzt würde, würden Videoersteller hoffentlich davon absehen, blinkende und störende Untertitel direkt ins Video einzubrennen.
    Selbst bei professionell produzierten Technikvideos habe ich schon unnötige, nicht entfernbare Untertitel gesehen. Das ist kein Katzenvideo, also ist das wirklich zu viel.
    Mit lokaler Transkription werden automatische Übersetzungen möglich, und man vermeidet auch die lästige Erfahrung, noch einmal Untertitel über bereits eingebrannte Untertitel legen zu müssen.
    • Es wird darauf hingewiesen, dass eingebrannte Untertitel weniger der User Experience dienen als vielmehr der Steigerung des „engagement“.
    • Wenn man schon vergleicht, dann waren die früheren, von Fans gemachten Stil-Untertitel für Anime-Openings meiner Meinung nach viel cooler als die heutigen eingebrannten Untertitel in Videos.
    • Letztlich ist das stark vom Algorithmus getrieben. Selbst wenn es auf allen Geräten in Echtzeit 100 % genaue Untertitel gäbe, würden eingebrannte Untertitel weiter verwendet werden, solange Videos damit besser performen.
    • Ein Problem eingebrannter Untertitel ist, dass man die Sprache nicht ändern kann.
    • Mitverursacht wird das Phänomen auch durch die YouTube-Funktion „autoplay without sound“. Eingebrannte Untertitel helfen dabei, dass Leute an einem Video hängenbleiben.
  • Whisper ist ein Modell zur Audiotranskription, aber kann es während des Zuhörens frühere Inhalte später noch einmal korrigieren?
    Zum Beispiel bei Fällen wie „I scream“ und „Ice cream“, die ähnlich klingen, aber völlig unterschiedliche Bedeutungen haben: Kann es den früheren Text anhand von Informationen aus einem späteren längeren Kontext noch ändern?
    Ich halte so etwas für eine notwendige Bedingung, wenn man sowohl Echtzeitfähigkeit als auch Genauigkeit erreichen will. Tatsächlich habe ich bei Transkriptionen auf Android gesehen, dass Text während des Sprechens laufend angepasst wird.
    • Ich empfehle den Titel meiner Lieblingsarbeit:
      "How to wreck a nice beach you sing calm incense"
      Link zur Arbeit
    • Ich frage mich, ob menschliche Untertitler oder Drehbuchautoren nicht immer bewusst darüber nachdenken müssen, wie sie absichtlich mehrdeutige Aussagen, Wortspiele oder für die Handlung wichtige Missverständnisse verschriftlichen. Es ist etwas anderes, Gehörtes wiederzugeben, als den eigentlichen Wortlaut aufzuschreiben.
      Ich frage mich auch, ob Menschen mit angeborener Hörbehinderung eigens erforschen, wie sie klangbasierte Wortspiele (sprachliche Spielereien, Rhythmus usw.) verstehen oder selbst erzeugen können.
      Das wirkt ein wenig so, als würde man abstrakte Mathematik ohne Erfahrungsintuition behandeln; andererseits behaupten Mathematiker auch, dass aus ihren Abstraktionen erfahrbare Phänomene wie Musik entstehen, was diesen Punkt ebenfalls interessant macht.
    • Whisper arbeitet in 30-Sekunden-Chunks. Durch diese Netzwerkstruktur kann es Ergebnisse anhand von vorherigem und nachfolgendem Kontext verändern. Allerdings führt das auch zu vielen Halluzinationen.
    • Bei „I scream“ scheint die Aussprache von „I“ stärker betont zu sein als bei „ice cream“. Ich stimme aber zu, dass Kontext unbedingt nötig ist.
    • Wenn dich das Thema interessiert, empfehle ich ab Abschnitt 16.3 das Stanford-Lehrbuch „Speech and Language Processing“.
      Link zum PDF
      Ich kenne die Whisper-Architektur nicht im Detail, aber im Allgemeinen berücksichtigen ASR-Modelle beim Decoder auch den Ton nach dem aktuellen Chunk, um den Kontext zu verstehen. Deshalb wird mit einem Sprachmodell nachjustiert, damit grammatisch natürlichere Formen wie „I like ice cream“ erschlossen werden.
  • Dazu passend eine Empfehlung für den Blog des Autors dieses Patches:
    Run Whisper audio transcriptions with one FFmpeg command
  • Hoffentlich ist das der Anfang dafür, dass FFmpeg mehr ML-basierte Filter bekommt.
    Früher wurde schon einmal ein sr-(super resolution)-Filter hinzugefügt, aber das ist alt und selbst das Beschaffen der Gewichte ist umständlich; außerdem kam Unterstützung für verschiedene ML-Bibliotheken wie libtorch hinzu, aber auch der Einstieg ist nicht einfach.
    Besser wäre es, gebrauchsfertige Modelle in einem models-Ordner zu bündeln, damit man Upscaling, Rauschunterdrückung, zeitliche Hochskalierung und andere Modelle schnell nutzen kann.
    Der Großteil der heutigen Audio- und Video-Filterforschung ist ML-basiert, und auch neue Codecs werden wahrscheinlich ML-basiert sein.
  • Ist mit Whisper hier das Speech-Recognition-AI-Modell von OpenAI gemeint?
    Wikipedia-Erklärung zu Whisper
    • Ja, und es gibt auch eine C++-Implementierung: whisper.cpp auf GitHub
    • Ja. Direkt aus der Dokumentation zitiert:

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

    • Nicht ganz vollständig gesagt, es ist eher eine „Familie von Audiotranskriptionsmodellen“ (mit mehreren Versionen und Modellreihen).
      Vollständige Liste der Whisper-Modelle
  • Ich kenne Whisper überhaupt nicht; kann man es auch für automatische Übersetzung verwenden, insbesondere Japanisch → Englisch?
    Ich habe einen sehr alten japanischen Film, den ich mangels englischer Übersetzung nicht ansehen kann.
    Früher hatte ich über Fiverr nach einem Übersetzer gesucht; zu offiziellen Sätzen wären es mehrere tausend Dollar gewesen, nach Verhandlung nur noch einige hundert, aber am Ende brach der Kontakt ab.
    • Whisper kann definitiv Japanisch auf Englisch transkribieren und übersetzen.
      Die Qualität hängt von Dialekt und Audioqualität ab, und das Modell large-v3 liefert die besten Ergebnisse.
      Die FFmpeg-Integration kann mit einem Befehl wie diesem genutzt werden:
      ffmpeg -i movie.mp4 -af whisper=model=large-v3:task=translate output.srt
    • Meiner Erfahrung nach war es größtenteils brauchbar.
      Selbst das „englische“ Modell unterstützt in Wirklichkeit viele Sprachen und übersetzt direkt ins Englische.
      Man kann auch erst auf Japanisch transkribieren und danach einen anderen Übersetzer für die Übertragung ins Englische verwenden. Bei semantisch komplexen Dialogen ist das manchmal besser.
      Beispiel:
      Direkte Übersetzung:
      faster-whisper-xxl.exe --language English --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      Japanisch → Englisch:
      faster-whisper-xxl.exe --language Japanese --task translate --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      Referenzlink zu whisper-standalone-win
    • Meiner Erfahrung nach ist die Transkription komplett gescheitert.
      Es wurden oft Inhalte erzeugt, die im Audio gar nicht vorkamen, und wenn mehrere Sprachen im Video gemischt waren, kam das Modell völlig durcheinander.
      Es versteht den Kontext überhaupt nicht, deshalb sieht man häufig Fehler, wie man sie von automatischen Übersetzungen auf YouTube kennt.
    • Mit Whisper kann man japanische Videos untertiteln und auch übersetzen (nur ins Englische).
      Die beste Leistung ist mit dem größten Modell möglich, aber die Geschwindigkeit hängt von der Hardware ab.
      Eine andere Methode wäre etwas wie VideoToTextAI: Untertitel extrahieren → in mehr als 100 Sprachen übersetzen → als SRT-Datei speichern.
    • Whisper halluziniert massiv.
      Es fügt oft zufällig Sätze hinzu, die gar nicht existieren.
      Für Klassenklassifikation ist es brauchbar, aber für Untertiteltranskription unzureichend.
  • Ich frage mich, ob Apples bald erscheinende Speech API auch zu FFmpeg hinzugefügt werden könnte.
    Es wäre schön, wenn das direkt auf dem Mac ohne eigenes Model-Sourcing laufen würde.
    SpeechTranscriber-Dokumentation
    SpeechAnalyzer-Dokumentation
    Praxisbericht und Vergleich mit Whisper
  • Das einzige Problem dieses PRs/Patches ist, dass nur ein avfilter-Wrapper für die whisper.cpp-Bibliothek bereitgestellt wird und die Nutzer das Abhängigkeitsmanagement selbst übernehmen müssen.
    Also:
    1. whisper.cpp per git clone holen
    2. die Abhängigkeiten dieser Bibliothek installieren
    3. erfolgreich bauen
    4. das eigentliche Modell herunterladen
    Erst danach kann man den Filter -af "whisper=model... verwenden.
    Ohne diese Vorarbeit schlägt es fehl, und für Einsteiger wird das sehr frustrierend sein.
    Effizienter wäre es wohl, den Whisper-avfilter nativ zu bauen und nur das Modell herunterladen zu lassen; dann gäbe es wahrscheinlich auch deutlich mehr tatsächliche Nutzer.
    • Für Endnutzer wäre das besser, aber aus Sicht von FFmpeg ist es in Sachen Wartbarkeit schwierig.
      Man muss die Änderungsgeschwindigkeit des Projekts whisper-cpp bedenken.
      Wie bei anderen Filtern (z. B. vmaf), die ebenfalls Abhängigkeits-Builds und Model-Downloads brauchen, wird es wahrscheinlich bald vorkompilierte Binärdateien für Einsteiger geben (whisper-cpp hat schließlich auch eine MIT-Lizenz).
  • Ich nutze FFmpeg und Whisper, um den Live-Audiofeed des Polizeifunks unserer Stadt in Echtzeit aufzuzeichnen, zu transkribieren und die Ergebnisse sofort auf einer Website zu aktualisieren.
    Fehler und Halluzinationen gibt es, aber es funktioniert gut genug für meinen Zweck.
    • Falls die Website öffentlich ist, würde ich sie sehr gern sehen.
    • Ich wollte diese Funktion gern auf die Sitzungen des County Council in unserer Region anwenden.
      In so einem Fall wäre Sprechererkennung besonders wichtig.