Построение приложений для потоковой передачи голоса в реальном времени с Amazon Nova Sonic и WebRTC — ИИ для бизнеса

Построение приложений для потоковой передачи голоса в реальном времени с Amazon Nova Sonic и WebRTC

Прослушать статью

Создание сквозных приложений для live streaming с голосовым взаимодействием в реальном времени связано с несколькими проблемами: ограничения пропускной способности сети могут повышать задержку и ухудшать качество в критичных по времени сценариях. Языковые барьеры мешают эффективному взаимодействию человека и машины в многоязычной голосовой коммуникации. Масштабируемость и отказоустойчивость требуют сложного баланса между производительностью и затратами на инфраструктуру. Совместимость между браузерами и мобильными платформами также требует значительных усилий по разработке, особенно для стартапов.

В этом посте представлен подход на базе Amazon Nova 2 Sonic (Nova Sonic) и Amazon Kinesis Video Streams WebRTC (WebRTC), который помогает решить эти задачи. WebRTC динамически подстраивает битрейт в нестабильных сетях, помогая сохранять качество звука и снижать число обрывов соединения. Nova Sonic обеспечивает диалоги на естественном человеческом языке, чтобы пользователи могли взаимодействовать более свободно на выбранном языке. Оба сервиса полностью управляются AWS, автоматически масштабируются и отличаются высокой отказоустойчивостью. AWS также предоставляет open-source примеры, которые можно взять за основу для собственного приложения.

В этом посте мы разберем архитектуру решения, шаблоны реализации и два примера из реальных сценариев.

Nova Sonic и WebRTC

Традиционные конвейеры голосовых агентов обычно состоят из отдельных модулей для распознавания речи, обработки языка и синтеза речи. Nova Sonic предлагает унифицированную speech-to-speech архитектуру, которая позволяет пользователям и AI-агентам вести голосовые разговоры в реальном времени с низкой задержкой.

Благодаря объединенным пониманию и генерации речи Nova Sonic обеспечивает естественный, человекоподобный conversational AI. Модель Nova Sonic поддерживает разные стили речи и tool-интерфейсы для внешних агентов. Это помогает строить более отзывчивый и интуитивный голосовой интерфейс с более высоким уровнем контекстной осведомленности.

Обычный потоковый конвейер состоит из трех основных компонентов: источника медиа, медиа-сервера и потребителя медиа. На предыдущей диаграмме показаны эти компоненты и соответствующие протоколы, такие как RTMP, RTSP, HLS, MPEG-DASH и WebRTC.

Web Real-Time Communication (WebRTC) — это открытый протокол, который модернизирует live streaming за счет прямых peer-to-peer соединений в реальном времени без дополнительных плагинов или установки ПО. Такой подход устраняет необходимость в промежуточных серверах и значительно снижает задержку. Среди всех протоколов потоковой передачи медиа WebRTC обеспечивает наименьшую задержку, как показано на следующем изображении.

WebRTC также включает встроенные функции, такие как потоковая передача с adaptive bitrate (ABR), forward error correction (FEC) и управлением jitter buffer. Эти возможности автоматически регулируют потребление пропускной способности и помогают устранять потери пакетов или проблемы с джиттером при слабом соединении. Вы можете поддерживать плавный диалог даже в плохих сетевых условиях.

Открытая природа WebRTC и широкая совместимость с браузерами (Chrome, Firefox, Safari, Edge, Android, iOS и т. д.) ускоряют внедрение решения и стимулируют дальнейшее развитие. Протокол также хорошо подходит для обработки потоков медиа в реальном времени с AI-функциями.

Архитектура решения

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

Следующая диаграмма показывает, как развернуть решение Nova Sonic вместе с Kinesis Video Streams как управляемый сервис WebRTC. Она демонстрирует интеграцию инструментов с популярными источниками, такими как Retrieval Augmented Generation (RAG), Model Context Protocol (MCP) и Strands Agents.

[1] В клиентском приложении пользователи запускают процесс WebRTC negotiation process, подключаясь к signaling channel WebRTC в Kinesis Video Streams. Аудио- и видеоданные передаются по двунаправленному соединению WebRTC.

[2] После обмена signaling-сообщениями для Session Description Protocol (SDP) offer/answer и Interactive Connectivity Establishment (ICE) candidates клиент и сервер запускают попытки двунаправленного peer connection. Затем видео и аудио могут передаваться с низкой задержкой через успешно установленное RTC-соединение.

