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, novaoch shimmer. Mer information finns i Referensdokumentation för Azure OpenAI Service för text till tal.

Förutsättningar

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.

Skärmbild av översiktsgränssnittet för en Azure OpenAI-resurs i Azure Portal med platsen slutpunkt och åtkomstnycklar markerad.

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

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.

Skärmbild av översiktsgränssnittet för en Azure OpenAI-resurs i Azure Portal med platsen slutpunkt och åtkomstnycklar markerad.

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

  1. 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);
    });
    
    
  2. Kör skriptet med följande kommando:

    node Text-to-speech.js
    

Exempel på källkodspaket (npm) | |

Förutsättningar

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.

Skärmbild av översiktsgränssnittet för en Azure OpenAI-resurs i Azure Portal med platsen slutpunkt och åtkomstnycklar markerad.

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

  1. 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ör client.audio.speech.create metoden är korrekt inställd på NodeJS.ReadableStream.

  2. Skapa programmet med följande kommando:

    tsc
    
  3. Kör programmet med följande kommando:

    node Text-to-speech.js
    

Förutsättningar

Skapa .NET-appen

  1. Skapa en .NET-app med kommandot dotnet new :

    dotnet new console -n TextToSpeech
    
  2. Ändra till katalogen för den nya appen:

    cd OpenAISpeech
    
  3. 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/.

Skärmbild av översiktsgränssnittet för en Azure OpenAI-resurs i Azure Portal med platsen slutpunkt och åtkomstnycklar markerad.

Autentisera med Microsoft Entra-ID

Om du väljer att använda Microsoft Entra-ID-autentisering måste du slutföra följande:

  1. Lägg till paketet Azure.Identity.

    dotnet add package Azure.Identity
    
  2. 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.

  3. 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

  1. 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.

  2. 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