GEMINI LABEN
NANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定ですNANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定です
記事一覧/API / SDK
API / SDK/2026-03-28上級

Lyria 3 Pro API 実装ガイド — テキスト・画像からプロ品質のフルレングス楽曲を生成する

Google DeepMindのLyria 3 Proを使い、テキストや画像からフルレングス楽曲を生成する方法を完全解説。Clip/Pro/RealTimeの使い分け、Interactions API、プロンプト設計、収益化まで。

Lyria 3 ProLyria 3音楽生成Gemini API191AI音楽Python38マルチモーダル24収益化18

取り組みの背景:Lyria 3 Pro で変わる AI 音楽制作

2026年3月、Google DeepMind は Lyria 3 Prolyria-3-pro-preview)を Gemini API のパブリックプレビューとして公開しました。従来の Lyria 3 Clip が最大30秒のクリップ生成に特化していたのに対し、Lyria 3 Pro は約3分のフルレングス楽曲を生成できる初めてのモデルです。

イントロ、ヴァース、コーラス、ブリッジといった楽曲構造を自律的に組み立てる能力を持ち、48kHz ステレオの高品質オーディオを出力します。さらに、テキストだけでなく画像を入力として楽曲のムードを推定するマルチモーダル機能も備えています。

ここではLyria 3 ファミリーの全モデルの違いを整理した上で、Lyria 3 Pro API の基本実装から Interactions API を活用した長尺トラック生成、プロンプトエンジニアリング、エラーハンドリング、そして収益化パターンまでを体系的に解説します。


Lyria 3 ファミリー:3つのモデルの位置づけ

Lyria 3 ファミリーには3つのモデルがあり、それぞれ用途が異なります。

