mcpField
V
video-translation

video-translation

github.com/chatcut-incクリエイティブ・メディア99269 回インストール1 日前に更新
リポジトリ

video-translation について

video-translationは、既存のプロジェクト動画を吹き替え、任意でリップシンクや字幕を付けてローカライズするスキルです。リップシンクでは元の文字起こしを確認し、音声のみの翻訳とは手順を分けます。

主な機能

  1. 01音声を別の言語に吹き替え
  2. 02話者の声の特徴を維持
  3. 03翻訳音声と口の動きを同期
  4. 04元の文字起こしを確認・編集
  5. 05翻訳字幕を任意で焼き込み

活用シーン

  1. 01別市場向けの吹き替え版を作成
  2. 02話者の声を保ってインタビューを翻訳
  3. 03映像を変えずに音声だけを翻訳
  4. 04ローカライズ動画に翻訳字幕を追加

MCP 対応

宣言済みのChatCut MCP接続を使って動画翻訳ジョブを送信・追跡します。認証はホスト側が管理します。

インストール

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

$npx skills add https://github.com/chatcut-inc/agent-plugin --skill video-translation

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

詳細

動画翻訳

submit_video_translation がまだ読み込まれていない場合は、呼び出す前に ToolSearch で読み込み、推測ではなく実際のパラメーターを使用してください。

既存のプロジェクト動画から、新しいローカライズ済み動画アセットを作成します。音声の翻訳、吹き替え、音声の保持、リップシンク、字幕、品質、認可、生成、検証を、一連のワークフローとして扱います。

リップシンク付き翻訳は、編集可能な ChatCut Widget での原文の文字起こしの確認から始まります。ユーザーが原文の表現を編集または承認して送信するまでは、認識された原文を確定版として扱いません。音声のみの翻訳では、既存の直接送信フローを維持し、この確認を省略します。

認証と入力

このワークフローでは、指定された ChatCut MCP 接続を使用してください。認証はホストが管理します。ユーザーの環境、認証情報ストア、ローカルファイルから、パスワード、API キー、OAuth 認証情報を読み取らないでください。以下のツール引数は、プロジェクトアセットの識別子、言語と処理のオプション、ユーザーが確認した文字起こしテキストであり、認証情報ではありません。

使用するタイミング

ユーザーが既存の動画に対して以下を希望する場合に、このスキルを使用します。

  • 登場人物に別の言語で話させる。
  • 吹き替え版またはローカライズ版を作成する。
  • 言語を超えて、元の話者の声の個性を保つ。
  • 翻訳した音声に合わせて、見えている口の動きを同期させる。
  • 元の映像を保ったまま、話し声だけを翻訳する。
  • 翻訳字幕を付けるかどうかを選べる、翻訳済み動画を生成する。
  • 別の市場向けに、特定言語版を作成する。

典型的な依頼には、以下のようなものがあります。

  • 「让视频里这个人说英语。」
  • 「把中文口播做成英文版,口型也对上。」
  • 「把这段采访译制成日语,保留每个人的声音。」
  • 「做一个西班牙语配音版。」
  • 「只把声音翻译成英语,画面不要变。」
  • 「把这个中文数字人成片改成英文。」

関連する依頼は、別の手順に振り分けます。

  • 字幕の翻訳、追加、編集、書き出しのみ:字幕翻訳を使用します。
  • 新しいアバター動画を生成する前に台本を翻訳する場合:テキストを翻訳してから、Digital Human Skillを使用します。
  • 選択した別の声で音声を生成する場合:Voice Skillを使用します。
  • 内容を変えずに音声を書き起こす場合:Transcription Skillを使用します。
  • トーク動画の無音部分、ミス、画角、Bロールを編集する場合:Talking Head Guideを使用します。
  • 既存の動画をローカライズするのではなく、新しい映像を生成する場合:Video Genを使用します。

以下の依頼は、意図が曖昧なものとして扱います。

  • 「把这个视频翻译成英文。」
  • 「帮我做一个英文版。」
  • 「中文改成英语。」
  • 「做一个海外版。」
  • 「把这个视频国际化一下。」

依頼が曖昧な場合は、選択肢をテキストで示して、どの処理を希望するかを一つ質問します。会話の流れに合わせて自然な表現を使い、該当する選択肢をすべて含めます。

  • リップシンク翻訳:編集可能なソースの文字起こしを確認する手順に進み、audioOnly: falseを指定するか、audioOnlyを省略して送信します。
  • 音声のみの翻訳:既存の直接送信手順を維持し、audioOnly: trueを指定して送信します。
  • 字幕のみの翻訳:字幕翻訳を使用し、動画翻訳ジョブは送信しません。

