本文へスキップ

動画の人物を AI で入れ替える方法(画像 1 枚、リクエスト 1 回)

短い動画の人物を、画像 1 枚のキャラクターに差し替える。実際の前後比較、試して分かった制限、1 回の API 呼び出し例。

執筆
Lydia
公開
読了時間
約 12 分
夕暮れのダンススタジオで、黒いホルターネックのジャンプスーツの女性が鏡に向かい、鏡の中にはまったく同じポーズをとる白いリネンシャツ姿のひげの男性が映っている。MiniMax H3 Character Swap の出力。

AI キャラクタースワップは、動画の人物を別のキャラクターに差し替えながら、タイミング、カメラ、動きをそのまま残す手法です。MiniMax H3 Character Swap は 1 回のリクエストで完結します。短い動画、新しいキャラクターの画像 1 枚、誰を入れ替えるかを示す短い言葉を送ると、そのキャラクターが元のテイクを演じる新しいクリップが返ってきます。検出ステップもマスクの作成もありません。動画と画像に登場する実在の人物すべてについて、許可が必要です(下の「同意と肖像」を参照)。ここで使う例は普通のシーンで、このガイドはアダルトコンテンツを扱いません。

顔だけの差し替え(フェイススワップ)とは違います。フェイススワップは元の人物の体、髪、服をそのまま残して顔だけを変えます。キャラクタースワップは顔、髪、服装、体格まで画像のキャラクターに置き換え、動きだけをクリップから引き継ぎます。

入力と出力

入力渡すもの
動画MP4、90 MB まで。使われるのは最初の 15 秒だけです。切れ目のない 1 ショットにしてください。モデルページによると、カットのないテイクが最も安定します。
画像新しいキャラクターの画像 1 枚。写真、3D レンダリング、イラストのどれでも可。JPEG、PNG、WebP、GIF で 10 MB まで。無地の背景の全身画像が最適です。
プロンプト入れ替える相手を指す名詞句だけを書きます。「左の女性」「白いシャツの男性」など(英語で入力)。プラットフォームがモデルの学習に使われた指示文に包んで渡すので、「X を Y に置き換えて」とは書かないでください。空欄ならメインの人物が対象です。
長さ、アスペクト比、解像度長さとアスペクト比はクリップに合わせます。解像度は 480p、540p、768p、1080p。出力は 3〜15 秒です。モデルページには出力に音声が付くと記載されていますが、下のクリップの音声は確認していません。

まずは 480p で試してください。最も安い段階で、1080p に払う前に入れ替えがうまくいくか確認できます。

再現できる例

ここにあるクリップはすべて AI 生成で、登場するのは架空の成人です。どれもモデルページの例で、入力ファイル、プロンプト、シードも載っています。紹介する実行は 768p で作ったものです。下のコードは安く試せるよう 480p を使うので、480p で再実行すると見た目は多少変わります。

ダンススタジオのソロ(「Studio mirror dancer swap」、シード 7)。 元は、無人のスタジオで黒いホルターネックのジャンプスーツの女性が腕を上げ、一回転してカメラに微笑む映像です。参照はリネンシャツのひげの男性で、プロンプトは「the woman in the black halter jumpsuit」です。

スタジオの例によるキャラクタースワップ: 5 秒、768p のクリップで、女性が参照画像の男性に入れ替わる。
無人のダンススタジオで夕日を背に、白いリネンシャツを開けたひげの男性が片腕を上げている。元クリップのダンサーと入れ替わった状態。
スタジオの入れ替え結果のポスターフレーム。

上げた腕と笑顔は結果に反映されています。最初のシード(41)では背景に余分なダンサーが並び、シード 7 では元の映像どおり無人のままでした。人が増えたら別のシードを試してください。

ケーブルカー(「Funicular scarlet jumpsuit swap」、シード 12)。 元は、黒髪でマスタード色のトレンチコートの女性が窓から振り向き、髪を耳にかけて笑う映像です。参照は、短い白金の髪にスカーレットのオフショルダー ジャンプスーツの女性の全身スタジオ写真で、プロンプトは「the woman in the mustard trench coat」です。

