Поделиться через


API GPT-4o Realtime для речи и звука (предварительная версия)

Примечание.

Эта функция сейчас доступна в виде общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

API Azure OpenAI GPT-4o Realtime для распознавания речи и звука является частью семейства моделей GPT-4o, которая поддерживает низкой задержки, "речь в речи" диалоговых взаимодействий. API звука realtime GPT-4o предназначен для обработки взаимодействий в режиме реального времени, низкой задержки общения, что делает его отличным для вариантов использования с участием динамического взаимодействия между пользователем и моделью, такими как агенты поддержки клиентов, голосовые помощники и переводчики в режиме реального времени.

Большинство пользователей API Реального времени должны доставлять и получать звук от конечного пользователя в режиме реального времени, включая приложения, использующие WebRTC или телефонную систему. API Реального времени не предназначен для прямого подключения к устройствам конечных пользователей и зависит от интеграции клиента для прекращения аудиопотоков конечных пользователей.

Поддерживаемые модели

В настоящее время доступна только gpt-4o-realtime-preview версия: 2024-10-01-preview поддерживает звук в режиме реального времени.

Модель gpt-4o-realtime-preview доступна для глобальных развертываний в регионах "Восточная часть США 2" и "Центральная Швеция".

Внимание

Система сохраняет запросы и завершения, как описано в разделе "Использование и доступ к данным для мониторинга злоупотреблений" условий использования и доступа к конкретным продуктам для службы OpenAI, за исключением того, что ограниченное исключение не применяется. Мониторинг злоупотреблений gpt-4o-realtime-preview будет включен для использования API даже для клиентов, которые в противном случае утверждены для измененного мониторинга злоупотреблений.

поддержка API

Поддержка API в режиме реального времени была добавлена в версию 2024-10-01-previewAPI.

Примечание.

Дополнительные сведения об API и архитектуре см. в репозитории аудиофайлов Azure OpenAI GPT-4o в режиме реального времени на GitHub.

Развертывание модели для звука в режиме реального времени

Чтобы развернуть модель на портале Azure AI Foundry, выполните следующие действия gpt-4o-realtime-preview .

  1. Перейдите на портал Azure AI Foundry и убедитесь, что вы вошли в подписку Azure с ресурсом Службы Azure OpenAI (с развертыванием моделей или без нее).
  2. Выберите звуковую площадку в режиме реального времени в разделе "Игровые площадки" в левой области.
  3. Выберите "Создать новое развертывание" , чтобы открыть окно развертывания.
  4. Найдите и выберите gpt-4o-realtime-preview модель, а затем нажмите кнопку "Подтвердить".
  5. В мастере развертывания обязательно выберите версию 2024-10-01 модели.
  6. Следуйте инструкциям мастера, чтобы завершить развертывание модели.

Теперь, когда у вас есть развертывание модели, вы можете взаимодействовать с ней в режиме реального gpt-4o-realtime-preview времени на портале Azure AI Foundry audio playground или API Realtime.

Использование звука GPT-4o в режиме реального времени

Чтобы общаться с развернутой gpt-4o-realtime-preview моделью на звуковой площадке Azure AI Foundry в режиме реального времени , выполните следующие действия.

  1. Перейдите на страницу службы Azure OpenAI на портале Azure AI Foundry. Убедитесь, что вы вошли в подписку Azure с ресурсом Azure OpenAI Service и развернутой gpt-4o-realtime-preview моделью.

  2. Выберите звуковую площадку в режиме реального времени в разделе "Игровые площадки" в левой области.

  3. Выберите развернутую gpt-4o-realtime-preview модель в раскрывающемся списке развертывания .

  4. Выберите "Включить микрофон" , чтобы разрешить браузеру доступ к микрофону. Если вы уже предоставили разрешение, этот шаг можно пропустить.

    Снимок экрана: звуковая площадка в режиме реального времени с выбранной развернутой моделью.

  5. При необходимости можно изменить содержимое в текстовом поле "Дать инструкции модели" и текстовое поле контекста . Дайте модели инструкции о том, как он должен вести себя и какой-либо контекст, на который он должен ссылаться при создании ответа. Вы можете описать личность помощника, указать ему, что он должен и не должен отвечать, и сообщить о том, как форматировать ответы.

  6. При необходимости измените параметры, такие как пороговое значение, заполнение префикса и длительность молчания.

  7. Нажмите кнопку "Начать прослушивание" , чтобы начать сеанс. Вы можете поговорить с микрофоном, чтобы начать чат.

    Снимок экрана: звуковая площадка в режиме реального времени с включенным кнопкой прослушивания и доступом к микрофону.

  8. Вы можете прервать чат в любое время, выступая. Вы можете завершить чат, нажав кнопку "Остановить прослушивание ".

