azure-ai-voicelive-py
Официальный skill Microsoft описывает Python-приложения на Azure AI Voice Live SDK для real-time голосового взаимодействия. Он подходит для двунаправленного обмена аудио по WebSocket, голосовых ассистентов, voice-enabled chatbot, speech-to-speech сценариев, управляемых голосом аватаров и потоковой работы с AI-моделями. В материалах упомянуты Server VAD, turn-based conversation, function calling, MCP tools, avatar integration и transcription; конкретный сценарий должен использовать только те возможности, которые поддерживает выбранное подключение и конфигурация сессии. Установка показана через пакеты azure-ai-voicelive, aiohttp и azure-identity. Для подключения нужен AZURE_COGNITIVE_SERVICES_ENDPOINT; при использовании DefaultAzureCredential в production рекомендуется явно задать AZURE_TOKEN_CREDENTIALS=prod либо конкретный допустимый тип credentials. Основной путь аутентификации — DefaultAzureCredential: он может работать локально через Azure CLI, VS Code или Developer CLI и в Azure через managed identity или workload identity без изменения прикладного кода. API key оставлен как legacy-вариант для уже существующих keyed deployments, которые ещё не перенесены на Entra ID. В любом случае endpoint и секреты должны приходить из окружения, а не из исходного кода. Клиент и credential следует закрывать через контекстные менеджеры: для sync используется with, для async — async with, включая асинхронный credential из azure.identity.aio. Пример соединения использует async connect, модель и scopes Azure Cognitive Services, после чего обновляет session инструкциями, modalities text и audio и выбранным голосом. Поток событий читается через async for: приложение может реагировать на создание и обновление сессии, начало и остановку речи, промежуточную и завершённую транскрибацию, начало и окончание ответа, аудио-дельты и завершение аргументов function call. VoiceLiveConnection предоставляет отдельные ресурсы для session, response, input_audio_buffer, output_audio_buffer, conversation и transcription_session. Входной аудиопоток можно добавлять через input_audio_buffer.append, затем commit или clear; в примере для PCM16 используется base64, а для ответа аудио декодируется обратно из base64. Настройки turn detection могут включать server_vad, threshold, prefix padding и silence duration. FunctionTool описывает функцию, её имя, назначение и JSON-параметры, поэтому при подключении tool нужно отдельно проверять схему аргументов и обработку ошибок. Практические ограничения важны: WebSocket-сессия требует управления жизненным циклом, сетью, остановкой итератора событий и воспроизведением аудио; модель, голос, формат и VAD не становятся универсальными только из-за наличия примера. Нельзя публиковать endpoint или API key в клиентском коде, а выбор DefaultAzureCredential, scope и разрешений нужно подтвердить в целевом Azure окружении. Skill даёт рабочую архитектуру и event-паттерны, но не заменяет актуальную документацию SDK, проверку версии пакетов, тестирование задержки, качества транскрибации, прерываний и поведения при разрыве WebSocket.
Для чего подходит
- Создание real-time голосового ассистента
- Потоковая передача аудио через WebSocket
- Интеграция MCP tools и function calling в voice AI
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-python/skills/azure-ai-voicelive-py