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
- Una suscripción a Azure (cree una cuenta gratuita).
- Un recurso de Azure OpenAI creado en las regiones Centro-norte de EE. UU. o Centro de Suecia con el modelo implementado
tts-1
otts-1-hd
. Para obtener más información, consulte Creación de un recurso e implementación de un modelo con Azure OpenAI.
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.
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
- Una suscripción a Azure: cree una cuenta gratuita.
- Versiones de LTS de Node.js
- La CLI de Azure se ha usado para la autenticación sin contraseña en un entorno de desarrollo local, cree el contexto necesario iniciando sesión con la CLI de Azure.
- Un recurso de Azure OpenAI creado en una región admitida (consulte Disponibilidad de la región). Para obtener más información, consulte Creación de un recurso e implementación de un modelo con Azure OpenAI.
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.
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
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); });
Ejecute el script con el siguiente comando:
node Text-to-speech.js
Código fuente | Paquete (npm) | Muestras
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita.
- Versiones de LTS de Node.js
- TypeScript
- La CLI de Azure se ha usado para la autenticación sin contraseña en un entorno de desarrollo local, cree el contexto necesario iniciando sesión con la CLI de Azure.
- Un recurso de Azure OpenAI creado en una región admitida (consulte Disponibilidad de la región). Para obtener más información, consulte Creación de un recurso e implementación de un modelo con Azure OpenAI.
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.
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
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étodoclient.audio.speech.create
esté establecido correctamente enNodeJS.ReadableStream
.Compile la aplicación con el siguiente comando:
tsc
Ejecute la aplicación con el comando siguiente:
node Text-to-speech.js
Requisitos previos
- Suscripción a Azure. Puede crear una de forma gratuita.
- Un recurso de Azure OpenAI con un modelo Whisper implementado en una región admitida. Para obtener más información, consulte Creación de un recurso e implementación de un modelo con Azure OpenAI.
- SDK de .NET 8.0
Crear la aplicación .NET
Cree una aplicación de .NET con el comando
dotnet new
:dotnet new console -n TextToSpeech
Cambie al directorio de la nueva aplicación:
cd OpenAISpeech
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/
.
Autenticación mediante Microsoft Entra ID
Si decide usar la autenticación de Microsoft Entra ID, deberá completar lo siguiente:
Agregue el paquete
Azure.Identity
.dotnet add package Azure.Identity
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.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
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.
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
- Obtenga más información sobre cómo trabajar con texto a voz con Azure OpenAI Service en la documentación de referencia de Azure OpenAI Service.
- Para obtener más ejemplos, consulte el repositorio de GitHub de ejemplos de Azure OpenAI