Partilhar via


GPT-4o API em tempo real para fala e áudio (Pré-visualização)

Nota

Esta funcionalidade está atualmente em pré-visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

A API em tempo real do Azure OpenAI GPT-4o para fala e áudio faz parte da família de modelos GPT-4o que oferece suporte a interações conversacionais de baixa latência, "speech in, speech out". A API de áudio realtime GPT-4o foi projetada para lidar com interações conversacionais em tempo real e de baixa latência, tornando-se uma ótima opção para casos de uso envolvendo interações ao vivo entre um usuário e um modelo, como agentes de suporte ao cliente, assistentes de voz e tradutores em tempo real.

A maioria dos usuários da API em tempo real precisa entregar e receber áudio de um usuário final em tempo real, incluindo aplicativos que usam WebRTC ou um sistema de telefonia. A API em tempo real não foi projetada para se conectar diretamente aos dispositivos do usuário final e depende de integrações de cliente para encerrar fluxos de áudio do usuário final.

Modelos suportados

Os modelos GPT 4o em tempo real estão disponíveis para implantações globais nas regiões Leste dos EUA 2 e Suécia Central.

  • gpt-4o-realtime-preview (2024-12-17)
  • gpt-4o-realtime-preview (2024-10-01)

Consulte a documentação de modelos e versões para obter mais informações.

Suporte de API

O suporte para a API em tempo real foi adicionado pela primeira vez na versão 2024-10-01-previewda API.

Nota

Para obter mais informações sobre a API e a arquitetura, consulte o repositório de áudio em tempo real do Azure OpenAI GPT-4o no GitHub.

Implante um modelo para áudio em tempo real

Para implantar o gpt-4o-realtime-preview modelo no portal do Azure AI Foundry:

  1. Aceda ao portal do Azure AI Foundry e certifique-se de que tem sessão iniciada com a subscrição do Azure que tem o seu recurso do Serviço OpenAI do Azure (com ou sem implementações de modelo).
  2. Selecione o playground de áudio em tempo real em Playgrounds no painel esquerdo.
  3. Selecione Criar nova implantação para abrir a janela de implantação.
  4. Procure e selecione o gpt-4o-realtime-preview modelo e, em seguida, selecione Confirmar.
  5. No assistente de implantação, selecione a versão do 2024-12-17 modelo.
  6. Siga o assistente para concluir a implantação do modelo.

Agora que você tem uma implantação do modelo, pode interagir com ele em tempo real no portal do Azure AI Foundry Recreio de áudio em tempo real ou API em gpt-4o-realtime-preview tempo real.

Use o áudio GPT-4o em tempo real

Para conversar com seu modelo implantado gpt-4o-realtime-preview no playground de áudio em tempo real do Azure AI Foundry, siga estas etapas:

  1. Vá para a página do Serviço OpenAI do Azure no portal do Azure AI Foundry. Certifique-se de que tem sessão iniciada com a subscrição do Azure que tem o seu recurso do Serviço OpenAI do Azure e o modelo implementado gpt-4o-realtime-preview .

  2. Selecione o playground de áudio em tempo real em Playgrounds no painel esquerdo.

  3. Selecione seu modelo implantado gpt-4o-realtime-preview na lista suspensa Implantação .

  4. Selecione Ativar microfone para permitir que o navegador acesse seu microfone. Se já tiver concedido permissão, pode ignorar este passo.

    Captura de tela do playground de áudio em tempo real com o modelo implantado selecionado.

  5. Opcionalmente, você pode editar o conteúdo na caixa de texto Dar instruções e contexto ao modelo. Dê instruções ao modelo sobre como ele deve se comportar e qualquer contexto que ele deve referenciar ao gerar uma resposta. Pode descrever a personalidade do assistente, dizer-lhe o que deve ou não responder e indicar-lhe como formatar as respostas.

  6. Opcionalmente, altere configurações como limite, preenchimento de prefixo e duração do silêncio.

  7. Selecione Começar a ouvir para iniciar a sessão. Você pode falar no microfone para iniciar um bate-papo.

    Captura de ecrã do parque de áudio em tempo real com o botão Iniciar a audição e o acesso ao microfone ativados.

  8. Você pode interromper o bate-papo a qualquer momento falando. Você pode encerrar o bate-papo selecionando o botão Parar de ouvir .

