快速入門:使用 Azure OpenAI 服務進行文字轉換語音
您會在本快速入門中,使用 Azure OpenAI 服務搭配 OpenAI 語音,進行文字轉換語音。
可用的語音包括:alloy
、echo
、fable
、onyx
、nova
和 shimmer
。 如需詳細資訊,請參閱適用文字轉換語音的 Azure OpenAI 服務參考文件。
必要條件
- Azure 訂用帳戶 - 建立免費帳戶。
- 在已部署
tts-1
或tts-1-hd
模型的美國中北部或瑞典中部區域中建立的 Azure OpenAI 資源。 如需詳細資訊,請參閱使用 Azure OpenAI 建立資源及部署模型。
設定
擷取金鑰和端點
若要成功對 Azure OpenAI 進行呼叫,您需要端點和金鑰。
變數名稱 | 值 |
---|---|
AZURE_OPENAI_ENDPOINT |
檢查來自 Azure 入口網站 的資源時,可以在 [金鑰與端點] 區段中找到服務端點。 或者,您也可以透過 Azure AI Studio 中的 [部署 ] 頁面找到端點。 範例端點為:https://docs-test-001.openai.azure.com/ 。 |
AZURE_OPENAI_API_KEY |
從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1 或 KEY2 。 |
移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [端點和金鑰]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1
或 KEY2
。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。
環境變數
為您的金鑰和端點建立及指派永續性環境變數。
重要
如果您使用 API 金鑰,請將其安全地儲存在別處,例如 Azure Key Vault。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
建立 REST 要求和回應
在 bash 殼層中,執行下列命令。 您必須將 YourDeploymentName
取代為在部署文字轉換語音模型時所選擇的部署名稱。 此部署名稱不一定要與模型名稱相同。 除非您選擇與基礎模型名稱相同的部署名稱,否則輸入模型名稱會導致錯誤。
curl $AZURE_OPENAI_ENDPOINT/openai/deployments/YourDeploymentName/audio/speech?api-version=2024-02-15-preview \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1-hd",
"input": "I'm excited to try text to speech.",
"voice": "alloy"
}' --output speech.mp3
具有範例端點的命令第一行格式將如下 curl 所示:https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2024-02-15-preview \
。
重要
在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。
原始程式碼 (英文) | 套件 (npm) (英文) | 範例 (英文)
必要條件
- Azure 訂用帳戶 - 建立免費帳戶
- LTS 版本的 Node.js
- Azure CLI 用於本地開發環境中的無密碼驗證,請使用 Azure CLI 登入以建立必要內容。
- 在支援的區域中建立的 Azure OpenAI 資源 (請查看區域可用性)。 如需詳細資訊,請參閱使用 Azure OpenAI 建立資源及部署模型。
設定
擷取金鑰和端點
若要成功對 Azure OpenAI 進行呼叫,您需要端點和金鑰。
變數名稱 | 值 |
---|---|
AZURE_OPENAI_ENDPOINT |
檢查來自 Azure 入口網站 的資源時,可以在 [金鑰與端點] 區段中找到服務端點。 或者,您也可以透過 Azure AI Studio 中的 [部署 ] 頁面找到端點。 範例端點為:https://docs-test-001.openai.azure.com/ 。 |
AZURE_OPENAI_API_KEY |
從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1 或 KEY2 。 |
移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [端點和金鑰]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1
或 KEY2
。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。
環境變數
為您的金鑰和端點建立及指派永續性環境變數。
重要
如果您使用 API 金鑰,請將其安全地儲存在別處,例如 Azure Key Vault。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
建立節點應用程式
在主控台視窗 (例如 cmd、PowerShell 或 Bash) 中,為您的應用程式建立新的目錄,並瀏覽至該目錄。 然後執行 npm init
命令以使用 package.json 檔案建立節點應用程式。
npm init
安裝用戶端程式庫
使用下列項目安裝用戶端程式庫:
npm install openai @azure/identity
應用程式的 package.json 檔案將會隨著相依項目更新。
建立語音檔案
建立一個名為 Text-to-speech.js 的新檔案,然後在您慣用的程式碼編輯器中將其開啟。 將下列程式碼複製到 Text-to-speech.js 檔案:
const { writeFile } = require("fs/promises"); const { AzureOpenAI } = require("openai"); const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity"); require("openai/shims/node"); // You will need to set these environment variables or edit the following values const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>"; const speechFilePath = "<path to save the speech file>"; // Required Azure OpenAI deployment name and API version const deploymentName = "tts"; const apiVersion = "2024-08-01-preview"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); function getClient() { return new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment: deploymentName, }); } async function generateAudioStream( client, params ) { const response = await client.audio.speech.create(params); if (response.ok) return response.body; throw new Error(`Failed to generate audio stream: ${response.statusText}`); } export async function main() { console.log("== Text to Speech Sample =="); const client = getClient(); const streamToRead = await generateAudioStream(client, { model: deploymentName, voice: "alloy", input: "the quick brown chicken jumped over the lazy dogs", }); console.log(`Streaming response to ${speechFilePath}`); await writeFile(speechFilePath, streamToRead); console.log("Finished streaming"); } main().catch((err) => { console.error("The sample encountered an error:", err); });
使用下列命令來執行指令碼:
node Text-to-speech.js
原始程式碼 (英文) | 套件 (npm) (英文) | 範例 (英文)
必要條件
- Azure 訂用帳戶 - 建立免費帳戶
- LTS 版本的 Node.js
- TypeScript
- Azure CLI 用於本地開發環境中的無密碼驗證,請使用 Azure CLI 登入以建立必要內容。
- 在支援的區域中建立的 Azure OpenAI 資源 (請查看區域可用性)。 如需詳細資訊,請參閱使用 Azure OpenAI 建立資源及部署模型。
設定
擷取金鑰和端點
若要成功對 Azure OpenAI 進行呼叫,您需要端點和金鑰。
變數名稱 | 值 |
---|---|
AZURE_OPENAI_ENDPOINT |
從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://aoai-docs.openai.azure.com/ 。 |
AZURE_OPENAI_API_KEY |
從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1 或 KEY2 。 |
移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [端點和金鑰]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1
或 KEY2
。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。
環境變數
為您的金鑰和端點建立及指派永續性環境變數。
重要
如果您使用 API 金鑰,請將其安全地儲存在別處,例如 Azure Key Vault。 請勿在程式碼中直接包含 API 金鑰,且切勿公開張貼金鑰。
如需 AI 服務安全性的詳細資訊,請參閱驗證對 Azure AI 服務的要求 (英文)。
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
建立節點應用程式
在主控台視窗 (例如 cmd、PowerShell 或 Bash) 中,為您的應用程式建立新的目錄,並瀏覽至該目錄。 然後執行 npm init
命令以使用 package.json 檔案建立節點應用程式。
npm init
安裝用戶端程式庫
使用下列項目安裝用戶端程式庫:
npm install openai @azure/identity
應用程式的 package.json 檔案將會隨著相依項目更新。
建立語音檔案
建立一個名為 Text-to-speech.ts 的新檔案,然後在您慣用的程式碼編輯器中將其開啟。 將下列程式碼複製到 Text-to-speech.ts 檔案:
import { writeFile } from "fs/promises"; import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; import type { SpeechCreateParams } from "openai/resources/audio/speech"; import "openai/shims/node"; // You will need to set these environment variables or edit the following values const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>"; const speechFilePath = "<path to save the speech file>"; // Required Azure OpenAI deployment name and API version const deploymentName = "tts"; const apiVersion = "2024-08-01-preview"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment: deploymentName, }); } async function generateAudioStream( client: AzureOpenAI, params: SpeechCreateParams ): Promise<NodeJS.ReadableStream> { const response = await client.audio.speech.create(params); if (response.ok) return response.body; throw new Error(`Failed to generate audio stream: ${response.statusText}`); } export async function main() { console.log("== Text to Speech Sample =="); const client = getClient(); const streamToRead = await generateAudioStream(client, { model: deploymentName, voice: "alloy", input: "the quick brown chicken jumped over the lazy dogs", }); console.log(`Streaming response to ${speechFilePath}`); await writeFile(speechFilePath, streamToRead); console.log("Finished streaming"); } main().catch((err) => { console.error("The sample encountered an error:", err); });
在 Node.js 環境中執行程式碼時,必須匯入
"openai/shims/node"
。 它可確保client.audio.speech.create
方法的輸出類型已正確設定為NodeJS.ReadableStream
。使用下列命令建置應用程式:
tsc
使用下列命令執行您的應用程式:
node Text-to-speech.js
必要條件
- Azure 訂用帳戶。 您可以免費建立一個訂用帳戶。
- 在支援的區域中部署具有 Whisper 模型的 Azure OpenAI 資源。 如需詳細資訊,請參閱使用 Azure OpenAI 建立資源及部署模型。
- The .NET 8.0 SDK
建立 .NET 應用程式
使用
dotnet new
指令建立 .NET 應用程式:dotnet new console -n TextToSpeech
變更為新應用程式的目錄:
cd OpenAISpeech
安裝客戶端連結
Azure.OpenAI
庫:dotnet add package Azure.AI.OpenAI
驗證並連線至 Azure OpenAI
若要向 Azure OpenAI 服務提出要求,您需要服務端點,以及透過下列其中一個選項的驗證認證:
Microsoft Entra ID 是向 Azure 服務進行驗證的建議方法,比密鑰型替代方案更安全。
存取金鑰可讓您提供秘密金鑰來連線到您的資源。
重要
應謹慎使用存取金鑰。 如果您的服務存取金鑰遺失或意外暴露在不安全的位置,您的服務可能會變得易受攻擊。 具有存取金鑰的任何人都可以授權對 Azure OpenAI 服務的要求。
取得 Azure OpenAI 端點
檢查來自 Azure 入口網站 的資源時,可以在 [金鑰與端點] 區段中找到服務端點。 或者,您也可以透過 Azure AI Studio 中的 [部署 ] 頁面找到端點。 範例端點為:https://docs-test-001.openai.azure.com/
。
使用 Microsoft Entra ID 進行驗證
如果您選擇使用 Microsoft Entra ID 驗證,您必須完成下列作業:
新增
Azure.Identity
套件。dotnet add package Azure.Identity
將
Cognitive Services User
角色指派給您的使用者帳戶。 這可以在訪問控制 (IAM)> [新增角色指派] 底下的 OpenAI 資源 Azure 入口網站 中完成。使用 Visual Studio 或 Azure CLI 透過
az login
登入 Azure。
使用金鑰進行驗證
檢查來自 Azure 入口網站 的資源時,可以在 [金鑰與端點] 區段中找到存取金鑰值。 您可以使用 KEY1
或 KEY2
。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。
更新應用程式程式碼
將的內容
program.cs
取代為下列程序代碼,並使用您自己的佔位元值來更新佔位元值。using Azure; using Azure.AI.OpenAI; using Azure.Identity; // Required for Passwordless auth var endpoint = new Uri( Environment.GetEnvironmentVariable("YOUR_OPENAI_ENDPOINT") ?? throw new ArgumentNullException()); var credentials = new DefaultAzureCredential(); // Use this line for key auth // var credentials = new AzureKeyCredential( // Environment.GetEnvironmentVariable("YOUR_OPENAI_KEY") ?? throw new ArgumentNullException()); var deploymentName = "tts"; // Default deployment name, update with your own if necessary var speechFilePath = "YOUR_AUDIO_FILE_PATH"; var openAIClient = new AzureOpenAIClient(endpoint, credentials); var audioClient = openAIClient.GetAudioClient(deploymentName); var result = await audioClient.GenerateSpeechAsync( "the quick brown chicken jumped over the lazy dogs"); Console.WriteLine("Streaming response to ${speechFilePath}"); await File.WriteAllBytesAsync(speechFilePath, result.Value.ToArray()); Console.WriteLine("Finished streaming");
重要
在生產環境中,請使用安全方式來儲存及存取 Azure Key Vault 等認證。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性。
使用
dotnet run
Visual Studio 頂端的 命令或執行按鈕執行應用程式:dotnet run
應用程式會在您為
speechFilePath
變數指定的位置產生音訊檔案。 播放裝置上的檔案,以聆聽產生的音訊。
清除資源
如果您想要清除和移除 Azure OpenAI 資源,可以刪除資源。 刪除資源之前,您必須先刪除任何已部署的模型。
下一步
- 在 Azure OpenAI 服務參考文件中,深入了解如何使用文字轉換語音搭配 Azure OpenAI 服務。
- 如需更多範例,請參閱 Azure OpenAI 範例 GitHub 存放庫