Об этом проекте
## Что это
ChatGPT Subtitle Translator — это утилита перевода, построенная вокруг API OpenAI ChatGPT (или любой совместимой с OpenAI конечной точки чат-комплишн, включая локальный экземпляр Ollama). Её основное внимание уделяется построчному переводу, особенно субтитров SRT, где сохранение соответствия между входными и выходными строками важно для сохранения синхронизации субтитров.
## Как это работает
Индексы и временные метки SRT удаляются или упрощаются перед отправкой модели для сокращения использования токенов. Строки группируются в пакеты внутри одного промпта, что устраняет повторяющиеся накладные расходы на каждую запись и позволяет переводить файлы произвольной длины без чрезмерного потребления токенов. Системная инструкция по умолчанию — минимальная: `Translate to <language>`.
Пять структурированных режимов выбираются через `--structured`:
- `array` (по умолчанию): строки отправляются как массив JSON, и модель возвращает соответствующий массив.
- `object`: исходные строки становятся ключами в схеме ответа, поэтому явное пользовательское сообщение не отправляется.
- `timestamp`: тайминги сохраняются вместе с текстом с использованием компактного формата Toon со смещением пакета плюс смещением/длиной каждой записи в миллисекундах; модель может объединять соседние записи. Повторные попытки происходят только тогда, когда границы временных диапазонов вывода не совпадают с входными.
- `agent`: псевдоним для подкоманды agent с параметрами по умолчанию.
- `none`: устаревший режим без структурированного вывода.
## Возможности
- Веб-интерфейс (размещён на GitHub Pages) и CLI
- Поддержка структурированного вывода, включена по умолчанию в обоих интерфейсах
- Поддержка кэширования промптов, управляется с помощью `-c, --context` (только CLI)
- Работает с любым провайдером, совместимым с OpenAI API, например локальным Ollama
- Построчная пакетная обработка с автоматическим размером пакета, определяемым бюджетом токенов контекста
- Необязательная проверка OpenAI Moderation (`--use-moderator`, только CLI) для предотвращения траты токенов на вероятные отказы
- Потоковый вывод процесса
- Ограничение скорости запросов в минуту
- Возобновление прогресса (только CLI)
- Обнаружение циклов повторения во время потоковой передачи (`--guard-repetition`)
## Режим агента
Подкоманда `agent` выполняет несколько проходов перед переводом: обзорный проход выбирает образцы файла для определения содержимого, длительности, жанра/тона и имён персонажей, а также для обнаружения исходного языка; проход планирования сканирует файл в ограниченных по токенам окнах, создавая сводки пакетов, которые объединяются в уточнённую инструкцию перевода; затем проход перевода использует эту обогащённую инструкцию и проверяет целевой язык после первого пакета. Параметры включают `--no-refine`, `--no-fitting` и `--context-summary`.
## Установка и использование
Требуется Node.js >= 20. После клонирования выполните `npm install`, сделайте `cli/translator.mjs` исполняемым, скопируйте `.env.example` в `.env` и добавьте API-ключ. Типичные вызовы включают `cli/translator.mjs --input subtitles.srt --from Japanese --to English`, ввод простого текста через `--plain-text` и пользовательские инструкции через `--system-instruction`. Модель, temperature, top_p, штрафы и logit bias можно настроить через стандартные параметры OpenAI.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.