Lyria 3 Clip(lyria-3-clip-preview

  • 最大約30秒の短いクリップを高速生成
  • SNS動画のBGM、効果音、プロトタイピングに最適
  • レスポンスが速く、大量リクエストに向いている
  • 入力: テキスト、画像

Lyria 3 Pro(lyria-3-pro-preview

  • 最大約3分のフルレングス楽曲を生成
  • ヴァース・コーラス・ブリッジなどの楽曲構造を自律的に構成
  • プロ品質のトラック制作、商用利用に適している
  • 入力: テキスト、画像

Lyria RealTime(lyria-realtime-exp

  • 最大10分間の連続ストリーミング音楽生成
  • BPM・密度・スタイルをリアルタイムで制御可能
  • ゲームBGM、インタラクティブ音楽体験に特化
  • WebSocket ベースの双方向通信

用途に応じた使い分けの指針として、短いジングルやSNS向けBGMには Clip、完成度の高い楽曲には Pro、リアルタイム性が求められるインタラクティブ用途には RealTime を選択してください。

Lyria RealTime の詳しい実装方法は「Lyria RealTime APIで始めるリアルタイム音楽生成」で解説しています。


環境準備と基本セットアップ

前提条件

  • Google AI Studio または Google Cloud のアカウント
  • Gemini API キー(Google AI Studio で取得可能)
  • Python 3.10以上
  • google-genai SDK v1.x 以上

SDK のインストール

pip install google-genai

クライアントの初期化

from google import genai
from google.genai import types
 
# クライアントの作成
client = genai.Client(api_key="YOUR_GEMINI_API_KEY")

注意: API キーは環境変数 GEMINI_API_KEY に格納し、コード中にハードコードしないことを推奨します。本番環境では Google Cloud Secret Manager の利用を検討してください。


基本実装:テキストから楽曲を生成する

シンプルな楽曲生成

Lyria 3 Pro を使った最もシンプルな楽曲生成は、generateContent メソッドに response_modalities=["AUDIO", "TEXT"] を指定する方法です。

from google import genai
from google.genai import types
 
client = genai.Client(api_key="YOUR_GEMINI_API_KEY")
 
# テキストプロンプトからフルレングス楽曲を生成
response = client.models.generate_content(
    model="lyria-3-pro-preview",
    contents="穏やかなアコースティックギターのメロディから始まり、"
             "徐々にストリングスが加わって壮大に盛り上がる"
             "映画のエンドロールのような3分間の楽曲。"
             "テンポは BPM 80、キーは C メジャー。",
    config=types.GenerateContentConfig(
        response_modalities=["AUDIO", "TEXT"],
    ),
)
 
# レスポンスの解析
for part in response.parts:
    if part.text is not None:
        # 生成された歌詞や楽曲構造の説明
        print("楽曲情報:", part.text)
    elif part.inline_data is not None:
        # オーディオデータの保存(MP3形式)
        with open("generated_track.mp3", "wb") as f:
            f.write(part.inline_data.data)
        print(f"楽曲を保存しました: generated_track.mp3")
        print(f"MIME タイプ: {part.inline_data.mime_type}")

実行結果の例:

楽曲情報: A gentle acoustic guitar melody in C major at 80 BPM,
building through lush string arrangements to a cinematic crescendo...
楽曲を保存しました: generated_track.mp3
MIME タイプ: audio/mp3

レスポンス構造の詳細

response_modalities"TEXT" を含めると、オーディオデータと共に楽曲の説明テキストが返されます。このテキストには生成された楽曲の構造、使用楽器、ムードなどの情報が含まれます。

"AUDIO" のみを指定した場合はオーディオデータのみが返されますが、デバッグやログ記録の観点から ["AUDIO", "TEXT"] の指定を推奨します。


画像からの楽曲生成:マルチモーダル入力

Lyria 3 Pro の特徴的な機能の一つが、画像から楽曲のムードを推定して音楽を生成するマルチモーダル入力です。

ローカル画像からの生成

import pathlib
from google import genai
from google.genai import types
 
client = genai.Client(api_key="YOUR_GEMINI_API_KEY")
 
# 画像ファイルの読み込み
image_path = pathlib.Path("sunset_beach.jpg")
image_data = image_path.read_bytes()
 
# 画像 + テキストで楽曲を生成
response = client.models.generate_content(
    model="lyria-3-pro-preview",
    contents=[
        types.Part.from_bytes(
            data=image_data,
            mime_type="image/jpeg",
        ),
        "この写真の雰囲気に合うリラックスした "
        "チルアウトミュージックを生成してください。"
        "アンビエントシンセとアコースティックギターを中心に。",
    ],
    config=types.GenerateContentConfig(
        response_modalities=["AUDIO", "TEXT"],
    ),
)
 
# オーディオの保存
for part in response.parts:
    if part.inline_data is not None:
        with open("image_inspired_track.mp3", "wb") as f:
            f.write(part.inline_data.data)
        print("画像インスパイア楽曲を保存しました")

URL 画像からの生成

リモートの画像URLを直接指定することもできます。

response = client.models.generate_content(
    model="lyria-3-pro-preview",
    contents=[
        types.Part.from_uri(
            file_uri="https://example.com/mountain_sunrise.jpg",
            mime_type="image/jpeg",
        ),
        "この風景にふさわしいオーケストラ楽曲を生成",
    ],
    config=types.GenerateContentConfig(
        response_modalities=["AUDIO", "TEXT"],
    ),
)

画像入力は、写真からBGMを自動生成するフォトスライドショーアプリや、ECサイトの商品画像に合わせたBGM自動生成など、クリエイティブな用途で大きな可能性を持っています。

マルチモーダル入力の基礎的なテクニックについては「Gemini API マルチモーダル実践テクニック集」も参考にしてください。


Interactions API:長尺トラックと高度な制御

Interactions API とは

Interactions API は、Gemini モデルやエージェントとの対話を統一的に管理するインターフェースです。Lyria 3 Pro と組み合わせることで、ステートフルなセッション管理長時間実行タスクのハンドリングが可能になります。

通常の generateContent はリクエスト・レスポンスの1往復で完結しますが、Interactions API では複数ターンの対話を通じて楽曲を段階的にリファインできます。

セッションベースの楽曲生成

from google import genai
from google.genai import types
 
client = genai.Client(api_key="YOUR_GEMINI_API_KEY")
 
# Interactions API でセッションを作成
interaction = client.interactions.create(
    model="lyria-3-pro-preview",
    config=types.InteractionConfig(
        response_modalities=["AUDIO", "TEXT"],
    ),
)
 
# 第1ターン:楽曲の方向性を指示
response1 = interaction.send_message(
    "エレクトロニカとジャズを融合した"
    "チルホップトラックを作りたい。"
    "BPM 90、ローファイな質感で。"
)
 
# 生成結果を確認
for part in response1.parts:
    if part.text:
        print("初回生成の情報:", part.text)
    elif part.inline_data:
        with open("draft_v1.mp3", "wb") as f:
            f.write(part.inline_data.data)
 
# 第2ターン:フィードバックに基づくリファインメント
response2 = interaction.send_message(
    "いい感じですが、もう少しサックスのソロパートを"
    "中盤に追加して、終盤はピアノで静かに締めてください。"
)
 
for part in response2.parts:
    if part.inline_data:
        with open("draft_v2.mp3", "wb") as f:
            f.write(part.inline_data.data)
        print("リファイン版を保存しました")

非同期処理による長尺生成

フルレングスの楽曲生成は処理に時間がかかるため、非同期パターンを使えばUXを向上させられます。

import asyncio
from google import genai
from google.genai import types
 
async def generate_track_async(prompt: str, output_path: str):
    """非同期で楽曲を生成し、ファイルに保存する"""
    client = genai.Client(api_key="YOUR_GEMINI_API_KEY")
 
    response = await client.aio.models.generate_content(
        model="lyria-3-pro-preview",
        contents=prompt,
        config=types.GenerateContentConfig(
            response_modalities=["AUDIO", "TEXT"],
        ),
    )
 
    for part in response.parts:
        if part.inline_data is not None:
            with open(output_path, "wb") as f:
                f.write(part.inline_data.data)
            return output_path
 
    return None
 
async def batch_generate():
    """複数トラックを並行生成する"""
    tasks = [
        generate_track_async(
            "明るく元気なポップソング、BPM 120",
            "track_pop.mp3"
        ),
        generate_track_async(
            "ダークなアンビエントシンセウェーブ、BPM 85",
            "track_ambient.mp3"
        ),
        generate_track_async(
            "ジャジーなピアノトリオ、BPM 110",
            "track_jazz.mp3"
        ),
    ]
 
    results = await asyncio.gather(*tasks)
    for path in results:
        if path:
            print(f"生成完了: {path}")
 
# 実行
asyncio.run(batch_generate())

期待される出力:

生成完了: track_pop.mp3
生成完了: track_ambient.mp3
生成完了: track_jazz.mp3

プロンプトエンジニアリング:高品質な楽曲を引き出す技法

Lyria 3 Pro の出力品質は、プロンプトの書き方に大きく左右されます。以下に、高品質な楽曲を生成するためのプロンプト設計パターンを紹介します。

構造化プロンプトの設計

楽曲の品質を最大化するには、以下の要素を明示的に指定します。

structured_prompt = """
ジャンル: シネマティック・オーケストラ
テンポ: BPM 72
キー: D マイナー
ムード: 壮大で感動的、希望に満ちた
 
楽曲構造:
- イントロ (0:00-0:20): ソロチェロのメロディ、静寂の中に響く
- 第1ヴァース (0:20-0:50): ストリングスカルテットが加わり、主題を提示
- ビルドアップ (0:50-1:20): ホルンとティンパニが加わり、徐々にダイナミクスを上げる
- クライマックス (1:20-2:00): フルオーケストラの壮大なサウンド、メインテーマの変奏
- アウトロ (2:00-2:40): ピアノとストリングスで静かに、余韻を残して終わる
 
参考アーティスト: Hans Zimmer, Joe Hisaishi
SynthID ウォーターマーク: 有効
"""
 
response = client.models.generate_content(
    model="lyria-3-pro-preview",
    contents=structured_prompt,
    config=types.GenerateContentConfig(
        response_modalities=["AUDIO", "TEXT"],
    ),
)

ジャンル別のプロンプトテンプレート

Lo-Fi Hip Hop / チルホップ:

Lo-fi hip hop track, BPM 85, vinyl crackle texture,
mellow Rhodes piano chords with jazzy extensions,
laid-back boom-bap drums, ambient rain sounds in background,
warm bass line, study/focus mood

EDM / エレクトロニック:

Progressive house track, BPM 128, key of A minor,
atmospheric pads building over 16 bars,
punchy kick drums with sidechain compression feel,
melodic synth lead in the drop, euphoric breakdown

映画・ゲーム用 BGM:

Fantasy RPG battle theme, BPM 150,
epic orchestral with choir chants,
aggressive string ostinato, brass fanfares,
taiko drums accenting the rhythm,
heroic and intense mood

プロンプトのアンチパターン

以下のようなプロンプトは品質低下の原因になります。

  • 曖昧すぎる指示: 「いい感じの曲を作って」→ ジャンル、テンポ、ムードを具体的に
  • 矛盾する指示: 「静かで壮大なヘビーメタル」→ 一貫したムードを指定する
  • 過度に技術的な指示: 「EQ 3kHz に 2dB ブースト」→ モデルはミキシング指示を理解しない
  • 既存楽曲の再現指示: 著作権の問題があるため、スタイルの参考に留める

プロダクション向けエラーハンドリング

本番環境で Lyria 3 Pro を運用する際に考慮すべきエラーハンドリングパターンを紹介します。

リトライとフォールバック戦略

import time
from google import genai
from google.genai import types
 
class MusicGenerationService:
    """本番向け音楽生成サービス"""
 
    def __init__(self, api_key: str):
        self.client = genai.Client(api_key=api_key)
        self.max_retries = 3
        self.retry_delay = 2  # 秒
 
    def generate_with_retry(
        self,
        prompt: str,
        output_path: str,
        model: str = "lyria-3-pro-preview",
    ) -> dict:
        """リトライ付きの楽曲生成"""
        last_error = None
 
        for attempt in range(self.max_retries):
            try:
                response = self.client.models.generate_content(
                    model=model,
                    contents=prompt,
                    config=types.GenerateContentConfig(
                        response_modalities=["AUDIO", "TEXT"],
                    ),
                )
 
                result = {"text": None, "audio_path": None}
 
                for part in response.parts:
                    if part.text is not None:
                        result["text"] = part.text
                    elif part.inline_data is not None:
                        with open(output_path, "wb") as f:
                            f.write(part.inline_data.data)
                        result["audio_path"] = output_path
 
                if result["audio_path"]:
                    return result
 
                # オーディオが返されなかった場合
                raise ValueError(
                    "レスポンスにオーディオデータが含まれていません"
                )
 
            except Exception as e:
                last_error = e
                print(
                    f"試行 {attempt + 1}/{self.max_retries} 失敗: {e}"
                )
                if attempt < self.max_retries - 1:
                    wait = self.retry_delay * (2 ** attempt)
                    print(f"{wait}秒後にリトライします...")
                    time.sleep(wait)
 
        # 全リトライ失敗時は Clip モデルにフォールバック
        if model == "lyria-3-pro-preview":
            print("Pro モデル失敗 → Clip モデルにフォールバック")
            return self.generate_with_retry(
                prompt, output_path,
                model="lyria-3-clip-preview"
            )
 
        raise RuntimeError(
            f"楽曲生成に失敗しました({self.max_retries}回リトライ後): "
            f"{last_error}"
        )
 
    def generate_with_validation(
        self,
        prompt: str,
        output_path: str,
        min_size_bytes: int = 50000,
    ) -> dict:
        """バリデーション付きの楽曲生成"""
        result = self.generate_with_retry(prompt, output_path)
 
        if result["audio_path"]:
            import os
            file_size = os.path.getsize(result["audio_path"])
            if file_size < min_size_bytes:
                raise ValueError(
                    f"生成されたファイルが小さすぎます "
                    f"({file_size} bytes < {min_size_bytes} bytes)"
                )
            result["file_size"] = file_size
 
        return result
 
# 使用例
service = MusicGenerationService(api_key="YOUR_GEMINI_API_KEY")
result = service.generate_with_validation(
    prompt="ジャズピアノトリオ、BPM 120、スウィング感のある演奏",
    output_path="output/jazz_trio.mp3",
    min_size_bytes=100000,
)
print(f"生成完了: {result}")

SynthID ウォーターマークについて

Lyria 3 で生成されたすべてのオーディオには、Google DeepMind の SynthID 電子透かしが自動的に埋め込まれます。この透かしは人間の耳では聴き取れませんが、専用ツールで検出可能です。

SynthID は以下の目的で使用されます。

  • AI生成コンテンツの識別と追跡
  • 著作権管理と透明性の確保
  • ディープフェイク対策

SynthID を無効化する方法はなく、すべての Lyria 3 出力に自動適用されます。商用利用時にはこの点を利用規約に明記することを推奨します。


Lyria 3 Clip vs Pro:コストとパフォーマンスの比較

プロダクションでの使い分けを判断するために、両モデルの特性を整理します。

生成時間の目安

  • Lyria 3 Clip: 5〜15秒(30秒クリップ)
  • Lyria 3 Pro: 30〜90秒(最大3分の楽曲)

出力品質

  • Lyria 3 Clip: 高品質だが楽曲構造は単純(ループ向き)
  • Lyria 3 Pro: 楽曲全体のアーチ構造(イントロ→展開→クライマックス→アウトロ)を自律生成

適切なユースケースの判断基準:

def select_model(use_case: dict) -> str:
    """ユースケースに応じてモデルを選択する"""
    if use_case.get("duration_needed", 0) <= 30:
        return "lyria-3-clip-preview"
 
    if use_case.get("needs_structure", False):
        return "lyria-3-pro-preview"
 
    if use_case.get("realtime", False):
        return "lyria-realtime-exp"
 
    if use_case.get("high_volume", False):
        # 大量生成はコスト効率の良い Clip を推奨
        return "lyria-3-clip-preview"
 
    return "lyria-3-pro-preview"
 
# 使用例
model = select_model({
    "duration_needed": 180,  # 3分
    "needs_structure": True,
    "high_volume": False,
})
print(f"推奨モデル: {model}")
# 出力: 推奨モデル: lyria-3-pro-preview

収益化パターン:Lyria 3 Pro を活かしたビジネスモデル

AI 音楽生成技術を活用した収益化の具体的なアプローチを紹介します。

1. ストックミュージックライブラリの構築

Lyria 3 Pro で様々なジャンル・ムードの楽曲を大量生成し、ストックミュージックサービスとして提供するモデルです。

# ストックミュージック一括生成の例
genres = [
    {"genre": "Corporate", "prompt": "明るく前向きなコーポレートBGM、BPM 110"},
    {"genre": "Cinematic", "prompt": "映画のトレーラー向け壮大なオーケストラ、BPM 90"},
    {"genre": "Lo-Fi", "prompt": "リラックスしたLo-Fiビート、BPM 80、雨の音入り"},
    {"genre": "Electronic", "prompt": "テクノロジー系動画向けエレクトロニカ、BPM 128"},
]
 
for item in genres:
    result = service.generate_with_validation(
        prompt=item["prompt"],
        output_path=f"stock/{item['genre'].lower()}_001.mp3",
    )
    print(f"{item['genre']}: {result['audio_path']}")

2. 動画制作パイプラインへの統合

Veo 3 で生成した動画に、Lyria 3 Pro で自動的にBGMを付与するパイプラインを構築できます。詳しくは「Veo 3 動画生成API完全ガイド」を参照してください。

3. SaaS プロダクトへの組み込み

Lyria 3 Pro をバックエンドに組み込んだ SaaS アプリケーションの構築も有力な選択肢です。Gemini API を使った SaaS 収益化の戦略については「Gemini API × Stripe で AI サービスを収益化」で詳しく解説しています。


まとめ

Lyria 3 Pro は、AI 音楽生成の実用性を大きく引き上げるモデルです。30秒のクリップ生成から約3分のフルレングス楽曲生成へと進化したことで、商用コンテンツ制作の現場で本格的に活用できるレベルに達しています。

この記事で解説した実装パターンを活かして、ぜひ自分のプロジェクトに Lyria 3 Pro を組み込んでみてください。テキストだけでなく画像からの楽曲生成や、Interactions API を活用した対話的なリファインメントなど、従来の音楽制作ワークフローを大きく変える可能性を秘めています。

AI 音楽制作の技術

シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

API / SDK2026-05-02
個人開発者のための Gemini API 収益化ロードマップ — マルチモーダルを軸にしたアプリ設計と課金導線
Gemini API の最大の武器であるマルチモーダル機能を、個人開発者がどう収益化に直結させるか。アプリ設計から課金導線、Stripe との連携、運用の現場知見までを完全な実装コードで解説します。
API / SDK2026-07-16
Gemini にスクリーンショットを採点させたら、全部78〜85点だった — 絶対スコアを捨ててペア比較に切り替えるまで
Gemini Vision に App Store スクリーンショットを100点満点で採点させると、良い案も崩した案も78〜85点に潰れます。弁別能を実測して絶対スコアを捨て、位置バイアスを除いたペア比較でランキングを作るまでの実装記録です。
API / SDK2026-07-09
Google Sheets API × Gemini API でつくるデータ処理パイプライン — Apps Script 不要の Python 自動化
サービスアカウントを使った Google Sheets API の認証から、Gemini API でのデータ分析・分類・要約まで、Python だけで完結するスプレッドシート AI 自動化パイプラインを解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →