Início Rápido: Introdução à geração de áudio do Azure OpenAI

Os modelos habilitados para áudio introduzem a modalidade de áudio na API existente /chat/completions . O modelo de áudio expande o potencial para aplicativos de IA em interações baseadas em texto e voz e análise de áudio. As modalidades suportadas nos modelos gpt-4o-audio-preview e gpt-4o-mini-audio-preview incluem: texto, áudio e texto + áudio.

Aqui está uma tabela das modalidades com suporte com casos de uso de exemplo:

Entrada de modalidade Saída de modalidade Exemplo de caso de uso
Texto Texto + áudio Conversão de texto em fala, geração de livro de áudio
Áudio Texto + áudio Transcrição de áudio, geração de livro de áudio
Áudio Texto Transcrição de áudio
Texto + áudio Texto + áudio Geração de livro de áudio
Texto + áudio Texto Transcrição de áudio

Usando recursos de geração de áudio, você pode obter aplicativos de IA mais dinâmicos e interativos. Modelos que dão suporte a entradas e saídas de áudio permitem que você gere respostas de áudio faladas para prompts e use entradas de áudio para acionar o modelo.

Modelos com suporte

Os seguintes modelos OpenAI dão suporte à geração de áudio:

Modelo Geração de áudio? Uso primário
gpt-4o-audio-preview ✔️ Completamentos de chat com saída falada
gpt-4o-mini-tts ✔️ Conversão de texto em fala rápida e escalonável
gpt-4o-mini-audio-preview ✔️ Geração de áudio assíncrona
gpt-realtime ✔️ Voz interativa em tempo real
gpt-realtime-mini ✔️ Streaming de áudio de baixa latência
tts-1 / tts-1-hd ✔️ Síntese de fala de uso geral

Para obter informações sobre a disponibilidade da região, consulte a documentação de modelos e versões.

Nota

A API em tempo real usa o mesmo modelo de áudio GPT-4o subjacente que a API de conclusões, mas é otimizada para interações de áudio em tempo real de baixa latência.

Requisitos de entrada

As vozes a seguir têm suporte para saída de áudio: Alloy, Ash, Ballad, Coral, Echo, Sage, Shimmer, Verse, Marin e Cedar.

Há suporte para os seguintes formatos de saída de áudio: wav, mp3, flac, opus, pcm16 e aac.

O tamanho máximo do arquivo de áudio é de 20 MB.

Suporte à API

O suporte para conclusões de áudio foi adicionado pela primeira vez na versão 2025-01-01-previewda API.

Implantar um modelo para geração de áudio

Para implantar o modelo gpt-4o-mini-audio-preview no portal do Microsoft Foundry:

  1. Vá para o portal do Foundry e crie ou selecione seu projeto.
  2. Selecione Modelos + pontos de extremidade em Meus ativos no painel esquerdo.
  3. Selecione + Implantar modelo>Implantar modelo base para abrir a janela de implantação.
  4. Pesquise e selecione o gpt-4o-mini-audio-preview modelo e selecione Confirmar.
  5. Examine os detalhes da implantação e selecione Implantar.
  6. Siga o assistente para concluir a configuração do modelo.

Agora que você tem uma implantação do modelo gpt-4o-mini-audio-preview, pode interagir com ele no playground de chat do Portal Foundry ou na API de conclusões de chat.

Usar a geração de áudio GPT-4o

Para conversar com o modelo gpt-4o-mini-audio-preview implantado no Chat playground do portal Microsoft Foundry, siga estas etapas:

  1. Vá para o portal do Foundry e selecione o projeto que tem seu modelo implantado gpt-4o-mini-audio-preview .

  2. Vá para o seu projeto no Foundry.

  3. Selecione Playgrounds no painel esquerdo.

  4. Selecione Playground de áudio>Experimente o playground de chat.

    Nota

    O playground de áudio não dá suporte ao gpt-4o-mini-audio-preview modelo. Use o playground de chat, conforme descrito nesta seção.

  5. Selecione seu modelo implantado gpt-4o-mini-audio-preview no menu suspenso Implantação.

  6. Comece a conversar com o modelo e ouça as respostas de áudio.

    Captura de tela da página Playground do Chat.

    É possível:

    • Gravar prompts de áudio.
    • Anexe arquivos de áudio ao chat.
    • Insira comandos de texto.

Documentação de referência | Código-fonte da biblioteca | Pacote (npm) | Exemplos

Os modelos habilitados para áudio introduzem a modalidade de áudio na API existente /chat/completions . O modelo de áudio expande o potencial para aplicativos de IA em interações baseadas em texto e voz e análise de áudio. As modalidades suportadas nos modelos gpt-4o-audio-preview e gpt-4o-mini-audio-preview incluem: texto, áudio e texto + áudio.

Aqui está uma tabela das modalidades com suporte com casos de uso de exemplo:

Entrada de modalidade Saída de modalidade Exemplo de caso de uso
Texto Texto + áudio Conversão de texto em fala, geração de livro de áudio
Áudio Texto + áudio Transcrição de áudio, geração de livro de áudio
Áudio Texto Transcrição de áudio
Texto + áudio Texto + áudio Geração de livro de áudio
Texto + áudio Texto Transcrição de áudio

Usando recursos de geração de áudio, você pode obter aplicativos de IA mais dinâmicos e interativos. Modelos que dão suporte a entradas e saídas de áudio permitem que você gere respostas de áudio faladas para prompts e use entradas de áudio para acionar o modelo.

Modelos com suporte

Os seguintes modelos OpenAI dão suporte à geração de áudio:

Modelo Geração de áudio? Uso primário
gpt-4o-audio-preview ✔️ Completamentos de chat com saída falada
gpt-4o-mini-tts ✔️ Conversão de texto em fala rápida e escalonável
gpt-4o-mini-audio-preview ✔️ Geração de áudio assíncrona
gpt-realtime ✔️ Voz interativa em tempo real
gpt-realtime-mini ✔️ Streaming de áudio de baixa latência
tts-1 / tts-1-hd ✔️ Síntese de fala de uso geral

Para obter informações sobre a disponibilidade da região, consulte a documentação de modelos e versões.

Nota

