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
- Azure-Abonnement – kostenloses Abonnement erstellen.
- Eine Azure OpenAI-Ressource, die in den Regionen USA, Norden-Mitte oder Schweden, Mitte mit dem bereitgestellten Modell
tts-1
odertts-1-hd
erstellt wurde. Weitere Informationen finden Sie unter Erstellen einer Ressource und Bereitstellen eines Modells mit Azure OpenAI.
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.
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
- Azure-Abonnement: Kostenloses Azure-Konto
- LTS-Versionen von Node.js
- Die Azure CLI wird für die kennwortlose Authentifizierung in einer lokalen Entwicklungsumgebung verwendet. Erstellen Sie den erforderlichen Kontext, indem Sie sich mit der Azure CLI anmelden.
- Eine Azure OpenAI-Ressource, die in einer unterstützten Region erstellt wurde (siehe Regionale Verfügbarkeit). Weitere Informationen finden Sie unter Erstellen einer Ressource und Bereitstellen eines Modells mit Azure OpenAI.
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.
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
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); });
Führen Sie das Skript mit dem folgenden Befehl aus:
node Text-to-speech.js
Quellcode | Paket (npm) | Beispiele
Voraussetzungen
- Azure-Abonnement: Kostenloses Azure-Konto
- LTS-Versionen von Node.js
- TypeScript
- Die Azure CLI wird für die kennwortlose Authentifizierung in einer lokalen Entwicklungsumgebung verwendet. Erstellen Sie den erforderlichen Kontext, indem Sie sich mit der Azure CLI anmelden.
- Eine Azure OpenAI-Ressource, die in einer unterstützten Region erstellt wurde (siehe Regionale Verfügbarkeit). Weitere Informationen finden Sie unter Erstellen einer Ressource und Bereitstellen eines Modells mit Azure OpenAI.
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.
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
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 derclient.audio.speech.create
-Methode korrekt aufNodeJS.ReadableStream
festgelegt ist.Erstellen Sie die Anwendung mit dem folgenden Befehl:
tsc
Führen Sie die Anwendung mit dem folgenden Befehl aus:
node Text-to-speech.js
Voraussetzungen
- Ein Azure-Abonnement. Sie können ein kostenloses Konto erstellen.
- Eine Azure OpenAI-Ressource mit einem Whisper-Modell, die in einer unterstützten Region bereitgestellt wird. Weitere Informationen finden Sie unter Erstellen einer Ressource und Bereitstellen eines Modells mit Azure OpenAI.
- The .NET 8.0 SDK
Erstellen der .NET App
Erstellen Sie eine .NET-App mit dem Befehl
dotnet new
:dotnet new console -n TextToSpeech
Wechseln Sie in das Verzeichnis der neuen App:
cd OpenAISpeech
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/
.
Authentifizieren mithilfe von Microsoft Entra ID
Wenn Sie die Microsoft Entra ID-Authentifizierung verwenden, müssen Sie Folgendes ausführen:
Fügen Sie das Paket
Azure.Identity
hinzu.dotnet add package Azure.Identity
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.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
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.
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
- Erfahren Sie in der Azure OpenAI Service-Referenzdokumentation mehr darüber, wie Sie mit der Sprachsynthese mit Azure OpenAI Service arbeiten.
- Weitere Beispiele finden Sie im GitHub-Repository für Azure OpenAI-Beispiele