Condividi tramite


Guida introduttiva: Sintesi vocale con Azure OpenAI nei modelli di Azure AI Foundry

In questa guida introduttiva si usa Azure OpenAI per la sintesi vocale con voci OpenAI.

Le voci disponibili sono: alloy, echo, fable, onyx, nova e shimmer. Per altre informazioni, vedere la documentazione di riferimento di Azure OpenAI per la sintesi vocale.

Prerequisiti

Impostazione

Recuperare la chiave e l'endpoint

Per effettuare correttamente una chiamata ad Azure OpenAI, sono necessari un endpoint e una chiave.

Nome variabile Valore
AZURE_OPENAI_ENDPOINT L'endpoint di servizio è disponibile nella sezione Chiavi ed endpoint quando si esamina la risorsa dal portale di Azure. In alternativa, è possibile trovare l'endpoint tramite la pagina Distribuzioni nel portale di Azure AI Foundry. Un endpoint di esempio è https://docs-test-001.openai.azure.com/.
AZURE_OPENAI_API_KEY Questo valore è disponibile nella sezione Chiavi ed endpoint durante l'esame della risorsa dalla portale di Azure. Puoi usare entrambi KEY1 o KEY2.

Vai alla tua risorsa nel portale di Azure. L'Endpoint e le chiavi sono disponibili nella sezione Gestione risorse. Copiare l'endpoint e la chiave di accesso in base alle esigenze per l'autenticazione delle chiamate API. Puoi usare entrambi KEY1 o KEY2. Disporre sempre di due chiavi consente di ruotare e rigenerare in modo sicuro le chiavi senza causare un'interruzione del servizio.

Screenshot di panoramica dell'interfaccia utente per una risorsa di Azure OpenAI nel portale di Azure con l'endpoint e la posizione delle chiavi di accesso evidenziati in rosso.

Variabili di ambiente

Creare e assegnare variabili di ambiente persistenti per la chiave e l'endpoint.

Importante

Usare le chiavi API con cautela. Non includere la chiave API direttamente nel codice e non esporla mai pubblicamente. Se si usa una chiave API, archiviarla in modo sicuro in Azure Key Vault. Per altre informazioni sull'uso sicuro delle chiavi API nelle app, vedere Chiavi API con Azure Key Vault.

Per altre informazioni sulla sicurezza dei servizi IA, vedere Autenticare richieste in Servizi di Azure AI.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Creare una richiesta e una risposta REST

Nella shell BASH eseguire il comando seguente. È necessario sostituire YourDeploymentName con il nome di distribuzione scelto durante la distribuzione del modello di sintesi vocale. Il nome della distribuzione non corrisponde necessariamente al nome del modello. Se si immette il nome del modello, viene generato un errore, a meno che non sia stato scelto un nome di distribuzione identico a quello del modello sottostante.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/YourDeploymentName/audio/speech?api-version=2025-04-01-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

Il formato della prima riga del comando con un endpoint di esempio viene visualizzato come indicato di seguito curl https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2025-04-01-preview \.

Importante

Per la produzione, usare un metodo sicuro per l'archiviazione e l'accesso alle proprie credenziali, ad esempio Azure Key Vault. Per altre informazioni sulla sicurezza delle credenziali, vedere questo articolo sulla sicurezza .

Codice sorgente | Pacchetto (npm) | Esempi

Prerequisiti

Prerequisiti di Microsoft Entra ID

Per l'autenticazione senza chiave consigliata con Microsoft Entra ID, è necessario:

  • Installare l'Azure CLI utilizzata per l'autenticazione senza password con Microsoft Entra ID.
  • Assegnare il ruolo Cognitive Services User all'account utente. È possibile assegnare ruoli nella portale di Azure in Controllo di accesso (IAM)>Aggiungere un'assegnazione di ruolo.

Impostazione

  1. Creare una nuova cartella synthesis-quickstart e passare alla cartella quickstart con il comando seguente:

    mkdir synthesis-quickstart && cd synthesis-quickstart
    
  2. Creare il package.json con il seguente comando:

    npm init -y
    
  3. Installare la libreria client OpenAI per JavaScript con:

    npm install openai
    
  4. Per l'autenticazione senza password consigliata:

    npm install @azure/identity
    