A API em tempo real usa o mesmo modelo de áudio GPT-4o subjacente que a API de conclusões, mas é otimizada para interações de áudio em tempo real de baixa latência.

Requisitos de entrada

As vozes a seguir têm suporte para saída de áudio: Alloy, Ash, Ballad, Coral, Echo, Sage, Shimmer, Verse, Marin e Cedar.

Há suporte para os seguintes formatos de saída de áudio: wav, mp3, flac, opus, pcm16 e aac.

O tamanho máximo do arquivo de áudio é de 20 MB.

Suporte à API

O suporte para conclusões de áudio foi adicionado pela primeira vez na versão 2025-01-01-previewda API.

Pré-requisitos

Microsoft Entra ID pré-requisitos

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

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

Configurar

  1. Crie uma nova pasta audio-completions-quickstart e vá para a pasta de início rápido com o seguinte comando:

    mkdir audio-completions-quickstart && cd audio-completions-quickstart
    
  2. Crie o package.json com o seguinte comando:

    npm init -y
    
  3. Instale a biblioteca de clientes OpenAI para JavaScript com:

    npm install openai
    
  4. Para a autenticação recomendada sem chave com Microsoft Entra ID, instale o pacote @azure/identity com:

    npm install @azure/identity
    

Recuperar informações do recurso

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

Nome da variável Valor
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Keys e Endpoint ao examinar o recurso do portal Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação quando você implantou um modelo. Esse valor pode ser encontrado em Resource Management>Model Deployments no portal Azure.

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

Cuidado

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.

Gerar áudio com base na entrada de texto

  1. Crie o to-audio.js arquivo com o seguinte código:

    require("dotenv").config();
    const { AzureOpenAI } = require("openai");
    const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity");
    const { writeFileSync } = require("node:fs");
    
    // Keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://ai.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    // Set environment variables or edit the corresponding values here.
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "AZURE_OPENAI_ENDPOINT";
    const deployment = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4o-mini-audio-preview"; 
    const apiVersion = process.env.OPENAI_API_VERSION || "2025-01-01-preview"; 
    
    const client = new AzureOpenAI({ 
        endpoint, 
        azureADTokenProvider, 
        apiVersion, 
        deployment 
    }); 
    
    async function main() {
    
        // Make the audio chat completions request
        const response = await client.chat.completions.create({ 
            model: "gpt-4o-mini-audio-preview", 
            modalities: ["text", "audio"], 
            audio: { voice: "alloy", format: "wav" }, 
            messages: [ 
            { 
                role: "user", 
                content: "Is a golden retriever a good family dog?" 
            } 
            ] 
        }); 
    
    // Inspect returned data 
    console.log(response.choices[0]); 
    
    // Write the output audio data to a file
    writeFileSync( 
        "dog.wav", 
        Buffer.from(response.choices[0].message.audio.data, 'base64'), 
        { encoding: "utf-8" } 
    ); 
    }
    
    main().catch((err) => {
      console.error("Error occurred:", err);
    });
    
    module.exports = { main };
    
  2. Entre no Azure com o seguinte comando:

    az login
    
  3. Execute o arquivo JavaScript.

    node to-audio.js
    

Aguarde alguns instantes para obter a resposta.

Saída para geração de áudio da entrada de texto

O script gera um arquivo de áudio chamado dog.wav no mesmo diretório que o script. O arquivo de áudio contém a resposta falada ao prompt: "Um golden retriever é um bom cão de família?"

Gerar áudio e texto com base na entrada de áudio

  1. Crie o from-audio.js arquivo com o seguinte código:

    require("dotenv").config();
    const { AzureOpenAI } = require("openai");
    const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity");
    const fs = require('fs').promises;
    const { writeFileSync } = require("node:fs");
    
    // Keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://ai.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    // Set environment variables or edit the corresponding values here.
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "AZURE_OPENAI_ENDPOINT";
    const apiVersion = "2025-01-01-preview"; 
    const deployment = "gpt-4o-mini-audio-preview"; 
    
    const client = new AzureOpenAI({ 
        endpoint, 
        azureADTokenProvider, 
        apiVersion, 
        deployment 
    });    
    
    async function main() {
    
        // Buffer the audio for input to the chat completion
        const wavBuffer = await fs.readFile("dog.wav"); 
        const base64str = Buffer.from(wavBuffer).toString("base64"); 
    
        // Make the audio chat completions request
        const response = await client.chat.completions.create({
            model: "gpt-4o-mini-audio-preview",
            modalities: ["text", "audio"],
            audio: { voice: "alloy", format: "wav" }, 
            messages: [
                {
                    role: "user",
                    content: [
                        { 
                            type: "text", 
                            text: "Describe in detail the spoken audio input." 
                        },
                        { 
                            type: "input_audio", 
                            input_audio: { 
                                data: base64str, 
                                format: "wav" 
                            } 
                        }
                    ]
                }
            ]
        });
    
        console.log(response.choices[0]); 
    
        // Write the output audio data to a file
        writeFileSync( 
            "analysis.wav", 
            Buffer.from(response.choices[0].message.audio.data, 'base64'), 
            { encoding: "utf-8" } 
        ); 
    }
    
    main().catch((err) => {
        console.error("Error occurred:", err);
    });
    
    module.exports = { main };
    
  2. Entre no Azure com o seguinte comando:

    az login
    
  3. Execute o arquivo JavaScript.

    node from-audio.js
    

Aguarde alguns instantes para obter a resposta.

Saída de geração de texto e áudio a partir de entrada de áudio

O script gera uma transcrição do resumo da entrada de áudio falada. Ele também gera um arquivo de áudio chamado analysis.wav no mesmo diretório que o script. O arquivo de áudio contém a resposta falada para o prompt.

