Anleitung

SRT-Untertitel aus einer Audiodatei erstellen am Mac

So erstellst du am Mac SRT- oder VTT-Untertitel aus einer Audiodatei mit ffmpeg und whisper.cpp, korrigierst Timing und Zeilenlänge, oder machst es in einem Schritt.

Du kannst jede Audiodatei auf einem Mac in eine zeitgenaue SRT- oder VTT-Untertiteldatei verwandeln, ohne sie irgendwo hochzuladen. Diese Anleitung geht den kostenlosen Terminal-Weg durch (ffmpeg plus whisper.cpp), zeigt, wie du Timing und Zeilenlänge korrigierst, wenn das erste Ergebnis noch nicht ganz stimmt, und endet mit einer Variante in einem Schritt, falls du das Setup lieber nicht pflegen möchtest. Am Ende hast du eine Untertiteldatei, die du in ein Videoschnittprogramm, einen Medienplayer oder eine Webseite laden kannst. Ist deine Quelle ein Video statt einer Audiodatei, ist der kürzere Weg, Video in Text umzuwandeln und Untertitel zu exportieren, in einem Durchgang.

Was eine SRT-Datei eigentlich ist

SRT ist reiner Text. Jeder Untertitel ist ein Block: eine laufende Nummer, eine Start- und eine Endzeit, eine oder zwei Zeilen Text und eine Leerzeile.

1
00:00:01,200 --> 00:00:04,000
Welcome back, and thanks for joining us today.

2
00:00:04,200 --> 00:00:07,500
Let's start with the numbers from last quarter.

VTT (WebVTT) ist nahezu dasselbe Format mit einem WEBVTT-Kopf und Punkten statt Kommas in den Zeitmarken. Browser nutzen VTT für das HTML-Element <track>; die meisten Player am Rechner und die Videoschnittprogramme nehmen beides an. Weil beide reiner Text sind, kannst du sie in jedem Editor öffnen und ein Wort oder eine Zeitmarke von Hand korrigieren.

Weg 1: ffmpeg und whisper.cpp im Terminal

whisper.cpp ist eine Open-Source-Umsetzung von OpenAIs Sprachmodell Whisper, die auf Apple Silicon gut läuft. Sie kann SRT und VTT direkt schreiben, die ganze Kette lautet also: Audio umwandeln, Modell laufen lassen, Datei öffnen. Wenn du den längeren Hintergrund zur Installation und Feinabstimmung von whisper.cpp willst, lies Whisper lokal auf dem Mac ausführen; die Schritte unten sind der kürzeste Weg zu einer Untertiteldatei.

Schritt 1: Homebrew, ffmpeg und whisper.cpp installieren

Falls du Homebrew noch nicht hast, installiere es von brew.sh, indem du den Einzeilerbefehl von dieser Seite ins Terminal einfügst. Dann:

brew install ffmpeg
brew install whisper-cpp

Zum Zeitpunkt des Schreibens installiert die Homebrew-Formel einen Befehl namens whisper-cli. Ältere Versionen nutzten den Namen whisper-cpp. Wird der eine Name nicht gefunden, probiere den anderen, oder führe brew info whisper-cpp aus, um zu sehen, was installiert wurde.

Schritt 2: ein Modell herunterladen

whisper.cpp braucht eine Modelldatei im eigenen ggml-Format. Das whisper.cpp-Repository listet die verfügbaren Modelle und ein Download-Skript auf. Schnell geht es, wenn du eines direkt in einen Ordner lädst, den du dir merkst:

mkdir -p ~/whisper-models
cd ~/whisper-models
curl -L -o ggml-base.en.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin

base.en ist klein und schnell, gut genug für klar gesprochenes Englisch. Für andere Sprachen oder für bessere Genauigkeit bei schwierigem Audio nimmst du ein small-, medium- oder large-Modell aus derselben Liste. Größere Modelle sind langsamer und brauchen mehr Speicher, fang also klein an und geh nur höher, wenn das Transkript es verlangt.

Schritt 3: das Audio in 16-kHz-Mono-WAV umwandeln

