So funktioniert es
Wie aus deinem Video Untertitel werden, ohne dass es dein Gerät verlässt
Subtitle Generator führt ein Spracherkennungsmodell in deinem Browser-Tab aus. Hier ist jeder Schritt von der Datei zu den Untertiteln, was dein Browser herunterlädt und behält und was wir gemessen haben und was nicht.
Fünf Schritte, alle in deinem Browser-Tab
1. Dein Browser öffnet die Datei
Du wählst eine Video- oder Audiodatei, und der Browser gibt der Seite genau diese eine Datei. Die Seite reicht sie im Tab an die Engine weiter. Nichts wird hochgeladen.
2. Der Ton wird in Stücken gelesen
Wo dein Browser es kann, liest ein Medienleser in einem Web Worker den Ton in Stücken von 30 Sekunden mit den Decodern deines Browsers und wandelt ihn in 16 kHz Mono um, die Form, die das Modell braucht.
3. Fenster, an leisen Stellen geschnitten
Der Ton wird zu Fenstern von etwa 3 Minuten zusammengefasst. Jeder Schnitt fällt in die Mitte der leisesten halben Sekunde in den 15 Sekunden vor der 3-Minuten-Marke, um in einer Pause zu schneiden statt mitten in einem Wort.
4. Das Modell schreibt jedes Fenster
Ein Sprachdetektor markiert die Abschnitte mit Sprache, und das Spracherkennungsmodell schreibt sie, mit seiner eigenen Schätzung, wann die Wörter beginnen und enden.
5. Aus Wörtern werden Untertitel
Die Wörter werden in Untertitel aufgeteilt, die kurz genug zum Lesen sind, die Untertitel erscheinen auf der Seite, und du bearbeitest sie. Die SRT- oder VTT-Datei entsteht beim Klick auf Herunterladen.
Das Modell: Whisper, in zwei Größen
Die Wörter stammen von Whisper, einem Spracherkennungsmodell, das OpenAI 2022 mit seinen Gewichten unter der MIT-Lizenz veröffentlicht hat. Es läuft über whisper.cpp, eine Open-Source-Umsetzung in C++, die wir nach WebAssembly kompilieren, damit sie in einer Webseite laufen kann. Du wählst zwischen zwei Größen:
- Das kleinere Modell (voreingestellt) ist Whisper base, mit auf 5 Bit gerundeten Gewichten: ein Download von 59,7 MB.
- Das größere Modell ist Whisper small, mit 8-Bit-Gewichten: ein Download von 264,5 MB, der mehr Arbeitsspeicher braucht.
Im Artikel von OpenAI schnitten die größeren Whisper-Modelle in den meisten seiner Tests besser ab, mit dem kleinsten Zugewinn im Englischen, aber wie sich diese beiden auf dieser Engine unterscheiden, haben wir noch nicht gemessen. Deshalb nennt die Seite sie „kleiner“ und „größer“, statt zu versprechen, dass eins genauer ist. Vor dem Modell markiert ein kleiner Sprachdetektor, Silero VAD, wo gesprochen wird, damit das Modell seine Zeit auf die Sprache verwendet. Lässt du die Sprache auf automatisch, erkennt das Modell sie im ersten Fenster mit Sprache, und die Seite behält diese Sprache für den Rest der Datei.
Jedes Fenster wird mit den letzten Wörtern davor, etwa 200 Zeichen, als Kontext geschrieben: Das Modell liest sie als den Text, der direkt vor dem Schnitt kam. Sobald ein Fenster fertig ist, erscheinen seine Untertitel auf der Seite, und du kannst sie bearbeiten, während das nächste geschrieben wird. Erstell Untertitel für dein Video, um es zu sehen.
Wie aus Wörtern Untertitel werden
Das Modell liefert Textsegmente, jedes mit Anfang und Ende, und seine Schätzung, wann die Wörter darin beginnen und enden. Ein Segment kann ein langer Satz sein, also schneidet die Seite es in Untertitel, die man beim Zuschauen rechtzeitig lesen kann:
- Höchstens zwei Zeilen mit 42 Spalten pro Untertitel; ein breites Zeichen, etwa im Chinesischen oder Japanischen, zählt als zwei Spalten. Schriften ohne Leerzeichen werden mit dem Wortsegmentierer deines Browsers in Wörter geteilt.
- Höchstens 7 Sekunden auf dem Bildschirm und mindestens 1 Sekunde, wenn der Abstand zum nächsten es erlaubt.
- Schnitte fallen zwischen Wörter: zuerst ans Satzende, dann an ein Komma oder eine Pause von einer halben Sekunde oder mehr, sonst dorthin, wo beide Teile gleich lang werden. Ein schließendes Zeichen bleibt beim Wort davor.
- Der Schnitt wird nach den Wortzeiten gesetzt. Wo das Modell keine Wortzeiten geliefert hat, die zum Text passen, wird die Zeit im Verhältnis zum Text verteilt.
- Untertitel überlappen sich nie, und keiner endet nach dem Ende der Datei.
Die Zeiten kommen aus der eigenen Schätzung des Modells, wo seine Wörter beginnen und enden, oder aus dieser Verteilung nach dem Text, deshalb kann ein Untertitel etwas zu früh oder zu spät erscheinen. Wie weit, haben wir auf dieser Engine noch nicht gemessen. Liegt ein Untertitel daneben, kannst du ihn von Hand korrigieren: Anfang oder Ende um 0,1 Sekunden verschieben, ihn teilen oder mit dem nächsten verbinden.
Welche Version der Engine läuft
Die Engine gibt es in drei Versionen, und die Seite wählt eine, wenn du deine erste Datei hinzufügst:
- WebGPU, zuerst versucht, wenn dein Browser einen Grafikadapter anbietet, der die Prüfung der Seite besteht. Scheitert sie beim Laden oder beim Schreiben eines Fensters, wechselt die Seite zu einer Prozessor-Version und schreibt das Fenster noch einmal.
- WebAssembly auf mehreren Threads, ein Thread pro logischem Prozessor, den dein Browser meldet. Threads brauchen eine ursprungsübergreifend isolierte Seite, deshalb sendet die Website die Header COOP und COEP.
- WebAssembly auf einem Thread, die letzte Möglichkeit für einen Browser ohne Threads und die Version, wenn dein Browser nur einen logischen Prozessor meldet.
Die Zeile unter der Vorschau nennt die Version, die gelaufen ist, zum Beispiel „WebAssembly auf mehreren Threads“. Die WebGPU-Version haben wir noch nicht auf einer echten Grafikkarte gemessen, deshalb sagt die Website nichts über ihre Geschwindigkeit. Egal welche Version: Dein Gerät macht die Arbeit, und die Statuszeile zeigt eine Schätzung der Restzeit, laufend auf deinem Gerät gemessen, statt eine Geschwindigkeit zu versprechen.
Was dein Browser herunterlädt und was er behält
Alles kommt von dieser Website. Die Modelle sind in Teile von höchstens 20 MiB geteilt, weil der Hoster statische Dateien bis 25 MiB ausliefert, und jeder Teil wird vor der Nutzung gegen seinen SHA-256-Fingerabdruck geprüft. So wird ein beschädigter Download abgelehnt, statt falsche Untertitel zu liefern. Die Größen sind die der veröffentlichten Dateien, in Megabyte zu einer Million Byte:
| Datei | Größe | Bleibt in |
|---|---|---|
| Die Engine, WebAssembly-Version mit mehreren Threads (wenn WebGPU nicht genutzt wird und dein Browser mindestens zwei logische Prozessoren meldet) | 1,6 MB | Der normale Browser-Cache |
| Die Engine, Version mit einem Thread (wenn keine Threads verfügbar sind oder dein Browser nur einen logischen Prozessor meldet) | 1,5 MB | Der normale Browser-Cache |
| Die Engine, WebGPU-Version (nur wenn die Seite eine nutzbare GPU findet) | 3,4 MB | Der normale Browser-Cache |
| Das kleinere Modell, Whisper base (voreingestellt) | 59,7 MB, in 3 Teilen | Cache Storage, nach SHA-256-Prüfung jedes Teils, wenn der Browser Platz hat |
| Das größere Modell, Whisper small (nur wenn du es wählst) | 264,5 MB, in 13 Teilen | Cache Storage, nach SHA-256-Prüfung jedes Teils, wenn der Browser Platz hat |
| Der Sprachdetektor, Silero VAD | 0,9 MB, in 1 Teil | Cache Storage, nach SHA-256-Prüfung, wenn der Browser Platz hat |
| Der Medienleser (ein Skript der Seite, geladen, wenn du deine erste Datei hinzufügst) | 0,3 MB | Der normale Browser-Cache |
Engine, Medienleser, Modell und Detektor werden erst geladen, wenn du eine Datei hinzufügst, nicht beim Öffnen der Seite. Deine Datei, ihren Ton und deine Untertitel legt die Seite nie dauerhaft in deinem Browser ab: Sie leben im offenen Tab und verschwinden, wenn du ihn schließt. Um das aufbewahrte Modell zu entfernen, lösch die Daten dieser Website in deinem Browser. Der Netzwerktest Schritt für Schritt zeigt, wie du all das in den Entwicklertools deines Browsers siehst.
Wie wir es testen
Bei jeder Änderung an der Website läuft ein automatischer Browsertest. Er lädt eine gebaute Kopie der Website in Chromium, der Engine von Chrome und Edge, mit den Sicherheits-Headern der Website und prüft unter anderem, dass:
- ein englischer Satz von 3,5 Sekunden aus dem LibriSpeech-Korpus, "Concorde returned to its place amidst the tents.", mit höchstens zwei falschen Wörtern als Untertitel herauskommt, mit dem kleineren Modell, aus einer WAV-Datei, einem MP4-Video und einer WebM-Datei;
- nach einer Bearbeitung, einer Verschiebung um 0,1 Sekunden und einer Teilung die SRT- und VTT-Dateien genau die Untertitel der Seite zurückliefern und Chromiums eigener Untertitel-Leser die VTT-Datei lädt;
- bei einer 60-Sekunden-Datei mit demselben Satz alle 10 Sekunden, verarbeitet mit Testfenstern von 20 Sekunden statt der 3 Minuten des Tools, die Untertitel in mindestens drei Schritten erscheinen und an jeder der sechs Marken ein Untertitel mit dem ganzen Satz zwischen einer halben Sekunde vor der Marke und 2 Sekunden danach beginnt;
- Abbrechen die Verarbeitung stoppt und die nächste Datei das Modell, das der Browser aufbewahrt hat, ohne neuen Download nutzt;
- ein stiller Clip keine Untertitel ergibt, ein beschädigter Teil einer Datei die Untertitel davor behält und eine Datei, die kein Medium ist, abgelehnt wird;
- jede Anfrage an diese Website geht, als GET oder HEAD ohne Inhalt.
Dieser Test nutzt einen kurzen Satz eines einzigen Sprechers in einer Sprache. Er zeigt, dass die Teile zusammen funktionieren; er misst nicht, wie genau die Untertitel sind.
Grenzen, die du kennen solltest
- Genauigkeit und Zeiten sind auf dieser Engine noch nicht gemessen, deshalb nennt keine Seite eine Zahl. Im Artikel von OpenAI unterschied sich die Fehlerrate von Whisper von Sprache zu Sprache, eng verbunden mit der Menge an Trainingssprache jeder Sprache, und sie stieg, je lauter das hinzugefügte Hintergrundrauschen wurde.
- Keine Sprechernamen, keine Geräuschbeschreibungen, keine Übersetzung. Die Untertitel sind die gesprochenen Wörter, in der gesprochenen Sprache.
- Lange Dateien dauern lange. Wo dein Browser es kann, liest die Seite in Stücken und hält nie den ganzen Ton der Datei auf einmal, aber jede Minute Audio ist Arbeit für deinen Prozessor. Die längste Datei, die wir bisher verarbeitet haben, dauert 12 Minuten.
- Manche Dateien werden ganz gelesen. Wenn dein Browser den Ton nicht in Stücken dekodieren kann, dekodiert die Seite ihn auf einmal und hält bei 500 MB oder 1 Stunde an.
- Auf Smartphones nicht getestet. Das größere Modell kann mehr Arbeitsspeicher brauchen, als ein Smartphone frei hat; die Seite sagt es, wenn der Browser meldet, dass ihm der Speicher ausgeht.
Die Open-Source-Komponenten und ihre Lizenzen stehen auf der Seite Open-Source-Nachweise.
Probier es mit deinem eigenen Video
Läuft in deinem Browser. Deine Datei verlässt nie dein Gerät.