Untertitel in Text umwandeln — SRT, VTT, SBV, ASS

Wandeln Sie SRT-, VTT-, SBV- und ASS-Untertitel in ein sauberes Transkript um. Entfernt Zeitcodes, setzt zerschnittene Sätze zusammen und beseitigt die Wiederholungen von Auto-Untertiteln.

Untertitel zu Transkript: die Zeitcodes zu entfernen ist die leichte Hälfte

Jedes Untertitelformat kodiert dasselbe: kurze Sprechabschnitte, an Zeitcodes geheftet. Das wieder in lesbare Prosa zu verwandeln sieht nach einem Fünfzeiler aus — Zahlen weg, Pfeile weg, den Rest zusammenfügen. Lassen Sie dieses Skript auf eine echte Untertiteldatei los und Sie bekommen etwas beinahe Richtiges, was schlimmer ist als offensichtlich Falsches, weil man es lesen muss, um es zu merken.

Zweierlei bricht es. Untertitel werden umbrochen, damit sie auf einen Bildschirm passen, nicht damit ein Satz endet: naives Zusammenfügen liefert Prosa, die alle sechs Wörter zerhackt ist. Und automatisch erzeugte Untertitel laufen mit und wiederholen Text von Einblendung zu Einblendung, sodass beim Aneinanderhängen jeder Satz zwei- oder dreimal erscheint. Dieses Werkzeug behandelt beides. Laden Sie oben eine Datei hoch oder fügen Sie sie ein: das Ergebnis erscheint sofort, in diesem Browser-Tab.

Das Problem der mitlaufenden Wiederholungen

Das ist der Punkt, der Leute kalt erwischt. Die automatische Untertitelung bei YouTube und den meisten Live-Systemen gibt keine getrennten Textblöcke aus. Sie gibt ein wanderndes Fenster aus, damit die Zuschauerin die Wörter anwachsen sieht. In der Datei sieht das so aus:

  • Einblendung 1: der schnelle braune
  • Einblendung 2: der schnelle braune Fuchs springt
  • Einblendung 3: Fuchs springt über den faulen Hund

Gedankenlos zusammengefügt bekommen Sie „der schnelle braune der schnelle braune Fuchs springt Fuchs springt über den faulen Hund“ — sechzehn Wörter, wo acht gesprochen wurden. Über einen einstündigen Vortrag verdreifacht das die Länge ungefähr und macht das Transkript zum Lesen, Durchsuchen und Zusammenfassen unbrauchbar.

Die Abhilfe besteht darin, nur zu behalten, was jede Einblendung hinzufügt. Für jede neue Einblendung sucht das Werkzeug die längste Wortfolge, die zugleich Endstück des bisherigen Textes und Anfangsstück der neuen ist, und lässt sie weg. Auf das Beispiel oben angewandt ergibt das „der schnelle braune Fuchs springt über den faulen Hund“ genau einmal. Der Vergleich läuft gegen ein begrenztes Fenster der letzten Wörter statt gegen das ganze Transkript, was ihn bei einer dreistündigen Datei schnell hält und verhindert, dass eine zwanzig Minuten später zu Recht wiederholte Wendung gelöscht wird.

Sätze wieder zusammensetzen

Eine Untertitelzeile ist für einen Bildschirm bemessen: rund vierzig Zeichen, zwei Zeilen auf einmal, umbrochen dort, wo der Text zufällig den Rand erreichte. Sätze erstrecken sich regelmäßig über drei oder vier Einblendungen. Eine Zeile je Einblendung zu behalten ergibt ein Dokument, das technisch das Transkript und praktisch unlesbar ist.

Der Absatzmodus sammelt Einblendungen und bricht um, wenn zwei Bedingungen zusammenkommen: genug Text hat sich für einen Absatz angesammelt, und die aktuelle Einblendung endet auf satzschließende Zeichensetzung. So fällt ein Umbruch nie mitten in einen Gedanken. Eine harte Obergrenze erzwingt irgendwann trotzdem einen Umbruch, denn manche Sprecher kommen sehr lange ohne Punkt aus, und eine ununterbrochene Textwand ist auf ihre eigene Weise unlesbar. Ein Sprecherwechsel beginnt immer einen neuen Absatz, was bei Interviews und Podien zählt.

Vier Formate, eine Idee