短い白金の髪、スカーレットのオフショルダー ジャンプスーツ、黒いヒールの女性の全身スタジオポートレート。キャラクター参照として使用。
参照画像: 全身、無地の背景。
ケーブルカーの例によるキャラクタースワップ: 5 秒、768p のクリップで、トレンチコートの女性がスカーレットのジャンプスーツの女性に入れ替わる。

顔、髪、赤いジャンプスーツは写真のとおりに反映され、髪を耳にかける仕草と笑いはクリップ内で元と同じ位置で起きています。同じ参照画像はスタジオのクリップではうまくいきませんでした。下の「試して分かった制限」を参照してください。

理髪店、描かれた参照と 3D の参照(シード 42、プロンプト「the man in the white shirt」)。 2 つの例は同じ元クリップを使います。白いシャツの男性が立ち上がり、鏡で髪を確かめて出ていく映像です。

2 つの例で使った理髪店の元クリップ(5 秒)。

1 つ目の参照は、茶色のフライトジャケットに緑のカーゴパンツの赤毛の女性を描いたコミックのイラストです。結果(「Barbershop comic heroine swap」)では、同じ赤毛、ジャケット、パンツの実写の女性が登場し、ポスターフレームでは元の男性と同じく鏡の前で手を髪に上げています。

茶色のシアリングカラーのフライトジャケット、黒いトップ、緑のカーゴパンツの赤毛の女性を描いたコミックのイラスト。クリーム色の背景に立つ全身像。
参照その 1: コミックのイラスト。
茶色のフライトジャケットと緑のカーゴパンツの赤毛の女性が、理髪店の鏡の前で片手を髪に上げて立ち、隣に鏡像が映っている。
コミックのヒロインの結果のポスターフレーム。
コミックのヒロインの例によるキャラクタースワップ、5 秒、768p。

2 つ目の参照は、灰色の髪とひげの 3D アニメの男性のレンダリングで、紺のピーコート、クリーム色のニット、茶色の靴の姿です(「Barbershop 3D character swap」)。結果は、灰色の髪、無精ひげ、紺のコートの実写の男性で、ポスターフレームには同じ「手を髪に上げる」仕草が鏡の前に見えます。線画やレンダリングの陰影は引き継がれず、髪、色、服装は引き継がれます。

灰色の髪と短い灰色のひげで微笑む 3D アニメの男性。紺のダブルのピーコートの下にクリーム色のケーブルニット、茶色の靴で、淡い青の背景に立つ全身像。
参照その 2: 3D アニメのキャラクター。
灰色の髪の男性が紺のピーコート姿で、理髪店の鏡の前で片手を髪に上げて立ち、隣に鏡像が映っている。
3D キャラクターの結果のポスターフレーム。
3D キャラクターの例によるキャラクタースワップ、5 秒、768p。

アダプターは効いているのか

私たちのテストでは効いていました。同じ入力で、キャラクタースワップ用アダプターなしだと、元の男性が通行人として背景に再登場し、ソファの 2 人のシーンでは後半で動作が消えました。ありの場合は、指定した人物だけが変わり、動作は元に沿っていました。モデルページは常にアダプター付きで動くので、調整するものはありません。2 人を入れ替えるには、クリップを 2 回走らせ、毎回別の人物を指定します。

コードから呼び出す

ファイルを 2 つアップロードしてから、タスクを 1 つ実行します。Python SDK(pip install spicyapi)をインストールし、SPICY_API_KEY を設定してください。

python
import uuid

from spicyapi import SpicyClient, output_assets

client = SpicyClient()  # reads SPICY_API_KEY from the environment

clip = client.upload_file("./studio-solo.mp4")
character = client.upload_file("./character-full-body.jpg")

task = client.create_task(
    model="minimax/h3-character-swap/video-edit",
    input_data={
        "video_url": clip["uri"],
        "image_url": character["uri"],
        "prompt": "the woman in the black halter jumpsuit",
        "duration_seconds": 5,
        "aspect_ratio": "16:9",
        "resolution": "480p",
        "seed": 7,
    },
    idempotency_key=str(uuid.uuid4()),  # new key per new request
)