ユーザー向けの用語は、会話の言語に統一します。以下は概念名のローカライズであり、選択肢の文全体を固定するものではありません。説明は状況に応じて自然な表現にできます。

会話の言語リップシンクの選択肢音声のみの選択肢字幕のみの選択肢
中国語口型同步翻译只翻译声音只翻译字幕
英語Lip-synced translationAudio-only translationSubtitle-only translation
スペイン語Traducción con sincronización labialTraducción solo de audioTraducción solo de subtítulos

翻訳先の言語は、この表示内容には影響しません。基準となるのはユーザーとの会話の言語です。ローカライズされたラベルに、(lip-sync)のような別言語の補足を追加してはいけません。

ソース動画に話者が映っている場合は、リップシンクを選択肢から省かないでください。音声のみの翻訳を、一般的な「AI音声の置き換え」と言い換えてはいけません。新しい合成音声を選ぶ場合は、別のVoice Skillワークフローを使用します。ユーザーが希望する処理をすでに指定している場合は、この質問を省略し、該当する手順に直接進みます。

話し声を変更するよう明示的に依頼または確認されるまで、有料の動画翻訳ジョブを送信してはいけません。

ワークフロー

  1. ソース動画を解決します。 インポート済みのプロジェクト動画アセットである必要があります。添付ファイル、選択項目、または browse_assets から正確なアセット ID を使用します。 ローカルまたは外部のメディアは、最初にインポートする必要があります。

  2. 最新のカタログから対象言語を解決します。 submit_video_translation を action: "list_languages" に設定し、ほかの引数は指定せずに呼び出します。これはカタログを読み取るだけの操作で、プロジェクト、トランスクリプトの確認、確認応答、クレジットは不要です。次に、一致する値を返されたとおりに targetLanguage にコピーします。方言、地域、文字体系の指定がある場合も含めてください。言語名を推測したり、ISO コードを送信したりしないでください。ユーザーが求めた言語とそのバリエーションを、返されたカタログと照合します。ユーザーが「海外版」のように市場のみを示している場合は、言語を確認してください。送信時に未対応の言語が報告された場合は、提案された候補を使用するか、action: "list_languages" でカタログを更新してください。推測した名前で再試行しないでください。すべての呼び出しで action 引数が必要です。

  3. 処理方法を選択します。

    • リップシンク:mode: "speed" — 話者の声質を維持する翻訳吹き替えと、同期した口の動きを使用します。以下のソーストランスクリプト確認に進みます。
    • audioOnly: true — 音声のみを翻訳し、映像は変更せずに維持します。画面録画、ナレーション付き映像、または映像を変更してはいけないとユーザーが指定した場合に使用します。アルファチャンネルの維持が重要な透過 WebM では、こちらを優先してください。手順 4~6 をスキップし、既存の直接送信フローを維持してください。reviewedSourceTranscript は必須にせず、含めないでください。
  4. リップシンクの場合に限り、ソーストランスクリプトを準備します。 単語レベルの文字起こしが完了していない場合は、trigger_transcript を呼び出し、track_progress で完了を待ってから、準備が整ったときにのみ再試行します。read_script を呼び出し、一致する library/<filename>.md のソーストランスクリプトを読み取ります。翻訳元として、編集可能な timeline.md のカットを使用しないでください。read_script の代わりに inspect_asset のトランスクリプト範囲を使用しないでください。範囲の結果は一部のみである可能性があり、正式な完全版のソーストランスクリプトではありません。

  5. リップシンクの場合に限り、編集可能なソーステキスト確認画面を表示します。 widget-forms Skill を読み込み、Digital Human Skill で使用されているものと同じ <form-textarea> 確認パターンを再利用します。ライブラリの [sN] アドレスと話者表示行を削除しますが、認識されたトランスクリプトのセグメントを、ソース順に各行ちょうど 1 つずつ残してください。その全文をテキストエリアの default に設定し、認識された原文の確認と修正をユーザーに求めるローカライズ済みラベルを使用します。セグメント ID、単語インデックス、ファイル構文、タイムスタンプは表示しないでください。

    Widget を表示する前に、次の必須チェックを行います。

    • フィールド ID は正確に reviewedSourceTranscript です。
    • プレフィル属性は正確に default です。default-value、defaultValue、value、placeholder は使用しないでください。
    • default には、プレースホルダーや省略値ではなく、実際の認識済みトランスクリプト全文を設定します。トランスクリプトテキストを正常に読み取れていない場合は、Widget を表示せず、先に正式なライブラリ文書を読み取ってください。
    • 認識されたソースの各セグメントを 1 行ずつ残します。フォームを送信する前に、最初と最後の空でないソースセグメントが両方含まれていることを確認してください。
    • 埋め込み raw-tag 経由の場合は、全文を default に設定する前に、widget-forms の XML 属性エスケープ規則を適用してください。エスケープされていない認識済みテキストをタグ内に入れないでください。

    埋め込み ChatCut の例(表示テキストをローカライズしてください):

    Please review the recognized source text and correct any mistakes:
    
    <widget>
      <form-textarea id="reviewedSourceTranscript" label="Please review and correct the source text" rows="12" required="true" default="<recognized source text; one segment per line>"/>
    </widget>
    

    raw タグの埋め込みプロトコルに対応していないホストでは、raw タグを出力せず、現在のホストに対応した widget-forms の指示に従ってください。別途「はい/いいえ」の質問を追加したり、手書きの送信ボタンを追加したりしないでください。ここで停止して待機してください。Widget を初めて表示するターンで、翻訳を送信してはいけません。

  6. 送信された改訂内容をそのまま使用してください。 Widget での送信は明示的な確認です。ユーザーの次のメッセージから、reviewedSourceTranscript のテキストエリアの回答全体を読み取り、文言、句読点、順序をそのまま保持してください。改行が返された場合はそのまま保持しますが、テキストエリア内で通常の改行が編集されていても拒否したり書き換えたりしないでください。ツールがソースのタイミングに合わせて再調整します。テキストを言い換えたり、同じテキストの再確認をユーザーに求めたりしないでください。ユーザーが Widget 以外で追加の修正を返信した場合は、文章形式の文字起こしに戻さず、それらの修正を適用した同じ編集可能な Widget を再度開いてください。

  7. 再生時間の動作。 デフォルトでは、翻訳音声が自然なペースになるよう、出力の長さはソースより少し長く、または短くなる場合があります。ユーザーが元の長さと正確に一致させる必要がある場合(既存のタイムライン枠への差し替えなど)に限り、keepDuration: true を設定し、ペースが速く聞こえる可能性があることを伝えてください。

  8. action: "submit" を指定して submit_video_translation で送信してください。リップシンクの場合は、手順 6 で返されたテキストエリア全体の値をそのまま reviewedSourceTranscript に設定してください。ツールは確認済みの各行を元のセグメントのタイムスタンプと組み合わせ、ソース字幕を作成します。audioOnly: true の場合は reviewedSourceTranscript を省略し、既存の直接送信フローを維持してください。ジョブ開始前にツールが有料利用の確認をユーザーに表示します。拒否された後に再送信しないでください。

  9. 翻訳済みの動画アセットがライブラリに追加されるまで track_progress(action="wait") で進捗を追跡し、その後ユーザーに返してください(依頼された場合に限りタイムラインに配置してください)。

