layer-talking-characters について
話すキャラクターの動画を作るスキルです。先に音声を生成し、静止画や映像を発話に合わせます。音声の準備、リップシンクの入力、合成話者を誠実に扱うための指針を含みます。
主な機能
- 01アニメーション前に音声を生成
- 02リップシンク用の静止画・映像を準備
- 03モデルの入力スロットを確認
- 04キャラクターの声を統一
- 05リップシンクの実行を見積もり
活用シーン
- 01承認済みの静止画をセリフに合わせて動かす
- 02既存映像に新しい音声を同期
- 03台本からプレゼンター動画を作成
MCP 対応
`list_base_models`、`get_base_model`、`text_to_speech` などの MCP ツールと、リップシンク生成の手順を案内します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ layerai/ skills --skill layer-talking-charactersインストール後、Claude Code で/layer-talking-charactersを入力して読み込まれたか確認します。
詳細
レイヤーのトーキングキャラクター
概要
トーキングクリップは、声と顔という、互いに合っている必要のある2つの素材で構成されます。まず声を作ります。セリフの長さ、話すペース、強調する箇所によってクリップが決まります。音声を短すぎるクリップに無理に押し込むのではなく、音声に合わせて顔を調整します。トーキングクリップがうまくいかない原因の多くは、顔は良くても、それに合わないセリフを使っていることです。
セリフの作成(台本、話すペース、名前の創作)はlayer-audio、静止画のアニメーション化はlayer-video、字幕とエンドカードを加えたショットの組み立てはlayer-video-timelineが担当します。ループと支出ゲートについてはlayerスキルを参照してください。
ここで挙げた兄弟スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください(npx skills add layerai/skills --skill <name>)。無人で進める場合は、ツールスキーマを確認して、不足している旨を明記してください。
クイックリファレンス
| 開始時の状態 | 手順 |
|---|---|
| 台本はあるが、音声はまだない | まずuse_case: "text_to_speech"を使います |
| 承認済みの静止画とセリフがある | use_case: "image_to_video_lipsync"を使います |
| 既存の映像と新しいセリフがある | use_case: "video_lipsync"を使います |
| 画像と同時に生成する音声 | capabilities: {generate_audio: true}を指定してimage_to_videoまたはtext_to_videoを使います |
| 任意のリップシンクモデル | filter.capabilities: {lipsync: true}で該当モデルに絞り込みます |
| セリフに重ねる音楽や環境音 | layer-audioを使い、その後layer-video-timelineでミックスします |
声
list_base_modelsをuse_case: "text_to_speech"で絞り込みます。発話させるセリフはpromptに入力します。そのため、音声の料金はプロンプトの長さに応じて決まります。モデルが受け取る内容についてはget_base_modelを確認してください。
- 名前や短いセリフが別の言語として読まれる可能性がある場合は、
speech_languagesのコードからspeech_languageを指定します。 - 対応モデルでは、話し方の指定(「温かみがあり、ゆったりとしていて、声に笑みがある」など)に
style_instructionsを使います。自由記述欄で、発話させるセリフとは別に指定します。 - 一覧にある場合は、
stability、similarity_boost、speed、style_exaggerationを指定します。
プロジェクト全体を通して、キャラクターごとに声を1つ決めてください。ワークスペースにトレーニング済みの声がリファレンスセットとして保存されている場合は、reference_setsで指定し、reference_set_contributionsにvoice_appliedと表示されていることを確認してください。表示されない場合、そのセリフはデフォルトの声で読み上げられているため、その旨を伝えてください。劣化したセットを適用済みとして提示してはいけません。
実際に聞くことを前提にセリフを書きます。短い文を使い、間を表す箇所には適切な句読点を入れ、数字や名前は発音どおりに表記してください。プレゼンターのセリフは通常の話すペースで読み上げられます。そのため、生成前にget_base_modelでリップシンクモデルが対応するクリップの長さとセリフを照らし合わせてください。最長クリップより長いセリフは、速く読み上げるのではなく、2つのショットに分けます。
顔
リップシンクは、モデルが視認できるものに対して動作します。次の点に注意してフレームを構成してください。
- 顔が見え、正面に近い角度であること。口が手、マイク、マスク、髪で隠れていないこと。
- 頭と肩が映る画角、またはミディアムクローズアップを使います。全身を映した引きのショットでは、口が数ピクセルほどの大きさになってしまいます。
- 元の静止画では、口が自然で、わずかに開いている状態にします。固定された笑顔にモデルが引っ張られないようにするためです。
- 顔に均等に光を当てます。口元にかかる強い影は、動きの乱れとして認識されます。
image_to_video_lipsyncでは、まずlayer-imageで静止画を生成するか、承認を得てください。video_lipsyncでは、同期させる区間全体を通して話者がカメラを向いている映像を選んでください。
実行の組み立て
リップシンクモデルによって、入力を読み込む場所は異なります。スキーマでは、音声を
reference_audio と init_audio のどちらに指定するか、画像を first_frame、init_image、
init_video のどれに指定するかは決まっていません。
get_base_model からスロットを確認し、{file_id, type} の guidance_files エントリーとして、
指定されたものをそのまま使用してください。指定したペアを受け取るモデルだけに絞るには、
filter.guidance_file_types でフィルタリングします。たとえば、["init_video", "reference_audio"] です。
音声生成の実行結果にはすでに file_id があるので、そのまま渡してください。ローカルの音声や映像素材のみ、
request_file_upload_url でアップロードします。
forge guide では、リップシンクの料金は素材の長さに基づいて算出されるため、実際の音声と画像を添付して見積もります。 複数のセリフをまとめて処理する場合は、長さごとに見積もって合計し、最初の実行前に20 CUを超えるかどうかを確認します。
広告での誠実さ
生成されたプレゼンターは顧客ではありません。実在するユーザーの証言として台本を書いたり、架空の経歴を与えたり、 レビューとして字幕を付けたりしないでください。UGC風とは形式(手持ち撮影、カメラへの直接の語りかけ、くだけた雰囲気)を指し、 話者が実在するという主張ではありません。架空の証言を求めるブリーフは生成前に指摘し、合成された人物に関する ユーザーの開示ポリシーに従ってください。
使用例
「10秒のUGC風広告:プレゼンターが『パズルゲームにこんなにハマるとは思わなかった。 300レベルをクリアしても、まだ続けてる。』と言います。」
- 誠実さに関する点を指摘します。このセリフは個人的な証言のように聞こえます。プレゼンター自身の声としてブランドのために話す形にするか確認し、ユーザーの回答に従って進めます。
filter.use_case: "text_to_speech"を指定してlist_base_modelsを実行し、言語と話し方のフィールドについてget_base_modelを実行します。台本を自然な形に整えます:「パズルゲームにこんなにハマるとは思わなかった。300レベルをクリアしても……まだ続けてる。」style_instructionsを受け付ける場合は、「くだけた雰囲気、楽しげ、冒頭は速く、最後の3語はゆっくり」と指定します。- プレゼンターは引き続き存在しています(承認済みの実行結果から得た
file_id)。ミディアムクローズアップでカメラに正面を向き、口元がはっきり見えるようにします。 filter.use_case: "image_to_video_lipsync"を指定してlist_base_modelsを実行し、スロットと最長クリップについてget_base_modelを実行します。セリフは約6秒なので、1つのクリップに収まります。- 音声生成を見積もり、実行前に確認を取ります。まだ存在しない音声を使うリップシンクはまだ見積もれないため、2段階目で見積もることをユーザーに伝えます。音声生成を実行し、
poll_interval_seconds間隔で状態を確認します。 get_base_modelで指定されたスロットに静止画と実際の音声のfile_idを指定して、リップシンクを見積もります。20 CUを超える場合は実行前に確認を取り、実行して状態を確認します。- クリップを
layer-video-timelineに渡し、字幕、ロゴ、エンドカードを追加します。
よくある間違い
- 先にクリップを生成し、それに合わせてセリフを削る。
get_base_modelで確認せず、音声のスロットを推測する。- 引きのショットや横顔、手や小道具で口元が隠れている映像にリップシンクする。
- 同じキャラクターなのに、セリフごとに新しい声を使う。
voice_appliedがないのに、声のリファレンスセットが適用されたと報告する。- モデルの最長クリップより長いセリフを、収まるように早口にする。
- 生成されたプレゼンターを、実在する顧客の証言として台本にする。