音声とオーディオ用の GPT-4o Realtime API (プレビュー)
Note
現在、この機能はパブリック プレビュー段階にあります。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
音声とオーディオ用 Azure OpenAI GPT-4o Realtime API は、GPT-4o モデル ファミリの一部であり、低待機時間の "音声入力、音声出力" の会話をサポートします。 GPT-4o オーディオ realtime
API は、リアルタイムで低遅延の会話操作を処理するように設計されており、カスタマー サポート エージェント、音声アシスタント、リアルタイム翻訳ツールなど、ユーザーとモデルの間のライブ対話を含むユース ケースに最適です。
Realtime API のほとんどのユーザーは、WebRTC またはテレフォニー システムを使用するアプリケーションを含め、エンドユーザーからリアルタイムでオーディオを配信して受信する必要があります。 Realtime API はエンド ユーザー デバイスに直接接続するようには設計されておらず、クライアント統合に依存してエンド ユーザーのオーディオ ストリームを終了します。
サポートされているモデル
現在 gpt-4o-realtime-preview
バージョン: 2024-10-01-preview
のみでリアルタイム オーディオがサポートされています。
gpt-4o-realtime-preview
モデルは、米国東部 2 リージョンとスウェーデン中部リージョンのグローバル デプロイで使用できます。
重要
制限付き例外が適用されない場合を除き、システムは、Azure OpenAI Service のサービス固有な製品条件の「不正使用監視のためのデータの使用とアクセス」セクションの説明に従って、プロンプトと入力候補を格納します。 gpt-4o-realtime-preview
API の使用については、修正された不正使用監視では承認されるお客様に対しても、不正使用監視が有効になります。
API のサポート
Realtime API のサポートは、API バージョン 2024-10-01-preview
で最初に追加されました。
Note
API とアーキテクチャの詳細については、GitHub の Azure OpenAI GPT-4o リアルタイム オーディオ リポジトリを参照してください。
リアルタイム オーディオ向けモデルのデプロイ
Azure AI Foundry ポータルで gpt-4o-realtime-preview
モデルをデプロイするには:
- Azure AI Foundry ポータルに移動し、(モデルのデプロイの有無にかかわらず) Azure OpenAI Service リソースが含まれる Azure サブスクリプションを使ってサインインしていることを確認します。
- 左側のペインの [プレイグラウンド] で、[リアルタイム オーディオ] プレイグラウンドを選びます。
- [新しいデプロイの作成] を選んで、デプロイ ウィンドウを開きます。
gpt-4o-realtime-preview
モデルを検索して選択し、[確認] を選択します。- デプロイ ウィザードで、
2024-10-01
モデルのバージョンを選択します。 - ウィザードに従ってモデルのデプロイを完了します。
これで gpt-4o-realtime-preview
モデルをデプロイしたので、Azure AI Foundry ポータルの [リアルタイム オーディオ] プレイグラウンドまたは Realtime API で、リアルタイムにそれを操作できます。
GPT-4o リアルタイム オーディオを使用する
デプロイされた gpt-4o-realtime-preview
モデルと Azure AI Foundry の [リアルタイム オーディオ] プレイグラウンド内でチャットするには、次の手順に従います。
Azure AI Foundry ポータルの Azure OpenAI Service ページに移動します。 Azure OpenAI Service リソースとデプロイされた
gpt-4o-realtime-preview
モデルを持つ Azure サブスクリプションでサインインしていることを確認します。左側のペインの [プレイグラウンド] で、[リアルタイム オーディオ] プレイグラウンドを選びます。
[デプロイメント] ドロップダウンから、デプロイした
gpt-4o-realtime-preview
モデルを選びます。[マイクを有効にする] を選んで、ブラウザーがマイクにアクセスできるようにします。 既にアクセス許可を付与している場合は、このステップをスキップできます。
必要に応じて、[モデルに指示とコンテキストを与える] テキスト ボックスの内容を編集できます。 ふるまいに関する指示と、応答の生成時に参照する必要があるコンテキストをモデルに与えます。 アシスタントのパーソナリティを記述したり、答えるべきことと答えるべきでないことを指示したり、応答のフォーマットを指示したりすることができます。
必要に応じて、しきい値、プレフィックスの埋め込み、無音時間などの設定を変更します。
[聞き取りを開始] を選んでセッションを始めます。 マイクに向かって話してチャットを開始できます。
話すことで、いつでもチャットを中断できます。 [聞き取りを停止する] ボタンを選ぶと、チャットを終了できます。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Node.js (LTS または ESM サポート)。
- 米国東部 2 またはスウェーデン中部リージョンに作成された Azure OpenAI リソース。 利用可能なリージョンに関するページを参照してください。
- 次に、Azure OpenAI リソースを使って
gpt-4o-realtime-preview
モデルをデプロイする必要があります。 詳細については、「Azure OpenAI を使用してリソースを作成し、モデルをデプロイする」を参照してください。
Microsoft Entra ID の前提条件
Microsoft Entra ID で推奨されるキーレス認証の場合、次のことを行う必要があります。
- Microsoft Entra ID でのキーレス認証に使われる Azure CLI をインストールします。
- ユーザー アカウントに
Cognitive Services User
ロールを割り当てます。 Azure portal の [アクセス制御 (IAM)]>[ロールの割り当ての追加] で、ロールを割り当てることができます。
リアルタイム オーディオ向けモデルのデプロイ
Azure AI Foundry ポータルで gpt-4o-realtime-preview
モデルをデプロイするには:
- Azure AI Foundry ポータルに移動し、(モデルのデプロイの有無にかかわらず) Azure OpenAI Service リソースが含まれる Azure サブスクリプションを使ってサインインしていることを確認します。
- 左側のペインの [プレイグラウンド] で、[リアルタイム オーディオ] プレイグラウンドを選びます。
- [新しいデプロイの作成] を選んで、デプロイ ウィンドウを開きます。
gpt-4o-realtime-preview
モデルを検索して選択し、[確認] を選択します。- デプロイ ウィザードで、
2024-10-01
モデルのバージョンを選択します。 - ウィザードに従ってモデルのデプロイを完了します。
これで gpt-4o-realtime-preview
モデルをデプロイしたので、Azure AI Foundry ポータルの [リアルタイム オーディオ] プレイグラウンドまたは Realtime API で、リアルタイムにそれを操作できます。
設定
アプリケーションを含める新しいフォルダー
realtime-audio-quickstart
を作成し、次のコマンドを使用してそのフォルダー内で Visual Studio Code を開きます。mkdir realtime-audio-quickstart && code realtime-audio-quickstart
次のコマンドで
package.json
を作成します。npm init -y
次のコマンドを使用して、
package.json
を ECMAScript に更新します。npm pkg set type=module
次を使って、JavaScript 用のリアルタイム オーディオ クライアント ライブラリをインストールします。
npm install https://github.com/Azure-Samples/aoai-realtime-audio-sdk/releases/download/js/v0.5.2/rt-client-0.5.2.tgz
Microsoft Entra ID で推奨されるキーレス認証の場合、次を使って
@azure/identity
パッケージをインストールします。npm install @azure/identity
リソース情報の取得
変数名 | 値 |
---|---|
AZURE_OPENAI_ENDPOINT |
この値は、Azure portal からリソースを調べる際の キーとエンドポイント セクションにあります。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
この値は、モデルのデプロイ時にデプロイに対して選択したカスタム名に対応します。 この値は、Azure portal の [リソース管理]>[モデル デプロイ] にあります。 |
OPENAI_API_VERSION |
API バージョンの詳細を参照してください。 |
注意事項
SDK で推奨されるキーレス認証を使用するには、AZURE_OPENAI_API_KEY
環境変数が設定されていないことを確認します。
オーディオ出力のテキスト
次のコードを使用して
text-in-audio-out.js
ファイルを作成します。import { DefaultAzureCredential } from "@azure/identity"; import { LowLevelRTClient } from "rt-client"; import dotenv from "dotenv"; dotenv.config(); async function text_in_audio_out() { // Set environment variables or edit the corresponding values here. const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "yourEndpoint"; const deployment = "gpt-4o-realtime-preview"; if (!endpoint || !deployment) { throw new Error("You didn't set the environment variables."); } const client = new LowLevelRTClient(new URL(endpoint), new DefaultAzureCredential(), { deployment: deployment }); try { await client.send({ type: "response.create", response: { modalities: ["audio", "text"], instructions: "Please assist the user." } }); for await (const message of client.messages()) { switch (message.type) { case "response.done": { break; } case "error": { console.error(message.error); break; } case "response.audio_transcript.delta": { console.log(`Received text delta: ${message.delta}`); break; } case "response.audio.delta": { const buffer = Buffer.from(message.delta, "base64"); console.log(`Received ${buffer.length} bytes of audio data.`); break; } } if (message.type === "response.done" || message.type === "error") { break; } } } finally { client.close(); } } await text_in_audio_out();
次のコマンドを使用して Azure にサインインします。
az login
JavaScript ファイルを実行します。
node text-in-audio-out.js
応答が返されるまで少し時間がかかります。
出力
このスクリプトは、モデルから応答を取得して、受け取ったトランスクリプトとオーディオ データを出力します。
出力は次のようになります。
Received text delta: Hello
Received text delta: !
Received text delta: How
Received text delta: can
Received text delta: I
Received 4800 bytes of audio data.
Received 7200 bytes of audio data.
Received text delta: help
Received 12000 bytes of audio data.
Received text delta: you
Received text delta: today
Received text delta: ?
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 24000 bytes of audio data.
Web アプリケーションのサンプル
GitHub にある JavaScript の Web サンプルでは、GPT-4o Realtime API を使ってモデルとリアルタイムで対話する方法が示されています。 サンプル コードには、ユーザーのマイクからオーディオをキャプチャし、処理のためにモデルに送信する単純な Web インターフェイスが含まれています。 モデルはテキストとオーディオで応答し、サンプル コードは Web インターフェイスでレンダリングされます。
次の手順に従って、サンプル コードをコンピューター上でローカルに実行できます。 最新の手順については、GitHub の リポジトリを参照してください。
Node.js がインストールされていない場合は、Node.js の LTS バージョンをダウンロードしてインストールします。
ローカル コンピューターにリポジトリを複製します。
git clone https://github.com/Azure-Samples/aoai-realtime-audio-sdk.git
お使いのコード エディターで
javascript/samples/web
フォルダ―を開きます。cd ./javascript/samples
download-pkg.ps1
またはdownload-pkg.sh
を実行して、必要なパッケージをダウンロードします。./javascript/samples
フォルダーからweb
フォルダーに移動します。cd ./web
npm install
を実行して、パッケージの依存関係をインストールします。npm run dev
を実行して Web サーバーを起動し、必要に応じてファイアウォールのアクセス許可プロンプトに移動します。ブラウザーのコンソール出力 (
http://localhost:5173/
など) から、指定されたいずれかの URI に移動します。Web インターフェイスで次の情報を入力します。
- エンドポイント: Azure OpenAI リソースのリソース エンドポイント。
/realtime
パスを追加する必要はありません。 構造の一例としては、https://my-azure-openai-resource-from-portal.openai.azure.com
が挙げられます。 - API キー: Azure OpenAI リソースに対応する API キー。
- デプロイ: 前のセクションでデプロイした
gpt-4o-realtime-preview
モデルの名前。 - システム メッセージ: 必要に応じて、"You always talk like a friendly pirate." などのシステム メッセージを提供できます。
- 温度: 必要に応じて、カスタム温度を指定できます。
- 音声: 必要に応じて、音声を選択できます。
- エンドポイント: Azure OpenAI リソースのリソース エンドポイント。
[記録] ボタンを選択してセッションを開始します。 マイクの使用許可を求められた場合は許可します。
メイン出力に
<< Session Started >>
メッセージが表示されます。 その後、マイクに向かって話すとチャットを開始できます。話すことで、いつでもチャットを中断できます。 [停止] ボタンを選択すると、チャットを終了できます。
前提条件
- Azure サブスクリプション。 無料で作成できます。
- Python 3.8 以降のバージョン。 Python 3.10 以降を使用することをお勧めしますが、少なくとも Python 3.8 が必要です。 適切なバージョンの Python がインストールされていない場合は、オペレーティング システムへの Python のインストールの最も簡単な方法として、VS Code Python チュートリアルの手順に従うことができます。
- 米国東部 2 またはスウェーデン中部リージョンに作成された Azure OpenAI リソース。 利用可能なリージョンに関するページを参照してください。
- 次に、Azure OpenAI リソースを使って
gpt-4o-realtime-preview
モデルをデプロイする必要があります。 詳細については、「Azure OpenAI を使用してリソースを作成し、モデルをデプロイする」を参照してください。
Microsoft Entra ID の前提条件
Microsoft Entra ID で推奨されるキーレス認証の場合、次のことを行う必要があります。
- Microsoft Entra ID でのキーレス認証に使われる Azure CLI をインストールします。
- ユーザー アカウントに
Cognitive Services User
ロールを割り当てます。 Azure portal の [アクセス制御 (IAM)]>[ロールの割り当ての追加] で、ロールを割り当てることができます。
リアルタイム オーディオ向けモデルのデプロイ
Azure AI Foundry ポータルで gpt-4o-realtime-preview
モデルをデプロイするには:
- Azure AI Foundry ポータルに移動し、(モデルのデプロイの有無にかかわらず) Azure OpenAI Service リソースが含まれる Azure サブスクリプションを使ってサインインしていることを確認します。
- 左側のペインの [プレイグラウンド] で、[リアルタイム オーディオ] プレイグラウンドを選びます。
- [新しいデプロイの作成] を選んで、デプロイ ウィンドウを開きます。
gpt-4o-realtime-preview
モデルを検索して選択し、[確認] を選択します。- デプロイ ウィザードで、
2024-10-01
モデルのバージョンを選択します。 - ウィザードに従ってモデルのデプロイを完了します。
これで gpt-4o-realtime-preview
モデルをデプロイしたので、Azure AI Foundry ポータルの [リアルタイム オーディオ] プレイグラウンドまたは Realtime API で、リアルタイムにそれを操作できます。
設定
アプリケーションを含める新しいフォルダー
realtime-audio-quickstart
を作成し、次のコマンドを使用してそのフォルダー内で Visual Studio Code を開きます。mkdir realtime-audio-quickstart && code realtime-audio-quickstart
仮想環境を作成します。 Python 3.10 以降が既にインストールされている場合は、次のコマンドを使用して仮想環境を作成できます:
Python 環境をアクティブ化するということは、コマンド ラインから
python
またはpip
を実行する際に、アプリケーションの.venv
フォルダーに含まれている Python インタープリターを使用するということを意味します。deactivate
コマンドを使用して Python 仮想環境を終了し、必要に応じて、それを後で再アクティブ化できます。ヒント
新しい Python 環境を作成してアクティブにし、このチュートリアルに必要なパッケージのインストールに使うことをお勧めします。 グローバルな Python インストールにパッケージをインストールしないでください。 Python パッケージをインストールするときは、常に仮想または Conda 環境を使う必要があります。そうしないと、Python のグローバル インストールが損なわれる可能性があります。
次を使って、Python 用のリアルタイム オーディオ クライアント ライブラリをインストールします。
pip install "https://github.com/Azure-Samples/aoai-realtime-audio-sdk/releases/download/py%2Fv0.5.3/rtclient-0.5.3.tar.gz"
Microsoft Entra ID で推奨されるキーレス認証の場合、次を使って
azure-identity
パッケージをインストールします。pip install azure-identity
リソース情報の取得
変数名 | 値 |
---|---|
AZURE_OPENAI_ENDPOINT |
この値は、Azure portal からリソースを調べる際の キーとエンドポイント セクションにあります。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
この値は、モデルのデプロイ時にデプロイに対して選択したカスタム名に対応します。 この値は、Azure portal の [リソース管理]>[モデル デプロイ] にあります。 |
OPENAI_API_VERSION |
API バージョンの詳細を参照してください。 |
オーディオ出力のテキスト
次のコードを使用して
text-in-audio-out.py
ファイルを作成します。import base64 import asyncio from azure.identity.aio import DefaultAzureCredential from rtclient import ( ResponseCreateMessage, RTLowLevelClient, ResponseCreateParams ) # Set environment variables or edit the corresponding values here. endpoint = os.environ["AZURE_OPENAI_ENDPOINT"] deployment = "gpt-4o-realtime-preview" async def text_in_audio_out(): async with RTLowLevelClient( url=endpoint, azure_deployment=deployment, token_credential=DefaultAzureCredential(), ) as client: await client.send( ResponseCreateMessage( response=ResponseCreateParams( modalities={"audio", "text"}, instructions="Please assist the user." ) ) ) done = False while not done: message = await client.recv() match message.type: case "response.done": done = True case "error": done = True print(message.error) case "response.audio_transcript.delta": print(f"Received text delta: {message.delta}") case "response.audio.delta": buffer = base64.b64decode(message.delta) print(f"Received {len(buffer)} bytes of audio data.") case _: pass async def main(): await text_in_audio_out() asyncio.run(main())
Python ファイルを実行します。
python text-in-audio-out.py
応答が返されるまで少し時間がかかります。
出力
このスクリプトは、モデルから応答を取得して、受け取ったトランスクリプトとオーディオ データを出力します。
出力は次のようになります。
Received text delta: Hello
Received text delta: !
Received text delta: How
Received 4800 bytes of audio data.
Received 7200 bytes of audio data.
Received text delta: can
Received 12000 bytes of audio data.
Received text delta: I
Received text delta: assist
Received text delta: you
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received text delta: today
Received text delta: ?
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 28800 bytes of audio data.
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Node.js (LTS または ESM サポート)。
- グローバルにインストールされた TypeScript。
- 米国東部 2 またはスウェーデン中部リージョンに作成された Azure OpenAI リソース。 利用可能なリージョンに関するページを参照してください。
- 次に、Azure OpenAI リソースを使って
gpt-4o-realtime-preview
モデルをデプロイする必要があります。 詳細については、「Azure OpenAI を使用してリソースを作成し、モデルをデプロイする」を参照してください。
Microsoft Entra ID の前提条件
Microsoft Entra ID で推奨されるキーレス認証の場合、次のことを行う必要があります。
- Microsoft Entra ID でのキーレス認証に使われる Azure CLI をインストールします。
- ユーザー アカウントに
Cognitive Services User
ロールを割り当てます。 Azure portal の [アクセス制御 (IAM)]>[ロールの割り当ての追加] で、ロールを割り当てることができます。
リアルタイム オーディオ向けモデルのデプロイ
Azure AI Foundry ポータルで gpt-4o-realtime-preview
モデルをデプロイするには:
- Azure AI Foundry ポータルに移動し、(モデルのデプロイの有無にかかわらず) Azure OpenAI Service リソースが含まれる Azure サブスクリプションを使ってサインインしていることを確認します。
- 左側のペインの [プレイグラウンド] で、[リアルタイム オーディオ] プレイグラウンドを選びます。
- [新しいデプロイの作成] を選んで、デプロイ ウィンドウを開きます。
gpt-4o-realtime-preview
モデルを検索して選択し、[確認] を選択します。- デプロイ ウィザードで、
2024-10-01
モデルのバージョンを選択します。 - ウィザードに従ってモデルのデプロイを完了します。
これで gpt-4o-realtime-preview
モデルをデプロイしたので、Azure AI Foundry ポータルの [リアルタイム オーディオ] プレイグラウンドまたは Realtime API で、リアルタイムにそれを操作できます。
設定
アプリケーションを含める新しいフォルダー
realtime-audio-quickstart
を作成し、次のコマンドを使用してそのフォルダー内で Visual Studio Code を開きます。mkdir realtime-audio-quickstart && code realtime-audio-quickstart
次のコマンドで
package.json
を作成します。npm init -y
次のコマンドを使用して、
package.json
を ECMAScript に更新します。npm pkg set type=module
次を使って、JavaScript 用のリアルタイム オーディオ クライアント ライブラリをインストールします。
npm install https://github.com/Azure-Samples/aoai-realtime-audio-sdk/releases/download/js/v0.5.2/rt-client-0.5.2.tgz
Microsoft Entra ID で推奨されるキーレス認証の場合、次を使って
@azure/identity
パッケージをインストールします。npm install @azure/identity
リソース情報の取得
変数名 | 値 |
---|---|
AZURE_OPENAI_ENDPOINT |
この値は、Azure portal からリソースを調べる際の キーとエンドポイント セクションにあります。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
この値は、モデルのデプロイ時にデプロイに対して選択したカスタム名に対応します。 この値は、Azure portal の [リソース管理]>[モデル デプロイ] にあります。 |
OPENAI_API_VERSION |
API バージョンの詳細を参照してください。 |
注意事項
SDK で推奨されるキーレス認証を使用するには、AZURE_OPENAI_API_KEY
環境変数が設定されていないことを確認します。
オーディオ出力のテキスト
次のコードを使用して
text-in-audio-out.ts
ファイルを作成します。import { DefaultAzureCredential } from "@azure/identity"; import { LowLevelRTClient } from "rt-client"; import dotenv from "dotenv"; dotenv.config(); async function text_in_audio_out() { // Set environment variables or edit the corresponding values here. const endpoint: string = process.env["AZURE_OPENAI_ENDPOINT"] || "yourEndpoint"; const deployment = "gpt-4o-realtime-preview"; if (!endpoint || !deployment) { throw new Error("You didn't set the environment variables."); } const client = new LowLevelRTClient( new URL(endpoint), new DefaultAzureCredential(), {deployment: deployment} ); try { await client.send({ type: "response.create", response: { modalities: ["audio", "text"], instructions: "Please assist the user." } }); for await (const message of client.messages()) { switch (message.type) { case "response.done": { break; } case "error": { console.error(message.error); break; } case "response.audio_transcript.delta": { console.log(`Received text delta: ${message.delta}`); break; } case "response.audio.delta": { const buffer = Buffer.from(message.delta, "base64"); console.log(`Received ${buffer.length} bytes of audio data.`); break; } } if (message.type === "response.done" || message.type === "error") { break; } } } finally { client.close(); } } await text_in_audio_out();
TypeScript コードをトランスパイルするために
tsconfig.json
ファイルを作成して、ECMAScript 向けの次のコードをコピーします。{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }
TypeScript から JavaScript にトランスパイルします。
tsc
次のコマンドを使用して Azure にサインインします。
az login
次のコマンドを使用して、コードを実行します。
node text-in-audio-out.js
応答が返されるまで少し時間がかかります。
出力
このスクリプトは、モデルから応答を取得して、受け取ったトランスクリプトとオーディオ データを出力します。
出力は次のようになります。
Received text delta: Hello
Received text delta: !
Received text delta: How
Received text delta: can
Received text delta: I
Received 4800 bytes of audio data.
Received 7200 bytes of audio data.
Received text delta: help
Received 12000 bytes of audio data.
Received text delta: you
Received text delta: today
Received text delta: ?
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 24000 bytes of audio data.
関連するコンテンツ
- Realtime API の使用方法の詳細を確認する
- Realtime API リファレンスを参照する
- Azure OpenAI のクォータと制限の詳細を確認する