mcpField
O
omnicaptions-translate

omnicaptions-translate

github.com/lattifaiクリエイティブ・メディア22176 回インストール38 週間前に更新
リポジトリ

omnicaptions-translate について

omnicaptions-translate は字幕ファイルを翻訳するスキルで、通常は Claude を使い、希望に応じて Gemini API も利用します。文脈を考慮した翻訳と二言語出力に対応し、字幕の書式やタイミングを保ちます。

主な機能

  1. 01Claude による翻訳が標準
  2. 02CLI 経由の Gemini API 利用
  3. 03文脈を考慮したバッチ翻訳
  4. 04原文と訳文の二言語出力
  5. 05SRT、VTT、ASS などに対応
  6. 06タイミングと書式の保持

活用シーン

  1. 01タイミングを保った字幕翻訳
  2. 02語学学習向け二言語字幕の作成
  3. 03会話の文脈を踏まえた YouTube 字幕翻訳
  4. 04二言語字幕ファイルでの訳文確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lattifai/omni-captions-skills --skill omnicaptions-translate

インストール後、Claude Code で/omnicaptions-translateを入力して読み込まれたか確認します。

詳細

字幕翻訳

デフォルト:Claude のネイティブ翻訳機能(API キーは不要です)

ユーザーから明示的に要求された場合のみ、Gemini API を使用します。

デフォルトのワークフロー(Claude)

  1. 字幕ファイルを読み込みます
  2. Claude のネイティブ機能で翻訳します
  3. _Claude_{lang} 接尾辞を付けて出力を書き込みます

Gemini API(オプション)

ユーザーが Gemini を要求した場合は、CLI を使用します:

omnicaptions translate input.srt -l zh --bilingual

出力:input_Gemini_zh.srt

使用する場面

  • SRT/VTT/ASS を別の言語に翻訳する
  • 二言語字幕(原文+翻訳)を生成する
  • YouTube 動画の文字起こしを翻訳する
  • 文脈を考慮した翻訳が必要(1 行ずつではない)

使用しない場面

  • 文字起こしが必要(/omnicaptions:transcribe を使用)
  • 翻訳なしで形式だけ変換したい(/omnicaptions:convert を使用)

セットアップ

pip install omni-captions-skills --extra-index-url https://lattifai.github.io/pypi/simple/

API キー

優先順位:GEMINI_API_KEY 環境変数 → .env ファイル → ~/.config/omnicaptions/config.json

