注意
此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
適用於語音和音訊的 Azure OpenAI GPT-4o 即時 API 是 GPT-4o 模型系列的一部分,可支援低延遲、「語音輸入、語音輸出」交談互動。
您可以透過 WebRTC 或 WebSocket 使用即時 API,將音訊輸入傳送至模型,並即時接收音訊回應。
請遵循本文中的指示,透過 WebSocket 開始使用即時 API。 在不需要低延遲的伺服器對伺服器案例中,透過 WebSocket 使用即時 API。
提示
在大部分情況下,我們建議 透過 WebRTC 使用即時 API ,在用戶端應用程式中,例如 Web 應用程式或行動應用程式等用戶端應用程式中的即時音訊串流。 WebRTC 是專為低延遲、即時音訊串流所設計,是大部分使用案例的最佳選擇。
支援的模型
GPT 4o 即時模型可用於全域部署。
-
gpt-4o-realtime-preview
(版本2024-12-17
) -
gpt-4o-mini-realtime-preview
(版本2024-12-17
)
如需詳細資訊, 請參閱模型和版本檔 。
API 支援
在 API 版本 2024-10-01-preview
(已淘汰)中首次新增對即時 API 的支援。 使用版本 2025-04-01-preview
來存取最新的即時 API 功能。
部署即時音訊的模型
若要在 Azure AI Foundry 入口網站中部署 gpt-4o-mini-realtime-preview
模型:
- 移至 Azure AI Foundry 入口網站 ,然後建立或選取您的專案。
- 在左窗格的我的資產下選取模型 + 端點。
- 選取 [+ 部署模型>部署基底模型 ] 以開啟部署視窗。
- 搜尋並選取模型,
gpt-4o-mini-realtime-preview
然後選取 [ 確認]。 - 檢閱部署詳細數據,然後選取 [ 部署]。
- 遵循精靈以完成模型部署。
現在您已部署 gpt-4o-mini-realtime-preview
模型,您可以在 Azure AI Foundry 入口網站 音訊 遊樂場或即時 API 中與其互動。
使用 GPT-4o 即時音訊
若要在 Azure AI Foundry gpt-4o-mini-realtime-preview
遊樂場中與您的部署模型聊天,請遵循下列步驟:
移至 Azure AI Foundry 入口網站 ,然後選取已部署
gpt-4o-mini-realtime-preview
模型的專案。從左窗格中選取 [遊樂場 ]。
選取 [音訊遊樂場>][試用音訊遊樂場]。
注意
聊天遊樂場不支援
gpt-4o-mini-realtime-preview
模型。 使用本節中所述的 音頻遊樂場 。從
gpt-4o-mini-realtime-preview
] 下拉式清單中選取已部署的模型。您可以選擇性地在 [提供模型指示和內容] 文字框中編輯內容。 提供模型關於其行為方式的指示,以及產生回應時應該參考的任何內容。 您可以描述助理的特質、告訴其應該和不應該回答的內容,以及告訴其設定回應的格式。
或者,變更閾值、前置詞填補和無聲持續時間等設定。
選取 [ 開始接 聽] 以啟動工作階段。 您可以與麥克風交談以開始聊天。
您可以隨時透過說話來中斷聊天。 您可以選取 [ 停止接 聽] 按鈕來結束聊天。
必要條件
- Azure 訂用帳戶 - 建立免費帳戶
- Node.js LTS 或 ESM 支援。
- 在其中一個支持區域中建立的 Azure OpenAI 資源。 如需區域可用性的詳細資訊,請參閱 模型和版本檔。
- 然後,您必須使用 Azure OpenAI 資源來部署
gpt-4o-mini-realtime-preview
模型。 如需詳細資訊,請參閱使用 Azure OpenAI 建立資源及部署模型。
Microsoft Entra ID 必要條件
針對具有 Microsoft Entra ID 的建議無金鑰驗證,您需要:
- 使用 Microsoft Entra ID 安裝用於無密鑰驗證的 Azure CLI。
- 將
Cognitive Services User
角色指派給您的使用者帳戶。 您可以在存取控制 (IAM)角色。
部署即時音訊的模型
若要在 Azure AI Foundry 入口網站中部署 gpt-4o-mini-realtime-preview
模型:
- 移至 Azure AI Foundry 入口網站 ,然後建立或選取您的專案。
- 在左窗格的我的資產下選取模型 + 端點。
- 選取 [+ 部署模型>部署基底模型 ] 以開啟部署視窗。
- 搜尋並選取模型,
gpt-4o-mini-realtime-preview
然後選取 [ 確認]。 - 檢閱部署詳細數據,然後選取 [ 部署]。
- 遵循精靈以完成模型部署。
現在您已部署 gpt-4o-mini-realtime-preview
模型,您可以在 Azure AI Foundry 入口網站 音訊 遊樂場或即時 API 中與其互動。
設定
建立新的資料夾
realtime-audio-quickstart
,並使用下列命令移至快速入門資料夾:mkdir realtime-audio-quickstart && cd realtime-audio-quickstart
package.json
使用下列指令建立 :npm init -y
使用以下指令安裝適用於 JavaScript 的 OpenAI 客戶端庫:
npm install openai
如需使用 Microsoft Entra ID 的建議 無金鑰驗證,請使用下列專案安裝
@azure/identity
套件:npm install @azure/identity
擷取資源資訊
您需要擷取下列資訊,以向 Azure OpenAI 資源驗證您的應用程式:
變數名稱 | 值 |
---|---|
AZURE_OPENAI_ENDPOINT |
在 Azure 入口網站查看資源時,您可以在 [金鑰和端點] 區段中找到此值。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
此值會對應至您在部署模型時為部署選擇的自訂名稱。 此值可在 Azure 入口網站 中的資源管理找到。 |
OPENAI_API_VERSION |
深入瞭解 API 版本。 您可以在程式代碼中變更版本,或使用環境變數。 |
警告
若要搭配 SDK 使用建議的無密鑰驗證,請確定 AZURE_OPENAI_API_KEY
未設定環境變數。
音訊輸出中的文字
index.js
使用下列程式代碼建立檔案:import { OpenAIRealtimeWS } from "openai/beta/realtime/ws"; import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; async function main() { // You will need to set these environment variables or edit the following values const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "AZURE_OPENAI_ENDPOINT"; // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4o-mini-realtime-preview"; const apiVersion = process.env.OPENAI_API_VERSION || "2025-04-01-preview"; // Keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); const azureOpenAIClient = new AzureOpenAI({ azureADTokenProvider, apiVersion: apiVersion, deployment: deploymentName, endpoint: endpoint, }); const realtimeClient = await OpenAIRealtimeWS.azure(azureOpenAIClient); realtimeClient.socket.on("open", () => { console.log("Connection opened!"); realtimeClient.send({ type: "session.update", session: { modalities: ["text", "audio"], model: "gpt-4o-mini-realtime-preview", }, }); realtimeClient.send({ type: "conversation.item.create", item: { type: "message", role: "user", content: [{ type: "input_text", text: "Please assist the user" }], }, }); realtimeClient.send({ type: "response.create" }); }); realtimeClient.on("error", (err) => { // Instead of throwing the error, you can log it // and continue processing events. throw err; }); realtimeClient.on("session.created", (event) => { console.log("session created!", event.session); console.log(); }); realtimeClient.on("response.text.delta", (event) => process.stdout.write(event.delta)); realtimeClient.on("response.audio.delta", (event) => { const buffer = Buffer.from(event.delta, "base64"); console.log(`Received ${buffer.length} bytes of audio data.`); }); realtimeClient.on("response.audio_transcript.delta", (event) => { console.log(`Received text delta:${event.delta}.`); }); realtimeClient.on("response.text.done", () => console.log()); realtimeClient.on("response.done", () => realtimeClient.close()); realtimeClient.socket.on("close", () => console.log("\nConnection closed!")); } main().catch((err) => { console.error("The sample encountered an error:", err); }); export { main };
使用下列命令登入 Azure:
az login
執行 JavaScript 檔案。
node index.js
請稍候片刻以取得回應。
輸出
腳本會從模型取得回應,並列印收到的文字記錄和音訊數據。
這些輸出看起來類似於下列文字:
Received text delta:Of.
Received text delta: course.
Received text delta:!.
Received text delta: How.
Received text delta: can.
Received 4800 bytes of audio data.
Received 7200 bytes of audio data.
Received text delta: I.
Received 12000 bytes of audio data.
Received text delta: help.
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 26400 bytes of audio data.
Connection closed!
必要條件
- Azure 訂用帳戶。 免費建立一個。
- Python 3.8 或更新版本。 我們建議使用 Python 3.10 或更新版本,但至少需要 Python 3.8。 如果您未安裝適當的 Python 版本,可以遵循 VS Code Python 教學課程中的指示,以了解在作業系統上安裝 Python 的最簡單方式。
- 在其中一個支持區域中建立的 Azure OpenAI 資源。 如需區域可用性的詳細資訊,請參閱 模型和版本檔。
- 然後,您必須使用 Azure OpenAI 資源來部署
gpt-4o-mini-realtime-preview
模型。 如需詳細資訊,請參閱使用 Azure OpenAI 建立資源及部署模型。
Microsoft Entra ID 必要條件
針對具有 Microsoft Entra ID 的建議無金鑰驗證,您需要:
- 使用 Microsoft Entra ID 安裝用於無密鑰驗證的 Azure CLI。
- 將
Cognitive Services User
角色指派給您的使用者帳戶。 您可以在存取控制 (IAM)角色。
部署即時音訊的模型
若要在 Azure AI Foundry 入口網站中部署 gpt-4o-mini-realtime-preview
模型:
- 移至 Azure AI Foundry 入口網站 ,然後建立或選取您的專案。
- 在左窗格的我的資產下選取模型 + 端點。
- 選取 [+ 部署模型>部署基底模型 ] 以開啟部署視窗。
- 搜尋並選取模型,
gpt-4o-mini-realtime-preview
然後選取 [ 確認]。 - 檢閱部署詳細數據,然後選取 [ 部署]。
- 遵循精靈以完成模型部署。
現在您已部署 gpt-4o-mini-realtime-preview
模型,您可以在 Azure AI Foundry 入口網站 音訊 遊樂場或即時 API 中與其互動。
設定
建立新的資料夾
realtime-audio-quickstart
,並使用下列命令移至快速入門資料夾:mkdir realtime-audio-quickstart && cd realtime-audio-quickstart
建立虛擬環境。 如果您已安裝 Python 3.10 或更高版本,您可以使用下列命令來建立虛擬環境:
py -3 -m venv .venv .venv\scripts\activate
啟用 Python 環境表示,當您命令列執行
python
或pip
,將會使用應用程式的.venv
資料夾中所包含的 Python 解譯器。 您可以使用deactivate
命令來結束 Python 虛擬環境,並可以稍後視需要重新啟用它。提示
建議您建立並啟用新的 Python 環境,以用來安裝本教學課程所需的套件。 請勿將套件安裝到您的全域 Python 安裝中。 安裝 Python 套件時,您應該一律使用虛擬或 conda 環境,否則您可以中斷 Python 的全域安裝。
使用下列項目安裝 OpenAI Python 用戶端程式庫:
pip install openai[realtime]
注意
程式庫是由 OpenAI 進行維護。 參照版本歷程記錄來追蹤程式庫的最新更新。
如需使用 Microsoft Entra ID 的建議 無金鑰驗證,請使用下列專案安裝
azure-identity
套件:pip install azure-identity
擷取資源資訊
您需要擷取下列資訊,以向 Azure OpenAI 資源驗證您的應用程式:
變數名稱 | 值 |
---|---|
AZURE_OPENAI_ENDPOINT |
在 Azure 入口網站查看資源時,您可以在 [金鑰和端點] 區段中找到此值。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
此值會對應至您在部署模型時為部署選擇的自訂名稱。 此值可在 Azure 入口網站 中的資源管理找到。 |
OPENAI_API_VERSION |
深入瞭解 API 版本。 您可以在程式代碼中變更版本,或使用環境變數。 |
警告
若要搭配 SDK 使用建議的無密鑰驗證,請確定 AZURE_OPENAI_API_KEY
未設定環境變數。
音訊輸出中的文字
text-in-audio-out.py
使用下列程式代碼建立檔案:import os import base64 import asyncio from openai import AsyncAzureOpenAI from azure.identity.aio import DefaultAzureCredential, get_bearer_token_provider async def main() -> None: """ When prompted for user input, type a message and hit enter to send it to the model. Enter "q" to quit the conversation. """ credential = DefaultAzureCredential() token_provider=get_bearer_token_provider(credential, "https://cognitiveservices.azure.com/.default") client = AsyncAzureOpenAI( azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"], azure_ad_token_provider=token_provider, api_version="2025-04-01-preview", ) async with client.beta.realtime.connect( model="gpt-4o-realtime-preview", # name of your deployment ) as connection: await connection.session.update(session={"modalities": ["text", "audio"]}) while True: user_input = input("Enter a message: ") if user_input == "q": break await connection.conversation.item.create( item={ "type": "message", "role": "user", "content": [{"type": "input_text", "text": user_input}], } ) await connection.response.create() async for event in connection: if event.type == "response.text.delta": print(event.delta, flush=True, end="") elif event.type == "response.audio.delta": audio_data = base64.b64decode(event.delta) print(f"Received {len(audio_data)} bytes of audio data.") elif event.type == "response.audio_transcript.delta": print(f"Received text delta: {event.delta}") elif event.type == "response.text.done": print() elif event.type == "response.done": break await credential.close() asyncio.run(main())
使用下列命令登入 Azure:
az login
執行 Python 檔案。
python text-in-audio-out.py
當系統提示您輸入使用者輸入時,請輸入訊息並按 Enter 將其傳送至模型。 輸入 「q」 以結束交談。
請稍候片刻以取得回應。
輸出
腳本會從模型取得回應,並列印收到的文字記錄和音訊數據。
輸出看起來類似以下內容:
Enter a message: Please assist the user
Received text delta: Of
Received text delta: course
Received text delta: !
Received text delta: How
Received 4800 bytes of audio data.
Received 7200 bytes of audio data.
Received 12000 bytes of audio data.
Received text delta: can
Received text delta: I
Received text delta: assist
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received text delta: you
Received text delta: today
Received text delta: ?
Received 12000 bytes of audio data.
Received 24000 bytes of audio data.
Received 36000 bytes of audio data.
Enter a message: q
必要條件
- Azure 訂用帳戶 - 建立免費帳戶
- Node.js LTS 或 ESM 支援。
- TypeScript 會全域安裝。
- 在其中一個支持區域中建立的 Azure OpenAI 資源。 如需區域可用性的詳細資訊,請參閱 模型和版本檔。
- 然後,您必須使用 Azure OpenAI 資源來部署
gpt-4o-mini-realtime-preview
模型。 如需詳細資訊,請參閱使用 Azure OpenAI 建立資源及部署模型。
Microsoft Entra ID 必要條件
針對具有 Microsoft Entra ID 的建議無金鑰驗證,您需要:
- 使用 Microsoft Entra ID 安裝用於無密鑰驗證的 Azure CLI。
- 將
Cognitive Services User
角色指派給您的使用者帳戶。 您可以在存取控制 (IAM)角色。
部署即時音訊的模型
若要在 Azure AI Foundry 入口網站中部署 gpt-4o-mini-realtime-preview
模型:
- 移至 Azure AI Foundry 入口網站 ,然後建立或選取您的專案。
- 在左窗格的我的資產下選取模型 + 端點。
- 選取 [+ 部署模型>部署基底模型 ] 以開啟部署視窗。
- 搜尋並選取模型,
gpt-4o-mini-realtime-preview
然後選取 [ 確認]。 - 檢閱部署詳細數據,然後選取 [ 部署]。
- 遵循精靈以完成模型部署。
現在您已部署 gpt-4o-mini-realtime-preview
模型,您可以在 Azure AI Foundry 入口網站 音訊 遊樂場或即時 API 中與其互動。
設定
建立新的資料夾
realtime-audio-quickstart
,並使用下列命令移至快速入門資料夾:mkdir realtime-audio-quickstart && cd realtime-audio-quickstart
package.json
使用下列指令建立 :npm init -y
package.json
使用下列命令將更新為 ECMAScript:npm pkg set type=module
使用以下指令安裝適用於 JavaScript 的 OpenAI 客戶端庫:
npm install openai
如需使用 Microsoft Entra ID 的建議 無金鑰驗證,請使用下列專案安裝
@azure/identity
套件:npm install @azure/identity
擷取資源資訊
您需要擷取下列資訊,以向 Azure OpenAI 資源驗證您的應用程式:
變數名稱 | 值 |
---|---|
AZURE_OPENAI_ENDPOINT |
在 Azure 入口網站查看資源時,您可以在 [金鑰和端點] 區段中找到此值。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
此值會對應至您在部署模型時為部署選擇的自訂名稱。 此值可在 Azure 入口網站 中的資源管理找到。 |
OPENAI_API_VERSION |
深入瞭解 API 版本。 您可以在程式代碼中變更版本,或使用環境變數。 |
警告
若要搭配 SDK 使用建議的無密鑰驗證,請確定 AZURE_OPENAI_API_KEY
未設定環境變數。
音訊輸出中的文字
index.ts
使用下列程式代碼建立檔案:import { OpenAIRealtimeWS } from "openai/beta/realtime/ws"; import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; async function main(): Promise<void> { // You will need to set these environment variables or edit the following values const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "AZURE_OPENAI_ENDPOINT"; // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4o-mini-realtime-preview"; const apiVersion = process.env.OPENAI_API_VERSION || "2025-04-01-preview"; // Keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); const azureOpenAIClient = new AzureOpenAI({ azureADTokenProvider, apiVersion: apiVersion, deployment: deploymentName, endpoint: endpoint, }); const realtimeClient = await OpenAIRealtimeWS.azure(azureOpenAIClient); realtimeClient.socket.on("open", () => { console.log("Connection opened!"); realtimeClient.send({ type: "session.update", session: { modalities: ["text", "audio"], model: "gpt-4o-mini-realtime-preview", }, }); realtimeClient.send({ type: "conversation.item.create", item: { type: "message", role: "user", content: [{ type: "input_text", text: "Please assist the user" }], }, }); realtimeClient.send({ type: "response.create" }); }); realtimeClient.on("error", (err) => { // Instead of throwing the error, you can log it // and continue processing events. throw err; }); realtimeClient.on("session.created", (event) => { console.log("session created!", event.session); console.log(); }); realtimeClient.on("response.text.delta", (event) => process.stdout.write(event.delta)); realtimeClient.on("response.audio.delta", (event) => { const buffer = Buffer.from(event.delta, "base64"); console.log(`Received ${buffer.length} bytes of audio data.`); }); realtimeClient.on("response.audio_transcript.delta", (event) => { console.log(`Received text delta:${event.delta}.`); }); realtimeClient.on("response.text.done", () => console.log()); realtimeClient.on("response.done", () => realtimeClient.close()); realtimeClient.socket.on("close", () => console.log("\nConnection closed!")); } main().catch((err) => { console.error("The sample encountered an error:", err); }); export { main };
建立檔案
tsconfig.json
以轉譯 TypeScript 程式代碼,並複製 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 index.js
請稍候片刻以取得回應。
輸出
腳本會從模型取得回應,並列印收到的文字記錄和音訊數據。
這些輸出看起來類似於下列文字:
Received text delta:Of.
Received text delta: course.
Received text delta:!.
Received text delta: How.
Received text delta: can.
Received 4800 bytes of audio data.
Received 7200 bytes of audio data.
Received text delta: I.
Received 12000 bytes of audio data.
Received text delta: help.
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 26400 bytes of audio data.
Connection closed!
相關內容
- 深入瞭解 如何使用即時 API
- 請參閱即時 API 參考
- 深入了解 Azure OpenAI 配額和限制
- 深入瞭解 語音服務的語言和語音支援