Необходимые компоненты

Предварительные требования для идентификатора Microsoft Entra

Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо:

  • Установите Azure CLI, используемый для проверки подлинности без ключа с помощью идентификатора Microsoft Entra.
  • Назначьте роль учетной Cognitive Services User записи пользователя. Роли можно назначить в портал Azure в разделе управления доступом (IAM)>Добавить назначение ролей.

Развертывание модели для звука в режиме реального времени

Чтобы развернуть модель на портале Azure AI Foundry, выполните следующие действия gpt-4o-realtime-preview .

  1. Перейдите на портал Azure AI Foundry и убедитесь, что вы вошли в подписку Azure с ресурсом Службы Azure OpenAI (с развертыванием моделей или без нее).
  2. Выберите звуковую площадку в режиме реального времени в разделе "Игровые площадки" в левой области.
  3. Выберите "Создать новое развертывание" , чтобы открыть окно развертывания.
  4. Найдите и выберите gpt-4o-realtime-preview модель, а затем нажмите кнопку "Подтвердить".
  5. В мастере развертывания обязательно выберите версию 2024-10-01 модели.
  6. Следуйте инструкциям мастера, чтобы завершить развертывание модели.

Теперь, когда у вас есть развертывание модели, вы можете взаимодействовать с ней в режиме реального gpt-4o-realtime-preview времени на портале Azure AI Foundry audio playground или API Realtime.

Настройка

  1. Создайте новую папку realtime-audio-quickstart для хранения приложения и откройте Visual Studio Code в этой папке с помощью следующей команды:

    mkdir realtime-audio-quickstart && code realtime-audio-quickstart
    
  2. Создайте следующую package.json команду:

    npm init -y
    
  3. Обновите ECMAScript с помощью следующей package.json команды:

    npm pkg set type=module
    
  4. Установите клиентскую библиотеку аудио в режиме реального времени для JavaScript:

    npm install https://github.com/Azure-Samples/aoai-realtime-audio-sdk/releases/download/js/v0.5.2/rt-client-0.5.2.tgz
    
  5. Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra установите @azure/identity пакет с помощью:

    npm install @azure/identity
    

Получение сведений о ресурсе

Имя переменной Значение
AZURE_OPENAI_ENDPOINT Это значение можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Это значение будет соответствовать пользовательскому имени, которое вы выбрали для развертывания при развертывании модели. Это значение можно найти в разделе "Развертывания модели управления>ресурсами" в портал Azure.
OPENAI_API_VERSION Дополнительные сведения о версиях API.

Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.

Внимание

Чтобы использовать рекомендуемую проверку подлинности без ключа с пакетом SDK, убедитесь, что AZURE_OPENAI_API_KEY переменная среды не задана.

Текст в звуке

  1. text-in-audio-out.js Создайте файл со следующим кодом:

    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. Войдите в Azure с помощью следующей команды:

    az login
    
  3. Запустите файл JavaScript.

    node text-in-audio-out.js
    

Подождите несколько минут, чтобы получить ответ.

Выходные данные

Скрипт получает ответ от модели и печатает полученные расшифровки и звуковые данные.

Вывод имеет следующий вид:

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.

Пример веб-приложения

Наш веб-пример JavaScript на GitHub демонстрирует, как использовать API GPT-4o Realtime для взаимодействия с моделью в режиме реального времени. Пример кода включает простой веб-интерфейс, который записывает звук с микрофона пользователя и отправляет его в модель для обработки. Модель реагирует на текст и звук, отрисовывая пример кода в веб-интерфейсе.

