適用於語音和音訊的 GPT-4o 即時 API (預覽)
注意
此功能目前處於公開預覽。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
適用於語音和音訊的 Azure OpenAI GPT-4o 即時 API 是 GPT-4o 模型系列的一部分,可支援低延遲、「語音輸入、語音輸出」交談互動。 GPT-4o 音訊 realtime
API 旨在處理即時、低延遲的對話互動,因此非常適合使用者與模型之間即時互動的使用案例,例如客戶支援專員、語音助理和實時翻譯工具。
即時 API 的大部分使用者都必須即時傳遞和接收來自使用者的音訊,包括使用 WebRTC 或電話語音系統的應用程式。 即時 API 並非設計為直接連線到終端使用者裝置,並依賴用戶端整合來終止終端使用者音訊串流。
支援的模型
目前只有 gpt-4o-realtime-preview
版本: 2024-10-01-preview
支援即時音訊。
此gpt-4o-realtime-preview
模型適用於美國東部 2 和瑞典中部地區的全域部署。
重要
系統會儲存您的提示和完成,如 Azure OpenAI 服務之服務特定產品條款的「數據使用和存取濫用監視」一節所述,但有限例外狀況不適用。 即使已核准修改濫用監視的客戶, gpt-4o-realtime-preview
也會開啟濫用監視,以使用 API。
API 支援
第一次在 API 版本中 2024-10-01-preview
新增對即時 API 的支援。
注意
如需 API 和架構的詳細資訊,請參閱 GitHub 上的 Azure OpenAI GPT-4o 即時音頻存放庫。
部署即時音訊的模型
若要在 Azure AI Foundry 入口網站中部署 gpt-4o-realtime-preview
模型:
- 移至 Azure AI Foundry 入口網站 ,並確定您已使用具有 Azure OpenAI 服務資源的 Azure 訂用帳戶登入(使用或不含模型部署。
- 從左窗格中的 [遊樂場] 底下選取 [即時音訊遊樂場]。
- 選取 [建立新的部署 ] 以開啟部署視窗。
- 搜尋並選取模型,
gpt-4o-realtime-preview
然後選取 [ 確認]。 - 在部署精靈中,請務必選取
2024-10-01
模型版本。 - 遵循精靈以完成模型部署。
既然您已部署 gpt-4o-realtime-preview
模型,您可以在 Azure AI Foundry 入口網站即時音訊 遊樂場或即時 API 中即時與其互動。
使用 GPT-4o 即時音訊
若要在 Azure AI Foundry 即時音訊遊樂場中與您的部署gpt-4o-realtime-preview
模型聊天,請遵循下列步驟:
移至 Azure AI Foundry 入口網站中的 Azure OpenAI 服務頁面 。 請確定您已使用具有 Azure OpenAI 服務資源和已
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
角色指派給您的使用者帳戶。 您可以在存取控制 (IAM)>[新增角色指派] 底下的 [Azure 入口網站 中指派角色。
部署即時音訊的模型
若要在 Azure AI Foundry 入口網站中部署 gpt-4o-realtime-preview
模型:
- 移至 Azure AI Foundry 入口網站 ,並確定您已使用具有 Azure OpenAI 服務資源的 Azure 訂用帳戶登入(使用或不含模型部署。
- 從左窗格中的 [遊樂場] 底下選取 [即時音訊遊樂場]。
- 選取 [建立新的部署 ] 以開啟部署視窗。
- 搜尋並選取模型,
gpt-4o-realtime-preview
然後選取 [ 確認]。 - 在部署精靈中,請務必選取
2024-10-01
模型版本。 - 遵循精靈以完成模型部署。
既然您已部署 gpt-4o-realtime-preview
模型,您可以在 Azure AI Foundry 入口網站即時音訊 遊樂場或即時 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 入口網站查看資源時,您可以在 [金鑰和端點] 區段中找到此值。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
此值會對應至您在部署模型時為部署選擇的自訂名稱。 您可以在 Azure 入口網站 中的資源管理>模型部署下找到此值。 |
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 即時 API 即時與模型互動。 範例程式代碼包含簡單的 Web 介面,可從使用者的麥克風擷取音訊,並將其傳送至模型進行處理。 模型會以文字和音訊回應,而範例程式代碼會在 Web 介面中呈現。
您可以遵循下列步驟,在本機計算機上執行範例程序代碼。 如需最新的指示, 請參閱 GitHub 上的存放庫。
如果您沒有安裝Node.js,請下載並安裝 LTS 版本的 Node.js。
將存放庫複製到本機電腦:
git clone https://github.com/Azure-Samples/aoai-realtime-audio-sdk.git
移至慣用程式
javascript/samples/web
碼編輯器中的資料夾。cd ./javascript/samples
執行
download-pkg.ps1
或download-pkg.sh
以下載所需的套件。從資料夾移至
web
資料夾./javascript/samples
。cd ./web
執行
npm install
以安裝套件相依性。執行
npm run dev
以啟動網頁伺服器,並視需要流覽任何防火牆許可權提示。在瀏覽器中,從控制台輸出移至任何提供的 URI(例如
http://localhost:5173/
)。在 Web 介面中輸入下列資訊:
- 端點:Azure OpenAI 資源的資源端點。 您不需要附加
/realtime
路徑。 範例結構可能是https://my-azure-openai-resource-from-portal.openai.azure.com
。 - API 金鑰:Azure OpenAI 資源的對應 API 金鑰。
- 部署:您在上一節中部署的
gpt-4o-realtime-preview
模型名稱。 - 系統訊息:您可以選擇性地提供系統訊息,例如「您總是像友好的海盜一樣說話」。
- 溫度:您可以選擇性地提供自定義溫度。
- 語音:您可以選擇性地選取語音。
- 端點:Azure OpenAI 資源的資源端點。 您不需要附加
選取 [ 記錄] 按鈕以啟動工作階段。 如果出現提示,請接受使用麥克風的許可權。
您應該會在
<< Session Started >>
主要輸出中看到訊息。 然後,您可以說話到麥克風開始聊天。您可以隨時透過說話來中斷聊天。 您可以選取 [ 停止 ] 按鈕來結束聊天。
必要條件
- Azure 訂用帳戶。 免費建立一個。
- Python 3.8 或更新版本。 我們建議使用 Python 3.10 或更新版本,但至少需要 Python 3.8。 如果您未安裝適當的 Python 版本,可以遵循 VS Code Python 教學課程中的指示,以了解在作業系統上安裝 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
角色指派給您的使用者帳戶。 您可以在存取控制 (IAM)>[新增角色指派] 底下的 [Azure 入口網站 中指派角色。
部署即時音訊的模型
若要在 Azure AI Foundry 入口網站中部署 gpt-4o-realtime-preview
模型:
- 移至 Azure AI Foundry 入口網站 ,並確定您已使用具有 Azure OpenAI 服務資源的 Azure 訂用帳戶登入(使用或不含模型部署。
- 從左窗格中的 [遊樂場] 底下選取 [即時音訊遊樂場]。
- 選取 [建立新的部署 ] 以開啟部署視窗。
- 搜尋並選取模型,
gpt-4o-realtime-preview
然後選取 [ 確認]。 - 在部署精靈中,請務必選取
2024-10-01
模型版本。 - 遵循精靈以完成模型部署。
既然您已部署 gpt-4o-realtime-preview
模型,您可以在 Azure AI Foundry 入口網站即時音訊 遊樂場或即時 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 入口網站查看資源時,您可以在 [金鑰和端點] 區段中找到此值。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
此值會對應至您在部署模型時為部署選擇的自訂名稱。 您可以在 Azure 入口網站 中的資源管理>模型部署下找到此值。 |
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
角色指派給您的使用者帳戶。 您可以在存取控制 (IAM)>[新增角色指派] 底下的 [Azure 入口網站 中指派角色。
部署即時音訊的模型
若要在 Azure AI Foundry 入口網站中部署 gpt-4o-realtime-preview
模型:
- 移至 Azure AI Foundry 入口網站 ,並確定您已使用具有 Azure OpenAI 服務資源的 Azure 訂用帳戶登入(使用或不含模型部署。
- 從左窗格中的 [遊樂場] 底下選取 [即時音訊遊樂場]。
- 選取 [建立新的部署 ] 以開啟部署視窗。
- 搜尋並選取模型,
gpt-4o-realtime-preview
然後選取 [ 確認]。 - 在部署精靈中,請務必選取
2024-10-01
模型版本。 - 遵循精靈以完成模型部署。
既然您已部署 gpt-4o-realtime-preview
模型,您可以在 Azure AI Foundry 入口網站即時音訊 遊樂場或即時 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 入口網站查看資源時,您可以在 [金鑰和端點] 區段中找到此值。 |
AZURE_OPENAI_DEPLOYMENT_NAME |
此值會對應至您在部署模型時為部署選擇的自訂名稱。 您可以在 Azure 入口網站 的資源管理>模型部署下找到此值。 |
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();
建立檔案
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 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.
相關內容
- 深入瞭解 如何使用即時 API
- 請參閱即時 API 參考
- 深入了解 Azure OpenAI 配額和限制