Pré-requisitos

Pré-requisitos do Microsoft Entra ID

Para a autenticação sem chave recomendada com o Microsoft Entra ID, você precisa:

  • Instale a CLI do Azure usada para autenticação sem chave com o Microsoft Entra ID.
  • Atribua a Cognitive Services User função à sua conta de utilizador. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.

Implante um modelo para áudio em tempo real

Para implantar o gpt-4o-realtime-preview modelo no portal do Azure AI Foundry:

  1. Aceda ao portal do Azure AI Foundry e certifique-se de que tem sessão iniciada com a subscrição do Azure que tem o seu recurso do Serviço OpenAI do Azure (com ou sem implementações de modelo).
  2. Selecione o playground de áudio em tempo real em Playgrounds no painel esquerdo.
  3. Selecione Criar nova implantação para abrir a janela de implantação.
  4. Procure e selecione o gpt-4o-realtime-preview modelo e, em seguida, selecione Confirmar.
  5. No assistente de implantação, selecione a versão do 2024-12-17 modelo.
  6. Siga o assistente para concluir a implantação do modelo.

Agora que você tem uma implantação do modelo, pode interagir com ele em tempo real no portal do Azure AI Foundry Recreio de áudio em tempo real ou API em gpt-4o-realtime-preview tempo real.

Configurar

  1. Crie uma nova pasta realtime-audio-quickstart para conter o aplicativo e abra o Visual Studio Code nessa pasta com o seguinte comando:

    mkdir realtime-audio-quickstart && code realtime-audio-quickstart
    
  2. Crie o package.json com o seguinte comando:

    npm init -y
    
  3. Atualize o package.json para ECMAScript com o seguinte comando:

    npm pkg set type=module
    
  4. Instale a biblioteca de cliente de áudio em tempo real para JavaScript com:

    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 a autenticação sem chave recomendada com o Microsoft Entra ID, instale o @azure/identity pacote com:

    npm install @azure/identity
    

Recuperar informações do recurso

Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI:

Nome da variável Value
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao examinar seu recurso no portal do Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Este valor corresponderá ao nome personalizado que escolheu para a implementação quando implementou um modelo. Esse valor pode ser encontrado em Implantações de Modelo de Gerenciamento de>Recursos no portal do Azure.
OPENAI_API_VERSION Saiba mais sobre as versões da API.

Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.

Atenção

Para usar a autenticação sem chave recomendada com o SDK, verifique se a AZURE_OPENAI_API_KEY variável de ambiente não está definida.

Texto na saída de áudio

  1. Crie o text-in-audio-out.js arquivo com o seguinte código:

    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. Entre no Azure com o seguinte comando:

    az login
    
  3. Execute o arquivo JavaScript.

    node text-in-audio-out.js
    

Aguarde alguns instantes para obter a resposta.

Saída

O script recebe uma resposta do modelo e imprime a transcrição e os dados de áudio recebidos.

A saída será semelhante à seguinte:

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.

Exemplo de aplicativo Web

Nosso exemplo de JavaScript no GitHub demonstra como usar a API GPT-4o Realtime para interagir com o modelo em tempo real. O código de exemplo inclui uma interface web simples que captura o áudio do microfone do usuário e o envia para o modelo para processamento. O modelo responde com texto e áudio, que o código de exemplo renderiza na interface web.