final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
    raise RuntimeError(f"{task['taskId']} ended as {final['state']}")
print(output_assets(final)[0]["url"])  # copy the video to your own storage now

アップロード、待機、エラー、再試行についてはタスクガイドと Python SDK リファレンスにまとめてあります。結果の保存期間は限られているので、返された URL に依存する前にメディアの保持と配信を確認してください。Playground ではこの入力がフォームになっています。動画と画像をアップロードし、誰を入れ替えるかを入力して実行します。

料金

料金は 3 つの部分で決まります。出力秒数と、元動画の秒数(開始した秒は切り上げ、最大 15 秒)を解像度ごとの単価で計算し、さらにキャラクター画像の分としてリクエストごとに $0.02 が加わります。

解像度1 秒あたり
480p$0.06
540p$0.09
768p$0.135
1080p$0.27

480p で、5 秒の元動画から 5 秒を出力すると、10 秒 × $0.06 + $0.02 = $0.62。768p なら 10 × $0.135 + $0.02 = $1.37 です。出力は最短 3 秒なので、最も安いテストは 480p で 3 秒のクリップから 3 秒を出力する場合で、6 × $0.06 + $0.02 = $0.38 です。実行前にモデルページのリアルタイム見積もりで合計が分かります。

試して分かった制限

  • 黒いジャンプスーツにスカーレットのジャンプスーツ。 スタジオのクリップ(黒いホルターネックのジャンプスーツの女性)に、上のスカーレットのジャンプスーツの写真を使い、シード 7 と 99 で実行しました。どちらも元の服装が残り、肌の色は参照より明るくなり、顔も写真からずれました。同じ写真をケーブルカーのクリップ(トレンチコート、シード 12)に使うと、1 回目からうまくいきました。原因は切り分けていません。2 つのクリップの違いは、スタジオの女性が参照と同じワンピース型の服装だったことなので、服装が変わらないときは、別の服装の人物が映る元クリップか、別のシードを試してください。
  • 余分な人物。 スタジオの 1 回(シード 41)で、元にいない背景のダンサーが追加されました。別のシードで再実行してください。
  • 1 リクエストにつきキャラクター 1 人で、使われるのは元動画の最初の 15 秒だけです。出力は指定した長さの新しいクリップで、元ファイルの 1 人を塗り替えたものではないので、背景の細部が変わることがあります。公開前に、顔を必ず参照画像と見比べてください。

同意と肖像

自分自身、署名済みの許諾がある出演者、または自分で生成した人物など、処理する権限のある映像と肖像にのみ使用してください。実在の人物を、本人の明確で十分な説明を受けた同意なしに、私的な内容や名誉を傷つける映像に登場させる用途、なりすまし、未成年者が映る映像への使用は禁止です。写真が公開されていることは同意ではなく、同意は別のプロジェクトに引き継がれません。

用途別の選び方

FAQ

無料で試せますか? このモデルに無料枠はありません。最も安いテストは 480p の 3 秒クリップで、上の計算のとおり $0.38 です。

動画は何秒まで? 元動画は最初の 15 秒が使われ、出力は 3〜15 秒です。長さはクリップに合わせてください。

複数の人物を入れ替えられますか? 1 リクエストにつき 1 キャラクターです。クリップを再実行して別の人物を指定するか、Video Character Swap で 1 回の解析から複数の対象を選びます。

元の音声は残りますか? モデルページには出力に音声が付くと記載されていますが、今回のテストでは音声を確認していないので、元の音声と同じとは考えないでください。

漫画やアニメの画像も使えますか? 使えます。そのキャラクターの実写版として登場し、髪、色、服装は引き継がれ、線画や陰影は引き継がれません。

他の言語 English · 한국어 · Español · Русский

実際に試してみる

支払いは実行した分だけ。プランもサブスクリプションもありません。

使用モデル:MiniMax H3 · ByteDance Seedance 2.0 Fast