FFmpeg 8.0 fügt Whisper-Unterstützung hinzu
(code.ffmpeg.org)- 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 Kosteneffizienz 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-whisperaktiviert 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 -
- Beispiel zur Erzeugung einer SRT-Untertiteldatei
1 Kommentare
Hacker-News-Kommentare
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-v2zu verwenden (large-v3hat 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 float32eingeben, damit es richtig funktioniert. Wenn ein Fehler auftritt, muss man dietorch-Bibliothek eventuell wie unten gezeigt mit einem bestimmten Index neu installieren. 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
uvwird bei der Installation vontorch-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=autoLink mit ausführlicher Anleitung
Die
torch-Pakete werden aus demtorch-Index geladen, der Rest aus PyPI, daher muss man keine Konflikte befürchten.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.
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.
"How to wreck a nice beach you sing calm incense"
Link zur Arbeit
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.
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.
Run Whisper audio transcriptions with one FFmpeg command
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 wielibtorchhinzu, 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.
Wikipedia-Erklärung zu Whisper
Vollständige Liste der Whisper-Modelle
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.
Die Qualität hängt von Dialekt und Audioqualität ab, und das Modell
large-v3liefert 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.srtSelbst 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: Japanisch → Englisch: Referenzlink zu whisper-standalone-win
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.
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.
Es fügt oft zufällig Sätze hinzu, die gar nicht existieren.
Für Klassenklassifikation ist es brauchbar, aber für Untertiteltranskription unzureichend.
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
avfilter-Wrapper für diewhisper.cpp-Bibliothek bereitgestellt wird und die Nutzer das Abhängigkeitsmanagement selbst übernehmen müssen.Also:
1.
whisper.cpppergit cloneholen2. 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-
avfilternativ zu bauen und nur das Modell herunterladen zu lassen; dann gäbe es wahrscheinlich auch deutlich mehr tatsächliche Nutzer.Man muss die Änderungsgeschwindigkeit des Projekts
whisper-cppbedenken.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-cpphat schließlich auch eine MIT-Lizenz).Fehler und Halluzinationen gibt es, aber es funktioniert gut genug für meinen Zweck.
In so einem Fall wäre Sprechererkennung besonders wichtig.