Freigeben über


Schnellstart: Sprachsynthese mit dem Azure OpenAI Service

In diesem Schnellstart verwenden Sie den Azure OpenAI Service für die Sprachsynthese mit Azure OpenAI-Stimmen.

Die verfügbaren Stimmen sind: alloy, echo, fable, onyx, nova und shimmer. Weitere Informationen finden Sie in der Azure OpenAI Service-Referenzdokumentation für die Sprachsynthese.

Voraussetzungen

Einrichten

Abrufen von Schlüssel und Endpunkt

Für erfolgreiche Azure OpenAI-Aufrufe benötigen Sie einen Endpunkt und einen Schlüssel.

Variablenname Wert
AZURE_OPENAI_ENDPOINT Der Dienstendpunkt befindet sich im Abschnitt Schlüssel und Endpunkt, wenn Sie Ihre Ressource aus dem Azure-Portal untersuchen. Alternativ können Sie den Endpunkt über die Seite Bereitstellungen im Azure KI Foundry-Portal finden. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.
AZURE_OPENAI_API_KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Die Werte für Endpunkt und Schlüssel finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot der Benutzeroberfläche mit der Übersicht über eine Azure OpenAI-Ressource im Azure-Portal, in dem die Speicherorte für Endpunkt und Zugriffsschlüssel rot hervorgehoben sind.

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

Wichtig

Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Erstellen einer REST-Anforderung und einer Antwort

Führen Sie in der Bash-Shell die folgenden Befehle aus. Sie müssen YourDeploymentName durch den Bereitstellungsnamen ersetzen, den Sie bei der Bereitstellung des Sprachsynthesemodells ausgewählt haben. Der Bereitstellungsname entspricht nicht unbedingt dem Modellnamen. Die Eingabe des Modellnamens führt zu einem Fehler, sofern Sie keinen Bereitstellungsnamen ausgewählt haben, der mit dem zugrunde liegenden Modellnamen identisch ist.

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

Das Format Ihrer ersten Befehlszeile mit einem Beispielendpunkt würde wie folgt aussehen: cURL https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2024-02-15-preview \.

Wichtig

Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie im Azure KI Services-Artikel Sicherheit.

Quellcode | Paket (npm) | Beispiele

Voraussetzungen

Einrichten

Abrufen von Schlüssel und Endpunkt

Für erfolgreiche Azure OpenAI-Aufrufe benötigen Sie einen Endpunkt und einen Schlüssel.

Variablenname Wert
AZURE_OPENAI_ENDPOINT Der Dienstendpunkt befindet sich im Abschnitt Schlüssel und Endpunkt, wenn Sie Ihre Ressource aus dem Azure-Portal untersuchen. Alternativ können Sie den Endpunkt über die Seite Bereitstellungen im Azure KI Foundry-Portal finden. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.
AZURE_OPENAI_API_KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Die Werte für Endpunkt und Schlüssel finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot der Benutzeroberfläche mit der Übersicht über eine Azure OpenAI-Ressource im Azure-Portal, in dem die Speicherorte für Endpunkt und Zugriffsschlüssel rot hervorgehoben sind.

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

Wichtig

Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Erstellen einer Node.-Anwendung

Erstellen Sie in einem Konsolenfenster (etwa cmd, PowerShell oder Bash) ein neues Verzeichnis für Ihre App, und rufen Sie es auf. Führen Sie dann den Befehl npm init aus, um eine Knotenanwendung mit einer Datei des Typs package.json zu erstellen.

npm init

Installieren der Clientbibliothek

Installieren der Clientbibliotheken:

npm install openai @azure/identity

Die Datei package.json Ihrer App wird mit den Abhängigkeiten aktualisiert.

Erstellen einer Sprachdatei

  1. Erstellen Sie eine neue Datei namens Text-to-speech.js, und öffnen Sie sie in Ihrem bevorzugten Code-Editor. Kopieren Sie den folgenden Code in die Datei 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);
    });
    
    
  2. Führen Sie das Skript mit dem folgenden Befehl aus:

    node Text-to-speech.js
    

Quellcode | Paket (npm) | Beispiele

Voraussetzungen

Einrichten

Abrufen von Schlüssel und Endpunkt

Für erfolgreiche Azure OpenAI-Aufrufe benötigen Sie einen Endpunkt und einen Schlüssel.

Variablenname Wert
AZURE_OPENAI_ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure OpenAI Studio>Playground>Codeansicht. Ein Beispielendpunkt ist https://aoai-docs.openai.azure.com/.
AZURE_OPENAI_API_KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Die Werte für Endpunkt und Schlüssel finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot der Benutzeroberfläche mit der Übersicht über eine Azure OpenAI-Ressource im Azure-Portal, in dem die Speicherorte für Endpunkt und Zugriffsschlüssel rot hervorgehoben sind.

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

Wichtig

Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Erstellen einer Node.-Anwendung