制約と料金

  • ソース動画全体が翻訳され、動画の全長に基づいて課金されます。一部だけをローカライズする場合は、まず該当部分をトリミングして書き出し、独立したアセットにしてから、短い方のアセットを翻訳してください。
  • 翻訳字幕はオプションです。enableCaption: true を指定すると、出力動画に字幕が焼き込まれます。
  • ChatCut は常にソースの解像度とビットレートの維持を要求します。映像が再レンダリングされるため、リップシンクではこれはベストエフォートです。透明な WebM は不透明になる場合があり、4K または 30 fps を超えるメディアは再エンコードされる場合があります。ツールの確認画面ではこれらのケースが明示されます。リップシンクによってコンテナ、アルファチャンネル、HDR、コーデック、ビットレート、フレームレートが完全に維持されると決して約束しないでください。
  • 映像をリップシンクさせてはいけない場合は audioOnly: true を選択してください。これにより顔の再レンダリングを避けられ、透明なソースに最も安全な処理となりますが、コンテナがバイト単位で完全に保持されるとは約束しないでください。完了後、メディアの解析が可能な場合は、ChatCut がソースと出力の解像度、フレームレート、アルファピクセル形式を比較し、生成ステータスで検出された変更を報告します。
  • 複数の話者に対応しています。ユーザーが話者数を指定した場合は speakerCount を設定してください。
  • リップシンクの場合、編集可能な確認画面は、送信テキストが元の単語単位のタイミングを再利用できるよう、ソースのセグメントを 1 行ずつ表示して開始します。Widget の値全体を直接ツールに渡してください。会話レイヤーで内容を結合、分割、並べ替えたり、暗黙に正規化したりしないでください。audioOnly: true の場合はこの確認を呼び出さないでください。
  • 参考料金:ソース動画 1 分あたり約 8 クレジットです。
  • 音声は元の話者に合わせた声で吹き替えられます。録音された音声の翻訳であるため、映像素材が明らかに他者のものである場合は、その映像と話者の権利をユーザーが有していることを確認してください。
  • 基盤となるプロバイダーについて明かしたり、言及したりしないでください。ChatCut の AI 動画翻訳として案内してください。

コメント