构建具备实时语音交互功能的端到端直播应用面临诸多挑战:网络带宽限制会导致对时间要求严格的应用出现高延迟和质量下降;语言障碍限制了多语言语音通信中有效的人机交互;可扩展性和弹性需要在性能和基础设施成本之间取得平衡;跨浏览器和移动端兼容性需要投入大量开发精力,尤其对于初创公司而言。
本文介绍了一种基于 Amazon Nova 2 Sonic (Nova Sonic) 和 Amazon Kinesis Video Streams WebRTC (WebRTC) 的解决方案,旨在应对这些挑战。WebRTC 负责在不稳定的网络环境下动态调整比特率,从而在保持音频质量的同时减少掉线。Nova Sonic 提供有效的人机对话功能,使用户能够以更自然的方式使用其选择的语言进行交互。这两项服务均由 AWS 完全托管,因此能够自动扩展并具备高弹性。AWS 还提供开源示例,您可以将其作为开发自身应用程序的起点。
在这篇文章中,我们将介绍解决方案架构、实现模式以及两个真实世界的场景示例。
Nova Sonic 和 WebRTC
传统的语音代理流程通常包含独立的语音识别、语言处理和语音合成模块。Nova Sonic 提供了一种统一的语音到语音架构,能够实现用户与 AI 代理之间低延迟的实时语音对话。
Nova Sonic 凭借统一的语音理解和生成技术,提供自然流畅、类人化的对话式 AI。Nova Sonic 模型为外部代理提供不同的说话风格和工具接口。您可以利用它构建响应更迅速、更直观、更具上下文感知能力的语音界面。

典型的流媒体传输管道包含三个主要组件:媒体源、媒体服务器和媒体消费者。上图展示了这些组件及其各自的协议,例如 RTMP、RTSP、HLS、MPEG-DASH 和 WebRTC。
WebRTC 是一种公共协议,它通过提供实时点对点直接连接(无需额外插件或软件安装)来革新直播流。这种方法消除了对中间服务器的需求,并显著降低了延迟。在所有媒体流协议中,WebRTC的延迟最低,如下图所示。

WebRTC 还内置了自适应比特率 (ABR)流媒体、前向纠错 (FEC)和抖动缓冲区管理等功能。这些功能可以自动调整带宽消耗,并解决弱网络连接下的丢包或抖动问题。即使在网络状况不佳的情况下,您也能保持流畅的通话。
WebRTC 的开源特性和广泛的浏览器兼容性(Chrome、Firefox、Safari、Edge、Android、iOS 等)将加速解决方案的普及应用,并促进持续改进。它也非常适合利用 AI 功能对媒体流进行实时处理。
解决方案架构
在以下场景中,你可能需要部署具备多语言语音交互功能的实时流媒体解决方案:为驾驶员提供实时翻译功能的联网车辆;通过语音激活的质量控制系统支持跨文化操作员沟通的智能工厂;提供多语言客户服务交互的机器人应用;以及提供多种语言即时语音控制的智能家居设备,以便你可以通过实时音频翻译和视频指导获得全球技术支持。
下图展示了如何将 Nova Sonic 解决方案与 Kinesis Video Streams 一起部署为托管式 WebRTC 服务。图中展示了该工具与 Retrieval Augmented Generation (RAG)、Model Context Protocol (MCP) 和 Strands Agents 等常用数据源的集成。

