Démarrage rapide : Synthèse vocale avec Azure OpenAI Service
Dans ce guide de démarrage rapide, vous utilisez Azure OpenAI Service pour la synthèse vocale avec des voix OpenAI.
Les voix disponibles sont : alloy
, echo
, fable
, onyx
, nova
et shimmer
. Pour plus d’informations, consultez la documentation de référence d’Azure OpenAI Service pour la synthèse vocale.
Prérequis
- Un abonnement Azure : créez-en un gratuitement.
- Une ressource Azure OpenAI créée dans les régions USA Centre Nord ou Suède Centre avec le modèle
tts-1
outts-1-hd
déployé. Pour plus d’informations, consultez l’article Créer une ressource et déployer un modèle à l’aide d’Azure OpenAI.
Configurer
Récupérer la clé et le point de terminaison
Pour effectuer correctement un appel sur Azure OpenAI, vous avez besoin d’un point de terminaison et d’une clé.
Nom de la variable | Valeur |
---|---|
AZURE_OPENAI_ENDPOINT |
Le point de terminaison de service se trouve dans la section Clés et point de terminaison quand vous examinerez votre ressource à partir du Portail Azure. Sinon, vous pouvez trouver le point de terminaison via la page Déploiements dans Azure AI Studio. Voici un exemple de point de terminaison : https://docs-test-001.openai.azure.com/ . |
AZURE_OPENAI_API_KEY |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Vous pouvez utiliser soit KEY1 , soit KEY2 . |
Accédez à votre ressource sur le portail Azure. Le Point de terminaison et les Clés se trouvent dans la section Gestion des ressources. Copiez votre point de terminaison et votre clé d’accès, car vous avez besoin de l’authentification de vos appels d’API. Vous pouvez utiliser soit KEY1
, soit KEY2
. Avoir toujours deux clés vous permet de faire pivoter et de régénérer en toute sécurité les clés sans provoquer d’interruption de service.
Variables d'environnement
Créez et affectez des variables d’environnement persistantes pour votre clé et votre point de terminaison.
Important
Si vous utilisez une clé API, stockez-la en toute sécurité dans un autre emplacement, par exemple dans Azure Key Vault. N'incluez pas la clé API directement dans votre code et ne la diffusez jamais publiquement.
Pour plus d’informations sur la sécurité des services IA, consultez Authentifier les requêtes auprès d’Azure AI services.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Créer une requête et une réponse REST
Dans un interpréteur de commandes bash, exécutez la commande suivante. Vous devez remplacer YourDeploymentName
par le nom de déploiement que vous avez choisi lorsque vous avez déployé le modèle de synthèse vocale. Le nom du déploiement n’est pas nécessairement identique au nom du modèle. L’entrée du nom du modèle entraîne une erreur, sauf si vous avez choisi un nom de déploiement identique au nom du modèle sous-jacent.
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
Le format de la première ligne de la commande avec un exemple de point final serait le suivant curl https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2024-02-15-preview \
.
Important
Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations sur la sécurité des informations d’identification, consultez l’article de sécurité Azure AI services.
Code source | Package (npm) | Exemples
Prérequis
- Un abonnement Azure - En créer un gratuitement
- Versions LTS de Node.js
- Azure CLI est utilisé pour l’authentification sans mot de passe dans un environnement de développement local. Créez le contexte nécessaire en vous connectant avec Azure CLI.
- Ressource Azure OpenAI créée dans une région prise en charge (voir Disponibilité des régions). Pour plus d’informations, consultez l’article Créer une ressource et déployer un modèle à l’aide d’Azure OpenAI.
Configurer
Récupérer la clé et le point de terminaison
Pour effectuer correctement un appel sur Azure OpenAI, vous avez besoin d’un point de terminaison et d’une clé.
Nom de la variable | Valeur |
---|---|
AZURE_OPENAI_ENDPOINT |
Le point de terminaison de service se trouve dans la section Clés et point de terminaison quand vous examinerez votre ressource à partir du Portail Azure. Sinon, vous pouvez trouver le point de terminaison via la page Déploiements dans Azure AI Studio. Voici un exemple de point de terminaison : https://docs-test-001.openai.azure.com/ . |
AZURE_OPENAI_API_KEY |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Vous pouvez utiliser soit KEY1 , soit KEY2 . |
Accédez à votre ressource sur le portail Azure. Le Point de terminaison et les Clés se trouvent dans la section Gestion des ressources. Copiez votre point de terminaison et votre clé d’accès, car vous avez besoin de l’authentification de vos appels d’API. Vous pouvez utiliser soit KEY1
, soit KEY2
. Avoir toujours deux clés vous permet de faire pivoter et de régénérer en toute sécurité les clés sans provoquer d’interruption de service.
Variables d'environnement
Créez et affectez des variables d’environnement persistantes pour votre clé et votre point de terminaison.
Important
Si vous utilisez une clé API, stockez-la en toute sécurité dans un autre emplacement, par exemple dans Azure Key Vault. N'incluez pas la clé API directement dans votre code et ne la diffusez jamais publiquement.
Pour plus d’informations sur la sécurité des services IA, consultez Authentifier les requêtes auprès d’Azure AI services.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Créer une application Node
Dans une fenêtre de console (telle que cmd, PowerShell ou bash), créez un répertoire pour votre application et accédez-y. Exécutez ensuite la commande npm init
pour créer une application de nœud avec un fichier package.json.
npm init
Installer la bibliothèque de client
Installez les bibliothèques de client avec :
npm install openai @azure/identity
Le fichier package.json de votre application sera mis à jour avec les dépendances.
Créer un fichier speech
Créez un fichier nommé Text-to-speech.js et ouvrez-le dans votre éditeur de code préféré. Copiez le code suivant dans le fichier 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); });
Exécutez le script avec la commande suivante :
node Text-to-speech.js
Code source | Package (npm) | Exemples
Prérequis
- Un abonnement Azure - En créer un gratuitement
- Versions LTS de Node.js
- TypeScript
- Azure CLI est utilisé pour l’authentification sans mot de passe dans un environnement de développement local. Créez le contexte nécessaire en vous connectant avec Azure CLI.
- Ressource Azure OpenAI créée dans une région prise en charge (voir Disponibilité des régions). Pour plus d’informations, consultez l’article Créer une ressource et déployer un modèle à l’aide d’Azure OpenAI.
Configurer
Récupérer la clé et le point de terminaison
Pour effectuer correctement un appel sur Azure OpenAI, vous avez besoin d’un point de terminaison et d’une clé.
Nom de la variable | Valeur |
---|---|
AZURE_OPENAI_ENDPOINT |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Vous pouvez également trouver la valeur dans l’affichage Azure OpenAI Studio>Playground>Code. Voici un exemple de point de terminaison : https://aoai-docs.openai.azure.com/ . |
AZURE_OPENAI_API_KEY |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource à partir du portail Azure. Vous pouvez utiliser soit KEY1 , soit KEY2 . |
Accédez à votre ressource sur le portail Azure. Le Point de terminaison et les Clés se trouvent dans la section Gestion des ressources. Copiez votre point de terminaison et votre clé d’accès, car vous avez besoin de l’authentification de vos appels d’API. Vous pouvez utiliser soit KEY1
, soit KEY2
. Avoir toujours deux clés vous permet de faire pivoter et de régénérer en toute sécurité les clés sans provoquer d’interruption de service.
Variables d'environnement
Créez et affectez des variables d’environnement persistantes pour votre clé et votre point de terminaison.
Important
Si vous utilisez une clé API, stockez-la en toute sécurité dans un autre emplacement, par exemple dans Azure Key Vault. N'incluez pas la clé API directement dans votre code et ne la diffusez jamais publiquement.
Pour plus d’informations sur la sécurité des services IA, consultez Authentifier les requêtes auprès d’Azure AI services.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Créer une application Node
Dans une fenêtre de console (telle que cmd, PowerShell ou bash), créez un répertoire pour votre application et accédez-y. Exécutez ensuite la commande npm init
pour créer une application de nœud avec un fichier package.json.
npm init
Installer la bibliothèque de client
Installez les bibliothèques de client avec :
npm install openai @azure/identity
Le fichier package.json de votre application sera mis à jour avec les dépendances.
Créer un fichier speech
Créez un fichier nommé Text-to-speech.ts et ouvrez-le dans votre éditeur de code préféré. Copiez le code suivant dans le fichier 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); });
L’importation de
"openai/shims/node"
est nécessaire lorsque le code est exécuté dans un environnement Node.js. Il permet de s’assurer que le type de sortie de la méthodeclient.audio.speech.create
est correctement défini surNodeJS.ReadableStream
.Générez l’application avec la commande suivante :
tsc
Exécutez l’application avec la commande suivante :
node Text-to-speech.js
Prérequis
- Un abonnement Azure. Vous pouvez en créer un gratuitement.
- Une ressource Azure OpenAI avec un modèle Whisper déployé dans une région prise en charge. Pour plus d’informations, consultez l’article Créer une ressource et déployer un modèle à l’aide d’Azure OpenAI.
- Le kit de développement logiciel (SDK) .NET 8.0
Créer l’application .NET
Créez une application .NET à l’aide de la commande
dotnet new
:dotnet new console -n TextToSpeech
Accédez au répertoire de la nouvelle application :
cd OpenAISpeech
Installez la bibliothèque de client
Azure.OpenAI
:dotnet add package Azure.AI.OpenAI
Authentifier et se connecter à Azure OpenAI
Pour soumettre des requêtes à votre service Azure OpenAI, vous avez besoin du point de terminaison de service, ainsi que des informations d’identification d’authentification via l’une des options suivantes :
Microsoft Entra ID est l’approche recommandée pour l’authentification auprès des services Azure et est plus sécurisée que les alternatives basées sur des clés.
Les clés d’accès vous permettent de fournir une clé secrète pour vous connecter à votre ressource.
Important
Les clés d’accès doivent être utilisées avec précaution. Si votre clé d’accès de service est perdue ou accidentellement exposée dans un emplacement non sécurisé, votre service peut devenir vulnérable. Toute personne disposant de la clé d’accès est en mesure d’autoriser les demandes sur le service Azure OpenAI.
Obtenir le point de terminaison Azure OpenAI
Le point de terminaison de service se trouve dans la section Clés et point de terminaison quand vous examinerez votre ressource à partir du Portail Azure. Sinon, vous pouvez trouver le point de terminaison via la page Déploiements dans Azure AI Studio. Voici un exemple de point de terminaison : https://docs-test-001.openai.azure.com/
.
S’authentifier avec Microsoft Entra ID
Si vous choisissez l’authentification Microsoft Entra ID, vous devez effectuer ce qui suit :
Ajoutez le package
Azure.Identity
.dotnet add package Azure.Identity
Attribuez le rôle
Cognitive Services User
à votre compte d’utilisateur. Vous pouvez effectuer cette opération dans le portail Azure sur votre ressource OpenAI sous Contrôle d’accès (IAM)>Ajouter une attribution de rôle.Connectez-vous à Azure à l’aide de Visual Studio ou d’Azure CLI via
az login
.
S’authentifier à l’aide de clés
La valeur de la clé d’accès se trouve dans la section Clés et point de terminaison quand vous examinerez votre ressource à partir du portail Azure. Vous pouvez utiliser soit KEY1
, soit KEY2
. Avoir toujours deux clés vous permet de faire pivoter et de régénérer en toute sécurité les clés sans provoquer d’interruption de service.
Mettre à jour le code de l’application
Remplacez le contenu de
program.cs
par le code suivant et remplacez les valeurs d’espace réservé par vos propres valeurs.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");
Important
Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification, comme Azure Key Vault. Pour plus d’informations sur la sécurité des informations d’identification, consultez l’article relatif à la sécurité d’Azure AI services.
Exécutez l’application à l’aide de la commande
dotnet run
ou du bouton Exécuter en haut de Visual Studio :dotnet run
L’application génère un fichier audio à l’emplacement que vous avez spécifié pour la variable
speechFilePath
. Lisez le fichier sur votre appareil pour entendre l’audio généré.
Nettoyer les ressources
Si vous souhaitez nettoyer et supprimer une ressource Azure OpenAI, vous pouvez la supprimer. Vous devez d’abord supprimer tous les modèles déployés avant de supprimer la ressource.
Étapes suivantes
- Explorez plus en détail comment utiliser la synthèse vocale avec Azure OpenAI Service dans la documentation de référence d’Azure OpenAI Service.
- Consultez le référentiel GitHub Azure OpenAI samples (uniquement disponible en anglais) pour découvrir d’autres exemples.