Gerar áudio e usar conclusões de conversas em múltiplos turnos

  1. Crie o multi-turn.js arquivo com o seguinte código:

    require("dotenv").config();
    const { AzureOpenAI } = require("openai");
    const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity");
    const fs = require('fs').promises;
    
    // Keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://ai.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
    // Set environment variables or edit the corresponding values here.
    const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "AZURE_OPENAI_ENDPOINT";
    const apiVersion = "2025-01-01-preview"; 
    const deployment = "gpt-4o-mini-audio-preview"; 
    
    const client = new AzureOpenAI({ 
        endpoint, 
        azureADTokenProvider, 
        apiVersion, 
        deployment 
    }); 
    
    async function main() {
    
        // Buffer the audio for input to the chat completion
        const wavBuffer = await fs.readFile("dog.wav"); 
        const base64str = Buffer.from(wavBuffer).toString("base64"); 
    
        // Initialize messages with the first turn's user input 
        const messages = [
            {
                role: "user",
                content: [
                    { 
                        type: "text", 
                        text: "Describe in detail the spoken audio input." 
                    },
                    { 
                        type: "input_audio", 
                        input_audio: { 
                            data: base64str, 
                            format: "wav" 
                        } 
                    }
                ]
            }
        ];
    
        // Get the first turn's response 
    
        const response = await client.chat.completions.create({ 
            model: "gpt-4o-mini-audio-preview",
            modalities: ["text", "audio"], 
            audio: { voice: "alloy", format: "wav" }, 
            messages: messages
        }); 
    
        console.log(response.choices[0]); 
    
        // Add a history message referencing the previous turn's audio by ID 
        messages.push({ 
            role: "assistant", 
            audio: { id: response.choices[0].message.audio.id }
        });
    
        // Add a new user message for the second turn
        messages.push({ 
            role: "user", 
            content: [ 
                { 
                    type: "text", 
                    text: "Very concisely summarize the favorability." 
                } 
            ] 
        }); 
    
        // Send the follow-up request with the accumulated messages
        const followResponse = await client.chat.completions.create({ 
            model: "gpt-4o-mini-audio-preview",
            messages: messages
        });
    
        console.log(followResponse.choices[0].message.content); 
    }
    
    main().catch((err) => {
        console.error("Error occurred:", err);
    });
    
    module.exports = { main };
    
  2. Entre no Azure com o seguinte comando:

    az login
    
  3. Execute o arquivo JavaScript.

    node multi-turn.js
    

Aguarde alguns instantes para obter a resposta.

Saída para conclusões de chat de vários turnos

O script gera uma transcrição do resumo da entrada de áudio falada. Em seguida, ele faz uma conclusão de chat de vários turnos para resumir brevemente a entrada de áudio falada.

Código-fonte da biblioteca | Pacote | Amostras

Os modelos habilitados para áudio introduzem a modalidade de áudio na API existente /chat/completions . O modelo de áudio expande o potencial para aplicativos de IA em interações baseadas em texto e voz e análise de áudio. As modalidades suportadas nos modelos gpt-4o-audio-preview e gpt-4o-mini-audio-preview incluem: texto, áudio e texto + áudio.

Aqui está uma tabela das modalidades com suporte com casos de uso de exemplo:

Entrada de modalidade Saída de modalidade Exemplo de caso de uso
Texto Texto + áudio Conversão de texto em fala, geração de livro de áudio
Áudio Texto + áudio Transcrição de áudio, geração de livro de áudio
Áudio Texto Transcrição de áudio
Texto + áudio Texto + áudio Geração de livro de áudio
Texto + áudio Texto Transcrição de áudio

Usando recursos de geração de áudio, você pode obter aplicativos de IA mais dinâmicos e interativos. Modelos que dão suporte a entradas e saídas de áudio permitem que você gere respostas de áudio faladas para prompts e use entradas de áudio para acionar o modelo.

Modelos com suporte

Os seguintes modelos OpenAI dão suporte à geração de áudio:

Modelo Geração de áudio? Uso primário
gpt-4o-audio-preview ✔️ Completamentos de chat com saída falada
gpt-4o-mini-tts ✔️ Conversão de texto em fala rápida e escalonável
gpt-4o-mini-audio-preview ✔️ Geração de áudio assíncrona
gpt-realtime ✔️ Voz interativa em tempo real
gpt-realtime-mini ✔️ Streaming de áudio de baixa latência
tts-1 / tts-1-hd ✔️ Síntese de fala de uso geral

Para obter informações sobre a disponibilidade da região, consulte a documentação de modelos e versões.

Nota

A API em tempo real usa o mesmo modelo de áudio GPT-4o subjacente que a API de conclusões, mas é otimizada para interações de áudio em tempo real de baixa latência.

Requisitos de entrada

As vozes a seguir têm suporte para saída de áudio: Alloy, Ash, Ballad, Coral, Echo, Sage, Shimmer, Verse, Marin e Cedar.

Há suporte para os seguintes formatos de saída de áudio: wav, mp3, flac, opus, pcm16 e aac.

O tamanho máximo do arquivo de áudio é de 20 MB.

Suporte à API

O suporte para conclusões de áudio foi adicionado pela primeira vez na versão 2025-01-01-previewda API.

Use este guia para começar a gerar áudio com o Azure SDK do OpenAI para Python.

Pré-requisitos

Microsoft Entra ID pré-requisitos

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

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

Configurar

  1. Crie uma nova pasta audio-completions-quickstart e vá para a pasta de início rápido com o seguinte comando:

    mkdir audio-completions-quickstart && cd audio-completions-quickstart
    
  2. Crie um ambiente virtual. Se você já tiver 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 de Python significa que, ao executar python ou pip da linha de comando, use o interpretador de Python contido na pasta .venv do aplicativo. Você pode usar o deactivate comando para sair do ambiente virtual do Python e, posteriormente, reativar quando necessário.

    Dica

    Recomendamos que você crie e ative um novo ambiente de Python a ser usado para instalar os pacotes necessários para este tutorial. Não instale pacotes na instalação global do Python. Você sempre deve usar um ambiente virtual ou conda ao instalar pacotes python, caso contrário, poderá interromper a instalação global de Python.

  3. Instale a biblioteca de clientes do OpenAI para Python com:

    pip install openai
    
  4. Para a autenticação recomendada sem chave com Microsoft Entra ID, instale o pacote azure-identity com:

    pip install azure-identity
    

Recuperar informações do recurso

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

Nome da variável Valor
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Keys e Endpoint ao examinar o recurso do portal Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação quando você implantou um modelo. Esse valor pode ser encontrado em Resource Management>Model Deployments no portal Azure.

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

