0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Veo 3.1入門 — ネイティブ音声付きAI動画生成をAPIで実装する

0
Last updated at Posted at 2026-03-10

Google Veo 3.1 — 映像×音声同時生成

はじめに

2025年10月、Google は Gemini API に Veo 3.1 を追加しました。AI動画生成モデルが次々とリリースされる中、Veo 3.1 が際立つのはテキストプロンプトから 映像と音声を同時生成 できる点です。ダイアログ(会話)・効果音・環境音まで、プロンプト1つで映像に組み込まれます。

本記事では、Veo 3.1 の主要機能と Python API の実装方法を、公式ドキュメント・Google Developers Blog の情報をもとに解説します。

この記事で学べること

  • Veo 3.1 のネイティブ音声生成の仕組みと制御方法
  • Python SDK を使ったシンプルな実装パターン
  • Scene Extension による長尺動画(60秒超)の生成方法
  • Kling 3.0 / Sora 2 / Seedance 2.0 との比較
  • 料金体系と注意点

対象読者

  • Google AI API を使ったアプリ開発に興味があるエンジニア
  • AI動画生成を実プロダクトに組み込みたい方
  • Veo 3 と Veo 3.1 の違いを把握したい方

前提条件

  • Python 3.9 以上
  • google-genai SDK のインストール(pip install google-genai
  • Gemini API キーまたは Vertex AI の認証情報

TL;DR

  • Veo 3.1(モデルID: veo-3.1-generate-001)はネイティブ音声生成・Scene Extension・参照画像入力を搭載したGoogle最新の動画生成モデル
  • 音声生成はプロンプト記述のみで制御。ダイアログは引用符、効果音は直接記述する
  • Scene Extension で8秒クリップを連結し60秒超の長尺動画を生成できる
  • 料金は動画のみ $0.50/秒、音声付き $0.75/秒(非公式情報、公式確認を推奨)
  • 生成した動画はサーバーから2日後に削除されるため、生成直後のダウンロード処理が必須

Veo 3.1 の概要と Veo 3.0 との違い

Veo 2 → Veo 3.0 → Veo 3.1 機能進化タイムライン

Veo 3.1 は Veo 3.0 と同一のアーキテクチャを基盤としつつ、トレーニングデータの改善と後処理の強化により品質を底上げしたモデルです。Google Developers Blog によると、以下の点で Veo 2 比での改善が報告されています。

項目 Veo 2 Veo 3.0 Veo 3.1
ネイティブ音声生成 なし あり(初搭載) 品質強化版
時間的安定性 ベースライン 改善(定量値は非公開)
キャラクター一貫性 問題あり 参照画像3枚入力対応により大幅改善
物理挙動精度 改善(定量値は非公開)
参照画像入力 なし なし 最大3枚
Scene Extension なし なし 対応
縦型動画(9:16) なし ネイティブ対応

対応解像度と動画長さ

解像度 対応動画長 備考
720p 4秒 / 6秒 / 8秒 デフォルト。Scene Extension で使用
1080p 8秒のみ 参照画像使用時も8秒
4K 8秒のみ 生成時間・料金が高め

アスペクト比は 16:9(横型)と 9:16(縦型・モバイル向け)に対応しています。


セットアップ

SDK インストール

pip install google-genai

認証設定

import os
from google import genai

# Gemini API キーを環境変数から取得
client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])

Vertex AI を使う場合は、ADC(Application Default Credentials)による認証が推奨されています。公式ドキュメント(Vertex AI 認証ガイド)を参照してください。


基本的な動画生成

Veo 3.1 API リクエストフロー

音声なしの基本実装

import time
from google import genai

client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])

# 非同期操作としてリクエスト送信
operation = client.models.generate_videos(
    model="veo-3.1-generate-001",
    prompt="A serene mountain lake at dawn, mist rising from the water, birds flying in the distance",
)

# ポーリングで完了を待機
while not operation.done:
    time.sleep(10)
    operation = client.operations.get(operation)

# 結果の取得とダウンロード
generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("output.mp4")
print("動画を output.mp4 に保存しました")

Veo 3.1 の動画生成は非同期処理です。generate_videos() を呼び出すと operation オブジェクトが返されるため、done フラグが True になるまでポーリングします。

