Subtitle Translator: Zeitachsen bleiben lokal, nur Dialog geht an das Modell
Translate a whole season of subtitles in one pass — .srt/.ass/.vtt/.lrc, 120+ languages, 27 LLM providers, timing untouched | 整季字幕一次译完,时轴不动,支持 120+ 语言
Auf einen Blick
- Was ist das?
- Subtitle Translator ist ein browserbasiertes Werkzeug für die Stapelübersetzung von Untertiteln in den Formaten .srt, .ass, .vtt und .lrc. Der Ansatz trennt Zeitcodes lokal ab und schickt ausschließlich den Dialog an 8 klassische Übersetzungsdienste oder 27 LLM-Anbieter und Gateways.
- Für wen ist es gedacht?
- Wer ganze Staffeln in mehreren Zielsprachen braucht und dabei keine Zeitachse riskieren will, findet hier ein Werkzeug, das die Trennung von Timing und Dialog ernst nimmt. Wer Untertitel mit Sprecherzuordnung, mehrzeiligen ASS-Effekten oder starkem Fachjargon übersetzt, sollte zuerst prüfen, ob der Kontextmodus mit dem gewählten Modell die Zeilenzahl hält, und ob die Ausgabe im Zielformat noch korrekt ausgerichtet ist.
- Darf ich es kommerziell nutzen?
- Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
- Wird es noch gepflegt?
- Ja. Die letzten Commits kamen vor 4 Tagen.
- In welcher Sprache ist es geschrieben?
- Hauptsächlich TypeScript, laut der Sprachstatistik von GitHub.
Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.
TIEFGEHENDE OPEN-SOURCE-ANALYSE
Das Problem: Ein Allzweckübersetzer kennt die Zeitachse nicht
Wer eine .srt-Datei in einen allgemeinen Übersetzungsdienst einfügt, bekommt zwei Fehlerklassen gleichzeitig. Das Modell behandelt Zeitcodes wie Text und schreibt sie um, und die Datei wird einzeln verarbeitet. Subtitle Translator setzt an beiden Punkten an. Laut README wird das Timing lokal entfernt, und nur der Dialog geht an die Engine. Die Formulierung des Projekts ist dabei bewusst stark: die Zeitachse könne physisch nicht berührt werden. Das ist keine Marketingfloskel, sondern eine Folge der Architektur, denn was nicht im Request steht, kann die Antwort nicht verändern. Zielgruppe sind Menschen, die Serienstaffeln oder Filmsammlungen untertiteln, ohne jede Datei manuell nachzubearbeiten. Der Stapelmodus ist ausdrücklich für hunderte Dateien gedacht, jede wird unabhängig übersetzt und unter ihrem ursprünglichen Dateinamen heruntergeladen, am Ende steht eine Erfolgs- und Fehlerbilanz.
Wie die Trennung von Timing und Dialog funktioniert
Das Projekt beschreibt eine strukturelle Trennung: Zeitcodes, Cue-Nummern, ASS-Header und VTT-Cue-IDs werden lokal extrahiert, nur der Dialogtext verlässt den Browser. Das gilt für alle vier Formate. Bei WebVTT werden zusätzlich NOTE-, STYLE- und REGION-Blöcke erkannt und übersprungen, damit sie nicht als Dialog behandelt werden. Der Rückweg ist der interessante Teil: Die übersetzten Zeilen werden wieder in die ursprüngliche Struktur eingesetzt, die Ausrichtung bleibt über Formate hinweg erhalten. Für zweisprachige Ausgaben wird die Übersetzung über oder unter dem Original eingefügt. Bei .srt- und .vtt-Quellen lässt sich zusätzlich ASS exportieren, mit getrennten Stilen für Original und Übersetzung, laut README Default 70pt weiß und Secondary 55pt cyan. Das ist ein konkretes Detail, das zeigt, wo der Aufwand liegt: nicht in der Übersetzung selbst, sondern in der Rekonstruktion der Datei. Die Übersetzung läuft in Chunks mit paralleler Verarbeitung, das README nennt etwa eine Sekunde pro Episode, wobei GTX etwas langsamer sei. Diese Zahl stammt aus der Projektdokumentation, nicht aus einer unabhängigen Messung.
Kontextmodus: teuer, wirksam, modellabhängig
Nur die LLM-Modi können umliegende Zeilen als Kontext mitschicken. Zwei Einstellungen steuern das Verhalten: Concurrent Lines legt fest, wie viele Zeilen parallel übersetzt werden, Standard 20, und Context Lines, wie viele Zeilen pro Batch als Kontext mitgehen, Standard 50. Höhere Werte verbessern laut README die Kohärenz, kosten aber Token. Das Projekt warnt selbst, dass Modelle unter 70 Milliarden Parametern eine fehlerhafte Ausrichtung produzieren können, also Zeilen verschieben oder zusammenfassen. Empfohlen werden für den Kontextmodus ausdrücklich große Online-Modelle wie Claude, GPT, DeepSeek und Gemini. Wer ein kleines lokales Modell über einen OpenAI-kompatiblen Endpunkt betreibt, sollte den Kontextmodus daher zuerst mit einer kurzen Datei prüfen, bevor eine ganze Staffel durchläuft. Der Hinweis auf die Zeilenausrichtung ist der wichtigste Satz in der ganzen Dokumentation, weil er die einzige Stelle beschreibt, an der das Grundversprechen der unberührten Zeitachse indirekt unter Druck gerät: Die Zeitcodes bleiben intakt, aber die Zuordnung von Übersetzung zu Zeile kann bei schwachen Modellen kippen.
Inbetriebnahme: zuerst ohne Konfiguration, dann mit Schlüssel
Der schnellste Einstieg ist die Weboberfläche unter tools.newzone.top, die das README als Live-Demo verlinkt. Für den ersten Test braucht man keine API-Konfiguration, weil GTX und Edge ohne Einrichtung funktionieren und laut README jeweils als Ausweichoption für den anderen dienen. Beide sind ratenbegrenzt. Wer Qualität braucht, trägt einen Schlüssel ein: DeepL, Google, Azure, DeepLX, Qwen-MT, TranslateGemma, GTX oder Edge bei den klassischen Diensten, dazu die LLM-Anbieter und Gateways. Ein Teil der Anbieter ist per CORS vom Browser aus gesperrt. Dafür gibt es einen Relay: Das eingebaute Relay funktioniert laut README sofort, unter API Settings, Relay address lässt sich jeder weitergeleitete Anbieter auf eine eigene Deployment-Instanz des Relay-Workers zeigen. Für Skripte gibt es die Kommandozeile. Das README nennt den Aufruf yarn cli, der dieselbe Engine, dieselben Parser und denselben Cache verwendet. Einzelne Flags werden im bereitgestellten Ausschnitt nicht aufgeführt, das wäre vor dem Einsatz zu prüfen. Für die LLM-Modi sind System- und User-Prompts konfigurierbar, ebenso die Temperatur auf einer Skala von 0 bis 1 sowie ein Thinking-Mode-Schalter pro Anbieter.
Grenzen: wo das Werkzeug an seine Bauart stößt
Die wichtigste Einschränkung ist bereits angelegt: Was nicht als Dialogtext extrahiert wird, wird nicht übersetzt. Das ist der Preis für die sichere Zeitachse. Bei ASS-Dateien mit komplexen Effekten, Karaoke-Tags oder positionierten Zeichenbefehlen hängt die Qualität davon ab, wie sauber der Parser Text von Steueranweisungen trennt. Das README beschreibt die Trennung, nennt aber keine Details zur Behandlung von Inline-Overrides. Wer solche Dateien hat, sollte eine Stichprobe prüfen. Zweitens der Kontextmodus: Er hilft bei Dialogen und Figurenstimmen, ist aber ausdrücklich modellabhängig, und die Standardwerte von 20 parallelen Zeilen und 50 Kontextzeilen sind nicht für jedes Modell und jedes Kontingent sinnvoll. Zu hohe Parallelität löst Ratenbegrenzungen aus, das steht so in der Dokumentation. Drittens die Sprachliste: 120+ Sprachen klingt umfassend, die tatsächliche Qualität hängt aber am gewählten Backend, und zwischen GTX mit drei von fünf Sternen und DeepL mit fünf von fünf Sternen liegt in der Projekttabelle ein sichtbarer Abstand. Schließlich die Datenhaltung: Alles läuft im Browser, der Cache liegt in IndexedDB ohne Größenbegrenzung. Das schützt die Privatsphäre, bindet die Ergebnisse aber an den Browser. Wer den Rechner wechselt oder den Speicher löscht, verliert die Übersetzungen, sofern die Dateien nicht heruntergeladen wurden.
Alternative: der eigene Skriptaufruf gegen einen Übersetzungsdienst
Die naheliegende Alternative ist ein eigenes Skript, das die API eines einzelnen Anbieters aufruft, etwa DeepL oder die OpenAI-Schnittstelle, und die Dateien selbst parst. Der Unterschied liegt nicht in der Übersetzungsqualität, sondern in der Verantwortung für die Struktur. Ein eigenes Skript muss Zeitcodes erkennen, Cue-Nummern zählen, ASS-Header bewahren und die Antwort wieder einsetzen. Genau diese Arbeit nimmt Subtitle Translator ab, und genau hier entstehen die meisten Fehler in Eigenbauten. Umgekehrt hat ein eigenes Skript Vorteile, die das Projekt nicht bietet: volle Kontrolle über Wiederholungsversuche, eigene Glossare, Protokollierung und die Einbindung in eine bestehende Pipeline. Wer bereits eine Übersetzungsinfrastruktur mit Terminologieverwaltung betreibt, wird sie nicht gegen einen Browserablauf tauschen wollen. Der zweite Unterschied ist die Anbieterbindung. Subtitle Translator bündelt 8 klassische APIs und 27 LLM-Anbieter und Gateways hinter einer Oberfläche, sodass ein Wechsel des Backends kein Umbau der Pipeline ist. Ein eigenes Skript bindet sich in der Regel an einen Anbieter und muss bei einem Wechsel angepasst werden. Wer viele Sprachen und wechselnde Anbieter braucht, gewinnt durch die Bündelung, wer einen Anbieter mit eigenem Glossar fest verdrahtet hat, verliert eher.
Wartung, Lizenz und was vor dem Einsatz zu klären ist
Das Projekt steht unter MIT-Lizenz. Das erlaubt kommerzielle Nutzung und Änderung, solange Lizenz- und Urheberrechtshinweis erhalten bleiben. Für die Nutzung der Übersetzungsdienste gilt das nicht: Die Bedingungen der Anbieter, ihre Kontingente und ihre Preise bleiben bestehen, und die MIT-Lizenz des Werkzeugs sagt darüber nichts. Wer die Weboberfläche von tools.newzone.top nutzt, verlässt sich auf ein fremdes Deployment, auch wenn die Übersetzung im Browser läuft. Wer den Relay-Worker selbst betreibt, übernimmt Betrieb und Aktualisierung dieser Komponente. Die Release-Historie zeigt drei Veröffentlichungen zwischen dem 23. August und dem 9. September 2026, mit v3.2.0 als jüngster. Ein so kurzer Abstand deutet auf aktive Pflege hin, ist aber kein Beleg für Stabilität über längere Zeiträume. Vor einem Einsatz in einer festen Pipeline wäre zu prüfen, ob sich die CLI zwischen Minor-Versionen verändert, ob die Konfiguration der Anbieter stabil bleibt und ob der IndexedDB-Cache eine Größe erreicht, die den Browser belastet. Das README nennt keine Obergrenze, was bei mehreren hundert Dateien pro Staffel und mehreren Zielsprachen relevant werden kann.
Redaktionelles Fazit
Wer ganze Staffeln in mehreren Zielsprachen braucht und dabei keine Zeitachse riskieren will, findet hier ein Werkzeug, das die Trennung von Timing und Dialog ernst nimmt. Wer Untertitel mit Sprecherzuordnung, mehrzeiligen ASS-Effekten oder starkem Fachjargon übersetzt, sollte zuerst prüfen, ob der Kontextmodus mit dem gewählten Modell die Zeilenzahl hält, und ob die Ausgabe im Zielformat noch korrekt ausgerichtet ist. Vor dem Produktiveinsatz lohnt ein Testlauf mit einer vollständigen Staffel über die CLI, weil dort dieselben Parser und derselbe Cache wie im Browser laufen, aber die Fehlermeldungen pro Datei sichtbarer sind.
Community-Notizen