Inicio rápido: Texto a voz con Azure OpenAI Service

En este inicio rápido, usará Azure OpenAI Service para texto a voz con voces de OpenAI.

Las voces disponibles son: alloy, echo, fable, onyx, nova y shimmer. Para más información, consulte la documentación de referencia de Azure OpenAI Service para texto a voz.

Requisitos previos

Configuración

Recuperación de la clave y el punto de conexión

Para realizar correctamente una llamada en Azure OpenAI, necesita un punto de conexión y una clave.

Nombre de la variable Valor
AZURE_OPENAI_ENDPOINT El punto de conexión de servicio se puede encontrar en la sección Claves y punto de conexión al examinar su recurso en Azure Portal. También puede encontrar el punto de implementación a través de la página Implementaciones de Estudio de IA de Azure. Punto de conexión de ejemplo: https://docs-test-001.openai.azure.com/.
AZURE_OPENAI_API_KEY Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso en Azure Portal. Puede usar KEY1 o KEY2.

Vaya al recurso en Azure Portal. El punto de conexión y las claves se pueden encontrar en la sección Administración de recursos. Copie el punto de conexión y la clave de acceso, ya que los necesita para autenticar las llamadas API. Puede usar KEY1 o KEY2. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio.

Captura de pantalla de la interfaz de usuario de información general de un recurso de Azure OpenAI en Azure Portal con la ubicación del punto de conexión y las claves de acceso resaltadas.

Variables de entorno

Cree y asigne variables de entorno persistentes para la clave y el punto de conexión.

Importante

Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.

Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Creación de una solicitud y respuesta de REST

En un shell de Bash, ejecute el siguiente comando. Es necesario reemplazar YourDeploymentName por el nombre de implementación que ha elegido al implementar el modelo de texto a voz. El nombre de implementación no es necesariamente el mismo que el nombre del modelo. Al escribir el nombre del modelo se producirá un error a menos que elija un nombre de implementación idéntico al nombre del modelo subyacente.

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

El formato de su primera línea del comando con un ejemplo de punto de conexión aparecería como se indica en curl https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2024-02-15-preview \.

Importante

En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Para obtener más información sobre la seguridad de las credenciales, consulte el artículo Seguridad de servicios de Azure AI.

Código fuente | Paquete (npm) | Muestras

Requisitos previos

Configuración

Recuperación de la clave y el punto de conexión

Para realizar correctamente una llamada en Azure OpenAI, necesita un punto de conexión y una clave.

Nombre de la variable Valor
AZURE_OPENAI_ENDPOINT El punto de conexión de servicio se puede encontrar en la sección Claves y punto de conexión al examinar su recurso en Azure Portal. También puede encontrar el punto de implementación a través de la página Implementaciones de Estudio de IA de Azure. Punto de conexión de ejemplo: https://docs-test-001.openai.azure.com/.
AZURE_OPENAI_API_KEY Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso en Azure Portal. Puede usar KEY1 o KEY2.

Vaya al recurso en Azure Portal. El punto de conexión y las claves se pueden encontrar en la sección Administración de recursos. Copie el punto de conexión y la clave de acceso, ya que los necesita para autenticar las llamadas API. Puede usar KEY1 o KEY2. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio.

Captura de pantalla de la interfaz de usuario de información general de un recurso de Azure OpenAI en Azure Portal con la ubicación del punto de conexión y las claves de acceso resaltadas.

Variables de entorno

Cree y asigne variables de entorno persistentes para la clave y el punto de conexión.

Importante

Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.

Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Creación de una aplicación Node

En una ventana de la consola (como cmd, PowerShell o Bash), cree un directorio para la aplicación y vaya a él. Ejecute el comando npm init para crear una aplicación de nodo con un archivo package.json.

npm init

Instalación de la biblioteca cliente

Instale las bibliotecas cliente con lo siguiente:

npm install openai @azure/identity

El archivo package.json de la aplicación se actualizará con las dependencias.

Creación de un archivo de voz

  1. Cree un archivo denominado Text-to-speech.js y ábralo en el editor de código que prefiera. Copie el código siguiente en el archivo 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. Ejecute el script con el siguiente comando:

    node Text-to-speech.js
    

Código fuente | Paquete (npm) | Muestras

Requisitos previos

Configuración

Recuperación de la clave y el punto de conexión

Para realizar correctamente una llamada en Azure OpenAI, necesita un punto de conexión y una clave.

Nombre de la variable Valor
AZURE_OPENAI_ENDPOINT Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso en Azure Portal. Como alternativa, puede encontrar el valor en Azure OpenAI Studio>Playground>Code View. Punto de conexión de ejemplo: https://aoai-docs.openai.azure.com/.
AZURE_OPENAI_API_KEY Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso en Azure Portal. Puede usar KEY1 o KEY2.