生成時間の目安
公式ドキュメントによると最短11秒〜最長6分(ピーク時)と記載されています。音声ありの場合は音声なしより処理時間が長くなります。


ネイティブ音声生成

Veo 3.1 の最大の特徴が、プロンプトから直接音声を生成できる点です。専用のパラメータは不要で、プロンプトの書き方で制御します。

音声仕様

  • フォーマット: 48kHz ステレオ AAC(詳細仕様は Google の公式技術仕様書で要確認)
  • 映像と音声の同期: プロンプトで記述した通りに映像と音声が同期して出力される
  • 対応コンテンツ: ダイアログ、効果音、環境音

プロンプトの書き方

音声タイプ 記述方法
ダイアログ(会話) 引用符で囲む A woman says, "Welcome aboard."
効果音 直接記述 tires screeching, glass breaking
環境音 直接記述 ambient rain sounds, distant thunder

実装例:ダイアログ付き動画

import time
from google import genai

client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])

# ダイアログを引用符で記述することで音声生成を指示
prompt = """A close up of two researchers examining data on a holographic display.
One of them points to an anomaly and says, "This pattern—it's unlike anything we've seen before."
The other nods slowly and responds, "We need to run this by the team immediately."
Soft ambient lab sounds in the background."""

operation = client.models.generate_videos(
    model="veo-3.1-generate-001",
    prompt=prompt,
)

while not operation.done:
    time.sleep(10)
    operation = client.operations.get(operation)

generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("dialog_output.mp4")

安全フィルターについて
音声生成が安全フィルターによりブロックされる場合があります。ブロックされた際は課金されません。プロンプトの内容を調整して再試行してください。


解像度とアスペクト比の指定

from google import genai
from google.genai import types

client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])

operation = client.models.generate_videos(
    model="veo-3.1-generate-001",
    prompt="A futuristic cityscape at night with neon lights reflecting on wet streets",
    config=types.GenerateVideosConfig(
        resolution="1080p",       # "720p", "1080p", "4k" のいずれか
        aspect_ratio="16:9",      # "16:9" または "9:16"(縦型)
        duration_seconds="8",     # 4 / 6 / 8 秒
    ),
)

while not operation.done:
    time.sleep(10)
    operation = client.operations.get(operation)

generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("hd_output.mp4")

縦型動画(9:16)はショート動画やモバイル向けコンテンツ制作に活用できます。


Scene Extension — 長尺動画の生成

Scene Extension — 8秒クリップを連結して長尺動画を生成する仕組み

Veo 3.1 では1クリップあたりの最大長は8秒ですが、Scene Extension を使って複数クリップを連結し、60秒を超える長尺動画を生成できます。仕組みは、各クリップの末尾1秒を起点として次のクリップを生成することで、映像の継続性を保持します。

import time
from google import genai
from google.genai import types

client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])

def generate_clip(prompt: str, last_frame_image=None) -> bytes:
    """1クリップ(最大8秒)を生成して返す"""
    # 参照画像はコンストラクタ引数で指定する(安全な設定方法)
    config = types.GenerateVideosConfig(
        resolution="720p",
        aspect_ratio="16:9",
        duration_seconds="8",
        reference_images=[last_frame_image] if last_frame_image else None,
    )

    operation = client.models.generate_videos(
        model="veo-3.1-generate-001",
        prompt=prompt,
        config=config,
    )

    while not operation.done:
        time.sleep(10)
        operation = client.operations.get(operation)

    video = operation.response.generated_videos[0]
    client.files.download(file=video.video)
    return video.video

# シーンを連続して生成
scenes = [
    "A lone explorer walks through an ancient forest, dappled sunlight filtering through the canopy",
    "The explorer discovers a hidden waterfall, mist rising from the pool below",
    "She reaches out and touches the cool water, ripples spreading across the surface",
]

clips = []
for i, scene_prompt in enumerate(scenes):
    print(f"シーン {i+1}/{len(scenes)} を生成中...")
    clip = generate_clip(scene_prompt)
    clips.append(clip)

print(f"{len(clips)} クリップの生成が完了しました(合計 {len(clips) * 8} 秒)")

