Slide 1

Slide 1 text

VoiceRAGへDeepDive .NETラボ11月 YUSUKE SATAKE

Slide 2

Slide 2 text

@fe_js_engineer @fe_js_engineer satyus Yusuke Satake Microsoft Japan Digital Startups & ISV Microsoft Evangelist Works • 日本マイクロソフトのスタートアップチームのAzure担当 • 佐竹塾と経営 • 1seki2cho 経営 本発表は個人的な見解であり、所属する会社・組織とは全く関係ありませ んのでご了承ください。 comunity • .NETラボ • PoC部

Slide 3

Slide 3 text

Microsoft for Startups Founders Hub Microsoft Products Partner Products Power Platform Microsoft 365 Visual Studio OpenAI GitHub LinkedIn Stripe Dynamics 365 Miro Azure OpenAI Service Azure AI Studio Microsoft Azure 最大 $150K 無償 (約2,100万円) Bubble MongoDB Atlas その他 プロダクト無償枠 Azure 技術支援 コミュニティ活動な どもあり

Slide 4

Slide 4 text

Agenda  はじめに – VoiceRAGとは?-  GPT-4o-RealTimeAPIについて  DEMO  以前のアプリケーションとの比較  アプリの概要と全体アーキテクチャ  コスト  まとめ

Slide 5

Slide 5 text

