テーマ
言語
·1 分で読めます

写真と自分のナレーションからP-Video-2 Pro Referenceで話す動画を作る方法

1枚の人物写真と自分で録音したナレーションから、P-Video-2 Pro Reference APIとkeep_audioを使って、リップシンクした話す動画クリップを作成します。リクエスト形式、料金の見積もり、実際に実行した生成例、制限事項、よくある質問をご紹介します。

写真と自分のナレーションからP-Video-2 Pro Referenceで話す動画を作る方法

商品デモ、コース紹介、ソーシャルクリップを作成している方から、よく次のような依頼があります。「プレゼンターの写真と、すでに録音したナレーションがあります。写真の人物に、その内容を正確に話させてください。」Pruna AIのP-Video-2 Pro Referenceなら、これを1回のAPI呼び出しで実現できます。写真を参照画像として送り、音声ファイルと keep_audio: true を指定すると、モデルが音声トラックを中心に動画を生成し、言葉に合わせて唇や頭の動きを付けます。このガイドでは、正確なリクエスト、料金、そしてこの記事の執筆中に実際に生成したクリップを紹介します。

P-Video-2 Pro Referenceでできること

これはリファレンス・トゥ・ビデオモデルです。すべてをテキストで説明する代わりに、生成の元となる素材を渡します。

  • 参照画像(最大9枚):キャラクターや商品の外観、またはスタイルを指定します。
  • 参照動画(最大3本、各2~15秒、合計15秒):従わせたい動きやシーンを指定します。
  • 音声(最大3ファイル、合計15秒)。
  • 全体を結び付けるテキストプロンプト:人物がどこにいて、何をしているかを指定します。

出力は音声付きの5~15秒のクリップで、480pまたは768p、SpeedまたはCostモードに対応し、アスペクト比は16:9から9:16、または「adaptive」(参照素材に合わせる)を選択できます。画像または動画の参照素材を少なくとも1つ指定する必要があります。

keep_audio: 自分の声、自分の言葉

音声入力には大きく異なる2つの意味があり、keep_audioで切り替えます。

  • keep_audioなし(デフォルト):音声はサンプルとしてのみ使われます。モデルは声や音を模倣しますが、ファイル自体はクリップに組み込まれず、言葉も異なる場合があります。
  • keep_audio: trueを指定し、音声ファイルを1つだけ送る場合サウンドトラックになります。同じ声、同じ言葉で、動画(動きや唇)が音声に合うように生成されます。

トラックの長さと duration の関係は次のとおりです。音声がdurationより短い場合は、音声が先に再生され、残りをモデルが生成します。音声が長い場合は、durationの長さにカットされます。durationとの差が1秒以内の場合は、クリップが音声の長さに従います。そのため、ナレーションに近いdurationを選んでください。keep_audioによって料金が変わることはありません。

料金

クリップの料金は、出力秒数(モードと解像度によって異なります)に加え、各参照画像、参照動画と音声の秒数によって、生成ごとに決まります。最も安い組み合わせは、Costモードの480pです。料金の全ティア表はP-Video-2 Pro Referenceのモデルページに掲載されています。

料金は入力内容によって正確に変わるため、生成前に見積もりを取得してください。見積もりエンドポイントは無料で、ジョブに固定できる quoteId を返します。

curl https://getvibeapi.com/api/media/price \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d @request.json

# 2026年10月22日に、以下のリクエストについて取得した見積もり
# (7秒、480p、Costモード、写真1枚、音声トラック1本、keep_audio):
{"ok":true,"priceUsd":0.165625,"isEstimate":false,"chargeBasis":"quote","quoteId":"mq_…","quoteTtlSeconds":900}

見積もりは上限額です。送信前には参照素材が測定されないため、音声を送信した場合は参照音声の許容範囲である15秒全体など、最大量を前提に計算されます。今回のジョブには、見積もりどおりの金額が正確に請求されました。

手順:写真+ナレーション → 会話するクリップ

1. 公開ファイルを2つ用意する

ポートレート用(鮮明な正面向きのバストアップ写真が最適)と、ナレーション用(MP3またはWAV)の公開HTTPS URLが必要です。今回のテストでは、Nano Banana 2.1で架空のプレゼンターを生成し、gpt-4o-mini-ttsで7.3秒の英語ナレーションを作成しました。どちらも同じAPIキーを使用しています。自分で録音した音声でも同じように利用できます。

2. ジョブを送信する

import os, time, requests

API = "https://getvibeapi.com"
HEADERS = {"Authorization": f"Bearer {os.environ['GETVIBE_API_KEY']}"}

body = {
    "model": "p-video-2-pro-reference",
    "prompt": "参照写真の女性が、居心地のよいベーカリーでカメラに向かって温かく話す。"
              "自然な頭の動きで、唇はナレーションと同期する",
    "opts": {
        "mode": "cost",            # 最も安いモード。「speed」はより高速
        "resolution": "480p",      # または "768p"
        "duration": "7",           # ナレーションの長さ(7.3秒)に近づける
        "aspect_ratio": "16:9",
        "reference_image_urls": ["https://your-cdn.example/presenter.jpg"],
        "reference_audio_urls": ["https://your-cdn.example/voiceover.mp3"],
        "keep_audio": True,        # サンプルではなく、このトラックをサウンドトラックとして使用
    },
}