Gerar áudio com base na entrada de texto

  1. Crie o to-audio.py arquivo com o seguinte código:

    import requests
    import base64 
    import os 
    from openai import AzureOpenAI
    from azure.identity import DefaultAzureCredential, get_bearer_token_provider
    
    token_provider=get_bearer_token_provider(DefaultAzureCredential(), "https://ai.azure.com/.default")
    
    # Set environment variables or edit the corresponding values here.
    endpoint = os.environ['AZURE_OPENAI_ENDPOINT']
    
    # Keyless authentication
    client=AzureOpenAI(
        azure_ad_token_provider=token_provider,
        azure_endpoint=endpoint,
        api_version="2025-01-01-preview"
    )
    
    # Make the audio chat completions request
    completion=client.chat.completions.create(
        model="gpt-4o-mini-audio-preview",
        modalities=["text", "audio"],
        audio={"voice": "alloy", "format": "wav"},
        messages=[
            {
                "role": "user",
                "content": "Is a golden retriever a good family dog?"
            }
        ]
    )
    
    print(completion.choices[0])
    
    # Write the output audio data to a file
    wav_bytes=base64.b64decode(completion.choices[0].message.audio.data)
    with open("dog.wav", "wb") as f:
        f.write(wav_bytes)
    
  2. Execute o arquivo Python.

    python to-audio.py
    

Aguarde alguns instantes para obter a resposta.

Saída para geração de áudio da entrada de texto

O script gera um arquivo de áudio chamado dog.wav no mesmo diretório que o script. O arquivo de áudio contém a resposta falada ao prompt: "Um golden retriever é um bom cão de família?"

Dica

Reproduza o arquivo dog.wav gerado para verificar se o áudio foi gerado corretamente. Você pode usar qualquer player de mídia ou clicar duas vezes no arquivo para abri-lo no player de áudio padrão.

Gerar áudio e texto com base na entrada de áudio

  1. Crie o from-audio.py arquivo com o seguinte código:

    import base64
    import os
    from openai import AzureOpenAI
    from azure.identity import DefaultAzureCredential, get_bearer_token_provider
    
    token_provider=get_bearer_token_provider(DefaultAzureCredential(), "https://ai.azure.com/.default")
    
    # Set environment variables or edit the corresponding values here.
    endpoint = os.environ['AZURE_OPENAI_ENDPOINT']
    
    # Keyless authentication
    client=AzureOpenAI(
        azure_ad_token_provider=token_provider,
        azure_endpoint=endpoint,
        api_version="2025-01-01-preview"
    )
    
    # Read and encode audio file  
    with open('dog.wav', 'rb') as wav_reader: 
        encoded_string = base64.b64encode(wav_reader.read()).decode('utf-8') 
    
    # Make the audio chat completions request
    completion = client.chat.completions.create( 
        model="gpt-4o-mini-audio-preview", 
        modalities=["text", "audio"], 
        audio={"voice": "alloy", "format": "wav"}, 
        messages=[ 
            { 
                "role": "user", 
                "content": [ 
                    {  
                        "type": "text", 
                        "text": "Describe in detail the spoken audio input." 
                    }, 
                    { 
                        "type": "input_audio", 
                        "input_audio": { 
                            "data": encoded_string, 
                            "format": "wav" 
                        } 
                    } 
                ] 
            }, 
        ] 
    ) 
    
    print(completion.choices[0].message.audio.transcript)
    
    # Write the output audio data to a file
    wav_bytes = base64.b64decode(completion.choices[0].message.audio.data)
    with open("analysis.wav", "wb") as f:
        f.write(wav_bytes)
    
  2. Execute o arquivo Python.

    python from-audio.py
    

Aguarde alguns instantes para obter a resposta.

Saída de geração de texto e áudio a partir de entrada de áudio

O script gera uma transcrição do resumo da entrada de áudio falada. Ele também gera um arquivo de áudio chamado analysis.wav no mesmo diretório que o script. O arquivo de áudio contém a resposta falada para o prompt.

Dica

Reproduza o arquivo gerado analysis.wav para ouvir a descrição de áudio da entrada.

Gerar áudio e usar conclusões de conversas em múltiplos turnos

  1. Crie o multi-turn.py arquivo com o seguinte código:

    import base64 
    import os 
    from openai import AzureOpenAI 
    from azure.identity import DefaultAzureCredential, get_bearer_token_provider
    
    token_provider=get_bearer_token_provider(DefaultAzureCredential(), "https://ai.azure.com/.default")
    
    # Set environment variables or edit the corresponding values here.
    endpoint = os.environ['AZURE_OPENAI_ENDPOINT']
    
    # Keyless authentication
    client=AzureOpenAI(
        azure_ad_token_provider=token_provider,
        azure_endpoint=endpoint,
        api_version="2025-01-01-preview"
    )
    
    # Read and encode audio file  
    with open('dog.wav', 'rb') as wav_reader: 
        encoded_string = base64.b64encode(wav_reader.read()).decode('utf-8') 
    
    # Initialize messages with the first turn's user input 
    messages = [
        { 
            "role": "user", 
            "content": [ 
                { "type": "text", "text": "Describe in detail the spoken audio input." }, 
                { "type": "input_audio", 
                    "input_audio": { 
                        "data": encoded_string, 
                        "format": "wav" 
                    } 
                } 
            ] 
        }] 
    
    # Get the first turn's response
    
    completion = client.chat.completions.create( 
        model="gpt-4o-mini-audio-preview", 
        modalities=["text", "audio"], 
        audio={"voice": "alloy", "format": "wav"}, 
        messages=messages
    ) 
    
    print("Get the first turn's response:")
    print(completion.choices[0].message.audio.transcript) 
    
    print("Add a history message referencing the first turn's audio by ID:")
    print(completion.choices[0].message.audio.id)
    
    # Add a history message referencing the first turn's audio by ID 
    messages.append({ 
        "role": "assistant", 
        "audio": { "id": completion.choices[0].message.audio.id } 
    }) 
    
    # Add the next turn's user message 
    messages.append({ 
        "role": "user", 
        "content": "Very briefly, summarize the favorability." 
    }) 
    
    # Send the follow-up request with the accumulated messages
    completion = client.chat.completions.create( 
        model="gpt-4o-mini-audio-preview", 
        messages=messages
    ) 
    
    print("Very briefly, summarize the favorability.")
    print(completion.choices[0].message.content)
    
  2. Execute o arquivo Python.

    python multi-turn.py
    