はじめに – VoiceRAG とは ? -  GPT-4o-RealTime API とAzure AI Searchを用いたSpeech to SpeechのRAGアー キテクチャ RAGでの会話は応答までに多少なり時間がかかるものとの認識がありましたが、 RealTime APIを使うと0.3秒ぐらいでRAG含めた回答が返ってきます(本当です!

Slide 6

Slide 6 text

gpt-4o-realtime-previewについて  2024/10/1にOpenAI社からGPT-4oの中のモデルとして、GPT-4o-realtime- previewがリリースされました。  その次の月にはAzure OpenAI Serviceから使えるようになっています。 (ちゃんと寝て…!!中の人..!!!)

Slide 7

Slide 7 text

gpt-4o-realtime-previewについて  Azureではバージョン:2024-10-01-previewのみがサポートされています  リージョンはEastUS2, Sweden Centralがサポートされています  現在のレート制限は、1 分あたりの新しい Websocket 接続の数として定義されま す。 例えば、1 分あたり 6 要求 (RPM) は、1 分あたり 6 つの新しい接続を意味します。 Websocketの接続にて1分あたり6つの接続が可能

Slide 8

Slide 8 text

さっそくですが、DEMO – 以前の構成 vs VoiceRAG -

Slide 9

Slide 9 text

以前実装したアプリケーションとの比較 処理フローについて 1. Next.jsで構築したアプリケー ションへuserが音声で話しか ける 2. SpeechToTextを使って音声 →テキストへ変換 3. OpenAIへ質問 4. TextToSpeechを使ってテキ スト→音声へ変換

Slide 10

Slide 10 text

以前の構成だとこんな感じのスピード感…

Slide 11

Slide 11 text

VoiceRAGアプリの概要と全体アーキテクチャ

Slide 12

Slide 12 text

VoiceRAGのデモ

Slide 13

Slide 13 text

処理の流れについて © 2023 Microsoft Corporation. All rights reserved  処理フローについて 1.デバイスのマイクで音声入力を取得 2.取得した音声をバックエンドにリアルタイムで 送信 3.Azure OpenAI GPT-4o Realtime APIで入 力音声をテキストに変換 4.Azure AI Searchを使用してナレッジベースか ら関連情報を検索 5.検索結果があればGPT-4o Realtime APIに 送信し、応答音声を生成 6.生成された音声をリアルタイムにブラウザか ら出力

Slide 14

Slide 14 text

APIの処理内容へDeepDive © 2023 Microsoft Corporation. All rights reserved  Request/Responseでコマンドが準備  /realtime へ送られるコマンド

Slide 15

Slide 15 text

© 2023 Microsoft Corporation. All rights reserved リクエスト type 説明 セッション構成 session.update セッション構成 会話セッションの接続全体の動作を構成します。 入力オーディオ input_audio_buffer.append 入力オーディオ server_vad turn_detection共有ユーザー入力バッファにオーディオ データを追加します。 input_audio_buffer.clear 入力オーディオ 現在のオーディオ入力バッファをクリアします。 input_audio_buffer.commit 入力オーディオ ユーザー入力バッファの現在の状態をサブスクライブされた会話にコミットし、次の応答の 情報として含めます。 アイテム管理 履歴を確立したり、音声以外のアイテム情報を含めたりする場合 conversation.item.create アイテム管理 会話に新しい項目を挿入します。 conversation.item.delete アイテム管理 既存の会話からアイテムを削除します conversation.item.truncate アイテム管理 メッセージ内のテキストや音声コンテンツを手動で短縮します。 レスポンス管理 response.create レスポンス管理 未処理の会話入力のモデル処理を開始し、発信者の論理ターンの終了を示します。 response.cancel レスポンス管理 進行中の応答をキャンセルします。 APIの処理内容へDeepDive – request編 -

Slide 16

Slide 16 text

© 2023 Microsoft Corporation. All rights reserved APIの処理内容へDeepDive – response編 - 応答 type 説明 セッション session.created セッション 接続が正常に確立されるとすぐに送信されます。デバッグやログ記録に役立つ接続固有の ID を提供します。 session.updated セッション イベントへの応答として送信されsession.update、セッション構成に加えられた変更を反映します。 発信者アイテム確認 conversation.item.created 発信者アイテム確認 新しい会話項目が会話に挿入されたことを通知します。 conversation.item.deleted 発信者アイテム確認 既存の会話項目が会話から削除されたことを通知します。 conversation.item.truncated 発信者アイテム確認 会話内の既存の項目が切り捨てられたことを通知します。 応答フロー response.created 応答フロー 会話に対して新しい応答が開始されたことを通知します。 response.done 応答フロー 会話の応答生成が完了したことを通知します。 rate_limits.updated 応答フロー 直後に送信されresponse.done、終了したばかりの応答の消費後の更新されたステータスを反映した現在のレート制限情報を提供します。 レスポンス内のアイテムフロー response.output_item.added レスポンス内のアイテムフロー サーバーによって生成された新しい会話アイテムが作成されていることを通知します。 response.output_item.done レスポンス内のアイテムフロー 新しい会話アイテムが会話への追加を完了したことを通知します。 回答項目内のコンテンツフロー response.content_part.added 回答項目内のコンテンツフロー 進行中の応答の会話項目内に新しいコンテンツ部分が作成されていることを通知します。 response.content_part.done 回答項目内のコンテンツフロー 新しく作成されたコンテンツ部分が完了したことを通知します。 response.audio.delta 回答項目内のコンテンツフロー モデルによって生成されたバイナリ オーディオ データ コンテンツ部分に増分更新を提供します。 response.audio.done 回答項目内のコンテンツフロー オーディオ コンテンツ部分の増分更新が完了したことを通知します。 response.audio_transcript.delta 回答項目内のコンテンツフロー モデルによって生成された出力オーディオ コンテンツに関連付けられたオーディオ トランスクリプションの増分更新を提供します。 response.audio_transcript.done 回答項目内のコンテンツフロー 出力オーディオの音声転写の増分更新が完了したことを通知します。 response.text.delta 回答項目内のコンテンツフロー 会話メッセージ項目内のテキスト コンテンツ部分に増分更新を提供します。 response.text.done 回答項目内のコンテンツフロー テキスト コンテンツ部分への増分更新が完了したことを通知します。 response.function_call_arguments.delta 回答項目内のコンテンツフロー 会話内の項目内で表される関数呼び出しの引数に増分更新を提供します。 response.function_call_arguments.done 回答項目内のコンテンツフロー 増分関数呼び出し引数が完了し、累積された引数全体を使用できるようになったことを通知します。 ユーザー入力音声 input_audio_buffer.speech_started ユーザー入力音声 ユーザーの音声の開始が検出されたことを通知します。 input_audio_buffer.speech_stopped ユーザー入力音声 ユーザーの音声の終了が検出されたことを通知します。 conversation.item.input_audio_transcription. completed ユーザー入力音声 ユーザーの入力オーディオ バッファの補足的な書き起こしが利用可能であることを通知します。 conversation.item.input_audio_transcription. failed ユーザー入力音声 入力音声の文字起こしに失敗したことを通知します。 input_audio_buffer.committed ユーザー入力音声 ユーザーのオーディオ入力バッファの現在の状態がサブスクライブされた会話に送信されたことの確認を提供します。 input_audio_buffer.cleared ユーザー入力音声 保留中のユーザー オーディオ入力バッファがクリアされたことを通知します。 その他 error その他 セッションでデータを処理中に問題が発生したことを示します。error追加の詳細を示すメッセージが含まれます。

Slide 17

Slide 17 text

やっぱり気になるのがコスト GPT-4oと比較してみると… 製品 価格(1M tokens) GPT-4o-2024-08-06-Global Text ver Input: ¥383 Cached Input: ¥191 Output: ¥1,534 GPT-4o-Realtime-Preview-Global Text ver Input: ¥767 Output: ¥3,069 GPT-4o-Realtime-Preview-Global Audio ver Input: ¥15,348 Output: ¥30,696 © 2023 Microsoft Corporation. All rights reserved  InputはGPT-4oの40倍  OutputはGPT-4oの20倍 景気が良くていいですね

Slide 18

Slide 18 text

めっちゃ高いけれど…  一方懸念点として現段階ではコストがかなりかかってしまうということです。しかし 上記も近い将来に誰かがなんかええ感じにやってくれると思うので、先行して取 り組むのが良いのかもしれません。  GPT-4-32k (2023/07/06)  GPT-4o (2024/05/13)

Slide 19

Slide 19 text

最後に いかがだったでしょうか。  今回はAzure OpenAI ServiceのRealTimeAPIに焦点を当てた発表でした。  本当に人と変わらない応答速度に、未来を見てワクワクした方は多いのではな いでしょうか。  そろそろ生成AIを組み込んだドラえもんのようなロボットが開発されることを夢見 ております。

Slide 20

Slide 20 text

Thank you!!

Slide 21

Slide 21 text

参考資料  https://zenn.dev/microsoft/articles/azure_realtime_api