Das Format wird am Inhalt der Datei erkannt, nicht an ihrer Endung, denn Untertiteldateien werden ständig umbenannt, und eine .txt, in der SubRip-Daten stehen, ist alltäglich.

  • SubRip (.srt) — ein Zahlenindex, ein Zeitcode-Bereich mit Komma als Dezimaltrenner, dann der Text. Das meistproduzierte und einfachste Format.
  • WebVTT (.vtt) — der Standard des Browsers. Punkt statt Komma als Dezimaltrenner, dazu optionale Blöcke NOTE, STYLE und REGION, die keine Sprache sind und vor dem Parsen entfernt werden. VTT erlaubt außerdem Inline-Auszeichnung: <v Speaker> nennt, wer spricht, <c.classname> setzt eine Formatierung, und nackte Zeitstempel innerhalb einer Einblendung steuern die wortweise Hervorhebung im Karaoke-Stil. Alles wird ausgepackt, und das Sprecher-Tag wird zur Sprecherkennzeichnung.
  • YouTube (.sbv) — ein durch Komma getrenntes Zeitcode-Paar auf einer eigenen Zeile, dann der Text. Kein Index, keine Auszeichnung.
  • Advanced SubStation (.ass und .ssa) — eine Ereignisliste mit selbst deklarierter Spaltenreihenfolge. Der Parser liest diese Format:-Zeile, statt Positionen anzunehmen, gerade weil das Text-Feld zuletzt steht, damit es Kommas enthalten darf. Steueranweisungen in geschweiften Klammern sind Formatierung und werden entfernt; \N-Zeilenumbrüche werden zu Leerzeichen. Die Spalte Name ergibt, sofern gefüllt, den Sprecher.

Sprecher, Geräusche und was man behalten sollte

Die Sprecherzuordnung kommt je nach Format auf drei Wegen: ein eigenes Feld in ASS, ein Sprecher-Tag in VTT, oder die bloße Konvention NAME: am Zeilenanfang in SRT, das überhaupt kein Sprecherfeld hat. Alle drei werden erkannt und auf dieselbe Ausgabe vereinheitlicht. Die Heuristik für den dritten Fall ist bewusst eng — eine Großbuchstabenfolge gefolgt von einem Doppelpunkt — denn ein Präfix in Kleinbuchstaben würde auf gewöhnliche Sätze mit Doppelpunkt passen und das Transkript zerfetzen.

Geräuschangaben in Klammern wie [MUSIC], (laughter) und [APPLAUSE] bleiben voreingestellt erhalten und lassen sich per Schalter entfernen. Was richtig ist, hängt ganz an der Aufgabe: für ein durchsuchbares Archiv oder einen Barrierefreiheitsnachweis sind sie Teil des Inhalts; um einen Vortrag einem Modell zum Zusammenfassen zu geben, sind sie Rauschen.

Drei Ausgabeformen

Die Voreinstellungen decken ab, was Leute tatsächlich wollen. Das saubere Transkript sind fließende Absätze ohne Zeitcodes, zum Lesen, Zitieren oder Weitergeben an ein Modell. Mit Zeitangabe behält Absätze, versieht aber jeden mit seiner Startzeit — das will man, wenn das Transkript ein Mittel ist, um zu einer Stelle im Video zurückzufinden. Untertitelzeilen behalten eine Zeile je Einblendung mit ihrem Zeitcode und ohne Entdopplung: am nächsten an der Originaldatei, nützlich, wenn Sie die Untertitel selbst prüfen statt sie durchzulesen.

Neben der Ausgabe meldet das Werkzeug das erkannte Format, die Zahl der Einblendungen, die Wortzahl, die abgedeckte Dauer und wie viele Wiederholungen entfernt wurden. Die letzte Zahl ist die ehrlichste: ist sie groß, war die Quelle automatisch erzeugt und mitlaufend, und Sie sehen genau, welcher Anteil der Rohdatei bloße Wiederholung war.

Nichts verlässt den Browser

Untertiteldateien sind nicht immer öffentlich. Interviewaufzeichnungen, interne Betriebsversammlungen, Gerichtsverfahren, ärztliche Beratungen und unveröffentlichtes Filmmaterial erzeugen sie alle. Das Parsen läuft als JavaScript in diesem Tab, die Datei wird also lokal gelesen und nie hochgeladen. Deshalb ist die Umwandlung auch sofort da und deshalb rendert das Ändern einer Option unmittelbar neu, statt einen weiteren Weg zum Server zu machen.