Aguarde alguns instantes para obter a resposta.

Saída para conclusões de chat de vários turnos

O script gera uma transcrição do resumo da entrada de áudio falada. Em seguida, ele faz uma conclusão de chat de vários turnos para resumir brevemente a entrada de áudio falada.

Dica

Examine a saída do console para ver a transcrição e verificar se a conversa de vários turnos foi concluída com êxito.

Especificação da API REST |

Os modelos habilitados para áudio introduzem a modalidade de áudio na API existente /chat/completions . O modelo de áudio expande o potencial para aplicativos de IA em interações baseadas em texto e voz e análise de áudio. As modalidades suportadas nos modelos gpt-4o-audio-preview e gpt-4o-mini-audio-preview incluem: texto, áudio e texto + áudio.

Aqui está uma tabela das modalidades com suporte com casos de uso de exemplo:

Entrada de modalidade Saída de modalidade Exemplo de caso de uso
Texto Texto + áudio Conversão de texto em fala, geração de livro de áudio
Áudio Texto + áudio Transcrição de áudio, geração de livro de áudio
Áudio Texto Transcrição de áudio
Texto + áudio Texto + áudio Geração de livro de áudio
Texto + áudio Texto Transcrição de áudio

Usando recursos de geração de áudio, você pode obter aplicativos de IA mais dinâmicos e interativos. Modelos que dão suporte a entradas e saídas de áudio permitem que você gere respostas de áudio faladas para prompts e use entradas de áudio para acionar o modelo.

Modelos com suporte

Os seguintes modelos OpenAI dão suporte à geração de áudio:

Modelo Geração de áudio? Uso primário
gpt-4o-audio-preview ✔️ Completamentos de chat com saída falada
gpt-4o-mini-tts ✔️ Conversão de texto em fala rápida e escalonável
gpt-4o-mini-audio-preview ✔️ Geração de áudio assíncrona
gpt-realtime ✔️ Voz interativa em tempo real
gpt-realtime-mini ✔️ Streaming de áudio de baixa latência
tts-1 / tts-1-hd ✔️ Síntese de fala de uso geral

Para obter informações sobre a disponibilidade da região, consulte a documentação de modelos e versões.

Nota

A API em tempo real usa o mesmo modelo de áudio GPT-4o subjacente que a API de conclusões, mas é otimizada para interações de áudio em tempo real de baixa latência.

Requisitos de entrada

As vozes a seguir têm suporte para saída de áudio: Alloy, Ash, Ballad, Coral, Echo, Sage, Shimmer, Verse, Marin e Cedar.

Há suporte para os seguintes formatos de saída de áudio: wav, mp3, flac, opus, pcm16 e aac.

O tamanho máximo do arquivo de áudio é de 20 MB.

Suporte à API

O suporte para conclusões de áudio foi adicionado pela primeira vez na versão 2025-01-01-previewda API.

Pré-requisitos

Microsoft Entra ID pré-requisitos

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

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

Configurar

  1. Crie uma nova pasta audio-completions-quickstart e vá para a pasta de início rápido com o seguinte comando:

    mkdir audio-completions-quickstart && cd audio-completions-quickstart
    
  2. Crie um ambiente virtual. Se você já tiver 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 de Python significa que, ao executar python ou pip da linha de comando, use o interpretador de Python contido na pasta .venv do aplicativo. Você pode usar o deactivate comando para sair do ambiente virtual do Python e, posteriormente, reativar quando necessário.

    Dica

    Recomendamos que você crie e ative um novo ambiente de Python a ser usado para instalar os pacotes necessários para este tutorial. Não instale pacotes na instalação global do Python. Você sempre deve usar um ambiente virtual ou conda ao instalar pacotes python, caso contrário, poderá interromper a instalação global de Python.

  3. Instale a biblioteca de clientes do OpenAI para Python com:

    pip install openai
    
  4. Para a autenticação recomendada sem chave com Microsoft Entra ID, instale o pacote azure-identity com:

    pip install azure-identity
    

Recuperar informações do recurso

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

Nome da variável Valor
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Keys e Endpoint ao examinar o recurso do portal Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação quando você implantou um modelo. Esse valor pode ser encontrado em Resource Management>Model Deployments no portal Azure.

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

Gerar áudio com base na entrada de texto

  1. Crie o to-audio.py arquivo com o seguinte código:

    import requests
    import base64 
    import os 
    from openai import AzureOpenAI
    from azure.identity import DefaultAzureCredential
    
    # Set environment variables or edit the corresponding values here.
    endpoint = os.environ['AZURE_OPENAI_ENDPOINT']
    
    # Keyless authentication
    credential = DefaultAzureCredential()
    token = credential.get_token("https://ai.azure.com/.default")
    
    api_version = '2025-01-01-preview'
    url = f"{endpoint}/openai/deployments/gpt-4o-mini-audio-preview/chat/completions?api-version={api_version}"
    headers= { "Authorization": f"Bearer {token.token}", "Content-Type": "application/json" }
    body = {
      "modalities": ["audio", "text"],
      "model": "gpt-4o-mini-audio-preview",
      "audio": {
          "format": "wav",
          "voice": "alloy"
      },
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": "Is a golden retriever a good family dog?"
            }
          ]
        }
      ]
    }
    
    # Make the audio chat completions request
    completion = requests.post(url, headers=headers, json=body)
    audio_data = completion.json()['choices'][0]['message']['audio']['data']
    
    # Write the output audio data to a file
    wav_bytes = base64.b64decode(audio_data)
    with open("dog.wav", "wb") as f: 
      f.write(wav_bytes) 
    
  2. Execute o arquivo Python.

    python to-audio.py
    

Aguarde alguns instantes para obter a resposta.

Saída para geração de áudio da entrada de texto

O script gera um arquivo de áudio chamado dog.wav no mesmo diretório que o script. O arquivo de áudio contém a resposta falada ao prompt: "Um golden retriever é um bom cão de família?"

