音声対話エージェントとは?
ここではSpeach-to-Speachを実現するAIエージェントのことを音声対話エージェントとします。
これを実現する方法は主に2つあります。
-
OpenAI Realtime API
Speach-to-Speachで特に有名だと思います。この記事のシリーズではこのようなモデルにRAGやハンズオフ(Agentの引き継ぎ)などを持たせる方法などを順次紹介していきます。 -
Chain Model
speach -> (text) -> AI Agent -> (text) -> speach のように一度文字起こししてからAI Agentに処理させて再度音声に変換する方法をChain Modelと言います。こちらは実装は簡単なのですが、一般的に速度が遅いです。
各AI開発フレームワーク・SDKの特徴
音声対話エージェントを開発するために試してみた各フレームワーク/SDKの特徴と感想です。
(こちらは私の感想なので、あまり参考にしないでください。)
-
Mastra
- nextjsとの相性が最高
- まだ発展途上にある感じがする
- プログラムも書きやすく、かなり意識せずに使えるようになっている
- 大規模開発したいならこれ一択
- 公式ドキュメントにはRealtime APIをサポートしていると書いてあるが、私の環境だと動作しなかった。おそらくバグ?
-
OpenAI Agents SDK
- 実装が簡単なのでソースコードをおったらすぐ理解できる
- 実装が簡単な分一番扱いやすい
- OpenAIのLLMしか公式ではサポートがない
- サンプルも十分とは言えない気がする
- 機能の種類が他のものと比べると少ないが最低限欲しいものは全てある
- 簡単なアプリケーションの作成に使えそう?
-
Livekit Agent
- 音声を使ったAIアシスタント・エージェントを作成するならこれ一択
- WebRTCを用いた高速な通信が可能でレスポンスがとてもはやい
- 日本語での文献が少ない
- 公式ドキュメントが比較的わかりやすい(?)
このシリーズではLivekit Agentを使った音声対話エージェントをメインに扱います。
他にもGoogleのADKやvercelのAI SDKなどもあると思うのですが、まだ試していません。ADKはGeminiの音声モデルが扱いやすいと思うのでGeminiを使う場合はこちらでやる方が良いかもしれません。