このプロジェクトについて

## 概要 ChatGPT Subtitle Translatorは、OpenAI ChatGPT API(またはローカルのOllamaインスタンスを含む、OpenAI互換のチャット補完エンドポイント)を中心に構築された翻訳ユーティリティです。行ベースの翻訳、特にSRT字幕に焦点を当てており、入力行と出力行の対応を保つことが字幕のタイミングを維持する上で重要です。 ## 仕組み トークン使用量を削減するため、モデルに送信する前にSRTのインデックスとタイムスタンプは除去または簡略化されます。行は単一のプロンプト内でバッチにグループ化され、エントリごとの繰り返しオーバーヘッドを排除し、任意の長さのファイルを過剰なトークン消費なしに翻訳できるようにします。デフォルトのシステム指示は最小限の`Translate to <language>`です。 `--structured`で5つの構造化モードを選択できます: - `array`(デフォルト):行はJSON配列として送信され、モデルは対応する配列を返します。 - `object`:ソース行がレスポンススキーマのキーになるため、明示的なユーザーメッセージは送信されません。 - `timestamp`:タイミングは、バッチオフセットとエントリごとのオフセット/長さ(ミリ秒)を持つコンパクトなToon形式を使用してテキストとともに保持されます。モデルは隣接するエントリをマージする場合があります。出力の時間範囲の境界が入力と一致しない場合にのみ再試行が行われます。 - `agent`:デフォルトオプション付きのagentサブコマンドのエイリアス。 - `none`:構造化出力なしのレガシーモード。 ## 機能 - Web UI(GitHub Pagesでホスト)とCLI - Structured Outputサポート。両方のインターフェースでデフォルトで有効 - Prompt Cachingサポート。`-c, --context`で制御(CLIのみ) - 任意のOpenAI API互換プロバイダーで動作。例:ローカルOllama - コンテキストトークン予算から自動的にバッチサイズを導出する行ベースのバッチ処理 - 拒否される可能性が高い場合にトークンを無駄にしないためのオプションのOpenAI Moderationチェック(`--use-moderator`、CLIのみ) - ストリーミングプロセス出力 - 1分あたりのリクエストレート制限 - 進捗の再開(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パラメータで設定できます。