Compartir a través de


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:

  1. 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).
  2. Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.
  3. Seleccione Crear nueva implementación para abrir la ventana de implementación.
  4. Busque y seleccione el modelo gpt-4o-realtime-preview y, a continuación, seleccione Confirmar.
  5. En el Asistente para la implementación, asegúrese de seleccionar la versión del modelo 2024-10-01.
  6. 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:

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

  2. Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.

  3. Seleccione el modelo de gpt-4o-realtime-preview implementado en la lista desplegable Implementación.

  4. Seleccione Habilitar micrófono para permitir que el explorador acceda al micrófono. Si ya ha concedido permiso, puede omitir este paso.

    Captura de pantalla del área de juegos de audio en tiempo real con el modelo implementado seleccionado.

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

  6. Opcionalmente, cambie la configuración, como umbral, relleno de prefijo y duración del silencio.

  7. Seleccione Iniciar escucha para iniciar la sesión. Puede hablar en el micrófono para iniciar un chat.

    Captura de pantalla del área de juegos de audio en tiempo real con el botón iniciar escucha y el acceso al micrófono habilitados.

  8. Puede interrumpir el chat en cualquier momento hablando. Para finalizar el chat, seleccione el botón Detener escucha.

Requisitos previos

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:

  1. 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).
  2. Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.
  3. Seleccione Crear nueva implementación para abrir la ventana de implementación.
  4. Busque y seleccione el modelo gpt-4o-realtime-preview y, a continuación, seleccione Confirmar.
  5. En el Asistente para la implementación, asegúrese de seleccionar la versión del modelo 2024-10-01.
  6. 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

  1. 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
    
  2. Cree el package.json con el comando siguiente:

    npm init -y
    
  3. Actualice el package.json a ECMAScript con el siguiente comando:

    npm pkg set type=module
    
  4. 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
    
  5. 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

  1. 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();
    
  2. Inicie sesión en Azure con el siguiente comando:

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

  1. Si no tiene instalado Node.js, descargue e instale la versión LTS de Node.js.

  2. Clone el repositorio en la máquina local:

    git clone https://github.com/Azure-Samples/aoai-realtime-audio-sdk.git
    
  3. Vaya a la carpeta javascript/samples/web en el editor de código que prefiera.

    cd ./javascript/samples
    
  4. Ejecute download-pkg.ps1 o download-pkg.sh para descargar los paquetes necesarios.

  5. Vaya a la carpeta web desde la carpeta ./javascript/samples.

    cd ./web
    
  6. Ejecute npm install para instalar las dependencias del paquete.

  7. Ejecute npm run dev para iniciar el servidor web y vaya a las solicitudes de permisos de firewall según sea necesario.

  8. Vaya a cualquiera de los URI proporcionados desde la salida de la consola (como http://localhost:5173/) en un explorador.

  9. 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 ser https://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.
  10. Seleccione el botón Grabar para iniciar la sesión. Acepte permisos para usar el micrófono si se le solicita.

  11. Debería ver un mensaje << Session Started >> en la salida principal. A continuación, puede hablar en el micrófono para iniciar un chat.

  12. Puede interrumpir el chat en cualquier momento hablando. Para finalizar el chat, seleccione el botón Detener.

Requisitos previos

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:

  1. 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).
  2. Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.
  3. Seleccione Crear nueva implementación para abrir la ventana de implementación.
  4. Busque y seleccione el modelo gpt-4o-realtime-preview y, a continuación, seleccione Confirmar.
  5. En el Asistente para la implementación, asegúrese de seleccionar la versión del modelo 2024-10-01.
  6. 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

  1. 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
    
  2. Cree un entorno virtual. Si ya tiene Instalado Python 3.10 o superior, puede crear un entorno virtual con los siguientes comandos:

    py -3 -m venv .venv
    .venv\scripts\activate
    

    La activación del entorno de Python significa que, al ejecutar python o pip 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 comando deactivate 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.

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

  1. 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())
    
  2. 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

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:

  1. 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).
  2. Seleccione la área de juegos Audio en tiempo real de Áreas de juegos en el panel izquierdo.
  3. Seleccione Crear nueva implementación para abrir la ventana de implementación.
  4. Busque y seleccione el modelo gpt-4o-realtime-preview y, a continuación, seleccione Confirmar.
  5. En el Asistente para la implementación, asegúrese de seleccionar la versión del modelo 2024-10-01.
  6. 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

  1. 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
    
  2. Cree el package.json con el comando siguiente:

    npm init -y
    
  3. Actualice el package.json a ECMAScript con el siguiente comando:

    npm pkg set type=module
    
  4. 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
    
  5. 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

  1. 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();
    
  2. 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"]
    }
    
  3. Transpile de TypeScript a JavaScript.

    tsc
    
  4. Inicie sesión en Azure con el siguiente comando:

    az login
    
  5. 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.