GPT-4o Realtime API para voz y audio (versión preliminar)
Nota:
Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.
GPT-4o Realtime API de Azure OpenAI para voz y audio forma parte de la familia de modelos GPT-4o que admite interacciones conversacionales de baja latencia, "voz en voz, voz fuera". La API de audio GPT-4o realtime
está diseñada para controlar interacciones de conversación en tiempo real y de baja latencia, lo que la convierte en una excelente opción para los casos de uso que implican interacciones en vivo entre un usuario y un modelo, como agentes de asistencia al cliente, asistentes de voz y traductores en tiempo real.
La mayoría de los usuarios de Realtime API necesitan entregar y recibir audio de un usuario final en tiempo real, incluidas las aplicaciones que usan WebRTC o un sistema de telefonía. Realtime API no está diseñada para conectarse directamente a los dispositivos de usuario final y se basa en integraciones de cliente para finalizar las secuencias de audio del usuario final.
Modelos admitidos
Actualmente solo la versión gpt-4o-realtime-preview
: 2024-10-01-preview
admite audio en tiempo real.
El modelo gpt-4o-realtime-preview
está disponible para implementaciones globales en las regiones Este de EE. UU. 2 y Centro de Suecia.
Importante
El sistema almacena las solicitudes y finalizaciones como se describe en la sección "Uso de datos y acceso a la supervisión de abuso" de los términos de producto específicos del servicio para Azure OpenAI Service, excepto que no se aplica la excepción limitada. La supervisión de abusos se activará para el uso de la API gpt-4o-realtime-preview
incluso para los clientes que de otro modo están aprobados para la supervisión de abusos modificados.
Compatibilidad con API
La compatibilidad con la API en tiempo real se agregó por primera vez en la versión 2024-10-01-preview
de la API.
Nota:
Para más información sobre la API y la arquitectura, consulte el repositorio de audio en tiempo real de GPT-4o de Azure OpenAI en GitHub.
Implementación de un modelo para audio en tiempo real
Para implementar el modelo de gpt-4o-realtime-preview
en el portal de Azure AI Foundry:
- Vaya al portal de Azure AI Foundry y asegúrese de que ha iniciado sesión con la suscripción de Azure que tiene el recurso de Azure OpenAI Service (con o sin implementaciones de modelos).
- Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.
- Seleccione Crear nueva implementación para abrir la ventana de implementación.
- Busque y seleccione el modelo
gpt-4o-realtime-preview
y, a continuación, seleccione Confirmar. - En el Asistente para la implementación, asegúrese de seleccionar la versión del modelo
2024-10-01
. - Siga el asistente para finalizar la implementación del modelo.
Ahora que tiene una implementación del modelo gpt-4o-realtime-preview
, puede interactuar con él en tiempo real en el área de juegos Audio en tiempo real en el portal de Azure AI Foundry o en la API en tiempo real.
Usar el audio en tiempo real de GPT-4o
Para chatear con su modelo gpt-4o-realtime-preview
implementado en el área de juegos de audio en tiempo real de Azure AI Foundry, siga estos pasos:
Vaya a la página Azure OpenAI Service en el portal de Azure AI Foundry. Asegúrese de que ha iniciado sesión con la suscripción de Azure que tiene el recurso de Azure OpenAI Service y el modelo
gpt-4o-realtime-preview
implementado.Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.
Seleccione el modelo de
gpt-4o-realtime-preview
implementado en la lista desplegable Implementación.Seleccione Habilitar micrófono para permitir que el explorador acceda al micrófono. Si ya ha concedido permiso, puede omitir este paso.
Opcionalmente, puede editar el contenido en el cuadro de texto Dar instrucciones y contexto al modelo. Proporcione instrucciones al modelo sobre cómo debe comportarse y cualquier contexto al que debe hacer referencia al generar una respuesta. Puede describir la personalidad del asistente, indicarle lo que debe y lo que no debe responder y cómo formatear las respuestas.
Opcionalmente, cambie la configuración, como umbral, relleno de prefijo y duración del silencio.
Seleccione Iniciar escucha para iniciar la sesión. Puede hablar en el micrófono para iniciar un chat.
Puede interrumpir el chat en cualquier momento hablando. Para finalizar el chat, seleccione el botón Detener escucha.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita.
- Soporte para Node.js LTS o ESM.
- Un recurso de Azure OpenAI creado en las regiones Este de EE. UU. 2 o Centro de Suecia. Consulte Disponibilidad de la región.
- A continuación, debe implementar un modelo de
gpt-4o-realtime-preview
con el recurso de Azure OpenAI. Para obtener más información, consulte Creación de un recurso e implementación de un modelo con Azure OpenAI.
Requisitos previos de Microsoft Entra ID
Para la autenticación sin clave recomendada con Microsoft Entra ID, debe hacer lo siguiente:
- Instale la CLI de Azure utilizada para la autenticación sin clave con Microsoft Entra ID.
- Asignar el rol
Cognitive Services User
a su cuenta de usuario. Puede asignar roles en Azure Portal en Control de acceso (IAM)>Agregar asignación de roles.
Implementación de un modelo para audio en tiempo real
Para implementar el modelo de gpt-4o-realtime-preview
en el portal de Azure AI Foundry:
- Vaya al portal de Azure AI Foundry y asegúrese de que ha iniciado sesión con la suscripción de Azure que tiene el recurso de Azure OpenAI Service (con o sin implementaciones de modelos).
- Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.
- Seleccione Crear nueva implementación para abrir la ventana de implementación.
- Busque y seleccione el modelo
gpt-4o-realtime-preview
y, a continuación, seleccione Confirmar. - En el Asistente para la implementación, asegúrese de seleccionar la versión del modelo
2024-10-01
. - Siga el asistente para finalizar la implementación del modelo.
Ahora que tiene una implementación del modelo gpt-4o-realtime-preview
, puede interactuar con él en tiempo real en el área de juegos Audio en tiempo real en el portal de Azure AI Foundry o en la API en tiempo real.
Configurar
Cree una nueva carpeta
realtime-audio-quickstart
para que contenga la aplicación y abra Visual Studio Code en esa carpeta con el siguiente comando:mkdir realtime-audio-quickstart && code realtime-audio-quickstart
Cree el
package.json
con el comando siguiente:npm init -y
Actualice el
package.json
a ECMAScript con el siguiente comando:npm pkg set type=module
Instale la biblioteca cliente de audio en tiempo real para JavaScript con:
npm install https://github.com/Azure-Samples/aoai-realtime-audio-sdk/releases/download/js/v0.5.2/rt-client-0.5.2.tgz
Para la autenticación sin clave recomendada con Microsoft Entra ID, instale el paquete
@azure/identity
con:npm install @azure/identity
Recuperación de información de recursos
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 su recurso en Azure Portal. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor corresponderá al nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de recursos>Implementaciones de modelos en Azure Portal. |
OPENAI_API_VERSION |
Obtenga más información sobre las versiones de API. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
Precaución
Para usar la autenticación sin clave recomendada con el SDK, asegúrese de que la variable de entorno AZURE_OPENAI_API_KEY
no esté establecida.
Texto de salida de audio
Cree el archivo
text-in-audio-out.js
con el código siguiente:import { DefaultAzureCredential } from "@azure/identity"; import { LowLevelRTClient } from "rt-client"; import dotenv from "dotenv"; dotenv.config(); async function text_in_audio_out() { // Set environment variables or edit the corresponding values here. const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "yourEndpoint"; const deployment = "gpt-4o-realtime-preview"; if (!endpoint || !deployment) { throw new Error("You didn't set the environment variables."); } const client = new LowLevelRTClient(new URL(endpoint), new DefaultAzureCredential(), { deployment: deployment }); try { await client.send({ type: "response.create", response: { modalities: ["audio", "text"], instructions: "Please assist the user." } }); for await (const message of client.messages()) { switch (message.type) { case "response.done": { break; } case "error": { console.error(message.error); break; } case "response.audio_transcript.delta": { console.log(`Received text delta: ${message.delta}`); break; } case "response.audio.delta": { const buffer = Buffer.from(message.delta, "base64"); console.log(`Received ${buffer.length} bytes of audio data.`); break; } } if (message.type === "response.done" || message.type === "error") { break; } } } finally { client.close(); } } await text_in_audio_out();
Inicie sesión en Azure con el siguiente comando:
az login
Ejecute el archivo JavaScript.
node text-in-audio-out.js
Espere unos instantes para obtener la respuesta.
Resultados
El script obtiene una respuesta del modelo e imprime los datos de transcripción y audio recibidos.
La salida tendrá una apariencia parecida a la siguiente:
Received text delta: Hello
Received text delta: !
Received text delta: How
Received text delta: can
Received text delta: I
Received 4800 bytes of audio data.
Received 7200 bytes of audio data.
Received text delta: help
Received 12000 bytes of audio data.
Received text delta: you
Received text delta: today
Received text delta: ?
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 24000 bytes of audio data.
Ejemplo de aplicación web
Nuestro ejemplo web de JavaScript en GitHub muestra cómo usar la API GPT-4o Realtime para interactuar con el modelo en tiempo real. El código de ejemplo incluye una interfaz web sencilla que captura el audio del micrófono del usuario y lo envía al modelo para su procesamiento. El modelo responde con texto y audio, que el código de ejemplo se representa en la interfaz web.
Puede ejecutar el código de ejemplo localmente en el equipo siguiendo estos pasos. Consulte el repositorio en GitHub para obtener las instrucciones más actualizadas.
Si no tiene instalado Node.js, descargue e instale la versión LTS de Node.js.
Clone el repositorio en la máquina local:
git clone https://github.com/Azure-Samples/aoai-realtime-audio-sdk.git
Vaya a la carpeta
javascript/samples/web
en el editor de código que prefiera.cd ./javascript/samples
Ejecute
download-pkg.ps1
odownload-pkg.sh
para descargar los paquetes necesarios.Vaya a la carpeta
web
desde la carpeta./javascript/samples
.cd ./web
Ejecute
npm install
para instalar las dependencias del paquete.Ejecute
npm run dev
para iniciar el servidor web y vaya a las solicitudes de permisos de firewall según sea necesario.Vaya a cualquiera de los URI proporcionados desde la salida de la consola (como
http://localhost:5173/
) en un explorador.Escriba la siguiente información en la interfaz web:
- Punto de conexión: punto de conexión de recurso de un recurso de Azure OpenAI. No es necesario anexar la ruta de acceso
/realtime
. Una estructura de ejemplo podría serhttps://my-azure-openai-resource-from-portal.openai.azure.com
. - Clave de API: clave de API correspondiente para el recurso de Azure OpenAI.
- Implementación: el nombre del modelo
gpt-4o-realtime-preview
que implementó en la sección anterior. - Mensaje del sistema: opcionalmente, puede proporcionar un mensaje del sistema como "Siempre habla como un pirata amable".
- Temperatura: opcionalmente, puede proporcionar una temperatura personalizada.
- Voz: opcionalmente, puede seleccionar una voz.
- Punto de conexión: punto de conexión de recurso de un recurso de Azure OpenAI. No es necesario anexar la ruta de acceso
Seleccione el botón Grabar para iniciar la sesión. Acepte permisos para usar el micrófono si se le solicita.
Debería ver un mensaje
<< Session Started >>
en la salida principal. A continuación, puede hablar en el micrófono para iniciar un chat.Puede interrumpir el chat en cualquier momento hablando. Para finalizar el chat, seleccione el botón Detener.
Requisitos previos
- Suscripción a Azure. cree una de forma gratuita.
- Python 3.8 o una versión posterior. Se recomienda usar Python 3.10 o posterior, pero se requiere al menos Python 3.8. Si no tiene instalada una versión adecuada de Python, puede seguir las instrucciones del Tutorial de Python de VS Code para la manera más fácil de instalar Python en el sistema operativo.
- Un recurso de Azure OpenAI creado en las regiones Este de EE. UU. 2 o Centro de Suecia. Consulte Disponibilidad de la región.
- A continuación, debe implementar un modelo de
gpt-4o-realtime-preview
con el recurso de Azure OpenAI. Para obtener más información, consulte Creación de un recurso e implementación de un modelo con Azure OpenAI.
Requisitos previos de Microsoft Entra ID
Para la autenticación sin clave recomendada con Microsoft Entra ID, debe hacer lo siguiente:
- Instale la CLI de Azure utilizada para la autenticación sin clave con Microsoft Entra ID.
- Asignar el rol
Cognitive Services User
a su cuenta de usuario. Puede asignar roles en Azure Portal en Control de acceso (IAM)>Agregar asignación de roles.
Implementación de un modelo para audio en tiempo real
Para implementar el modelo de gpt-4o-realtime-preview
en el portal de Azure AI Foundry:
- Vaya al portal de Azure AI Foundry y asegúrese de que ha iniciado sesión con la suscripción de Azure que tiene el recurso de Azure OpenAI Service (con o sin implementaciones de modelos).
- Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.
- Seleccione Crear nueva implementación para abrir la ventana de implementación.
- Busque y seleccione el modelo
gpt-4o-realtime-preview
y, a continuación, seleccione Confirmar. - En el Asistente para la implementación, asegúrese de seleccionar la versión del modelo
2024-10-01
. - Siga el asistente para finalizar la implementación del modelo.
Ahora que tiene una implementación del modelo gpt-4o-realtime-preview
, puede interactuar con él en tiempo real en el área de juegos Audio en tiempo real en el portal de Azure AI Foundry o en la API en tiempo real.
Configurar
Cree una nueva carpeta
realtime-audio-quickstart
para que contenga la aplicación y abra Visual Studio Code en esa carpeta con el siguiente comando:mkdir realtime-audio-quickstart && code realtime-audio-quickstart
Cree un entorno virtual. Si ya tiene Instalado Python 3.10 o superior, puede crear un entorno virtual con los siguientes comandos:
La activación del entorno de Python significa que, al ejecutar
python
opip
desde la línea de comandos, se usa el intérprete de Python incluido en la carpeta.venv
de la aplicación. Puede usar el comandodeactivate
para salir del entorno virtual de Python y, posteriormente, volver a activarlo cuando sea necesario.Sugerencia
Se recomienda crear y activar un nuevo entorno de Python para instalar los paquetes que necesita para este tutorial. No instale paquetes en la instalación global de Python. Siempre debe usar un entorno virtual o conda al instalar paquetes de Python; de lo contrario, puede interrumpir la instalación global de Python.
Instale la biblioteca cliente de audio en tiempo real para Python con:
pip install "https://github.com/Azure-Samples/aoai-realtime-audio-sdk/releases/download/py%2Fv0.5.3/rtclient-0.5.3.tar.gz"
Para la autenticación sin clave recomendada con Microsoft Entra ID, instale el paquete
azure-identity
con:pip install azure-identity
Recuperación de información de recursos
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 su recurso en Azure Portal. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor corresponderá al nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de recursos>Implementaciones de modelos en Azure Portal. |
OPENAI_API_VERSION |
Obtenga más información sobre las versiones de API. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
Texto de salida de audio
Cree el archivo
text-in-audio-out.py
con el código siguiente:import base64 import asyncio from azure.identity.aio import DefaultAzureCredential from rtclient import ( ResponseCreateMessage, RTLowLevelClient, ResponseCreateParams ) # Set environment variables or edit the corresponding values here. endpoint = os.environ["AZURE_OPENAI_ENDPOINT"] deployment = "gpt-4o-realtime-preview" async def text_in_audio_out(): async with RTLowLevelClient( url=endpoint, azure_deployment=deployment, token_credential=DefaultAzureCredential(), ) as client: await client.send( ResponseCreateMessage( response=ResponseCreateParams( modalities={"audio", "text"}, instructions="Please assist the user." ) ) ) done = False while not done: message = await client.recv() match message.type: case "response.done": done = True case "error": done = True print(message.error) case "response.audio_transcript.delta": print(f"Received text delta: {message.delta}") case "response.audio.delta": buffer = base64.b64decode(message.delta) print(f"Received {len(buffer)} bytes of audio data.") case _: pass async def main(): await text_in_audio_out() asyncio.run(main())
Ejecución del archivo de Python.
python text-in-audio-out.py
Espere unos instantes para obtener la respuesta.
Resultados
El script obtiene una respuesta del modelo e imprime los datos de transcripción y audio recibidos.
La salida tendrá una apariencia parecida a la siguiente:
Received text delta: Hello
Received text delta: !
Received text delta: How
Received 4800 bytes of audio data.
Received 7200 bytes of audio data.
Received text delta: can
Received 12000 bytes of audio data.
Received text delta: I
Received text delta: assist
Received text delta: you
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received text delta: today
Received text delta: ?
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 28800 bytes of audio data.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita.
- Soporte para Node.js LTS o ESM.
- TypeScript instalado globalmente.
- Un recurso de Azure OpenAI creado en las regiones Este de EE. UU. 2 o Centro de Suecia. Consulte Disponibilidad de la región.
- A continuación, debe implementar un modelo de
gpt-4o-realtime-preview
con el recurso de Azure OpenAI. Para obtener más información, consulte Creación de un recurso e implementación de un modelo con Azure OpenAI.
Requisitos previos de Microsoft Entra ID
Para la autenticación sin clave recomendada con Microsoft Entra ID, debe hacer lo siguiente:
- Instale la CLI de Azure utilizada para la autenticación sin clave con Microsoft Entra ID.
- Asignar el rol
Cognitive Services User
a su cuenta de usuario. Puede asignar roles en Azure Portal en Control de acceso (IAM)>Agregar asignación de roles.
Implementación de un modelo para audio en tiempo real
Para implementar el modelo de gpt-4o-realtime-preview
en el portal de Azure AI Foundry:
- Vaya al portal de Azure AI Foundry y asegúrese de que ha iniciado sesión con la suscripción de Azure que tiene el recurso de Azure OpenAI Service (con o sin implementaciones de modelos).
- Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.
- Seleccione Crear nueva implementación para abrir la ventana de implementación.
- Busque y seleccione el modelo
gpt-4o-realtime-preview
y, a continuación, seleccione Confirmar. - En el Asistente para la implementación, asegúrese de seleccionar la versión del modelo
2024-10-01
. - Siga el asistente para finalizar la implementación del modelo.
Ahora que tiene una implementación del modelo gpt-4o-realtime-preview
, puede interactuar con él en tiempo real en el área de juegos Audio en tiempo real en el portal de Azure AI Foundry o en la API en tiempo real.
Configurar
Cree una nueva carpeta
realtime-audio-quickstart
para que contenga la aplicación y abra Visual Studio Code en esa carpeta con el siguiente comando:mkdir realtime-audio-quickstart && code realtime-audio-quickstart
Cree el
package.json
con el comando siguiente:npm init -y
Actualice el
package.json
a ECMAScript con el siguiente comando:npm pkg set type=module
Instale la biblioteca cliente de audio en tiempo real para JavaScript con:
npm install https://github.com/Azure-Samples/aoai-realtime-audio-sdk/releases/download/js/v0.5.2/rt-client-0.5.2.tgz
Para la autenticación sin clave recomendada con Microsoft Entra ID, instale el paquete
@azure/identity
con:npm install @azure/identity
Recuperación de información de recursos
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 su recurso en Azure Portal. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Este valor corresponderá al nombre personalizado que eligió para la implementación al implementar un modelo. Este valor se puede encontrar en Administración de recursos>Implementaciones de modelos en Azure Portal. |
OPENAI_API_VERSION |
Obtenga más información sobre las versiones de API. |
Obtenga más información sobre la autenticación sin claves y la configuración de variables de entorno.
Precaución
Para usar la autenticación sin clave recomendada con el SDK, asegúrese de que la variable de entorno AZURE_OPENAI_API_KEY
no esté establecida.
Texto de salida de audio
Cree el archivo
text-in-audio-out.ts
con el código siguiente:import { DefaultAzureCredential } from "@azure/identity"; import { LowLevelRTClient } from "rt-client"; import dotenv from "dotenv"; dotenv.config(); async function text_in_audio_out() { // Set environment variables or edit the corresponding values here. const endpoint: string = process.env["AZURE_OPENAI_ENDPOINT"] || "yourEndpoint"; const deployment = "gpt-4o-realtime-preview"; if (!endpoint || !deployment) { throw new Error("You didn't set the environment variables."); } const client = new LowLevelRTClient( new URL(endpoint), new DefaultAzureCredential(), {deployment: deployment} ); try { await client.send({ type: "response.create", response: { modalities: ["audio", "text"], instructions: "Please assist the user." } }); for await (const message of client.messages()) { switch (message.type) { case "response.done": { break; } case "error": { console.error(message.error); break; } case "response.audio_transcript.delta": { console.log(`Received text delta: ${message.delta}`); break; } case "response.audio.delta": { const buffer = Buffer.from(message.delta, "base64"); console.log(`Received ${buffer.length} bytes of audio data.`); break; } } if (message.type === "response.done" || message.type === "error") { break; } } } finally { client.close(); } } await text_in_audio_out();
Cree el archivo
tsconfig.json
para transpilar el código TypeScript y copie el código siguiente para 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"] }
Transpile de TypeScript a JavaScript.
tsc
Inicie sesión en Azure con el siguiente comando:
az login
Ejecute el código con el siguiente comando:
node text-in-audio-out.js
Espere unos instantes para obtener la respuesta.
Resultados
El script obtiene una respuesta del modelo e imprime los datos de transcripción y audio recibidos.
La salida tendrá una apariencia parecida a la siguiente:
Received text delta: Hello
Received text delta: !
Received text delta: How
Received text delta: can
Received text delta: I
Received 4800 bytes of audio data.
Received 7200 bytes of audio data.
Received text delta: help
Received 12000 bytes of audio data.
Received text delta: you
Received text delta: today
Received text delta: ?
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 12000 bytes of audio data.
Received 24000 bytes of audio data.
Contenido relacionado
- Más información acerca de Uso de la API en tiempo real
- Consulte la Referencia de API en tiempo real.
- Más información sobre las cuotas y límites de Azure OpenAI