[1] 在客户端应用程序中,用户通过连接到 Kinesis Video Streams 的 WebRTC 信令通道来建立WebRTC 协商过程。音频和视频数据通过双向 WebRTC 连接进行传输。
[2] 在交换会话描述协议 (SDP) 的 offer/answer 和交互式连接建立 (ICE) 候选连接后,客户端和服务器发起双向对等连接尝试。然后,通过成功的 RTC 连接,即可低延迟地传输视频和音频数据。
[3] 媒体通道处理实时音频和视频流,支持自适应比特率控制和编解码器协商。数据通道提供可靠有序的任意应用数据传输,例如文本、文件和控制消息。两者都使用数据报传输层安全协议 (DTLS)加密,并采用会话穿越实用程序 (STUN) /使用中继绕过 NAT (TURN)协议进行网络地址转换 (NAT) 穿越。
[4] 语音到语音事件处理器负责协调输入事件和输出事件与 Nova Sonic 的交互。在我们的方案中,这些事件被分为两类:一类是媒体事件,通过 WebRTC 媒体通道传输;另一类是文本数据,通过 WebRTC 数据通道传输。
[5] 你可以使用Python SDK与 Nova Sonic 建立 HTTP/2 连接,实现双向流媒体传输。此连接支持实时媒体数据通信,并最大限度地降低用户延迟。
[6] 除了支持使用预训练知识进行语音对话外,Nova Sonic 还支持异步工具调用,以访问 MCP 服务器、Strands 代理或 RAG。本文将通过示例演示该工具的使用功能。
如果你已经在使用 Nova Sonic,你会发现它的架构与 WebSocket 解决方案类似。接下来我将向你展示它们之间的主要区别。
解决方案比较
与WebSocket 部署方案相比,这种基于 WebRTC 的语音转换方案提供了一个不同的网络层,更适合移动设备和物联网设备。这些设备通常需要低延迟连接,而对网络带宽的要求不高。该方案还集成了一个定制的语音活动检测 (VAD) 层,以提升用户体验。
音频流协议从 WebSocket 更改为 WebRTC
语音数据通过 WebRTC 媒体通道以流式传输的方式进行传输,即通过对等连接的音频轨道,采用安全实时传输协议 (SRTP)格式,而非 WebSocket 消息。我们使用 aiortc Python 库实现了 WebRTC 的各项功能(例如 SDP offer/answer、DTLS、流控制传输协议 (SCTP)、SRTP 和对等连接)。

人声检测机制
React WebRTC 客户端持续捕获音频并将其发送到 Python WebRTC 服务器。为了抑制噪声、提高语音准确率并减少 Nova Sonic 的音频标记,该解决方案在服务器端对音频流水线应用了语音活动检测(VAD)。基于Python WebRTCVAD 库的代码实现如下图所示。该库基于高斯混合模型 (GMM) 构建,轻量级、稳定且快速,适用于 WebRTC 帧级音频处理。你还可以使用其他库,例如 Silero VAD 和 Pyannote VAD。
音频数据格式适配
WebRTC 定义了特定的音频和视频格式标准。通过 WebRTC 连接发送和接收音频数据时,必须进行一些格式适配:交错立体声帧需要提取左声道或右声道;48kHz 或其他采样率将被重采样至 16kHz,这是 Nova Sonic API 的要求;Int16 数据值将被转换为 Float32 以提高计算精度。更多信息,请参阅 GitHub 文档。
解决方案详解
此GitHub 代码库中的解决方案提供了一个通用示例和两个具体场景示例:智能家居示例和联网汽车示例。您可以将这些模式应用到您自己的应用程序中。
智能家居示例
在智能家居场景中,您可以通过 Nova Sonic 打开对话框来控制物联网设备。为了展示完整的命令管道,该解决方案使用 Amazon Bedrock 知识库来检索 MQTT 主题并生成 AI 响应。然后,它连接到 AWS IoT Core 的 MCP 服务器以传递命令消息。完整的架构如下图所示。

联网汽车示例
在联网车辆场景中,系统建立实时监控,以检测驾驶员的危险手机使用行为。系统利用语音助手询问是否需要帮助,并验证驾驶员的注意力。监管人员可以通过独立的视频通道访问实时监控画面,以确认车辆和驾驶员的安全状态。以下架构适用于此场景:

结论
本文介绍了如何构建基于 WebRTC 的解决方案,该方案结合了 Amazon Nova 2 Sonic 和 Amazon Kinesis Video Streams WebRTC。此方案解决了直播中常见的难题,例如网络不稳定时的性能下降以及缺乏对话智能。你可以以此方案为基础,为智能设备和联网汽车用户构建低延迟、智能、稳定且灵活的语音助手应用程序。
作者:Zihang Huang
原文:https://aws.amazon.com/cn/blogs/machine-learning/build-real-time-voice-streaming-applications-with-amazon-nova-sonic-and-webrtc/
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/66704.html