Recuperare le informazioni sulle risorse

È necessario recuperare le informazioni seguenti per autenticare l'applicazione con la risorsa OpenAI di Azure:

Nome variabile Valore
AZURE_OPENAI_ENDPOINT Questo valore è disponibile nella sezione Chiavi ed endpoint quando si esamina la risorsa dal portale di Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Questo valore corrisponderà al nome personalizzato scelto per la distribuzione quando è stato distribuito un modello. Questo valore può essere trovato sotto Gestione delle Risorse>Distribuzioni di Modelli nel portale di Azure.
OPENAI_API_VERSION Altre informazioni sulle versioni api.

È possibile modificare la versione nel codice o usare una variabile di ambiente.

Altre informazioni sull'autenticazione senza chiave e sull'impostazione delle variabili di ambiente.

Attenzione

Per usare l'autenticazione senza chiave consigliata con l'SDK, assicurarsi che la AZURE_OPENAI_API_KEY variabile di ambiente non sia impostata.

Creare un file di voce

  1. Creare il index.js file con il codice seguente:

    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 || "Your endpoint";
    const speechFilePath = "<path to save the speech file>";
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "tts";
    const apiVersion = process.env.OPENAI_API_VERSION || "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. Accedere ad Azure con il comando seguente:

    az login
    
  3. Eseguire il file JavaScript.

    node index.js
    

Codice sorgente | Pacchetto (npm) | Esempi

Prerequisiti

Prerequisiti di Microsoft Entra ID

Per l'autenticazione senza chiave consigliata con Microsoft Entra ID, è necessario:

  • Installare l'Azure CLI utilizzata per l'autenticazione senza password con Microsoft Entra ID.
  • Assegnare il ruolo Cognitive Services User all'account utente. È possibile assegnare ruoli nella portale di Azure in Controllo di accesso (IAM)>Aggiungere un'assegnazione di ruolo.

Impostazione

  1. Creare una nuova cartella assistants-quickstart e passare alla cartella quickstart con il comando seguente:

    mkdir assistants-quickstart && cd assistants-quickstart
    
  2. Creare il package.json con il seguente comando:

    npm init -y
    
  3. Aggiornare package.json a ECMAScript con il comando seguente:

    npm pkg set type=module
    
  4. Installare la libreria client OpenAI per JavaScript con:

    npm install openai
    
  5. Per l'autenticazione senza password consigliata:

    npm install @azure/identity
    

Recuperare le informazioni sulle risorse

È necessario recuperare le informazioni seguenti per autenticare l'applicazione con la risorsa OpenAI di Azure:

Nome variabile Valore
AZURE_OPENAI_ENDPOINT Questo valore è disponibile nella sezione Chiavi ed endpoint quando si esamina la risorsa dal portale di Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Questo valore corrisponderà al nome personalizzato scelto per la distribuzione quando è stato distribuito un modello. Questo valore può essere trovato sotto Gestione delle Risorse>Distribuzioni di Modelli nel portale di Azure.
OPENAI_API_VERSION Altre informazioni sulle versioni api.

È possibile modificare la versione nel codice o usare una variabile di ambiente.

Altre informazioni sull'autenticazione senza chiave e sull'impostazione delle variabili di ambiente.

Attenzione

Per usare l'autenticazione senza chiave consigliata con l'SDK, assicurarsi che la AZURE_OPENAI_API_KEY variabile di ambiente non sia impostata.