Gerar áudio e texto com base na entrada de áudio

  1. Crie o from-audio.py arquivo com o seguinte código:

    import requests
    import base64
    import os
    from azure.identity import DefaultAzureCredential
    
    # Set environment variables or edit the corresponding values here.
    endpoint = os.environ['AZURE_OPENAI_ENDPOINT']
    
    # Keyless authentication
    credential = DefaultAzureCredential()
    token = credential.get_token("https://ai.azure.com/.default")
    
    # Read and encode audio file  
    with open('dog.wav', 'rb') as wav_reader: 
      encoded_string = base64.b64encode(wav_reader.read()).decode('utf-8') 
    
    api_version = '2025-01-01-preview'
    url = f"{endpoint}/openai/deployments/gpt-4o-mini-audio-preview/chat/completions?api-version={api_version}"
    headers= { "Authorization": f"Bearer {token.token}", "Content-Type": "application/json" }
    body = {
      "modalities": ["audio", "text"],
      "model": "gpt-4o-mini-audio-preview",
      "audio": {
          "format": "wav",
          "voice": "alloy"
      },
      "messages": [
        { 
            "role": "user", 
            "content": [ 
                {  
                    "type": "text", 
                    "text": "Describe in detail the spoken audio input." 
                }, 
                { 
                    "type": "input_audio", 
                    "input_audio": { 
                        "data": encoded_string, 
                        "format": "wav" 
                    } 
                } 
            ] 
        }, 
      ]
    }
    
    completion = requests.post(url, headers=headers, json=body)
    
    print(completion.json()['choices'][0]['message']['audio']['transcript'])
    
    # Write the output audio data to a file
    audio_data = completion.json()['choices'][0]['message']['audio']['data'] 
    wav_bytes = base64.b64decode(audio_data)
    with open("analysis.wav", "wb") as f: 
      f.write(wav_bytes) 
    
  2. Execute o arquivo Python.

    python from-audio.py
    

Aguarde alguns instantes para obter a resposta.

Saída de geração de texto e áudio a partir de entrada de áudio

O script gera uma transcrição do resumo da entrada de áudio falada. Ele também gera um arquivo de áudio chamado analysis.wav no mesmo diretório que o script. O arquivo de áudio contém a resposta falada para o prompt.

Gerar áudio e usar conclusões de conversas em múltiplos turnos

  1. Crie o multi-turn.py arquivo com o seguinte código:

    import requests
    import base64 
    import os 
    from openai import AzureOpenAI 
    from azure.identity import DefaultAzureCredential
    
    # Set environment variables or edit the corresponding values here.
    endpoint = os.environ['AZURE_OPENAI_ENDPOINT']
    
    # Keyless authentication
    credential = DefaultAzureCredential()
    token = credential.get_token("https://ai.azure.com/.default")
    
    api_version = '2025-01-01-preview'
    url = f"{endpoint}/openai/deployments/gpt-4o-mini-audio-preview/chat/completions?api-version={api_version}"
    headers= { "Authorization": f"Bearer {token.token}", "Content-Type": "application/json" }
    
    # Read and encode audio file  
    with open('dog.wav', 'rb') as wav_reader: 
      encoded_string = base64.b64encode(wav_reader.read()).decode('utf-8') 
    
    # Initialize messages with the first turn's user input 
    messages = [
        { 
            "role": "user", 
            "content": [ 
                {  
                    "type": "text", 
                    "text": "Describe in detail the spoken audio input." 
                }, 
                { 
                    "type": "input_audio", 
                    "input_audio": { 
                        "data": encoded_string, 
                        "format": "wav" 
                    } 
                } 
            ] 
        }] 
    
    body = {
      "modalities": ["audio", "text"],
      "model": "gpt-4o-mini-audio-preview",
      "audio": {
          "format": "wav",
          "voice": "alloy"
      },
      "messages": messages
    }
    
    # Get the first turn's response, including generated audio 
    completion = requests.post(url, headers=headers, json=body)
    
    print("Get the first turn's response:")
    print(completion.json()['choices'][0]['message']['audio']['transcript']) 
    
    print("Add a history message referencing the first turn's audio by ID:")
    print(completion.json()['choices'][0]['message']['audio']['id'])
    
    # Add a history message referencing the first turn's audio by ID 
    messages.append({ 
        "role": "assistant", 
        "audio": { "id": completion.json()['choices'][0]['message']['audio']['id'] } 
    }) 
    
    # Add the next turn's user message 
    messages.append({ 
        "role": "user", 
        "content": "Very briefly, summarize the favorability." 
    }) 
    
    body = {
      "model": "gpt-4o-mini-audio-preview",
      "messages": messages
    }
    
    # Send the follow-up request with the accumulated messages
    completion = requests.post(url, headers=headers, json=body) 
    
    print("Very briefly, summarize the favorability.")
    print(completion.json()['choices'][0]['message']['content'])
    
  2. Execute o arquivo Python.

    python multi-turn.py
    

Aguarde alguns instantes para obter a resposta.

Saída para conclusões de chat de vários turnos

O script gera uma transcrição do resumo da entrada de áudio falada. Em seguida, ele faz uma conclusão de chat de vários turnos para resumir brevemente a entrada de áudio falada.

Documentação de referência | Código-fonte da biblioteca | Pacote (npm) | Exemplos

Os modelos habilitados para áudio introduzem a modalidade de áudio na API existente /chat/completions . O modelo de áudio expande o potencial para aplicativos de IA em interações baseadas em texto e voz e análise de áudio. As modalidades suportadas nos modelos gpt-4o-audio-preview e gpt-4o-mini-audio-preview incluem: texto, áudio e texto + áudio.

Aqui está uma tabela das modalidades com suporte com casos de uso de exemplo:

Entrada de modalidade Saída de modalidade Exemplo de caso de uso
Texto Texto + áudio Conversão de texto em fala, geração de livro de áudio
Áudio Texto + áudio Transcrição de áudio, geração de livro de áudio
Áudio Texto Transcrição de áudio
Texto + áudio Texto + áudio Geração de livro de áudio
Texto + áudio Texto Transcrição de áudio

Usando recursos de geração de áudio, você pode obter aplicativos de IA mais dinâmicos e interativos. Modelos que dão suporte a entradas e saídas de áudio permitem que você gere respostas de áudio faladas para prompts e use entradas de áudio para acionar o modelo.

