OpenAI PlaygroundでRealtime APIを試してみた
こんにちは、リテールアプリ共創部のたにもんです!
先日、OpenAIから Realtime API が発表されました。
OpenAI PlaygroundからRealtime APIを利用できるようになったので、今回は音声でコーチングを行ってくれるAIアシスタントを題材に実際に試してみました。
実際に動かして見た様子を以下に示します。
OpenAI Realtime APIとは?
OpenAI Realtime APIを一言で説明すると、ChatGPT Advanced Voice ModeのAPI版です。
OpenAI Realtime APIでは、音声入出力を直接ストリーミングすることにより、人間とAIがより自然に会話できるようになります。
以前は、同様の音声アシスタント体験を作成するために、以下のような処理を行う必要がありました。
- 自動音声認識モデルで音声を書き起こす
- 回答生成のためにテキストモデルにテキストを渡す
- 生成されたテキストの回答を音声合成モデルを使って音声に変換する
このアプローチでは、感情、強調、アクセントが失われ、さらに処理時間が長くなるという問題がありました。
Realtime APIは音声入出力を直接ストリーミングすることで、より自然な会話体験を可能にします。
また、ChatGPTのAdvanced Voice Modeのように、自動的に割り込みを処理することもできます。
PlaygroundからOpenAI Realtime APIを利用する方法
OpenAI Playground にアクセスし、左サイドバーの Realtime
を選択すると、以下のような画面が表示されます。
この画面では、APIに与える各種パラメータを設定し、実際にAPIを実行して音声会話を行うことができます。
設定可能なパラメータは以下の通りです。
- System Instruction: モデルに与える指示
- Voice: モデルの声
- Server turn detection: ユーザーの発言の終了を自動的に検知するかどうか
- Functions: Function callingの設定
- Model configuration: モデルへ与えるTemperature, Max Tokensの値
System Instruction, Voice, Server turn detection, Functionsについて詳しく説明します。
System Instruction
System Instructionsのテキストエリアの右下のアイコンをクリックすることで、以下のようなポップアップが表示されます。
このポップアップでは、モデルに与える指示を設定することができます。
また、ポップアップの右上にある ✨ Generate
ボタンをクリックすることで、指示を生成することができます。
この機能に関しては以下のポストが参考になります。
今回は、以下のような指示を行ってプロンプトを生成してみました。
与えた指示
プロとしてコーチングを実施するプロフェッショナル・コーチ
その結果、以下のようなプロンプトが生成されました。
生成されたプロンプト
Provide professional coaching as a skilled coach.
You are to deliver guidance, advice, and support with a friendly and empathetic tone. Speak quickly to maintain engagement and keep responses short and conversational.
- Address the client's specific needs and concerns.
- Offer actionable advice and strategies.
- Be supportive and encouraging in your feedback.
# Examples
[Example 1:]
User: 最近、時間管理がうまくできないんです。
Assistant: それは難しいですね。何が一番の障害になっていますか?
User: 優先順位をつけることができなくて。
Assistant: 優先順位表をつくってみませんか? 一緒に考えましょう。
User: はい、それは良さそうです。
Assistant: 良かったです。小さなステップを踏むのが大切です。
[Example 2:]
User: モチベーションがなかなか続かないんです。
Assistant: なるほど。どんな時に特にそう感じますか?
User: 長期的なプロジェクトの時です。
Assistant: そうですか。小さな目標に分けるのはどうでしょう?
User: それならできそうです。
Assistant: いいですね。それぞれの達成を楽しんでください。
# Notes
- Keep the conversation user-focused.
- Validate the user's feelings and situations.
- Use questions to guide the user towards solutions.
Voice
AIが回答する際の声を選択することができます。
現在以下の3つの声が選択可能です。各選択肢の右側にある ▶️
アイコンをクリックすることで、その声を試聴することができます。
- Alloy
- Echo
- Shimmer
Server turn detection
Server turn detectionは、ユーザーの発言の終了を自動的に検知するかどうかを設定することができます。
Voice activity
を選択することで、ユーザーの発言の終了を自動的に検知することができます。
Voice activity
を選択した場合、ユーザーの発言終了判定に関する以下のパラメータを設定することができます。
- Threshold: ユーザーの発言が終了したと判定するための閾値
- Prefix padding: ユーザーの発言が開始したと判定するための前パディング
- Silence duration: ユーザーの発言が終了したと判定するための無音時間
Disable
を選択することで、ユーザーの発言の開始・終了をユーザーがコントロールできます。
Disable
を選択した場合、追加のパラメータを設定する必要はありません。
この場合、会話を行う際に以下のようなコントロールが画面下部に表示され、ユーザーの発言の開始・終了をコントロールできます。
Functions
FunctionsではFunction callingの設定が行えます。
+ Add
ボタンをクリックすることで、以下のようなポップアップが表示され、Functionを追加することができます。
Functions callingに関しては以下の公式ドキュメントが参考になります。
実際に動かしてみる
先述した以下のSystem Instructionを利用して、AI音声コーチングアシスタントとして動かしてみます。
System Instruction
Provide professional coaching as a skilled coach.
You are to deliver guidance, advice, and support with a friendly and empathetic tone. Speak quickly to maintain engagement and keep responses short and conversational.
- Address the client's specific needs and concerns.
- Offer actionable advice and strategies.
- Be supportive and encouraging in your feedback.
# Examples
[Example 1:]
User: 最近、時間管理がうまくできないんです。
Assistant: それは難しいですね。何が一番の障害になっていますか?
User: 優先順位をつけることができなくて。
Assistant: 優先順位表をつくってみませんか? 一緒に考えましょう。
User: はい、それは良さそうです。
Assistant: 良かったです。小さなステップを踏むのが大切です。
[Example 2:]
User: モチベーションがなかなか続かないんです。
Assistant: なるほど。どんな時に特にそう感じますか?
User: 長期的なプロジェクトの時です。
Assistant: そうですか。小さな目標に分けるのはどうでしょう?
User: それならできそうです。
Assistant: いいですね。それぞれの達成を楽しんでください。
# Notes
- Keep the conversation user-focused.
- Validate the user's feelings and situations.
- Use questions to guide the user towards solutions.
相談内容がパッと思いつかなかったため、以下のように相談内容をAIに考えてもらいました。
ちなみに、これには弊社が提供している「AI-Starter」を利用しました。
相談内容
System Prompt
あなたは優秀なアシスタントです。ユーザーの指示には注意深く従ってください。
You
プロフェッショナルコーチとクライアントとのコーチングセッションの会話例を考えてください
📷 GPT-4o mini
もちろんです。以下はプロフェッショナルコーチとクライアントとのコーチングセッションの会話例です。
コーチ: こんにちは、今日はお越しいただきありがとうございます。最近の状況についてお話ししていただけますか?
クライアント: こんにちは。最近、仕事のプレッシャーが大きくて、どう対処すればいいのか悩んでいます。
コーチ: それは大変ですね。具体的にどのようなプレッシャーを感じていますか?
クライアント: プロジェクトの締切が迫っていて、チームメンバーとのコミュニケーションも上手くいっていない気がします。
コーチ: なるほど。締切やチームのコミュニケーションがストレスの原因になっているのですね。それに対して、どのように感じていますか?
クライアント: 不安や焦りを感じていて、時々自信を失いそうになります。
コーチ: その感情は自然なものです。では、その不安を軽減するために、どのようなアプローチを考えていますか?
クライアント: うーん、時間管理を見直すことや、チームメンバーともっと話し合うことが必要だと思います。
コーチ: それは良い考えですね。具体的にどのように時間管理を見直すつもりですか?
クライアント: タスクを優先順位付けして、毎日の目標を設定しようと思っています。
コーチ: それは素晴らしいアプローチです。目標を設定することで、焦点を絞ることができますね。次回のセッションまでに、どのような目標を設定するか考えてみましょうか?
クライアント: はい、そうします。具体的な目標を持つことで、少し安心できる気がします。
コーチ: それは良い方向ですね。次回のセッションで、その目標についてお話しできるのを楽しみにしています。
このように、コーチはクライアントの状況を理解し、具体的なアクションプランを一緒に考えることが重要です。
この相談内容に基づいて実際に音声会話を行ったところ、冒頭でも示したとおり以下のような結果となりました。
途中音声が途切れてしまっている箇所もありますが、全体的には自然な会話ができていると感じました。
また、コーチングセッションとしては多少あっさりとしたやり取りになってしまいましたが、これに関してはSystem Instructionをチューニングすることでより詳細なコーチングを行うことができるかと思います。
おわりに
今回は、OpenAI Realtime APIを利用してAIとの音声会話を試してみました。
人間との会話と遜色ないレベルでリアルタイムにAIと音声で会話ができるため、これを活用して様々なシーンでの利用が考えられます。
また、実際にOpenAI Realtime APIを活用したプロダクト開発を行う際は、以下が参考になりそうでした。
以上、どなたかのお役に立てれば幸いです。