Изучение API Голосовой трансляции Azure

Завершено

Подсказка

Дополнительные сведения см. на вкладке "Текст и изображения ".

Динамический API голосовой связи позволяет разработчикам создавать приложения с поддержкой голоса с двунаправленным взаимодействием в режиме реального времени. В этом уроке рассматривается архитектура, конфигурация и реализация.

Ключевые функции API голосовой трансляции

Api live voice обеспечивает обмен данными в режиме реального времени с помощью подключений WebSocket. Она поддерживает расширенные функции, такие как распознавание речи, синтез текста в речь, потоковая передача аватара и обработка звука.

  • Форматированные в формате JSON события управляют беседами, звуковыми потоками и ответами.
  • События классифицируются на события клиента (отправляемые с клиента на сервер) и события сервера (отправляемые с сервера на клиент).

К ключевым функциям относятся:

  • Обработка звука в режиме реального времени с поддержкой нескольких форматов, таких как PCM16 и G.711.
  • Дополнительные параметры голосовой связи, включая голос OpenAI и пользовательские голоса Azure.
  • Интеграция аватара с помощью WebRTC для видео и анимации.
  • Встроенное снижение шума и отмена эхо.

Замечание

Voice Live API оптимизирован для ресурсов Microsoft Foundry. Мы рекомендуем использовать ресурсы Microsoft Foundry для полной доступности функций и лучшего интерфейса интеграции с Microsoft Foundry.

Сведения о поддерживаемых моделях и регионах см. в обзоре API голосовой трансляции.

Подключение к API голосовой трансляции

Api live voice поддерживает два метода проверки подлинности: Microsoft Entra (без ключа) и ключ API. Microsoft Entra использует аутентификацию на основе токенов для ресурса Microsoft Foundry. Вы применяете полученный аутентификационный токен с использованием токена с заголовком BearerAuthorization.

Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо назначить роль пользователя Cognitive Services учетной записи пользователя или управляемому удостоверению. Вы создаете токен с помощью Azure CLI или SDK Azure. Маркер должен быть создан в области https://ai.azure.com/.default или в устаревшей области https://cognitiveservices.azure.com/.default. Используйте маркер в Authorization заголовке запроса на подключение WebSocket с форматом Bearer <token>.

Для доступа к ключам ключ API можно предоставить одним из двух способов. В предварительном подключении можно использовать заголовок подключения api-key. Этот параметр недоступен в среде браузера. Кроме того, можно использовать api-key параметр строки запроса в URI запроса. Параметры строки запроса шифруются при использовании https/wss.

Замечание

Заголовок api-key подключения на этапе предварительного взаимодействия недоступен в среде браузера.

Конечная точка WebSocket

Используемая конечная точка зависит от способа доступа к ресурсам. Доступ к ресурсам можно получить через подключение к проекту Foundry при реализации агента или через прямое подключение к модели.

  • Подключение к проекту: Конечная точка wss://<your-ai-foundry-resource-name>.services.ai.azure.com/voice-live/realtime?api-version=2025-10-01
  • Подключение модели: Конечная точкаwss://<your-ai-foundry-resource-name>.cognitiveservices.azure.com/voice-live/realtime?api-version=2025-10-01.

Конечная точка одинакова для всех моделей. Единственное различие заключается в обязательном model параметре запроса или, при использовании службы агента, в параметрах agent_id и project_id.

События API голосовой трансляции

Клиентские и серверные события способствуют коммуникации и управлению в Voice live API. К ключевым событиям клиента относятся:

  • session.update: изменение конфигураций сеанса.
  • input_audio_buffer.append: добавьте звуковые данные в буфер.
  • response.create: Генерация ответов с помощью инференции модели.

События сервера предоставляют обратную связь и обновления состояния.

  • session.updated: подтвердите изменения конфигурации сеанса.
  • response.done: обозначьте завершение генерации ответов.
  • conversation.item.created: уведомляет о добавлении нового элемента беседы.

Полный список событий клиента или сервера см. в справочнике по API голосовой трансляции.

Замечание

Правильная обработка событий обеспечивает простое взаимодействие между клиентом и сервером.

Настройка параметров сеанса для API голосовой трансляции

Часто первое событие, отправленное вызывающим абонентом в только что созданном сеансе api голосовой трансляции, является событием session.update . Это событие управляет широким набором поведения ввода и вывода. Параметры сеанса можно обновлять динамически с помощью session.update события. Разработчики могут настраивать типы голосовых сообщений, модальности, обнаружение поворотов и аудиоформаты.

Пример конфигурации:

{
  "type": "session.update",
  "session": {
    "modalities": ["text", "audio"],
    "voice": {
      "type": "openai",
      "name": "alloy"
    },
    "instructions": "You are a helpful assistant. Be concise and friendly.",
    "input_audio_format": "pcm16",
    "output_audio_format": "pcm16",
    "input_audio_sampling_rate": 24000,
    "turn_detection": {
      "type": "azure_semantic_vad",
      "threshold": 0.5,
      "prefix_padding_ms": 300,
      "silence_duration_ms": 500
    },
    "temperature": 0.8,
    "max_response_output_tokens": "inf"
  }
}

Подсказка

Используйте семантический VAD Azure для интеллектуального обнаружения поворота и улучшенного потока беседы.

Реализация обработки звука в режиме реального времени с помощью API трансляции голосовой связи

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

  • Добавление звука: Добавьте звуковые байты в входной буфер.
  • Фиксация звука: Обработка звукового буфера для транскрибирования или создания ответов.
  • Очистить звук: Удалите звуковые данные из буфера.

Снижение шума и отмена эхо можно настроить для повышения качества звука. Рассмотрим пример.

{
  "type": "session.update",
  "session": {
    "input_audio_noise_reduction": {
      "type": "azure_deep_noise_suppression"
    },
    "input_audio_echo_cancellation": {
      "type": "server_echo_cancellation"
    }
  }
}

Замечание

Снижение шума повышает точность VAD и производительность модели путем фильтрации входного звука.

Интеграция потоковой передачи аватаров с помощью API трансляции голосовой связи

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

  • session.avatar.connect Используйте событие для предоставления SDP-предложения клиента.
  • Настройте параметры разрешения видео, скорости и кодека.
  • Определите выходные данные анимации, такие как blendshapes и visemes.

Пример конфигурации:

{
  "type": "session.avatar.connect",
  "client_sdp": "<client_sdp>"
}

Подсказка

Используйте параметры видео высокого разрешения для улучшения качества визуального элемента в взаимодействии с аватаром.