video-translation について
video-translationは、動画の音声を翻訳し、吹き替え音声を生成して元の音声トラックと置き換えるスキルです。字幕の時刻に合わせたTTSを使い、翻訳区間外の背景音も残せます。
主な機能
- 01動画と字幕のダウンロード
- 02字幕の文ごとの翻訳
- 03タイムラインに合わせたTTS吹き替え
- 04参照音声によるボイスクローン
- 05吹き替え音声と動画の結合
活用シーン
- 01外国語動画を吹き替えで視聴
- 02動画URLの内容を指定言語に翻訳
- 03翻訳区間外の背景音の保持
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ noizai/ skills --skill video-translationインストール後、Claude Code で/video-translationを入力して読み込まれたか確認します。
同梱ファイルscripts/replace_audio.shscripts/srt_to_duck.py
詳細
動画翻訳
TTS を使用して吹き替え音声を生成し、元の音声トラックを置き換えて、動画の音声を別の言語に翻訳します。
トリガー
- この動画を翻訳して
- この動画を英語に吹き替えて
- 把视频从 X 语译成 Y 语
- 视频翻译
使用例
- ユーザーが外国語の YouTube 動画を見たいものの、母語で聞くことを希望している。
- ユーザーが動画リンクを提示し、音声の言語を変更するよう明示的に依頼している。
ワークフロー
ユーザーから動画の翻訳を依頼された場合:
-
動画と字幕をダウンロードする:
youtube-downloaderスキルを使用して、動画と字幕を SRT 形式でダウンロードします。正しい字幕を取得できるよう、必ずソース言語を指定してください。python path/to/youtube-downloader/scripts/download_video.py "VIDEO_URL" --subtitles --sub-lang <source_lang_code> -o /tmp/video-translation -
字幕を翻訳する: ダウンロードした
.srtファイルを読み込みます。次の固定プロンプトを使用し、内容を一文ずつターゲット言語に翻訳します。SRT のインデックスとタイムスタンプの形式は完全に同じにしてください!翻訳プロンプト:
次の字幕テキストを、
から に翻訳してください。 翻訳したテキストのみを出力してください。説明や注記、インデックス番号は追加しないでください。 翻訳は口語的で自然な響きにし、動画の吹き替えに適したものにしてください。 翻訳したテキストを新しいファイル
translated.srtに保存します。 -
吹き替え音声を生成する:
ttsスキルを使用して、タイムラインに正確に合わせた音声を翻訳済み SRT から生成します。Noiz バックエンドが、各文の長さを元の動画の字幕タイムスタンプに自動的に合わせます。クローン音声の声質と感情を各文で元の話者に正確に合わせるには、元の動画ファイルを
--ref-audio-trackに渡します。TTS エンジンは、各字幕の正確なタイムスタンプで元の音声を自動的に切り出し、対応するセグメントの参照音声として使用します。基本的な
voice_map.jsonを作成します:{ "default": { "target_lang": "<target_lang_code>" } }タイムラインに正確に合わせた音声を生成します:
bash skills/tts/scripts/tts.sh render --srt translated.srt --voice-map voice_map.json --backend noiz --auto-emotion --ref-audio-track original_video.mp4 -o dubbed.wav -
動画の音声を置き換える:
replace_audio.shスクリプトを使用して、元の動画と新しい吹き替え音声を結合します。翻訳されたセグメント以外の元動画の非音声の背景音を残すには、--srtファイルを渡します。bash skills/video-translation/scripts/replace_audio.sh --video original_video.mp4 --audio dubbed.wav --output final_video.mp4 --srt translated.srt -
結果を提示する:
final_video.mp4のファイルパスをユーザーに返します。
入力
- 必須入力:
VIDEO_URL:翻訳する動画の URL。target_language:音声の翻訳先言語。
- 任意入力:
source_language:元動画の言語(自動検出されない場合、または指定がない場合)。reference_audio:動的な元動画の音声トラックの代わりに、ボイスクローニングに使用する特定の音声ファイルまたは URL。
出力
- 成功:音声が置き換えられた最終動画ファイルのパス。
- 失敗:ダウンロード、TTS、音声の置き換えのどれに失敗したかを明記した、わかりやすいエラーメッセージ。
要件
- 依存関係(他のスキル)
- youtube-downloader(crazynomad/skills)— SKILL.md
インストール: crazynomad/skills からskills/youtube-downloaderディレクトリをクローンするかコピーして、skills/フォルダーに配置します。これにより、skills/youtube-downloader/scripts/download_video.pyを利用できるようになります。 - tts(NoizAI/skills)— SKILL.md
このリポジトリにまだない場合は、NoizAI/skills からskills/ttsディレクトリをクローンするかコピーして、skills/フォルダーに配置します。skills/tts/scripts/tts.shと関連スクリプトが存在することを確認してください。
- youtube-downloader(crazynomad/skills)— SKILL.md
- Noiz バックエンド用に
NOIZ_API_KEYが設定されている必要があります。設定されていない場合は、まずhttps://developers.noiz.ai/api-keysで API キーを取得するようユーザーに案内します。ユーザーからキーを受け取ったら、保存するかどうかを尋ねます。同意した場合は、プロジェクトの.envファイルにNOIZ_API_KEY=...を書き込むか更新するか、bash skills/tts/scripts/tts.sh config --set-api-key YOUR_KEYを実行して保存します。 ffmpegがインストールされている必要があります。
制限事項
- ソース動画の言語の字幕(または自動生成字幕)が、プラットフォーム上で利用できる必要があります。
- 非常に長い動画は、翻訳と吹き替えにかなりの時間がかかる場合があります。