Upgrade to Pro — share decks privately, control downloads, hide ads and more …

deep dive to voice rag

SatakeYusuke
November 22, 2024
240

deep dive to voice rag

2024/10/2に発表されたVoiceRAG。RealTimeで応答が返ってくることに加え、speech to speechでのRAGが構築出来る代物です。 今回はVoiceRAGへDeepDiveしていきたいと思います。

SatakeYusuke

November 22, 2024
Tweet

Transcript

  1. @fe_js_engineer @fe_js_engineer satyus Yusuke Satake Microsoft Japan Digital Startups &

    ISV Microsoft Evangelist Works • 日本マイクロソフトのスタートアップチームのAzure担当 • 佐竹塾と経営 • 1seki2cho 経営 本発表は個人的な見解であり、所属する会社・組織とは全く関係ありませ んのでご了承ください。 comunity • .NETラボ • PoC部
  2. 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 技術支援 コミュニティ活動な どもあり
  3. Agenda  はじめに – VoiceRAGとは?-  GPT-4o-RealTimeAPIについて  DEMO 

    以前のアプリケーションとの比較  アプリの概要と全体アーキテクチャ  コスト  まとめ
  4. はじめに – VoiceRAG とは ? -  GPT-4o-RealTime API とAzure

    AI Searchを用いたSpeech to SpeechのRAGアー キテクチャ RAGでの会話は応答までに多少なり時間がかかるものとの認識がありましたが、 RealTime APIを使うと0.3秒ぐらいでRAG含めた回答が返ってきます(本当です!
  5. gpt-4o-realtime-previewについて  Azureではバージョン:2024-10-01-previewのみがサポートされています  リージョンはEastUS2, Sweden Centralがサポートされています  現在のレート制限は、1 分あたりの新しい

    Websocket 接続の数として定義されま す。 例えば、1 分あたり 6 要求 (RPM) は、1 分あたり 6 つの新しい接続を意味します。 Websocketの接続にて1分あたり6つの接続が可能
  6. 処理の流れについて © 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.生成された音声をリアルタイムにブラウザか ら出力
  7. © 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編 -
  8. © 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追加の詳細を示すメッセージが含まれます。
  9. やっぱり気になるのがコスト 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倍 景気が良くていいですね