Modelos com suporte

Os seguintes modelos OpenAI dão suporte à geração de áudio:

Modelo Geração de áudio? Uso primário
gpt-4o-audio-preview ✔️ Completamentos de chat com saída falada
gpt-4o-mini-tts ✔️ Conversão de texto em fala rápida e escalonável
gpt-4o-mini-audio-preview ✔️ Geração de áudio assíncrona
gpt-realtime ✔️ Voz interativa em tempo real
gpt-realtime-mini ✔️ Streaming de áudio de baixa latência
tts-1 / tts-1-hd ✔️ Síntese de fala de uso geral

Para obter informações sobre a disponibilidade da região, consulte a documentação de modelos e versões.

Nota

A API em tempo real usa o mesmo modelo de áudio GPT-4o subjacente que a API de conclusões, mas é otimizada para interações de áudio em tempo real de baixa latência.

Requisitos de entrada

As vozes a seguir têm suporte para saída de áudio: Alloy, Ash, Ballad, Coral, Echo, Sage, Shimmer, Verse, Marin e Cedar.

Há suporte para os seguintes formatos de saída de áudio: wav, mp3, flac, opus, pcm16 e aac.

O tamanho máximo do arquivo de áudio é de 20 MB.

Suporte à API

O suporte para conclusões de áudio foi adicionado pela primeira vez na versão 2025-01-01-previewda API.

Pré-requisitos

Microsoft Entra ID pré-requisitos

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

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

Configurar

  1. Crie uma nova pasta audio-completions-quickstart e vá para a pasta de início rápido com o seguinte comando:

    mkdir audio-completions-quickstart && cd audio-completions-quickstart
    
  2. Crie o package.json com o seguinte comando:

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

    npm pkg set type=module
    
  4. Instale a biblioteca de clientes OpenAI para JavaScript com:

    npm install openai
    
  5. Para a autenticação recomendada sem chave com Microsoft Entra ID, instale o pacote @azure/identity com:

    npm install @azure/identity
    

Recuperar informações do recurso

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

Nome da variável Valor
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Keys e Endpoint ao examinar o recurso do portal Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação quando você implantou um modelo. Esse valor pode ser encontrado em Resource Management>Model Deployments no portal Azure.

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

Cuidado

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.

Gerar áudio com base na entrada de texto

  1. Crie o to-audio.ts arquivo com o seguinte código:

    import { writeFileSync } from "node:fs";
    import { AzureOpenAI } from "openai/index.mjs";
    import {
        DefaultAzureCredential,
        getBearerTokenProvider,
      } from "@azure/identity";
    
    // Set environment variables or edit the corresponding values here.
    const endpoint: string = process.env.AZURE_OPENAI_ENDPOINT || "AZURE_OPENAI_ENDPOINT";
    const deployment: string = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4o-mini-audio-preview"; 
    const apiVersion: string = process.env.OPENAI_API_VERSION || "2025-01-01-preview"; 
    
    // Keyless authentication 
    const getClient = (): AzureOpenAI => {
        const credential = new DefaultAzureCredential();
        const scope = "https://ai.azure.com/.default";
        const azureADTokenProvider = getBearerTokenProvider(credential, scope);
        const client = new AzureOpenAI({
          endpoint: endpoint,
          apiVersion: apiVersion,
          azureADTokenProvider,
        });
        return client;
    };
    
    const client = getClient();
    
    async function main(): Promise<void> {
    
        // Make the audio chat completions request
        const response = await client.chat.completions.create({ 
            model: "gpt-4o-mini-audio-preview", 
            modalities: ["text", "audio"], 
            audio: { voice: "alloy", format: "wav" }, 
            messages: [ 
            { 
                role: "user", 
                content: "Is a golden retriever a good family dog?" 
            } 
            ] 
        }); 
    
      // Inspect returned data 
      console.log(response.choices[0]); 
    
      // Write the output audio data to a file
      if (response.choices[0].message.audio) {
        writeFileSync( 
          "dog.wav", 
          Buffer.from(response.choices[0].message.audio.data, 'base64'), 
          { encoding: "utf-8" } 
        ); 
      } else {
        console.error("Audio data is null or undefined.");
      }
    }
    
    main().catch((err: Error) => {
      console.error("Error occurred:", err);
    });
    
    export { main };
    
  2. Crie o tsconfig.json arquivo para transpilar o código TypeScript e copiar 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 to-audio.js
    

Aguarde alguns instantes para obter a resposta.

Saída para geração de áudio da entrada de texto

O script gera um arquivo de áudio chamado dog.wav no mesmo diretório que o script. O arquivo de áudio contém a resposta falada ao prompt: "Um golden retriever é um bom cão de família?"

Gerar áudio e texto com base na entrada de áudio

  1. Crie o from-audio.ts arquivo com o seguinte código:

    import { AzureOpenAI } from "openai";
    import { writeFileSync } from "node:fs";
    import { promises as fs } from 'fs';
    import {
        DefaultAzureCredential,
        getBearerTokenProvider,
      } from "@azure/identity";
    
    // Set environment variables or edit the corresponding values here.
    const endpoint: string = process.env.AZURE_OPENAI_ENDPOINT || "AZURE_OPENAI_ENDPOINT";
    const apiVersion: string = "2025-01-01-preview"; 
    const deployment: string = "gpt-4o-mini-audio-preview"; 
    
    // Keyless authentication 
    const getClient = (): AzureOpenAI => {
        const credential = new DefaultAzureCredential();
        const scope = "https://ai.azure.com/.default";
        const azureADTokenProvider = getBearerTokenProvider(credential, scope);
        const client = new AzureOpenAI({
          endpoint: endpoint,
          apiVersion: apiVersion,
          azureADTokenProvider,
        });
        return client;
    };
    
    const client = getClient();
    
    async function main(): Promise<void> {
    
        // Buffer the audio for input to the chat completion
        const wavBuffer = await fs.readFile("dog.wav"); 
        const base64str = Buffer.from(wavBuffer).toString("base64"); 
    
        // Make the audio chat completions request
        const response = await client.chat.completions.create({ 
          model: "gpt-4o-mini-audio-preview",
          modalities: ["text", "audio"], 
          audio: { voice: "alloy", format: "wav" },
          messages: [ 
            { 
              role: "user", 
              content: [ 
                { 
                  type: "text", 
                  text: "Describe in detail the spoken audio input." 
                }, 
                { 
                  type: "input_audio", 
                  input_audio: { 
                    data: base64str, 
                    format: "wav" 
                  } 
                } 
              ] 
            } 
          ] 
        }); 
    
        console.log(response.choices[0]); 
    
        // Write the output audio data to a file
        if (response.choices[0].message.audio) {
            writeFileSync("analysis.wav", Buffer.from(response.choices[0].message.audio.data, 'base64'), { encoding: "utf-8" });
        }
        else {
            console.error("Audio data is null or undefined.");
      }
    }
    
    main().catch((err: Error) => {
      console.error("Error occurred:", err);
    });
    
    export { main };
    
  2. Crie o tsconfig.json arquivo para transpilar o código TypeScript e copiar 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 from-audio.js
    

