1
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?

StrandsAgents と Gemini Live で音声対話ボットを作成する

Posted at

1. はじめに

  • もともとSpeech to Speech 対応のLLMに興味があり、Nova Sonic などを少し触っていた。
  • StrandsAgentsで、Bidirectional Streaming (WebSocketによる双方向通信)がサポートされ(※2025/12時点では正式ではなくまだExperimental)、各社のSpeech to Speech対応のLLM(Nova Sonic/Nova 2 Sonic、OpenAI RealtimeAPI、Gemini Live)を使って簡単に音声対話ボットが作れるとのこと。
  • 今回はその中から、Gemini Liveとの接続について動作検証する。

2. やったこと

  • Google AI Studio で、Geminiを呼び出すためのAPIキーを作成する。
  • StrandsAgentでGemini Live APIを呼び出し、日本語での音声対話ができるボットを作成する。
  • 日本語音声で対話を楽しむ。

3. 構成図

image.png

4. 手順

4.1 Google AI Studio でのAPIキー作成

  • Google AI Studioにて、Geminiを使うためのAPIキーを発行する(発行の手順は以下のサイトなどを参照)。

4.2 StrandsAgentsの作成

環境構築

  • StrandsAgentsの公式手順「Gemini Live [Experimental]」に従って環境構築する。
  • 今回はPC(Windows11)にPython 3.13.5 がインストールされている状態で、venvした上でpip installなどの手順を実施。

Pythonコード

  • 2025/12/22時点では、公式手順のサンプルそのままだとエラーになるので、少しだけ修正した(以下の箇所など)。
誤:from strands.experimental.bidi.models import BidiGeminiLiveModel
正:from strands.experimental.bidi.models.gemini_live import BidiGeminiLiveModel
main-gemini.py
import asyncio

from strands.experimental.bidi import BidiAgent
from strands.experimental.bidi.io import BidiAudioIO, BidiTextIO
from strands.experimental.bidi.models.gemini_live import BidiGeminiLiveModel

async def main() -> None:
    model = BidiGeminiLiveModel(
        model_id="gemini-2.5-flash-native-audio-preview-09-2025",
        provider_config={
            "audio": {
                "voice": "Kore",
            },
        },
        client_config={"api_key": "[Google AI Studioで取得したAPIキー]"},
    )
    # stop_conversation tool allows user to verbally stop agent execution.
    agent = BidiAgent(model=model)

    audio_io = BidiAudioIO()
    text_io = BidiTextIO()
    await agent.run(inputs=[audio_io.input()], outputs=[audio_io.output(), text_io.output()])


if __name__ == "__main__":
    asyncio.run(main())

4.3 動作確認

  • 日本語でやりとりができ、ほぼ遅延なく自然なペースでの会話を行うことができた。NotebookLMで音声形式で要約してくれる時の話し方に近い感じ。
  • このモデル(gemini-2.5-flash-native-audio-preview-09-2025)はまだPreviewということもあり、イントネーションや漢字の読み方などがおかしいところはある。
  • 会話内容が分かるように、ユーザ音声、AI音声の両方を文字化して表示もしてくれる。
  • サンプル録音したものはこちら。

5. 所感

  • LLMの品質について:ちょっと日本がおかしいかも??となることはあるが、結構ノリがよい軽快なトークで、近く実用につながりそうな可能性を感じた。
  • StrandsAgentsについて:Gemini Liveを検証する前に、先にNova 2 Sonicも試したりしてみたが、ほぼmodel名の差し替えだけでLLMを切り替えることができ、便利にできているなと感じた。

6. 参考

  • StrandsAgents公式 Gemini Live接続方式

  • Bedrock(Nova 2 Sonic) 接続

  • OpenAI RealtimeAPI 接続

1
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
1
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?