whisper.cpp erwartet 16 kHz, 16 Bit, Mono-WAV. ffmpeg erledigt die Umwandlung aus fast jedem Eingangsformat (MP3, M4A, WAV, FLAC, OGG oder die Tonspur einer Videodatei):

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le input.wav

Ersetze input.mp3 durch deine Datei. Wenn du von einem Video ausgehst, nimm die Videodatei als Eingabe; ffmpeg holt sich die Tonspur und ignoriert das Bild.

Schritt 4: SRT und VTT erzeugen

Lass das Modell auf der WAV laufen und fordere Untertitel als Ausgabe an:

whisper-cli -m ~/whisper-models/ggml-base.en.bin -f input.wav -osrt -ovtt

-osrt schreibt input.wav.srt und -ovtt schreibt input.wav.vtt neben das Audio. Ergänze -l de (oder einen anderen Sprachcode), wenn die Sprache nicht Englisch ist und du ein mehrsprachiges Modell nutzt. Die Namen der Flags stammen aus der whisper.cpp-README zum Zeitpunkt des Schreibens; whisper-cli --help zeigt die aktuelle Liste, falls etwas abweicht.

Schritt 5: das Ergebnis prüfen

Öffne die SRT in einem Texteditor und überflieg sie. Lade sie dann in einen Player, der externe Untertitel neben dem Originalton oder -video unterstützt, und sieh dir die erste Minute und eine zufällige Minute in der Mitte an. Du prüfst drei Dinge: Die Worte stimmen, jeder Untertitel erscheint, wenn die Worte gesprochen werden, und keine Zeile ist so lang, dass sie aus dem Bild läuft.

Timing und Zeilenlänge korrigieren

Die erste Ausgabe liegt meist nah dran, ist aber selten perfekt. Diese Korrekturen decken die meisten Fälle ab.

Untertitel sind durchgehend zu früh oder zu spät

Ist jeder Untertitel um denselben Betrag verschoben, beginnt das Audio, das du transkribiert hast, nicht im selben Moment wie das Video, mit dem du es zusammenbringst (etwa wegen eines abgeschnittenen Intros). whisper.cpp hat eine Option für einen Versatz, die den Startpunkt in Millisekunden verschiebt; sieh in --help nach dem aktuellen Namen. Alternativ können die meisten Untertiteleditoren und viele Videoplayer eine ganze Datei um einen festen Betrag verschieben. Bei einer kurzen Datei geht auch die Bearbeitung von Hand: Die Zeitmarken sind reiner Text.

Zeilen sind zu lang

Whisper neigt dazu, Segmente von einem ganzen Satz zu erzeugen, was 15 Wörter oder mehr sein können. whisper.cpp hat eine Option, die maximale Segmentlänge in Zeichen zu begrenzen, und eine verwandte Option, die an Wortgrenzen statt mitten im Wort trennt. Etwa 42 Zeichen pro Zeile sind eine verbreitete Untertitelkonvention. Lass den Lauf mit diesen Optionen neu durchlaufen, statt Zeilen einzeln zu korrigieren.

Ein paar Segmente sind falsch

Korrigiere sie im Texteditor. Bei einer 30-minütigen Aufnahme rechne mit einer Handvoll Korrekturen bei einem base-Modell auf sauberem Audio, und mit deutlich mehr, wenn das Audio rauscht, mehrere Sprecher enthält oder Namen und Fachbegriffe vorkommen. Machst du viele Korrekturen, probiere einmal ein größeres Modell, bevor du die ganze Datei von Hand bearbeitest.

Lange Stille erzeugt seltsame Segmente

Whisper kann bei langer Stille oder Musik eine wiederholte Phrase oder eine verirrte Zeile erzeugen. Schneide führende Stille vor dem Transkribieren mit ffmpeg weg und lösche verirrte Blöcke danach. Nummeriere die laufenden Nummern neu, wenn du Blöcke löschst; manche Player nehmen das genau, und ein kleines Skript oder ein Untertiteleditor nummeriert für dich neu.

Die Untertitel ins Video einbrennen

Wenn du eine einzige Videodatei mit den ins Bild gerechneten Untertiteln brauchst (für Plattformen, die keine getrennte Untertiteldatei annehmen), kann ffmpeg auch das:

ffmpeg -i video.mp4 -vf subtitles=input.wav.srt output.mp4

Behalte die SRT trotzdem als eigene Datei. Eingebrannte Untertitel lassen sich später nicht abschalten, bearbeiten oder übersetzen, die SRT schon. Wenn du vom Video statt von einer Audiodatei ausgehst, behandelt ein Video in Text umwandeln die Importseite; warum die Untertitel für dein Publikum wichtig sind, steht in Live-Untertitel und Transkripte als Werkzeug der Barrierefreiheit. Ein aufgezeichneter Vortrag mit einer einzigen Stimme ist das einfachste Material überhaupt, und eine Predigt transkribieren führt einen Fall von der Aufnahme bis zu den Untertiteln durch.

Was dich dieser Weg kostet

Einmal eingerichtet, ist der Terminal-Weg gratis und vollständig privat: Nichts verlässt deinen Mac. Die Kosten sind Zeit und Pflege. Das erste Einrichten dauert eine halbe Stunde, wenn alles glattgeht, länger, wenn Homebrew oder der Modell-Download zickt. Jede neue Datei bedeutet einen Umwandlungsschritt, einen Modelllauf und eine Prüfung im Editor. Modellnamen, Flags und Binärnamen ändern sich zwischen Versionen, ein Skript, das im Frühjahr lief, braucht im Herbst also vielleicht eine kleine Korrektur. Für eine einmalige Aufgabe ist das in Ordnung. Wenn du jede Woche Untertitel produzierst, summiert sich der Aufwand. Wöchentliche Ausgabe heißt meist eine Sendung, und Podcast-Transkription und Shownotes behandelt den Rest dieses Ablaufs, vom Transkript bis zu den Kapitelmarken.

Die Alternative in einem Schritt

Häufig gestellte Fragen

Kann ich Untertitel aus einer MP3 erstellen, ohne sie vorher umzuwandeln?

Nicht mit whisper.cpp, das eine 16-kHz-Mono-WAV erwartet. Der ffmpeg-Befehl oben dauert Sekunden und funktioniert mit MP3, M4A, FLAC, OGG und Videodateien. Manche anderen Werkzeuge nehmen MP3 direkt an, aber zuerst umzuwandeln ist eine verlässliche Gewohnheit, weil du im selben Schritt auch Stille wegschneiden oder die Lautstärke normalisieren kannst.

Was ist der Unterschied zwischen SRT und VTT?

Beides sind Untertitelformate in reinem Text mit derselben Idee: nummerierte Blöcke mit einer Startzeit, einer Endzeit und dem Text. VTT beginnt mit einem WEBVTT-Kopf, nutzt in den Zeitmarken Punkte statt Kommas und unterstützt etwas Gestaltung und Positionierung, die SRT nicht kann. Nimm VTT für Web-Video und SRT für Player und Editoren am Rechner. Die Umwandlung zwischen beiden ist trivial, und die meisten Werkzeuge schreiben beides.

Warum sind meine Untertitel nicht synchron?

Die üblichen Ursachen sind ein fester Versatz (Audio und Video beginnen an unterschiedlichen Punkten), ein Video mit variabler Bildrate, das etwas schneller oder langsamer läuft als der Ton, oder eine Transkription, die während langer Stille abgedriftet ist. Ein fester Versatz wird behoben, indem du die ganze Datei verschiebst. Drift behebst du, indem du das Video mit ffmpeg auf eine konstante Bildrate neu kodierst und dann den Ton dieser Datei transkribierst.

Funktioniert whisper.cpp auf Apple Silicon?

Ja. Apple Silicon ist eine der Plattformen, auf denen es entwickelt wird, und aktuelle Builds können über Core ML und Metal die Neural Engine und die GPU nutzen. Sieh in der README des Projekts nach den aktuellen Build-Optionen; die Homebrew-Formel gibt dir eine funktionierende Voreinstellung ohne jede Konfiguration.

Probier die private Alternative.

Kostenlos herunterladen, mit Gratis-Nutzungen jeder Pro-Funktion. Kein Konto nötig.

Download on the App StoreDownload on the App Store