job = requests.post(f"{API}/api/media/generate", json=body, headers=HEADERS).json()
print(job["jobId"], job["status"], job["priceRub"])

このフィールドが priceRub という名前なのは歴史的な理由によるものです。getvibeapi.comでは、見積もりで返されたものと同じ数値のUSドルを示します。

3. 結果をポーリングする

while True:
    r = requests.get(f"{API}/api/media/jobs/{job['jobId']}", headers=HEADERS).json()
    if r["status"] in ("success", "fail"):
        break
    time.sleep(10)

print(r["status"], r["resultUrls"])

本番のバッチ処理では、ポーリングの代わりにWebhookを使用してください。メディアWebhookを参照してください。結果リンクは約1週間で期限切れになるため、自分のストレージにファイルをコピーしてください。

生成結果

今回のジョブは数分で完了し、ステータスは success でした。結果はMP4で、832×480、7.33秒、音声トラック付きでした。実施したチェックは次のとおりです。

  • 音声は元のものです。クリップのサウンドトラックと元のナレーションをサンプル単位で比較したところ、オフセット0で相関係数は0.99998でした。モデルは音声を別の声で再録音したのではなく、ファイルをそのまま保持していました。
  • 顔が維持されています。1秒、3秒、5秒時点のフレームには、参照写真と同じ女性(髪、イヤリング、緑のリネンシャツ)が映っており、プロンプトどおりベーカリーで、口を動かしながら話しています。
  • 長さはトラックに従います。duration: "7"を指定した7.3秒のナレーションから、7.33秒のクリップが生成されました。これは、1秒以内の場合のルールどおりです。

Costモードの480pは、プレビューや小さなソーシャルフォーマットには十分です。最終版では、プロンプトに納得できた段階で同じリクエストを768pで実行してください。

ヒントと制限

  • keep_audioを使用する場合は、音声ファイルを必ず1つだけ送信してください。2つまたは3つ送ると、明確なエラーとともにリクエストが拒否されます。
  • ナレーションは15秒以内に収めてください。長い台本の場合は複数のクリップに分割して結合します。
  • first_frame_urlやlast_frame_urlを含め、すべての参照画像に料金が発生します。通常は、質のよいポートレート1枚で十分です。
  • プロンプトでは、場所と話し方(「calm, explaining」「smiling, energetic」など)を説明してください。言葉は音声から生成されます。
  • 権利を持つ写真と音声のみを使用してください。本人の同意なく実在の人物になりすますことは避けてください。

テキスト・トゥ・ビデオやイメージ・トゥ・ビデオなど、その他の動画モデルはモデルページに一覧されています。また、1つのAPIで画像、動画、音声を扱う方法では、メディアジョブの一般的な流れを説明しています。リクエストの完全なリファレンスはメディア生成ドキュメントをご覧ください。

活用できる場面

静止画と用意済みのナレーションから作る会話クリップは、言葉が固定され、顔を毎回同じにしたいワークフローに適しています。

  • 製品や機能の発表。10秒の台本を一度録音し、プロンプトだけを変更して、異なる背景の前でプレゼンターに話させます。
  • コースやオンボーディングの導入。レッスンごとにスタジオを予約しなくても、すべてのレッスンで一貫したホストを使用できます。
  • ローカライズ版。別の言語でナレーションを録音または合成し、それに合わせたクリップを生成できます。唇は新しい音声に従います。
  • カスタマーサポート用の短い説明。映画的な動きよりも、言葉の正確さが重要な「Xの方法はこちら」型の短いクリップに適しています。

このモデルでできないことは2つあります。長編アバターツールではないこと(1回の生成は最大15秒)と、既存の動画を編集する方法ではないことです。すでにある映像の見た目を変更する場合は、Kling 3.0 Omni Transformationをご覧ください。

FAQ

自分で録音した音声で写真を話させることはできますか?

はい。写真を reference_image_urls に指定し、自分の録音を reference_audio_urls の唯一の項目として送り、keep_audio: true を指定してください。録音がクリップのサウンドトラックになり、それに合わせて唇が生成されます。

keep_audioを指定しないとどうなりますか?

音声は模倣用のサンプルとしてのみ使用されます。送信したファイルは出力に含まれず、クリップ内の発話も異なる場合があります。

クリップの長さはどのくらいにできますか?

1回の生成につき5~15秒です。参照音声は合計15秒に制限されています。

会話するクリップの料金はいくらですか?

duration、解像度、モード、送信する参照素材によって異なります。生成前に、無料の /api/media/price エンドポイントで正確な金額を取得してください。写真1枚と音声トラック1本を使用した7秒、480p、Costモードのクリップの例は上記に示しています。最新のティアはモデルページで確認できます。

出力にはウォーターマークが入りますか?

今回のクリップにはウォーターマークは見当たりませんでした。

P-Video-2 Pro Reference API写真から話す動画を作成するAPI自分の声で写真から話す動画を作成keep_audioリップシンク動画 APIPruna AI P-VideoGetVibe API

GetVibe APIを無料で試す

1つのOpenAI互換APIでGPT、Claude、Geminiなどを利用できます。カードまたは暗号資産で米ドル払いに対応しています。

関連記事

写真と自分のナレーションからP-Video-2 Pro Referenceで話す動画を作る方法 | GetVibe API