設定されていない場合は、ユーザーに確認します:Please enter your Gemini API key (get from https://aistudio.google.com/apikey):

その後、-k <key> を付けて実行します。キーは設定ファイルに自動的に保存されます。

文脈を考慮した翻訳

LLM ベースの翻訳は、複数行にまたがる文脈を理解するため、従来の機械翻訳よりも優れています:

文脈が重要な理由
アプローチ問題結果
1 行ずつ文脈がない機械的で、つながりのない翻訳
まとめて+文脈前後の行を参照する自然で、一貫性のある会話
仕組み
┌─────────────────────────────────────────┐
│  Batch size: 30 lines                   │
│  Context: 5 lines before/after          │
├─────────────────────────────────────────┤
│  [5 previous lines] → context           │
│  [30 current lines] → translate         │
│  [5 next lines]     → preview           │
└─────────────────────────────────────────┘

メリット:

  • 話者の一貫性 - 登場人物の話し方を維持します
  • 分割された文 - 複数行にまたがる会話に対応します
  • 慣用句と文化 - 文化的な表現を自然に適応させます
  • 代名詞の解決 - 文脈に基づいて he/she/they を正しく判断します

高度な機能

二言語出力
# Original + Translation (for language learning)
omnicaptions translate input.srt -l zh --bilingual

出力例:

1
00:00:01,000 --> 00:00:03,500
Welcome to the show.
欢迎来到节目。

2
00:00:03,500 --> 00:00:06,000
Thank you for having me.
感谢邀请我。
カスタム用語集(近日公開)

分野固有のコンテンツやブランド関連のコンテンツ向け:

# Use glossary for consistent terminology
omnicaptions translate input.srt -l zh --glossary terms.json

用語集の形式:

{
  "API": "接口",
  "Token": "令牌",
  "Machine Learning": "机器学习"
}

メリット:

  • 用語の一貫性 - 「1 つの用語に 1 つの翻訳」
  • ブランドへの準拠 - 公式の製品名を使用します
  • 分野ごとの正確性 - 医療、法律、技術用語

ベストプラクティス

1. 品質を高めるために文脈を提供する

専門的なコンテンツでは、カスタムプロンプトを使用します:

from omnicaptions import GeminiCaption

gc = GeminiCaption()
gc._translation_prompt = """
You are translating captions for a medical documentary.
Use formal Chinese medical terminology.
Glossary: {glossary}
"""
gc.translate("input.srt", "output.srt", "zh")
2. 適切なモデルを選ぶ
モデル最適な用途
gemini-3-flash-preview高速な処理、日常的なコンテンツ
gemini-3-pro-preview複雑で、細かなニュアンスを含むコンテンツ
3. 二言語出力を確認する

二言語字幕を使うと、視聴者が翻訳の品質を確認できます。次の用途に最適です:

  • 語学学習者
  • 品質保証
  • アクセシビリティ

CLI の使用方法

# Translate (auto-output to same directory)
omnicaptions translate input.srt -l zh         # → ./input_Gemini_zh.srt

# Specify output file or directory
omnicaptions translate input.srt -o output/ -l zh   # → output/input_Gemini_zh.srt
omnicaptions translate input.srt -o zh.srt -l zh    # → zh.srt

# Bilingual output (original + translation)
omnicaptions translate input.srt -l zh --bilingual

# Specify model
omnicaptions translate input.vtt -l ja -m gemini-3-pro-preview
オプション説明
-k, --api-keyGemini API キー(未設定の場合は自動的に入力を求めます)
-o, --output出力ファイルまたはディレクトリ(デフォルト:入力と同じディレクトリ)
-l, --language翻訳先の言語コード(必須)
--bilingual原文と翻訳の両方を出力します
-m, --modelモデル名(デフォルト:gemini-3-flash-preview)
-v, --verbose詳細な出力

言語コード

言語コード
中国語(簡体字)zh
中国語(繁体字)zh-TW
日本語ja
韓国語ko
英語en
スペイン語es
フランス語fr
ドイツ語de

対応フォーマット

lattifai-captions のすべての形式:SRT、VTT、ASS、TTML、JSON、Gemini MD など。

よくある間違い

間違い修正方法
API キーがない-k YOUR_KEY を使用するか、プロンプトに従います
言語コードが間違っているISO コード(zh、ja、en など)を使用します
書式が失われるASS のスタイルは保持されます。SRT は基本的な書式のみです
用語が一貫しない技術的なコンテンツでは用語集を使用します

参考資料

関連スキル

スキル使用する場面
/omnicaptions:transcribeまず文字起こしが必要な場合
/omnicaptions:LaiCut翻訳前にタイミングを調整する場合
/omnicaptions:convert翻訳後に形式を変換する場合
/omnicaptions:download翻訳する字幕をダウンロードする場合
ワークフローの例

重要:LaiCut で調整した後に、バイリンガル字幕を生成してください。

ファイル名の規則 - 言語タグと処理チェーンを保持します:

video.en.vtt → video.en_LaiCut.json → video.en_LaiCut.srt → video.en_LaiCut_Claude_zh.srt → video.en_LaiCut_Claude_zh_Color.ass
翻訳方法接尾辞例
Claude(デフォルト)_Claude_zhvideo.en_LaiCut_Claude_zh.srt
Gemini API_Gemini_zhvideo.en_LaiCut_Gemini_zh.srt
# 1. LaiCut 对齐 (保留词级时间)
omnicaptions LaiCut video.mp4 video.en.vtt
# → video.en_LaiCut.json

# 2. 转换为 SRT (翻译用,文件小)
omnicaptions convert video.en_LaiCut.json -o video.en_LaiCut.srt

# 3a. Claude 翻译 (默认)
# → video.en_LaiCut_Claude_zh.srt

# 3b. 或 Gemini 翻译
omnicaptions translate video.en_LaiCut.srt -l zh --bilingual
# → video.en_LaiCut_Gemini_zh.srt

# 4. 转换为带颜色的 ASS
omnicaptions convert video.en_LaiCut_Claude_zh.srt -o video.en_LaiCut_Claude_zh_Color.ass \
  --line1-color "#00FF00" --line2-color "#FFFF00"
大きな JSON ファイル

LaiCut は単語単位のタイミング情報を含む JSON を出力します。翻訳する場合は、まず SRT に変換してください(ファイルサイズが大幅に小さくなります)。

# JSON (word-level, ~150KB) → SRT (segment-level, ~15KB)
omnicaptions convert video.en_LaiCut.json -o video.en_LaiCut.srt

理由:JSON はカラオケ用に単語単位のタイミングを保持しますが、翻訳に必要なのはセグメントのテキストだけです。SRT は 10〜20 倍小さくなります。

Claude の翻訳ルール(デフォルト)

  1. 形式を正確に保持 - すべてのタイミングコード、書式タグ、スタイル定義を保持します
  2. 文脈を考慮 - 一貫性のある会話になるよう、前後の行を考慮します
  3. 話者の一貫性 - 登場人物の話し方や口調を維持します
  4. 文化的な適応 - 慣用句や言及を自然に適応させます
  5. 大きなファイル - 品質を維持するため、100 行ずつ処理します

Claude と Gemini の比較

機能Claude(デフォルト)Gemini API
API キー不要必須
呼び出し方法スキル(Read/Write)CLI コマンド
出力の接尾辞_Claude_{lang}_Gemini_{lang}
最適な用途ほとんどのタスク大きなファイル、自動化

コメント