CHATGPT также продемонстрировал свои возможности в качестве надежного переводчика, способного обрабатывать не только общие языки, но и нетрадиционные формы письма, такие как смайлики и схватки слов. Тем не менее, он не всегда может создавать детерминированный выход и придерживаться корреляции линии-линии, потенциально нарушая время субтитров, даже если указано следовать точным инструкциям и установить параметр temperature модели на 0 .
Эта утилита использует API Openai Catgpt для перевода текста с особым вниманием к переводу на основе линий, особенно для субтитров SRT. Переводчик оптимизирует использование токенов, удаляя накладные расходы SRT, группируя текст в партии, что приводит к произвольной длине переводов без чрезмерного потребления токена, обеспечивая при этом совпадение один на один между входом линии и выводом.
--experimental-structured-mode .--experimental-use-full-context (только CLI).Ссылка: https://github.com/openai/openai-quickstart-node#setup
>= 16.13.0 Требуется. Этот Readme предполагает среда bash Shellgit clone https://github.com/Cerlancism/chatgpt-subtitle-translator && cd chatgpt-subtitle-translatornpm installchmod +x cli/translator.mjs.example.env to .env cp .env.example .env.env cli/translator.mjs --help
Usage: translator [options]
Translation tool based on ChatGPT API
Параметры:
--from <language>
Исходный язык (по умолчанию: "")
--to <language>
Целевой язык (по умолчанию: «Английский»)
-i, --input <file>
Входной текст источника с содержанием этого файла, в формате .srt или простом тексту
-o, --output <file>
Имя выходного файла, по умолчанию основываться на имени ввода файла
-p, --plain-text <text>
Вводной текст источника с этим простой текстовой аргументом
-s, --system-instruction <instruction>
Переопределить шаблон инструкции System System Translate ${from} to ${to} с помощью этого простого текста, игнорируя --from опций --to
--initial-prompts <prompts>
Первоначальные подсказки для перевода в JSON (по умолчанию: "[]" )
--no-use-moderator
Не используйте конечную точку модерации API OpenAI
--moderation-model
(по умолчанию: "omni-moderation-latest" ) https://platform.openai.com/docs/models/moderation
--no-prefix-number
Не префикс линии с числовыми индексами
--no-line-matching
Не применяйте сопоставление входного вывода от одной до одной линии
-l, --history-prompt-length <length>
Продолжительность истории подсказки для удержания для следующей партии запросов (по умолчанию: 10)
-b, --batch-sizes <sizes> размеры партий увеличивающегося порядка для срезам приглашения на перевод в массиве JSON (по умолчанию: "[10,100]" )
Количество строк для включения в каждую подсказку перевода при условии, что они оцениваются в пределах токена. В случае несоответствующих величин выходной линии это число будет уменьшено пошаговым по шагам в соответствии со значениями в массиве, в конечном итоге достигнув его.
Большие размеры партий, как правило, приводят к более эффективному использованию токенов и потенциально лучшему контекстуальному переводу. Тем не менее, несоответствующие количества выходной линии или превышение предела токена вызовут потерь токена, требуя повторного повторного размера партии с меньшим размером партии.
--experimental-structured-mode [mode]
Включить структурированный ответ. (По умолчанию: array , array вариантов, object )
--experimental-structured-mode array структуры ввода и вывода в формат простого массива. Этот вариант более краткий по сравнению с базовым режимом, хотя он использует немного больше токенов на партию.--experimental-structured-mode object как входные, так и вывод в динамически сгенерированную схему объекта на основе входных значений. Этот вариант еще более краткий и использует меньше токенов, но требует меньших размеров партий и может быть медленным и ненадежным. Из -за своей ненадежности это может привести к большему количеству повторных повторений, возможно, впустую больше токенов в процессе. --experimental-use-full-context
Включите полный контекст переведенных данных, чтобы хорошо работать с быстрым кэшированием.
Переведенные линии на пользователь и пары помощников сообщений нарезаны нарезанными, как определено --history-prompt-length (по умолчанию --history-prompt-length 10 ), рекомендуется установить это на самый большой размер пакета (по умолчанию --batch-sizes "[10,100]" ): --history-prompt-length 100 .
Включение этого может рисковать в столкновении с пределом окна контекста модели, как правило, 128K , но должно быть достаточным для большинства случаев.
--log-level <level>
Уровень журнала (по умолчанию: debug , выбор: trace , debug , info , warn , error , silent )
--silent
То же, что --log-level silent
--quiet
То же, что --log-level silent
Дополнительные варианты для GPT:
-m, --model <model>"gpt-4o-mini" ) https://platform.openai.com/docs/api-reference/chat/create--stream-t, --temperature <temperature>0.3 , чтобы быть более детерминированным для перевода (по умолчанию: 1 ) https://platform.openai.com/docs/api-reference/chat/create#chat-create-temperature--top_p <top_p>--presence_penalty <presence_penalty>--frequency_penalty <frequency_penalty--logit_bias <logit_bias>cli/translator.mjs --plain-text "你好"Стандартный выход
Hello.
cli/translator.mjs --stream --to " Emojis " --temperature 0 --plain-text " $( curl ' https://api.chucknorris.io/jokes/0ECUwLDTTYSaeFCq6YMa5A ' | jq .value ) "Входной аргумент
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'.
Стандартный выход
????♂️??????????????️??️❗️??????=???????????????????=??.
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; "Стандартный выход
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; "Стандартный выход
Chuck Norris can walk with the animals, talk with the animals;
cli/translator.mjs --stream --temperature 0 --input test/data/test_cn.txtВходной файл: тест/data/test_cn.txt
你好。
拜拜!
Стандартный выход
Hello.
Goodbye!
cli/translator.mjs --stream --temperature 0 --input test/data/test_ja_small.srtВходной файл: тест/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
はい、とてもいい天気です。Выходной файл: тест/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. Системная инструкция
Токены: 5
Translate Japanese to English
| Вход | Быстрый | Преобразование | Выход |
|---|---|---|---|
Токены: | Токены: | Токены: | Токены: |
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 : больше анализа
5 линий SRT:
тест/data/test_ja_small.srt
299362276 30 линий SRT:
тест/data/test_ja.srt
16256719[5, 10] , в том числе до 10 исторических оперативных контекстов:1036