Chatgpt hat auch seine Fähigkeiten als robuster Übersetzer demonstriert, der nicht nur gemeinsame Sprachen, sondern auch unkonventionelle Formen des Schreibens wie Emojis und Wortkrampfe umgehen kann. Es kann jedoch nicht immer eine deterministische Ausgabe erzeugen und sich an eine Line-zu-Line-Korrelation halten, was möglicherweise den Zeitpunkt der Untertitel stört, selbst wenn sie angewiesen werden, präzise Anweisungen zu befolgen und den Parameter temperature auf 0 zu setzen.
Dieses Dienstprogramm verwendet die OpenAI-Chatgpt-API, um Text mit einem spezifischen Fokus auf zeilenbasierte Übersetzung zu übersetzen, insbesondere für SRT-Untertitel. Der Übersetzer optimiert die Nutzung der Token, indem sie SRT-Overhead entfernen und Text in Stapel gruppiert, was zu willkürlichen Längenübersetzungen ohne übermäßigen Tokenverbrauch führt und gleichzeitig ein Eins-zu-Eins-Übereinstimmung zwischen Linieneingang und Ausgang sicherstellt.
--experimental-structured-mode verfügbar sind.--experimental-use-full-context (nur CLI) aktiviert ist.Referenz: https://github.com/openai/openai-quickstart-node#setup
>= 16.13.0 Erforderlich. Diese Readme nimmt bash -Shell -Umgebung angit clone https://github.com/Cerlancism/chatgpt-subtitle-translator && cd chatgpt-subtitle-translatornpm installchmod +x cli/translator.mjs.example.env zu .env cp .env.example .env.env -Datei hinzu cli/translator.mjs --help
Usage: translator [options]
Translation tool based on ChatGPT API
Optionen:
--from <language>
Quellsprache (Standard: "")
--to <language>
Zielsprache (Standard: "Englisch")
-i, --input <file>
Eingabe von Quelltext mit dem Inhalt dieser Datei im .srt -Format oder im Klartext
-o, --output <file>
Ausgabedatei -Name, Standardeinstellungen, die auf Eingabedateinamen basieren, um zu basieren
-p, --plain-text <text>
Eingabe von Quelltext mit diesem Klartextargument
-s, --system-instruction <instruction>
Überschreiben Sie die Anweisungsvorlage für Eingabeaufforderungssysteme Translate ${from} to ${to} mit diesem einfachen Text, ignorieren Sie --from und --to -optionen
--initial-prompts <prompts>
Erste Eingabeaufforderungen für die Übersetzung in JSON (Standard: "[]" )
--no-use-moderator
Verwenden Sie den OpenAI -API -Moderationsendpunkt nicht
--moderation-model
(Standard: "omni-moderation-latest" ) https://platform.openai.com/docs/models/moderation
--no-prefix-number
Präfixen keine Zeilen mit numerischen Indizes
--no-line-matching
Durchsetzen
-l, --history-prompt-length <length>
Länge des Eingangsverlaufs für den nächsten Anforderungsstapel (Standard: 10)
-b, --batch-sizes <sizes> Stapelgrößen zunehmender Reihenfolge für Übersetzungsaufforderungsscheiben in JSON-Array (Standardeinstellung: "[10,100]" )
Die Anzahl der Zeilen, die in jede Übersetzungsaufforderung enthalten sind, vorausgesetzt, sie werden innerhalb der Token -Grenze geschätzt. Bei nicht übereinstimmenden Ausgangsleitungsmengen wird diese Zahl Schritt für Schritt gemäß den Werten im Array verringert, was letztendlich einen erreicht.
Größere Chargengrößen führen im Allgemeinen zu einer effizienteren Token -Nutzung und einer möglicherweise besseren Kontextübersetzung. Nicht übereinstimmende Ausgangsleitungsmengen oder die Überschreitung der Token -Grenze verursachen jedoch eine Token -Verschwendung, wodurch die Stapel mit einer geringeren Chargengröße erneut gemeldet werden muss.
--experimental-structured-mode [mode]
Aktivieren Sie die strukturierte Reaktion. (Standard: array , Choices array , object )
--experimental-structured-mode array strukturiert den Eingang und die Ausgabe in ein einfaches Array-Format. Diese Option ist im Vergleich zum Basismodus prägnanter, wird jedoch etwas mehr Token pro Stapel verwendet.--experimental-structured-mode object sowohl die Eingabe als auch die Ausgabe in ein dynamisch erzeugter Objektschema basierend auf Eingabewerten. Diese Option ist noch prägnanter und verwendet weniger Token, erfordert jedoch kleinere Chargengrößen und kann langsam und unzuverlässig sein. Aufgrund seiner Unzuverlässigkeit kann es zu mehr Wiedervermietungsantrieb führen und dabei möglicherweise mehr Token verschwenden. --experimental-use-full-context
Fügen Sie den vollständigen Kontext übersetzter Daten hinzu, um gut mit einem schnellen Zwischenspeichern zu funktionieren.
Die übersetzten Zeilen pro Benutzer- und Assistenzmeldungspaare werden gemäß den Definition durch --history-prompt-length (standardmäßig --history-prompt-length 10 ) geschnitten. Es wird empfohlen, dies auf die größte Chargengröße festzulegen (standardmäßig --batch-sizes "[10,100]" ): --history-prompt-length 100 .
Wenn Sie dies aktivieren, kann dies das Gefahr bringen, das Kontextfenster des Modells, normalerweise 128K , zu betreiben, sollte jedoch für die meisten Fälle ausreichen.
--log-level <level>
Protokollstufe (Standard: debug , Auswahl: trace , debug , info , warn , error , silent )
--silent
Das gleiche wie --log-level silent
--quiet
Das gleiche wie --log-level silent
Zusätzliche Optionen für GPT:
-m, --model <model>"gpt-4o-mini" ) https://platform.openai.com/docs/api-reference/chat/create--stream-t, --temperature <temperature>1 niedrigen Wert unter 0.3 festlegen, um für die Übersetzung deterministischer zu sein--top_p <top_p>--presence_penalty <presence_penalty>--frequency_penalty <frequency_penalty--logit_bias <logit_bias>cli/translator.mjs --plain-text "你好"Standardausgabe
Hello.
cli/translator.mjs --stream --to " Emojis " --temperature 0 --plain-text " $( curl ' https://api.chucknorris.io/jokes/0ECUwLDTTYSaeFCq6YMa5A ' | jq .value ) "Eingabeargument
Chuck Norris can walk with the animals, talk with the animals; grunt and squeak and squawk with the animals... and the animals, without fail, always say 'yessir Mr. Norris'.
Standardausgabe
????♂️??????????????️??️❗️??????=???????????????????=??.
cli/translator.mjs --stream --system-instruction " Scramble characters of words while only keeping the start and end letter " --no-prefix-number --no-line-matching --temperature 0 --plain-text " Chuck Norris can walk with the animals, talk with the animals; "Standardausgabe
Cuhck Nroris can wakl wtih the aiamnls, talk wtih the aiamnls;
cli/translator.mjs --stream --system-instruction " Unscramble characters back to English " --no-prefix-number --no-line-matching --temperature 0 --plain-text " Cuhck Nroris can wakl wtih the aiamnls, talk wtih the aiamnls; "Standardausgabe
Chuck Norris can walk with the animals, talk with the animals;
cli/translator.mjs --stream --temperature 0 --input test/data/test_cn.txtEingabedatei: Test/Data/test_cn.txt
你好。
拜拜!
Standardausgabe
Hello.
Goodbye!
cli/translator.mjs --stream --temperature 0 --input test/data/test_ja_small.srtEingabedatei: Test/Data/test_ja_small.srt
1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
おはようございます。
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
お元気ですか?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
はい、元気です。
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
今日は天気がいいですね。
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
はい、とてもいい天気です。Ausgabedatei: Test/Data/test_ja_small.srt.out_english.srt
1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
Good morning.
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
How are you?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
Yes, I'm doing well.
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
The weather is nice today, isn' t it?
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
Yes, it's very nice weather. Systemanweisung
Token: 5
Translate Japanese to English
| Eingang | Prompt | Verwandeln | Ausgabe |
|---|---|---|---|
Token: | Token: | Token: | Token: |
1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
おはようございます。
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
お元気ですか?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
はい、元気です。
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
今日は天気がいいですね。
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
はい、とてもいい天気です。 | | | 1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
Good morning.
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
How are you?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
Yes, I'm doing well.
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
The weather is nice today, isn' t it?
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
Yes, it's very nice weather. |
Todo : Mehr Analyse
5 SRT -Linien:
test/data/test_ja_small.srt
299362276 30 SRT -Linien:
Test/Data/test_ja.srt
16256719[5, 10] , einschließlich bis zu 10 historischer Kontext:1036