Aguarde alguns instantes para obter a resposta.

Saída de geração de texto e áudio a partir de entrada de áudio

O script gera uma transcrição do resumo da entrada de áudio falada. Ele também gera um arquivo de áudio chamado analysis.wav no mesmo diretório que o script. O arquivo de áudio contém a resposta falada para o prompt.

Gerar áudio e usar conclusões de conversas em múltiplos turnos

  1. Crie o multi-turn.ts arquivo com o seguinte código:

    import { AzureOpenAI } from "openai/index.mjs";
    import { promises as fs } from 'fs';
    import { ChatCompletionMessageParam } from "openai/resources/index.mjs";
    import {
        DefaultAzureCredential,
        getBearerTokenProvider,
      } from "@azure/identity";
    
    // Set environment variables or edit the corresponding values here.
    const endpoint: string = process.env.AZURE_OPENAI_ENDPOINT || "AZURE_OPENAI_ENDPOINT";
    const apiVersion: string = "2025-01-01-preview"; 
    const deployment: string = "gpt-4o-mini-audio-preview"; 
    
    // Keyless authentication 
    const getClient = (): AzureOpenAI => {
        const credential = new DefaultAzureCredential();
        const scope = "https://ai.azure.com/.default";
        const azureADTokenProvider = getBearerTokenProvider(credential, scope);
        const client = new AzureOpenAI({
          endpoint: endpoint,
          apiVersion: apiVersion,
          azureADTokenProvider,
        });
        return client;
    };
    
    const client = getClient(); 
    
    async function main(): Promise<void> {
    
        // Buffer the audio for input to the chat completion
        const wavBuffer = await fs.readFile("dog.wav"); 
        const base64str = Buffer.from(wavBuffer).toString("base64"); 
    
        // Initialize messages with the first turn's user input 
        const messages: ChatCompletionMessageParam[] = [
          {
            role: "user",
            content: [
              { 
                type: "text", 
                text: "Describe in detail the spoken audio input." 
              },
              { 
                type: "input_audio", 
                input_audio: { 
                  data: base64str, 
                  format: "wav" 
                } 
              }
            ]
          }
        ];
    
        // Get the first turn's response 
    
        const response = await client.chat.completions.create({ 
            model: "gpt-4o-mini-audio-preview",
            modalities: ["text", "audio"], 
            audio: { voice: "alloy", format: "wav" }, 
            messages: messages
        }); 
    
        console.log(response.choices[0]); 
    
        // Add a history message referencing the previous turn's audio by ID 
        messages.push({ 
            role: "assistant", 
            audio: response.choices[0].message.audio ? { id: response.choices[0].message.audio.id } : undefined
        });
    
        // Add a new user message for the second turn
        messages.push({ 
            role: "user", 
            content: [ 
                { 
                  type: "text", 
                  text: "Very concisely summarize the favorability." 
                } 
            ] 
        }); 
    
        // Send the follow-up request with the accumulated messages
        const followResponse = await client.chat.completions.create({ 
            model: "gpt-4o-mini-audio-preview",
            messages: messages
        });
    
        console.log(followResponse.choices[0].message.content); 
    }
    
    main().catch((err: Error) => {
      console.error("Error occurred:", err);
    });
    
    export { main };
    
  2. Crie o tsconfig.json arquivo para transpilar o código TypeScript e copiar 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 multi-turn.js
    

Aguarde alguns instantes para obter a resposta.

Saída para conclusões de chat de vários turnos

O script gera uma transcrição do resumo da entrada de áudio falada. Em seguida, ele faz uma conclusão de chat de vários turnos para resumir brevemente a entrada de áudio falada.

Limpar recursos

Se você quiser limpar e remover um recurso Azure OpenAI, poderá excluir o recurso. Antes de excluir o recurso, primeiro você deve excluir todos os modelos implantados.

Solucionando problemas

Nota

Ao usar gpt-4o-audio-preview para conclusões de chat com a modalidade de áudio e stream é definido como true, o único formato de áudio com suporte é pcm16.

Erros de autenticação

Se você receber um erro 401 ou 403:

  • Autenticação sem chave: Verifique se você executou az login e tem a Cognitive Services User função atribuída à sua conta.
  • Chave de API: Verifique se isso AZURE_OPENAI_API_KEY está definido corretamente e se a chave não foi regenerada.

Modelo não encontrado

Se o gpt-4o-mini-audio-preview modelo não estiver disponível:

  • Verifique se o modelo está implantado em seu Azure recurso OpenAI.
  • Verifique se você está usando uma região com suporte.

Problemas de arquivo de áudio

Se o arquivo de áudio gerado não for reproduzido:

  • Verifique se o arquivo foi gravado completamente (verifique se o tamanho do arquivo é maior que 0 bytes).
  • Verifique se o formato corresponde ao que o player dá suporte (wav é amplamente compatível).
  • Para respostas de streaming, lembre-se de que há suporte apenas para o formato pcm16.

Limitação de taxa

Se você receber um erro 429, excedeu o limite de taxa. Aguarde e tente novamente ou solicite um aumento de cota. Para obter mais informações sobre limites de taxa de uso, consulte cotas e limites do Azure OpenAI.

  • Saiba mais sobre tipos de implantação do Azure OpenAI .
  • Saiba mais sobre Azure openai quotas e limites.