Creare un file di voce

  1. Creare il index.ts file con il codice seguente:

    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 || "Your endpoint";
    const speechFilePath = "<path to save the speech file>";
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "tts";
    const apiVersion = process.env.OPENAI_API_VERSION || "2025-04-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'importazione di "openai/shims/node" è necessaria quando si esegue il codice in un ambiente Node.js. Garantisce che il tipo di output del metodo client.audio.speech.create sia impostato correttamente su NodeJS.ReadableStream.

  2. Creare il file per eseguire la tsconfig.json transpile del codice TypeScript e copiare il codice seguente per ECMAScript.

    {
        "compilerOptions": {
          "module": "NodeNext",
          "target": "ES2022", // Supports top-level await
          "moduleResolution": "NodeNext",
          "skipLibCheck": true, // Avoid type errors from node_modules
          "strict": true // Enable strict type-checking options
        },
        "include": ["*.ts"]
    }
    
  3. Converti il codice da TypeScript a JavaScript.

    tsc
    
  4. Accedere ad Azure con il comando seguente:

    az login
    
  5. Eseguire il codice con il comando seguente:

    node index.js
    

Prerequisiti

Prerequisiti di Microsoft Entra ID

Per l'autenticazione senza chiave consigliata con Microsoft Entra ID, è necessario:

  • Installare l'Azure CLI utilizzata per l'autenticazione senza password con Microsoft Entra ID.
  • Assegnare il ruolo Cognitive Services User all'account utente. È possibile assegnare ruoli nella portale di Azure in Controllo di accesso (IAM)>Aggiungere un'assegnazione di ruolo.

Impostazione

  1. Creare una nuova cartella to-speech-quickstart e passare alla cartella quickstart con il comando seguente:

    mkdir to-speech-quickstart && cd to-speech-quickstart
    
  2. Creare una nuova applicazione console con il comando seguente:

    dotnet new console
    
  3. Installare la libreria client OpenAI .NET con il comando dotnet add package:

    dotnet add package Azure.AI.OpenAI
    
  4. Per l'autenticazione senza chiave consigliata con Microsoft Entra ID, installare il pacchetto Azure.Identity con:

    dotnet add package Azure.Identity
    
  5. Per l'autenticazione senza chiave consigliata con Microsoft Entra ID, accedere ad Azure con il comando seguente:

    az login
    

Recuperare le informazioni sulle risorse

È necessario recuperare le informazioni seguenti per autenticare l'applicazione con la risorsa OpenAI di Azure:

Nome variabile Valore
AZURE_OPENAI_ENDPOINT Questo valore è disponibile nella sezione Chiavi ed endpoint quando si esamina la risorsa dal portale di Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Questo valore corrisponderà al nome personalizzato scelto per la distribuzione quando è stato distribuito un modello. Questo valore può essere trovato sotto Gestione delle Risorse>Distribuzioni di Modelli nel portale di Azure.
OPENAI_API_VERSION Altre informazioni sulle versioni api.

È possibile modificare la versione nel codice o usare una variabile di ambiente.

Altre informazioni sull'autenticazione senza chiave e sull'impostazione delle variabili di ambiente.

Eseguire l'avvio rapido

Il codice di esempio in questa guida introduttiva usa l'ID Microsoft Entra per l'autenticazione senza chiave consigliata. Se si preferisce usare una chiave API, è possibile sostituire l'oggetto DefaultAzureCredential con un AzureKeyCredential oggetto .

AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 

Annotazioni

È possibile ottenere file audio di esempio, ad esempio wikipediaOcelot.wav, dal repository SDK Azure AI Speech su GitHub.

Per eseguire l'avvio rapido, seguire questa procedura:

  1. Sostituire il contenuto di Program.cs con il codice seguente e aggiornare i valori segnaposto con i propri.

    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";
    
    AzureOpenAIClient openAIClient = new AzureOpenAIClient(endpoint, credentials);
    AudioClient 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");
    
  2. Eseguire l'applicazione usando il dotnet run comando o il pulsante Esegui nella parte superiore di Visual Studio:

    dotnet run
    

Risultato

L'applicazione genererà un file audio nel percorso specificato per la speechFilePath variabile. Riprodurre il file nel dispositivo per ascoltare l'audio generato.

Pulire le risorse

Se si vuole ripulire e rimuovere una risorsa OpenAI di Azure, è possibile eliminare la risorsa. Prima di eliminare la risorsa, è necessario eliminare i modelli distribuiti.

Passaggi successivi