Partager via


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

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.

Capture d’écran de l’interface utilisateur pour une ressource Azure OpenAI dans le portail Azure avec l’emplacement du point de terminaion et des clés d’accès en surbrillance.

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

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.

Capture d’écran de l’interface utilisateur pour une ressource Azure OpenAI dans le portail Azure avec l’emplacement du point de terminaion et des clés d’accès en surbrillance.

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

  1. 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);
    });
    
    
  2. Exécutez le script avec la commande suivante :

    node Text-to-speech.js
    

Code source | Package (npm) | Exemples

Prérequis

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.

Capture d’écran de l’interface utilisateur pour une ressource Azure OpenAI dans le portail Azure avec l’emplacement du point de terminaion et des clés d’accès en surbrillance.

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

  1. 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éthode client.audio.speech.create est correctement défini sur NodeJS.ReadableStream.

  2. Générez l’application avec la commande suivante :

    tsc
    
  3. Exécutez l’application avec la commande suivante :

    node Text-to-speech.js
    

Prérequis

Créer l’application .NET

  1. Créez une application .NET à l’aide de la commande dotnet new :

    dotnet new console -n TextToSpeech
    
  2. Accédez au répertoire de la nouvelle application :

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

Capture d’écran de l’interface utilisateur pour une ressource Azure OpenAI dans le portail Azure avec l’emplacement du point de terminaion et des clés d’accès en surbrillance.

S’authentifier avec Microsoft Entra ID

Si vous choisissez l’authentification Microsoft Entra ID, vous devez effectuer ce qui suit :

  1. Ajoutez le package Azure.Identity.

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

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

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

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