talking-head について
talking-headは、台本から実写の出演映像と解説グラフィックを組み合わせた動画を作るスキルです。写真と音声、または自撮り動画を素材として、音声生成、ローカルレンダリング、確認まで進められます。
主な機能
- 01出演シーンとモーショングラフィックスの設計
- 02写真と音声、または自撮り動画の利用
- 03音声合成と出演映像の生成
- 04Canvas 2Dによるシーン描画
- 05ローカルレンダリングと動画確認
活用シーン
- 01解説台本から出演動画を制作
- 02動画から人物画像と音声を準備
- 03手順や比較を示すモーショングラフィックスの作成
- 04合成音声・編集・リップシンクの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ iart-ai/ talking-head-skills --skill talking-headインストール後、Claude Code で/talking-headを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
package.jsonpnpm-lock.yamlreferences/workflow.mdscripts/core.mjspipeline.mjsprepare-person.mjsproviders.mjsrender.mjstalking-head.mjstemplates/visuals.mjs詳細
トーキングヘッド動画
ユーザーの台本を、直接語りかける効果がある場面では本人が登場し、それ以外はグラフィックで説明する動画にします。本人の映像を動画に使用します。トーキングヘッド形式で全編を演じるよう希望された場合も、その選択を尊重してください。
ユーザーの出力ディレクトリで作業します。以下の<skill>は、このファイルが含まれるフォルダーを指します。リポジトリとは別にインストールしても動作するよう、依存関係はスキルと一緒に配置されています。
pnpm --dir <skill> install --frozen-lockfile
node <skill>/scripts/talking-head.mjs --help
Node 22 以降、ffmpeg/ffprobe、FAL_KEY、ELEVENLABS_API_KEYが必要です。計画のフィールド、コマンド、復旧方法、プロバイダーの制限については、ワークフローのリファレンスを参照してください。認証情報はローカル環境にのみ保存し、計画や出力のソースコードには決して含めないでください。写真と音声の参照データはfalにアップロードされ、音声サンプルとテキストはElevenLabsに送信されます。
入力と計画
- 2種類の入力方法を提示します。写真+音声(ユーザーの写真1枚以上と、明瞭な音声録音または既存の音声ID)、または自撮り動画(ユーザーの容姿と音声の両方を含むクリップ1本)です。本人確認用に使う動画と、編集せずにそのまま使いたい録画は別物です。前者をBロール編集に回さないでください。
- 新たに録画してもらう場合は、スマートフォンまたはウェブカメラで短い動画を撮影して保存するよう案内します。理想は、1人が自然に話す30~60秒の動画で、顔がはっきり映り、目を開けていて、照明が安定し、BGMや他の話者がいないものです。既存の短い録画も使えますが、音声クローンの品質が低下する可能性があります。このスキルが受け取るのは保存済みの動画ファイルです。カメラ録画用のUIは含まれていません。
- 動画入力には、
prepare-person --video inputs/me.mov --out inputs/personを実行します。これはローカルで処理され、APIキーは不要です。frames.jpgと、フルサイズの候補ポートレートを確認し、最も鮮明なフレームを最初に選びます。再生できる場合は、voice.wavも聞いてください。スクリプトはタイムスタンプに基づいてサンプリングするもので、顔の映り具合は判定しません。まばたき、ぼけ、遮蔽があるフレームは除外してください。他の箇所により適切な素材がある場合は、--frame-timesまたは音声区間を指定します。正確なコマンドとファイルパスについては、ワークフローのリファレンスを参照してください。 - 提供された写真、音声、テキストを使用します。不足している本人素材、または他人の声を使用する許可があるかどうかだけを確認します。既存の音声IDが提供されている場合は、新たなクローンを作成する必要はありません。ユーザーからすでに声の使用許可を得ている場合は、その許可に基づいて使用し、再確認しないでください。
- 1枚目の画像によって服装と撮影環境が決まります。追加の写真は本人らしさの維持に役立ちます。依頼がない限り、顔を変えたり、スタジオで撮影したようなポートレートを勝手に作成したりしないでください。
- 台本ではなくテーマだけが与えられた場合は、まず台本を書きます。カメラに向かって話す部分には、通常、フック、個人的な所感、締めの言葉を含めます。手順、根拠、比較はモーションで説明します。通常、短いオンカメラのセリフは1~3つで十分です。全編を演じる形式にすると、生成する動画が増えて費用も高くなります。
- 各
talkingシーンには、2~11秒程度の短いオンカメラのセリフを1つ入れます。長いセリフは、文または節の切れ目で分割します。ショットの長さは大まかな語数の推定ではなく、実際に測定した音声に基づいて決めます。motionシーンではナレーションと全画面グラフィックを使います。 - 使用する事実、名前、数値、引用は、ユーザーが提供したもの、または台本に記載されたものに限ります。見出しは簡潔にします。依頼があった場合にのみ字幕を付けます。
リファレンスのスキーマに従ってplan.jsonを作成し、ドライランを実行します。ユーザーの予算がすでに決まっている場合はそれに従います。決まっていない場合は、長編動画を生成する前に短いサンプルから始めます。依頼された生成処理は有料ですが、すでに許可されている実行について、別途確認を求める必要はありません。有料のリクエストを、確認なしに再試行することは決してしないでください。
生成
一度クローンを作成するか、既存の音声 ID を使用します。クローンは、音声合成を行う前に ElevenLabs の認証を完了している必要があります。その ID をプランに設定します。新しい runs/<name> ディレクトリに生成します。
node <skill>/scripts/talking-head.mjs generate --plan plan.json --out runs/intro --dry-run
node <skill>/scripts/talking-head.mjs generate --plan plan.json --out runs/intro
スクリプトはすべてのセリフを合成し、実際の長さを確認して、トーキングヘッド映像を生成し、返された映像を文字起こしします。リクエスト ID と結果が保存されます。同じコマンドを再実行すると、それらのリクエストが再開されます。スクリプトや画像を変更した場合は、新しい出力ディレクトリが必要です。リクエストの応答が失われた場合は、状態を削除して別のテイクを購入するのではなく、復旧手順に従ってください。
H3 は ElevenLabs のテイクを、声と話し方の参考として使用します。H3 は独自の音声を作成します。フレーム単位で正確にリップシンクするレンダラーではありません。話者が映るショットでは、H3 の音声を使用してください。 モーションシーンでは ElevenLabs のナレーションを使用します。映像全体に別の音声トラックを重ねたり、話者が映るショットにナレーションを重ねたりしないでください。verification.json を確認してください。差異は、モデルによる追加や省略、または文字起こしの誤りである可能性があります。判断する前に実際のクリップを確認し、テイクを自動的に買い直さないでください。
映像をデザインする
generate は visuals.mjs を出力フォルダーにコピーします。そのファイルを編集してください。初期のアートワークは実行可能なサンプルであり、最終的なクリエイティブブリーフではありません。レンダラーは各フレームで Canvas 2D コンテキストを使い、draw(ctx, scene, time, { width, height, fps }) を呼び出します。シーンの時間はローカルの秒数です。scene.words には計測された発話タイミングが含まれます。
- 話者が映るときは必ず、キーワード、図、ローワーサード、またはフレーム付きのレイアウトなど、意図してデザインした要素を画面に一緒に表示します。ウォーターマークや、字幕として使う文章全体は、そのデザインの代わりにはなりません。
- 顔にオーバーレイを重ねないでください。実際に合成した映像の序盤、中盤、終盤を確認します。顔がデフォルトのローワーサードと重なる場合は、アートワークを移動するかサイズを変更してください。
- 名詞が出るたびにカットするのではなく、論旨に沿って展開します。動きでアイデアを示します。比較、プロセス、増えていくリスト、関係性などです。読むための余裕を確保してください。
- グラフィックは、話者が説明する内容に約 6 フレーム先行させてもかまいません。答えを伏せておく場合は、その言葉に合わせて表示します。トーキングシーンでは、元の TTS のタイミングではなく、返された動画の計測タイミングを使用してください。グラフィックに合わせて音声をずらしてはいけません。
- ブリーフで別の方向性が指定されていない限り、解説用グラフィックには明るく読みやすい画面を優先してください。根拠のない統計や、ありきたりな装飾用ダッシュボードは使わないでください。
- 時間に基づく決定論的な描画を使用します。
draw内では、ネットワーク上のアセット、乱数、または実時間によるアニメーションを使わないでください。環境にはregisterFont(path, family)も用意されています。ホストにない文字を表示する必要がある場合は、最初のフレームで 1 回だけ呼び出し、ローカルフォントを読み込みます。実際の出力サイズでテキストを確認してください。
レンダリングとレビュー
node <skill>/scripts/talking-head.mjs render --manifest runs/intro/film.json
レンダリングはローカルで実行され、プロバイダーへのリクエストを行わずに繰り返せます。各ソースシーンの元の音声を維持したまま、アートワークを加えてシーンをつなぎ合わせます。すべてのシーンについて review/ 内の合成画像を確認し、再生できる環境では film.mp4 を音声付きで再生して、話し方、シーンのつなぎ目、リップシンクを確認してください。静止画像と文字起こしだけでは、それらの品質を確認できません。音声を聞くことも映像を見ることもできない場合は、その制約を明記してください。
MP4、編集可能な visuals.mjs、必要に応じてプランを納品し、要望があれば speech.vtt も納品してください。確認していない文字起こしの差異や、目につく問題があれば伝えてください。公開するサンプルやコミットには、非公開の音声サンプル、プロバイダー URL、認証情報、内部の実行状態を含めないでください。