Você pode executar o código de exemplo localmente em sua máquina seguindo estas etapas. Consulte o repositório no GitHub para obter as instruções mais atualizadas.

  1. Se você não tiver Node.js instalado, baixe e instale a versão LTS do Node.js.

  2. Clone o repositório em sua máquina local:

    git clone https://github.com/Azure-Samples/aoai-realtime-audio-sdk.git
    
  3. Vá para a javascript/samples/web pasta no seu editor de código preferido.

    cd ./javascript/samples
    
  4. Execute download-pkg.ps1 ou download-pkg.sh faça o download dos pacotes necessários.

  5. Vá para a web pasta a ./javascript/samples partir da pasta.

    cd ./web
    
  6. Execute npm install para instalar dependências de pacote.

  7. Execute npm run dev para iniciar o servidor Web, navegando em todos os prompts de permissões de firewall conforme necessário.

  8. Vá para qualquer um dos URIs fornecidos a partir da saída do console (como http://localhost:5173/) em um navegador.

  9. Insira as seguintes informações na interface web:

    • Ponto de extremidade: O ponto de extremidade do recurso de um recurso do Azure OpenAI. Não é necessário acrescentar o /realtime caminho. Um exemplo de estrutura pode ser https://my-azure-openai-resource-from-portal.openai.azure.com.
    • Chave de API: uma chave de API correspondente para o recurso OpenAI do Azure.
    • Implantação: o gpt-4o-realtime-preview nome do modelo que você implantou na seção anterior.
    • Mensagem do sistema: Opcionalmente, você pode fornecer uma mensagem do sistema como "Você sempre fala como um pirata amigável".
    • Temperatura: Opcionalmente, você pode fornecer uma temperatura personalizada.
    • Voz: Opcionalmente, você pode selecionar uma voz.
  10. Selecione o botão Gravar para iniciar a sessão. Aceite permissões para usar o microfone, se solicitado.

  11. Você deve ver uma << Session Started >> mensagem na saída principal. Então você pode falar no microfone para iniciar um bate-papo.

  12. Você pode interromper o bate-papo a qualquer momento falando. Você pode encerrar o bate-papo selecionando o botão Parar .

Pré-requisitos

Pré-requisitos do Microsoft Entra ID

Para a autenticação sem chave recomendada com o Microsoft Entra ID, você precisa:

  • Instale a CLI do Azure usada para autenticação sem chave com o Microsoft Entra ID.
  • Atribua a Cognitive Services User função à sua conta de utilizador. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.

Implante um modelo para áudio em tempo real

Para implantar o gpt-4o-realtime-preview modelo no portal do Azure AI Foundry:

  1. Aceda ao portal do Azure AI Foundry e certifique-se de que tem sessão iniciada com a subscrição do Azure que tem o seu recurso do Serviço OpenAI do Azure (com ou sem implementações de modelo).
  2. Selecione o playground de áudio em tempo real em Playgrounds no painel esquerdo.
  3. Selecione Criar nova implantação para abrir a janela de implantação.
  4. Procure e selecione o gpt-4o-realtime-preview modelo e, em seguida, selecione Confirmar.
  5. No assistente de implantação, selecione a versão do 2024-12-17 modelo.
  6. Siga o assistente para concluir a implantação do modelo.

Agora que você tem uma implantação do modelo, pode interagir com ele em tempo real no portal do Azure AI Foundry Recreio de áudio em tempo real ou API em gpt-4o-realtime-preview tempo real.

Configurar

  1. Crie uma nova pasta realtime-audio-quickstart para conter o aplicativo e abra o Visual Studio Code nessa pasta com o seguinte comando:

    mkdir realtime-audio-quickstart && code realtime-audio-quickstart
    
  2. Crie um ambiente virtual. Se você já tiver o Python 3.10 ou superior instalado, poderá criar um ambiente virtual usando os seguintes comandos:

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

    Ativar o ambiente Python significa que quando você executa python ou pip a partir da linha de comando, você usa o interpretador Python contido na .venv pasta do seu aplicativo. Você pode usar o deactivate comando para sair do ambiente virtual python e, posteriormente, reativá-lo quando necessário.

    Gorjeta

    Recomendamos que você crie e ative um novo ambiente Python para usar para instalar os pacotes necessários para este tutorial. Não instale pacotes em sua instalação global do python. Você deve sempre usar um ambiente virtual ou conda ao instalar pacotes python, caso contrário, você pode quebrar sua instalação global do Python.

  3. Instale a biblioteca de cliente de áudio em tempo real para Python com:

    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 a autenticação sem chave recomendada com o Microsoft Entra ID, instale o azure-identity pacote com:

    pip install azure-identity
    

Recuperar informações do recurso

Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI:

Nome da variável Value
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao examinar seu recurso no portal do Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Este valor corresponderá ao nome personalizado que escolheu para a implementação quando implementou um modelo. Esse valor pode ser encontrado em Implantações de Modelo de Gerenciamento de>Recursos no portal do Azure.
OPENAI_API_VERSION Saiba mais sobre as versões da API.

Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.

Texto na saída de áudio

  1. Crie o text-in-audio-out.py arquivo com o seguinte código:

    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. Execute o arquivo Python.

    python text-in-audio-out.py
    

Aguarde alguns instantes para obter a resposta.

Saída

O script recebe uma resposta do modelo e imprime a transcrição e os dados de áudio recebidos.

A saída será semelhante à seguinte:

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.

Pré-requisitos

Pré-requisitos do Microsoft Entra ID

Para a autenticação sem chave recomendada com o Microsoft Entra ID, você precisa:

  • Instale a CLI do Azure usada para autenticação sem chave com o Microsoft Entra ID.
  • Atribua a Cognitive Services User função à sua conta de utilizador. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.

Implante um modelo para áudio em tempo real

Para implantar o gpt-4o-realtime-preview modelo no portal do Azure AI Foundry:

  1. Aceda ao portal do Azure AI Foundry e certifique-se de que tem sessão iniciada com a subscrição do Azure que tem o seu recurso do Serviço OpenAI do Azure (com ou sem implementações de modelo).
  2. Selecione o playground de áudio em tempo real em Playgrounds no painel esquerdo.
  3. Selecione Criar nova implantação para abrir a janela de implantação.
  4. Procure e selecione o gpt-4o-realtime-preview modelo e, em seguida, selecione Confirmar.
  5. No assistente de implantação, selecione a versão do 2024-12-17 modelo.
  6. Siga o assistente para concluir a implantação do modelo.

Agora que você tem uma implantação do modelo, pode interagir com ele em tempo real no portal do Azure AI Foundry Recreio de áudio em tempo real ou API em gpt-4o-realtime-preview tempo real.

Configurar

  1. Crie uma nova pasta realtime-audio-quickstart para conter o aplicativo e abra o Visual Studio Code nessa pasta com o seguinte comando:

    mkdir realtime-audio-quickstart && code realtime-audio-quickstart
    
  2. Crie o package.json com o seguinte comando:

    npm init -y
    
  3. Atualize o package.json para ECMAScript com o seguinte comando:

    npm pkg set type=module
    
  4. Instale a biblioteca de cliente de áudio em tempo real para JavaScript com:

    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 a autenticação sem chave recomendada com o Microsoft Entra ID, instale o @azure/identity pacote com:

    npm install @azure/identity
    

Recuperar informações do recurso

Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI:

Nome da variável Value
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao examinar seu recurso no portal do Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Este valor corresponderá ao nome personalizado que escolheu para a implementação quando implementou um modelo. Esse valor pode ser encontrado em Implantações de Modelo de Gerenciamento de>Recursos no portal do Azure.
OPENAI_API_VERSION Saiba mais sobre as versões da API.

Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.

Atenção

Para usar a autenticação sem chave recomendada com o SDK, verifique se a AZURE_OPENAI_API_KEY variável de ambiente não está definida.

Texto na saída de áudio

  1. Crie o text-in-audio-out.ts arquivo com o seguinte código:

    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. Crie o tsconfig.json arquivo para transpilar o código TypeScript e copie o código a seguir 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 para JavaScript.

    tsc
    
  4. Entre no Azure com o seguinte comando:

    az login
    
  5. Execute o código com o seguinte comando:

    node text-in-audio-out.js
    

Aguarde alguns instantes para obter a resposta.

Saída

O script recebe uma resposta do modelo e imprime a transcrição e os dados de áudio recebidos.

A saída será semelhante à seguinte:

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.