Snabbstart: Text till tal med Azure OpenAI-tjänsten
I den här snabbstarten använder du Azure OpenAI-tjänsten för text till tal med OpenAI-röster.
De tillgängliga rösterna är: alloy
, echo
, fable
, onyx
, nova
och shimmer
. Mer information finns i Referensdokumentation för Azure OpenAI Service för text till tal.
Förutsättningar
- En Azure-prenumeration – Skapa en kostnadsfritt.
- En Azure OpenAI-resurs som skapats i regionerna USA, norra centrala eller Sverige, centrala med
tts-1
modellen ellertts-1-hd
distribuerad. Mer information finns i Skapa en resurs och distribuera en modell med Azure OpenAI.
Konfigurera
Hämta nyckel och slutpunkt
Om du vill göra ett anrop mot Azure OpenAI behöver du en slutpunkt och en nyckel.
Variabelnamn | Värde |
---|---|
AZURE_OPENAI_ENDPOINT |
Tjänstslutpunkten finns i avsnittet Nycklar och slutpunkter när du undersöker resursen från Azure Portal. Du kan också hitta slutpunkten via sidan Distributioner i Azure AI Studio. En exempelslutpunkt är: https://docs-test-001.openai.azure.com/ . |
AZURE_OPENAI_API_KEY |
Det här värdet finns i avsnittet Nycklar och slutpunkt när du undersöker resursen från Azure-portalen. Du kan använda antingen KEY1 eller KEY2 . |
Gå till resursen i Azure Portal. Slutpunkten och nycklarna finns i avsnittet Resurshantering . Kopiera slutpunkten och åtkomstnyckeln när du behöver båda för att autentisera dina API-anrop. Du kan använda antingen KEY1
eller KEY2
. Om du alltid har två nycklar kan du rotera och återskapa nycklar på ett säkert sätt utan att orsaka avbrott i tjänsten.
Miljövariabler
Skapa och tilldela beständiga miljövariabler för din nyckel och slutpunkt.
Viktigt!
Om du använder en API-nyckel lagrar du den på ett säkert sätt någon annanstans, till exempel i Azure Key Vault. Inkludera inte API-nyckeln direkt i koden och publicera den aldrig offentligt.
Mer information om säkerhet för AI-tjänster finns i Autentisera begäranden till Azure AI-tjänster.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Skapa en REST-begäran och ett svar
Kör följande kommando i ett bash-gränssnitt. Du måste ersätta YourDeploymentName
med det distributionsnamn som du valde när du distribuerade text till talmodell. Distributionsnamnet är inte nödvändigtvis samma som modellnamnet. Om du anger modellnamnet resulterar det i ett fel om du inte väljer ett distributionsnamn som är identiskt med det underliggande modellnamnet.
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
Formatet för din första rad i kommandot med en exempelslutpunkt visas enligt följande curl https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2024-02-15-preview \
.
Viktigt!
För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information om säkerhet för autentiseringsuppgifter finns i artikeln om Säkerhet för Azure AI-tjänster.
Exempel på källkodspaket (npm) | |
Förutsättningar
- En Azure-prenumeration – Skapa en kostnadsfritt
- LTS-versioner av Node.js
- Azure CLI används för lösenordslös autentisering i en lokal utvecklingsmiljö och skapar den nödvändiga kontexten genom att logga in med Azure CLI.
- En Azure OpenAI-resurs som skapats i en region som stöds (se Regiontillgänglighet). Mer information finns i Skapa en resurs och distribuera en modell med Azure OpenAI.
Konfigurera
Hämta nyckel och slutpunkt
Om du vill göra ett anrop mot Azure OpenAI behöver du en slutpunkt och en nyckel.
Variabelnamn | Värde |
---|---|
AZURE_OPENAI_ENDPOINT |
Tjänstslutpunkten finns i avsnittet Nycklar och slutpunkter när du undersöker resursen från Azure Portal. Du kan också hitta slutpunkten via sidan Distributioner i Azure AI Studio. En exempelslutpunkt är: https://docs-test-001.openai.azure.com/ . |
AZURE_OPENAI_API_KEY |
Det här värdet finns i avsnittet Nycklar och slutpunkt när du undersöker resursen från Azure-portalen. Du kan använda antingen KEY1 eller KEY2 . |
Gå till resursen i Azure Portal. Slutpunkten och nycklarna finns i avsnittet Resurshantering . Kopiera slutpunkten och åtkomstnyckeln när du behöver båda för att autentisera dina API-anrop. Du kan använda antingen KEY1
eller KEY2
. Om du alltid har två nycklar kan du rotera och återskapa nycklar på ett säkert sätt utan att orsaka avbrott i tjänsten.
Miljövariabler
Skapa och tilldela beständiga miljövariabler för din nyckel och slutpunkt.
Viktigt!
Om du använder en API-nyckel lagrar du den på ett säkert sätt någon annanstans, till exempel i Azure Key Vault. Inkludera inte API-nyckeln direkt i koden och publicera den aldrig offentligt.
Mer information om säkerhet för AI-tjänster finns i Autentisera begäranden till Azure AI-tjänster.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Skapa ett Node-program
Skapa en ny katalog för din app i ett konsolfönster (till exempel cmd, PowerShell eller bash) och navigera till den. Kör npm init
sedan kommandot för att skapa ett nodprogram med en package.json fil.
npm init
Installera klientbiblioteket
Installera klientbiblioteken med:
npm install openai @azure/identity
Appens package.json-fil uppdateras med beroendena.
Skapa en talfil
Skapa en ny fil med namnet Text-to-speech.js och öppna den i önskad kodredigerare. Kopiera följande kod till Text-to-speech.js-filen:
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); });
Kör skriptet med följande kommando:
node Text-to-speech.js
Exempel på källkodspaket (npm) | |
Förutsättningar
- En Azure-prenumeration – Skapa en kostnadsfritt
- LTS-versioner av Node.js
- TypeScript
- Azure CLI används för lösenordslös autentisering i en lokal utvecklingsmiljö och skapar den nödvändiga kontexten genom att logga in med Azure CLI.
- En Azure OpenAI-resurs som skapats i en region som stöds (se Regiontillgänglighet). Mer information finns i Skapa en resurs och distribuera en modell med Azure OpenAI.
Konfigurera
Hämta nyckel och slutpunkt
Om du vill göra ett anrop mot Azure OpenAI behöver du en slutpunkt och en nyckel.
Variabelnamn | Värde |
---|---|
AZURE_OPENAI_ENDPOINT |
Det här värdet finns i avsnittet Nycklar och slutpunkt när du undersöker resursen från Azure-portalen. Du kan också hitta värdet i Azure OpenAI Studio>Playground Code>View. En exempelslutpunkt är: https://aoai-docs.openai.azure.com/ . |
AZURE_OPENAI_API_KEY |
Det här värdet finns i avsnittet Nycklar och slutpunkt när du undersöker resursen från Azure-portalen. Du kan använda antingen KEY1 eller KEY2 . |
Gå till resursen i Azure Portal. Slutpunkten och nycklarna finns i avsnittet Resurshantering . Kopiera slutpunkten och åtkomstnyckeln när du behöver båda för att autentisera dina API-anrop. Du kan använda antingen KEY1
eller KEY2
. Om du alltid har två nycklar kan du rotera och återskapa nycklar på ett säkert sätt utan att orsaka avbrott i tjänsten.
Miljövariabler
Skapa och tilldela beständiga miljövariabler för din nyckel och slutpunkt.
Viktigt!
Om du använder en API-nyckel lagrar du den på ett säkert sätt någon annanstans, till exempel i Azure Key Vault. Inkludera inte API-nyckeln direkt i koden och publicera den aldrig offentligt.
Mer information om säkerhet för AI-tjänster finns i Autentisera begäranden till Azure AI-tjänster.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Skapa ett Node-program
Skapa en ny katalog för din app i ett konsolfönster (till exempel cmd, PowerShell eller bash) och navigera till den. Kör npm init
sedan kommandot för att skapa ett nodprogram med en package.json fil.
npm init
Installera klientbiblioteket
Installera klientbiblioteken med:
npm install openai @azure/identity
Appens package.json-fil uppdateras med beroendena.
Skapa en talfil
Skapa en ny fil med namnet Text-to-speech.ts och öppna den i önskad kodredigerare. Kopiera följande kod till filen 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); });
Import av
"openai/shims/node"
är nödvändig när du kör koden i en Node.js miljö. Det säkerställer att utdatatypen förclient.audio.speech.create
metoden är korrekt inställd påNodeJS.ReadableStream
.Skapa programmet med följande kommando:
tsc
Kör programmet med följande kommando:
node Text-to-speech.js
Förutsättningar
- En Azure-prenumeration. Du kan skapa en kostnadsfritt.
- En Azure OpenAI-resurs med en Whisper-modell distribuerad i en region som stöds. Mer information finns i Skapa en resurs och distribuera en modell med Azure OpenAI.
- The .NET 8.0 SDK
Skapa .NET-appen
Skapa en .NET-app med kommandot
dotnet new
:dotnet new console -n TextToSpeech
Ändra till katalogen för den nya appen:
cd OpenAISpeech
Azure.OpenAI
Installera klientbiblioteket:dotnet add package Azure.AI.OpenAI
Autentisera och ansluta till Azure OpenAI
Om du vill göra begäranden till din Azure OpenAI-tjänst behöver du tjänstslutpunkten och autentiseringsuppgifterna via något av följande alternativ:
Microsoft Entra-ID är den rekommenderade metoden för autentisering till Azure-tjänster och är säkrare än nyckelbaserade alternativ.
Med åtkomstnycklar kan du ange en hemlig nyckel för att ansluta till resursen.
Viktigt!
Åtkomstnycklar bör användas med försiktighet. Om din tjänståtkomstnyckel går förlorad eller oavsiktligt exponeras på en osäker plats kan tjänsten bli sårbar. Alla som har åtkomstnyckeln kan auktorisera begäranden mot Azure OpenAI-tjänsten.
Hämta Azure OpenAI-slutpunkten
Tjänstslutpunkten finns i avsnittet Nycklar och slutpunkter när du undersöker resursen från Azure Portal. Du kan också hitta slutpunkten via sidan Distributioner i Azure AI Studio. En exempelslutpunkt är: https://docs-test-001.openai.azure.com/
.
Autentisera med Microsoft Entra-ID
Om du väljer att använda Microsoft Entra-ID-autentisering måste du slutföra följande:
Lägg till paketet
Azure.Identity
.dotnet add package Azure.Identity
Cognitive Services User
Tilldela rollen till ditt användarkonto. Detta kan göras i Azure Portal på din OpenAI-resurs under Åtkomstkontroll (IAM)>Lägg till rolltilldelning.Logga in på Azure med Visual Studio eller Azure CLI via
az login
.
Autentisera med nycklar
Du hittar värdet för åtkomstnyckeln i avsnittet Nycklar och slutpunkter när du undersöker resursen från Azure Portal. Du kan använda antingen KEY1
eller KEY2
. Om du alltid har två nycklar kan du rotera och återskapa nycklar på ett säkert sätt utan att orsaka avbrott i tjänsten.
Uppdatera appkoden
Ersätt innehållet i
program.cs
med följande kod och uppdatera platshållarvärdena med dina egna.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");
Viktigt!
För produktion lagrar och kommer du åt dina autentiseringsuppgifter med hjälp av en säker metod, till exempel Azure Key Vault. Mer information om säkerhet för autentiseringsuppgifter finns i Säkerhet för Azure AI-tjänster.
Kör programmet med hjälp av
dotnet run
kommandot eller körningsknappen överst i Visual Studio:dotnet run
Appen genererar en ljudfil på den plats som du angav för variabeln
speechFilePath
. Spela upp filen på enheten för att höra det genererade ljudet.
Rensa resurser
Om du vill rensa och ta bort en Azure OpenAI-resurs kan du ta bort resursen. Innan du tar bort resursen måste du först ta bort alla distribuerade modeller.
Nästa steg
- Läs mer om hur du arbetar med text till tal med Azure OpenAI Service i referensdokumentationen för Azure OpenAI Service.
- Fler exempel finns på GitHub-lagringsplatsen Azure OpenAI Samples