Vaya al recurso en Azure Portal. El punto de conexión y las claves se pueden encontrar en la sección Administración de recursos. Copie el punto de conexión y la clave de acceso, ya que los necesita para autenticar las llamadas API. Puede usar KEY1 o KEY2. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio.

Captura de pantalla de la interfaz de usuario de información general de un recurso de Azure OpenAI en Azure Portal con la ubicación del punto de conexión y las claves de acceso resaltadas.

Variables de entorno

Cree y asigne variables de entorno persistentes para la clave y el punto de conexión.

Importante

Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.

Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Creación de una aplicación Node

En una ventana de la consola (como cmd, PowerShell o Bash), cree un directorio para la aplicación y vaya a él. Ejecute el comando npm init para crear una aplicación de nodo con un archivo package.json.

npm init

Instalación de la biblioteca cliente

Instale las bibliotecas cliente con lo siguiente:

npm install openai @azure/identity

El archivo package.json de la aplicación se actualizará con las dependencias.

Creación de un archivo de voz

  1. Cree un archivo denominado Text-to-speech.ts y ábralo en el editor de código que prefiera. Copie el código siguiente en el archivo 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);
    });
    
    

    La importación de "openai/shims/node" es necesaria al ejecutar el código en un entorno de Node.js. Garantiza que el tipo de salida del método client.audio.speech.create esté establecido correctamente en NodeJS.ReadableStream.

  2. Compile la aplicación con el siguiente comando:

    tsc
    
  3. Ejecute la aplicación con el comando siguiente:

    node Text-to-speech.js
    

Requisitos previos

Crear la aplicación .NET

  1. Cree una aplicación de .NET con el comando dotnet new:

    dotnet new console -n TextToSpeech
    
  2. Cambie al directorio de la nueva aplicación:

    cd OpenAISpeech
    
  3. Instale la biblioteca cliente Azure.OpenAI:

    dotnet add package Azure.AI.OpenAI
    

Autenticación y conexión a Azure OpenAI

Para realizar solicitudes al servicio Azure OpenAI, necesita el punto de conexión de servicio, así como las credenciales de autenticación a través de una de las siguientes opciones:

  • Microsoft Entra ID es el enfoque recomendado para autenticarse en los servicios de Azure y es más seguro que las alternativas basadas en claves.

  • Las claves de acceso permiten proporcionar una clave secreta para conectarse al recurso.

    Importante

    Las claves de acceso deben usarse con precaución. Si la clave de acceso del servicio se pierde o se expone accidentalmente en una ubicación no segura, el servicio puede volverse vulnerable. Cualquiera que tenga la clave de acceso puede autorizar solicitudes al servicio de Azure OpenAI.

Obtener el punto de conexión de Azure OpenAI

El punto de conexión de servicio se puede encontrar en la sección Claves y punto de conexión al examinar su recurso en Azure Portal. También puede encontrar el punto de implementación a través de la página Implementaciones de Estudio de IA de Azure. Punto de conexión de ejemplo: https://docs-test-001.openai.azure.com/.

Captura de pantalla de la interfaz de usuario de información general de un recurso de Azure OpenAI en Azure Portal con la ubicación del punto de conexión y las claves de acceso resaltadas.

Autenticación mediante Microsoft Entra ID

Si decide usar la autenticación de Microsoft Entra ID, deberá completar lo siguiente:

  1. Agregue el paquete Azure.Identity.

    dotnet add package Azure.Identity
    
  2. Asignar el rol Cognitive Services User a su cuenta de usuario. Esto se puede hacer en Azure Portal o en el recurso de OpenAI en Control de acceso (IAM)>Agregar asignación de roles.

  3. Inicie sesión en Azure mediante Visual Studio o la CLI de Azure a través de az login.

Autenticación mediante claves

El valor de la clave de acceso se puede encontrar en la sección Claves y punto de conexión al examinar su recurso en Azure Portal. Puede usar KEY1 o KEY2. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio.

Actualización del código de la aplicación

  1. Reemplace el contenido de program.cs por el código siguiente y actualice los valores de marcador de posición por los suyos propios.

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

    Importante

    Para producción, use un método seguro de almacenar las credenciales y acceder a ellas, como Azure Key Vault. Para más información sobre la seguridad de las credenciales, vea Seguridad de los servicios de Azure AI.

  2. Ejecute la aplicación mediante el comando dotnet run o el botón Ejecutar situado en la parte superior de Visual Studio:

    dotnet run
    

    La aplicación genera un archivo de audio en la ubicación especificada para la variable speechFilePath. Reproducir el archivo en el dispositivo para escuchar el audio generado.

Limpieza de recursos

Si quiere limpiar y quitar un recurso de Azure OpenAI, puede eliminar el recurso. Antes de eliminar el recurso, primero deberá eliminar los modelos implementados.

Pasos siguientes