Scene Extension の活用シーン

  • 短編動画(30〜60秒)
  • 製品紹介・プロモーション動画
  • ストーリーボードのプロトタイピング

競合モデルとの比較

2026年3月時点の主要AI動画生成モデルを比較します。

項目 Veo 3.1 Kling 3.0 Sora 2 Seedance 2.0
開発元 Google Kuaishou OpenAI ByteDance
最大解像度 4K 4K/60fps 1080p 1080p
最大動画長 8秒(拡張で60秒+) 15秒 15秒(Plus)/25秒(Pro) 15秒
ネイティブ音声 あり あり あり あり
音声参照入力 なし なし なし あり(最大3ファイル)
参照画像入力 最大3枚 最大9枚+動画3本
強み 映画的品質・リアリズム 人体動作の自然さ・コスパ 物理演算精度 多モーダル制御

使い分けの指針

Veo 3.1 が適している用途

  • 映画・広告に近い高品質な映像が必要な場合
  • 音声(会話・環境音)の自然な統合が重要な場合
  • Google Cloud / Vertex AI エコシステムとの統合

Kling 3.0 が適している用途

  • コストを抑えつつ高品質な動画が必要な場合(参考: 約$0.50/10秒)
  • 人物・キャラクターの動作表現を重視する場合

Seedance 2.0 が適している用途

  • 音声ファイルを参照して動画に組み込みたい場合
  • 大量の参照素材(画像・動画)を組み合わせてコンテンツを制作する場合

料金と利用制限

重要: 以下の料金は複数のサードパーティ情報源から確認した参考値です。公式の最新料金は Vertex AI 料金ページ および Google AI Studio で必ず確認してください。

参考料金(2026年3月時点)

モデル 料金(1秒あたり) 8秒動画の試算
Veo 3.1(動画のみ) 約 $0.50 約 $4.00
Veo 3.1(動画+音声) 約 $0.75 約 $6.00
Veo 3 Fast 約 $0.15 約 $1.20

コンシューマー向けサービスとして、Google AI Pro($19.99/月)で Veo 3 Fast、Google AI Ultra($249.99/月)で Veo 3 フルアクセスも提供されています。

利用制限(Vertex AI)

  • クォータ: プレビュー版は1分あたり10リクエスト、GA版は50リクエスト(ベースモデルごと)
  • 地域制限: EU / UK / CH / MENA 地域では personGeneration パラメータに制約あり

注意点

動画の保持期限

生成した動画はサーバーから 2日後に自動削除 されます。生成直後のダウンロードを自動化する設計が必須です。

# 生成後すぐにローカルに保存する
def generate_and_save(prompt: str, output_path: str) -> str:
    operation = client.models.generate_videos(
        model="veo-3.1-generate-001",
        prompt=prompt,
    )

    while not operation.done:
        time.sleep(10)
        operation = client.operations.get(operation)

    video = operation.response.generated_videos[0]
    client.files.download(file=video.video)
    video.video.save(output_path)

    return output_path

SynthID 電子透かし

Veo 3.1 が生成する全動画には SynthID と呼ばれる不可視の電子透かしが自動付与されます。これは Google がAI生成コンテンツを識別するための仕組みで、視覚的には確認できません。

音声生成のブロック

安全フィルターにより音声生成がブロックされる場合があります。ブロックされた際は課金されません。プロンプトを調整して再試行してください。


まとめ

Veo 3.1 はネイティブ音声生成・Scene Extension・参照画像入力を備えた Google の最新AI動画生成モデルです。公式ドキュメントから確認できる主なポイントを整理します。

  • 音声制御はプロンプト記述のみ: ダイアログは引用符、効果音は直接記述するだけで音声付き動画が生成できます
  • Scene Extension で長尺対応: 8秒クリップを連結して60秒超の動画を構築できます
  • 映像品質はトップクラス: ただしコストは競合比で高め。用途に応じた選択が重要です
  • 2日後削除に注意: 生成直後の自動ダウンロード処理を必ず実装してください

プロトタイピングには Google AI Studio の無料枠を活用し、本番利用では Vertex AI の料金を事前に試算することをお勧めします。


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?