Erstellen Sie in einem Konsolenfenster (etwa cmd, PowerShell oder Bash) ein neues Verzeichnis für Ihre App, und rufen Sie es auf. Führen Sie dann den Befehl npm init aus, um eine Knotenanwendung mit einer Datei des Typs package.json zu erstellen.

npm init

Installieren der Clientbibliothek

Installieren der Clientbibliotheken:

npm install openai @azure/identity

Die Datei package.json Ihrer App wird mit den Abhängigkeiten aktualisiert.

Erstellen einer Sprachdatei

  1. Erstellen Sie eine neue Datei namens Text-to-speech.ts, und öffnen Sie sie in Ihrem bevorzugten Code-Editor. Kopieren Sie den folgenden Code in die Datei 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);
    });
    
    

    Der Import von "openai/shims/node" ist erforderlich, wenn der Code in einer Node.js-Umgebung ausgeführt wird. Dadurch wird sichergestellt, dass der Ausgabetyp der client.audio.speech.create-Methode korrekt auf NodeJS.ReadableStream festgelegt ist.

  2. Erstellen Sie die Anwendung mit dem folgenden Befehl:

    tsc
    
  3. Führen Sie die Anwendung mit dem folgenden Befehl aus:

    node Text-to-speech.js
    

Voraussetzungen

Erstellen der .NET App

  1. Erstellen Sie eine .NET-App mit dem Befehl dotnet new:

    dotnet new console -n TextToSpeech
    
  2. Wechseln Sie in das Verzeichnis der neuen App:

    cd OpenAISpeech
    
  3. Installieren der Azure.OpenAI Clientbibliothek:

    dotnet add package Azure.AI.OpenAI
    

Authentifizieren und Herstellen einer Verbindung mit Azure OpenAI

Um Anforderungen an Ihren Azure OpenAI Service zu stellen, benötigen Sie den Dienstendpunkt sowie Authentifizierungsanmeldeinformationen über eine der folgenden Optionen:

  • Microsoft Entra ID ist der empfohlene Ansatz für die Authentifizierung bei Azure-Diensten und ist sicherer als schlüsselbasierte Alternativen.

  • Mit Zugriffstasten können Sie einen geheimen Schlüssel bereitstellen, um eine Verbindung mit Ihrer Ressource herzustellen.

    Wichtig

    Zugriffsschlüssel sollten mit Vorsicht verwendet werden. Wenn Ihr Dienstzugriffsschlüssel verloren geht oder versehentlich an einem unsicheren Standort verfügbar gemacht wird, kann Ihr Dienst anfällig werden. Jeder Benutzer, der über den Zugriffsschlüssel verfügt, kann Anforderungen für den Azure OpenAI Service autorisieren.

Abrufen des Azure OpenAI-Endpunkts

Der Dienstendpunkt befindet sich im Abschnitt Schlüssel und Endpunkt, wenn Sie Ihre Ressource aus dem Azure-Portal untersuchen. Alternativ können Sie den Endpunkt über die Seite Bereitstellungen im Azure KI Foundry-Portal finden. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.

Screenshot der Benutzeroberfläche mit der Übersicht über eine Azure OpenAI-Ressource im Azure-Portal, in dem die Speicherorte für Endpunkt und Zugriffsschlüssel rot hervorgehoben sind.

Authentifizieren mithilfe von Microsoft Entra ID

Wenn Sie die Microsoft Entra ID-Authentifizierung verwenden, müssen Sie Folgendes ausführen:

  1. Fügen Sie das Paket Azure.Identity hinzu.

    dotnet add package Azure.Identity
    
  2. Weisen Sie Ihrem Benutzerkonto die Cognitive Services User-Rolle zu. Dies kann im Azure-Portal auf Ihrer OpenAI-Ressource unter Access Control (IAM)>Rollenzuweisung hinzufügen erfolgen.

  3. Melden Sie sich mit Visual Studio oder der Azure CLI über az login in Azure an.

Authentifizieren Sie sich mithilfe von Schlüsseln

Den Zugriffstastenschlüssel finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie Ihre Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Aktualisieren des App-Codes

  1. Ersetzen Sie den Inhalt von program.cs durch den folgenden Code, und aktualisieren Sie die Platzhalterwerte durch Ihren eigenen.

    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");
    

    Wichtig

    Verwenden Sie in der Produktion eine sichere Speicher- und Zugriffsmethode für Ihre Anmeldeinformationen (beispielsweise Azure Key Vault). Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie unter Azure KI Services-Sicherheit.

  2. Führen Sie die Anwendung mit dem Befehl dotnet run oder der Schaltfläche „Ausführen“ oben in Visual Studio aus:

    dotnet run
    

    Die App generiert eine Audiodatei an dem Speicherort, den Sie für die Variable speechFilePath angegeben haben. Geben Sie die Datei auf Ihrem Gerät wieder, um die generierte Audiowiedergabe zu hören.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource löschen. Vor dem Löschen der Ressource müssen Sie zunächst alle bereitgestellten Modelle löschen.

Nächste Schritte