[3] Media channel обрабатывает потоковую передачу аудио и видео в реальном времени с управлением adaptive bitrate и negotiation кодеков. Data channel обеспечивает надежную и упорядоченную передачу произвольных данных приложения, например текста, файлов и управляющих сообщений. Оба используют шифрование Datagram Transport Layer Security (DTLS) и протоколы Session Traversal Utilities for NAT (STUN)/Traversal Using Relays around NAT (TURN) для обхода Network Address Translation (NAT).

[4] Speech-to-speech event processor координирует взаимодействие input events и output events с Nova Sonic. В нашем решении они разделены на media events, передаваемые через media channel WebRTC, и текстовые данные через data channel WebRTC.

[5] Для установления HTTP/2-соединения для двунаправленного стриминга с Nova Sonic используется Python SDK. Это соединение поддерживает передачу медиа-данных в реальном времени и минимизирует задержку для пользователей.

[6] Помимо speech-to-speech аудиодиалога с предварительно обученными знаниями, Nova Sonic поддерживает asynchronous tool calling для доступа к MCP-серверам, агентам Strands или RAG. В этом посте показаны примеры использования инструментов.

Если вы уже используете Nova Sonic, то заметите, что эта архитектура похожа на решение на WebSocket. Ниже я покажу ключевые отличия.

Сравнение решения

По сравнению с вариантом развертывания на WebSocket, это speech-to-speech решение на базе WebRTC использует другой сетевой слой, который лучше подходит для мобильных и IoT-устройств. Таким устройствам часто нужны низколатентные соединения без высокой нагрузки на сеть. Решение также включает настроенный слой Voice Activity Detection (VAD) для улучшения пользовательского опыта.

Протокол потоковой передачи аудио изменен с WebSocket на WebRTC

Голосовые данные передаются через media channel WebRTC в потоковом режиме, а именно через аудиодорожку peer connection в формате Secure Real-time Transport Protocol (SRTP), а не через сообщения WebSocket. Мы реализовали возможности WebRTC, такие как SDP offer/answer, DTLS, Stream Control Transmission Protocol (SCTP), SRTP и peer connection, с помощью Python-библиотеки aiortc.

Механизм обнаружения человеческой речи

React WebRTC-клиент непрерывно захватывает аудио и отправляет его на Python WebRTC-сервер. Чтобы подавлять шум, повысить точность распознавания речи и сократить число audio tokens для Nova Sonic, решение применяет Voice Activity Detection (VAD) в серверном конвейере. Реализация кода на базе библиотеки Python WebRTCVAD показана на следующем изображении. Построенная на Gaussian Mixture Model (GMM), эта библиотека легкая, стабильная и быстрая для frame-level аудиообработки в WebRTC. Также можно использовать другие библиотеки, например Silero VAD и Pyannote VAD.

Адаптация формата аудиоданных

WebRTC определяет конкретные стандарты форматов аудио и видео. При отправке и получении аудиоданных через соединение WebRTC необходимо выполнять адаптацию формата: [1] из interleaved stereo frames нужно извлекать левый или правый аудиоканал; [2] частота дискретизации 48 kHz или другие значения будут преобразованы в 16 kHz, как требует API Nova Sonic; [3] значения Int16 будут преобразованы в Float32 для повышения точности вычислений. Подробнее см. документацию GitHub.

Разбор решения

Решение в этом GitHub-репозитории содержит универсальный пример и два конкретных сценария: пример для умного дома и пример для подключенного автомобиля. Вы можете адаптировать эти шаблоны под собственные приложения.

Пример для умного дома

Шаги настройки см. в readme для smart-home на GitHub.

Пример для подключенного автомобиля

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

Полный медиа-конвейер для сценария connected vehicle показан на следующей диаграмме. Параллельные соединения WebRTC независимы друг от друга и используют отдельное TLS-шифрование.

Шаги настройки см. в readme для connected-vehicle на GitHub.

Заключение

В этом посте мы показали, как построить решение на базе WebRTC, которое сочетает Amazon Nova 2 Sonic и Amazon Kinesis Video Streams WebRTC. Это решение помогает устранить распространенные барьеры в live streaming, такие как деградация производительности в нестабильных сетях и отсутствие conversational intelligence. Вы можете использовать этот подход как основу для создания собственных низколатентных, умных, надежных и гибких приложений голосового ассистента для пользователей умных устройств и подключенных автомобилей.

Чтобы начать работу и узнать больше:

  • Прочитайте speech-to-speech блог, чтобы узнать о последних возможностях Amazon Nova 2 Sonic.
  • Изучите speech-to-speech репозиторий на GitHub, чтобы увидеть больше сценариев.
  • Смотрите Amazon Kinesis Video Streams Developer Guide для дополнительных сценариев использования live streaming.

Материал — перевод статьи с английского.

Оригинал: Build real-time voice streaming applications with Amazon Nova Sonic and WebRTC