Пример кода можно запустить локально на компьютере, выполнив следующие действия. Дополнительные сведения см. в репозитории на сайте GitHub .

  1. Если вы не установили Node.js, скачайте и установите версию LTS Node.js.

  2. Клонируйте репозиторий на локальный компьютер:

    git clone https://github.com/Azure-Samples/aoai-realtime-audio-sdk.git
    
  3. Перейдите в папку javascript/samples/web в предпочитаемом редакторе кода.

    cd ./javascript/samples
    
  4. Запустите download-pkg.ps1 или download-pkg.sh скачайте необходимые пакеты.

  5. Перейдите в папку web ./javascript/samples из папки.

    cd ./web
    
  6. Запустите npm install , чтобы установить зависимости пакета.

  7. Запустите npm run dev , чтобы запустить веб-сервер, перейдя по мере необходимости на все запросы разрешений брандмауэра.

  8. Перейдите к любому из предоставленных URI из выходных данных консоли (например http://localhost:5173/, в браузере).

  9. Введите следующие сведения в веб-интерфейсе:

    • Конечная точка: конечная точка ресурса Azure OpenAI. Не нужно добавлять /realtime путь. Примером может быть https://my-azure-openai-resource-from-portal.openai.azure.comструктура.
    • Ключ API: соответствующий ключ API для ресурса Azure OpenAI.
    • Развертывание: имя gpt-4o-realtime-preview модели, развернутой в предыдущем разделе.
    • Системное сообщение: при необходимости можно предоставить системное сообщение, например "Вы всегда разговариваете как дружественный пират".
    • Температура: при необходимости можно предоставить пользовательскую температуру.
    • Голосовая связь. При необходимости можно выбрать голос.
  10. Нажмите кнопку "Запись", чтобы запустить сеанс. При появлении запроса примите разрешения на использование микрофона.

  11. Вы увидите << Session Started >> сообщение в главном выходных данных. Затем вы можете поговорить с микрофоном, чтобы начать чат.

  12. Вы можете прервать чат в любое время, выступая. Вы можете завершить чат, нажав кнопку "Остановить ".

Необходимые компоненты

Предварительные требования для идентификатора Microsoft Entra

Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо:

  • Установите Azure CLI, используемый для проверки подлинности без ключа с помощью идентификатора Microsoft Entra.
  • Назначьте роль учетной Cognitive Services User записи пользователя. Роли можно назначить в портал Azure в разделе управления доступом (IAM)>Добавить назначение ролей.

Развертывание модели для звука в режиме реального времени

Чтобы развернуть модель на портале Azure AI Foundry, выполните следующие действия gpt-4o-realtime-preview .

  1. Перейдите на портал Azure AI Foundry и убедитесь, что вы вошли в подписку Azure с ресурсом Службы Azure OpenAI (с развертыванием моделей или без нее).
  2. Выберите звуковую площадку в режиме реального времени в разделе "Игровые площадки" в левой области.
  3. Выберите "Создать новое развертывание" , чтобы открыть окно развертывания.
  4. Найдите и выберите gpt-4o-realtime-preview модель, а затем нажмите кнопку "Подтвердить".
  5. В мастере развертывания обязательно выберите версию 2024-10-01 модели.
  6. Следуйте инструкциям мастера, чтобы завершить развертывание модели.

Теперь, когда у вас есть развертывание модели, вы можете взаимодействовать с ней в режиме реального gpt-4o-realtime-preview времени на портале Azure AI Foundry audio playground или API Realtime.

Настройка

  1. Создайте новую папку realtime-audio-quickstart для хранения приложения и откройте Visual Studio Code в этой папке с помощью следующей команды:

    mkdir realtime-audio-quickstart && code realtime-audio-quickstart
    
  2. Создайте виртуальную среду. Если у вас уже установлен Python 3.10 или более поздней версии, можно создать виртуальную среду с помощью следующих команд:

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

    Активация среды Python означает, что при запуске python или pip из командной строки используется интерпретатор Python, содержащийся в .venv папке приложения. Вы можете использовать deactivate команду для выхода из виртуальной среды Python, а затем повторно активировать ее при необходимости.

    Совет

    Рекомендуется создать и активировать новую среду Python для установки пакетов, необходимых для этого руководства. Не устанавливайте пакеты в глобальную установку Python. При установке пакетов Python всегда следует использовать виртуальную или конда-среду, в противном случае можно разорвать глобальную установку Python.

  3. Установите клиентную библиотеку аудио в режиме реального времени для Python:

    pip install "https://github.com/Azure-Samples/aoai-realtime-audio-sdk/releases/download/py%2Fv0.5.3/rtclient-0.5.3.tar.gz"
    
  4. Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra установите azure-identity пакет с помощью:

    pip install azure-identity
    

Получение сведений о ресурсе

Имя переменной Значение
AZURE_OPENAI_ENDPOINT Это значение можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Это значение будет соответствовать пользовательскому имени, которое вы выбрали для развертывания при развертывании модели. Это значение можно найти в разделе "Развертывания модели управления>ресурсами" в портал Azure.
OPENAI_API_VERSION Дополнительные сведения о версиях API.

Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.

Текст в звуке

  1. text-in-audio-out.py Создайте файл со следующим кодом:

    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. Запустите файл Python.

    python text-in-audio-out.py
    

Подождите несколько минут, чтобы получить ответ.

Выходные данные

Скрипт получает ответ от модели и печатает полученные расшифровки и звуковые данные.

Вывод имеет следующий вид:

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.

Необходимые компоненты

Предварительные требования для идентификатора Microsoft Entra

Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо:

  • Установите Azure CLI, используемый для проверки подлинности без ключа с помощью идентификатора Microsoft Entra.
  • Назначьте роль учетной Cognitive Services User записи пользователя. Роли можно назначить в портал Azure в разделе управления доступом (IAM)>Добавить назначение ролей.

Развертывание модели для звука в режиме реального времени

Чтобы развернуть модель на портале Azure AI Foundry, выполните следующие действия gpt-4o-realtime-preview .

  1. Перейдите на портал Azure AI Foundry и убедитесь, что вы вошли в подписку Azure с ресурсом Службы Azure OpenAI (с развертыванием моделей или без нее).
  2. Выберите звуковую площадку в режиме реального времени в разделе "Игровые площадки" в левой области.
  3. Выберите "Создать новое развертывание" , чтобы открыть окно развертывания.
  4. Найдите и выберите gpt-4o-realtime-preview модель, а затем нажмите кнопку "Подтвердить".
  5. В мастере развертывания обязательно выберите версию 2024-10-01 модели.
  6. Следуйте инструкциям мастера, чтобы завершить развертывание модели.

Теперь, когда у вас есть развертывание модели, вы можете взаимодействовать с ней в режиме реального gpt-4o-realtime-preview времени на портале Azure AI Foundry audio playground или API Realtime.

Настройка

  1. Создайте новую папку realtime-audio-quickstart для хранения приложения и откройте Visual Studio Code в этой папке с помощью следующей команды:

    mkdir realtime-audio-quickstart && code realtime-audio-quickstart
    
  2. Создайте следующую package.json команду:

    npm init -y
    
  3. Обновите ECMAScript с помощью следующей package.json команды:

    npm pkg set type=module
    
  4. Установите клиентскую библиотеку аудио в режиме реального времени для JavaScript:

    npm install https://github.com/Azure-Samples/aoai-realtime-audio-sdk/releases/download/js/v0.5.2/rt-client-0.5.2.tgz
    
  5. Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra установите @azure/identity пакет с помощью:

    npm install @azure/identity
    

Получение сведений о ресурсе

Имя переменной Значение
AZURE_OPENAI_ENDPOINT Это значение можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Это значение будет соответствовать пользовательскому имени, которое вы выбрали для развертывания при развертывании модели. Это значение можно найти в разделе "Развертывания модели управления>ресурсами" в портал Azure.
OPENAI_API_VERSION Дополнительные сведения о версиях API.

Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.

Внимание

Чтобы использовать рекомендуемую проверку подлинности без ключа с пакетом SDK, убедитесь, что AZURE_OPENAI_API_KEY переменная среды не задана.

Текст в звуке

  1. text-in-audio-out.ts Создайте файл со следующим кодом:

    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. tsconfig.json Создайте файл для транспиля кода TypeScript и скопируйте следующий код для 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. Транспилировать из TypeScript в JavaScript.

    tsc
    
  4. Войдите в Azure с помощью следующей команды:

    az login
    
  5. Выполните следующую команду, чтобы запустить код:

    node text-in-audio-out.js
    

Подождите несколько минут, чтобы получить ответ.

Выходные данные

Скрипт получает ответ от модели и печатает полученные расшифровки и звуковые данные.

Вывод имеет следующий вид:

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.