Cerlancism/chatgpt-subtitle-translator
Token efficient translation tool based on ChatGPT or any OpenAI compatible LLM chat completion API
ChatGPT API SRT 字幕翻訳ツール
概要 – 字幕ファイル(SRT)またはプレーンテキストを翻訳するために OpenAI ChatGPT(または OpenAI 互換)API を呼び出す Node.js ユーティリティです。字幕のタイミングを維持するために、1 対 1 の行対応を厳密に保つように構築されています。
重要な理由 – 大規模言語モデルで字幕を翻訳する場合、各行に SRT のオーバーヘッド(インデックス、タイムスタンプ)が含まれるため、コストがかかる可能性があります。このツールはそのオーバーヘッドを取り除き、行をインテリジェントにバッチ処理し、オプションで OpenAI の 構造化出力 と プロンプトキャッシュ 機能を使用して、行の順序を維持しながらトークン使用量を最小限に抑えます。
主な機能
- Web UI(https://cerlancism.github.io/chatgpt-subtitle-translator でホスト)および フル機能の CLI。
- OpenAI 構造化応答(
array、object、timestamp、agent、none)をサポート。 --contextによるプロンプトキャッシュサポートで、翻訳履歴を再利用。- 任意の OpenAI 互換エンドポイント(例:ローカル Ollama)で動作。
- モデルのトークン制限内に収め、無駄を減らすための行ベースのバッチ処理。
- 不適切なコンテンツの送信を避けるためのオプションのモデレーションチェック。
- 進行状況のストリーミング出力、RPM レート制限処理、再開可能な CLI 実行。
- 多段階ワークフローを実行する「エージェントモード」:言語検出 → プランニング要約 → 改良された翻訳指示 → 最終翻訳。
仕組み
- 前処理 – SRT のインデックスとタイムスタンプは、生のテキストのみが送信されるように削除または圧縮(Toon 形式)されます。
- バッチ処理 – 行は、トークンバジェット内に収まる JSON 配列(または他のスキーマ)にグループ化されます。デフォルトのシステムプロンプトは
Translate to <target>(約 3 トークン)です。 - API 呼び出し – バッチは ChatGPT モデル(デフォルト
gpt-4o-mini)に送信されます。構造化出力により、モデルは一致する JSON 構造を返すように強制され、行ごとの対応が保証されます。 - 後処理 – JSON 応答は、元のタイムスタンプとインデックスを再挿入して SRT ファイルに再組み立てされます。
- エージェントモード(オプション) – ソース言語を推測し、コンテンツの概要を生成し、実際の翻訳パスの前に改良された指示を生成するためのクイックスキャンを実行します。
典型的な使用法
# 日本語の SRT を英語に翻訳(CLI)
cli/translator.mjs --input subtitles.srt --from Japanese --to English
# 一度限りのプレーンテキスト翻訳
cli/translator.mjs --plain-text "你好" --to English
# 構造化出力をオブジェクトとして使用
cli/translator.mjs -r object -i subtitles.srt -o out.srt
セットアップ – Node ≥ 20 が必要です。クローン後、npm install を実行し、.env.example を .env にコピーし、OpenAI(または互換)API キーを追加し、CLI スクリプトを実行可能にします。
対象読者 – 不要なトークンにコストをかけずに字幕ファイルをすばやく翻訳する必要があるすべての人。趣味のビデオ編集者から、より大規模なメディアローカリゼーションパイプラインを構築する開発者まで。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト