AI News HubLIVE
站内改写2 分钟阅读

使用Stream Vision Agents和Amazon Nova 2 Sonic构建实时语音代理

本文介绍了如何结合Stream的开源框架Vision Agents、Amazon Bedrock和Amazon Nova 2 Sonic,快速构建生产级实时语音代理。涵盖了架构原理、代码示例、函数调用、自动重连和多语言语音支持等高级功能。

来源AWS Machine Learning Blog作者: Manasi Bhutada

构建自然流畅的生产级语音代理是一个复杂的工程挑战,需要协调语音到语音模型、管理低延迟音频流、处理连接生命周期,并在Web、移动和桌面应用上提供一致的体验。本文介绍如何结合Stream的Vision Agents开源框架、Amazon Bedrock和Amazon Nova 2 Sonic,在几分钟内构建可投入生产的实时语音代理。

挑战在于集成多个复杂系统:实时音频流基础设施、语音识别、语言模型和文本转语音服务,每个都有其延迟特征和故障模式。典型交互需在几百毫秒内完成,否则会破坏对话流畅性。此外,还需处理网络不稳定、浏览器兼容性、会话超时和服务降级等现实问题。Vision Agents通过抽象基础设施复杂性并提供灵活的AI体验定制来解决这些挑战。

该解决方案整合了三个关键组件:Amazon Nova 2 Sonic(通过Amazon Bedrock提供的语音到语音基础模型,支持实时双向音频流、原生话轮检测和函数调用)、Stream的Vision Agents(开源Python框架,提供插件式架构、25+集成和客户端SDK)、以及Stream的全球边缘网络(提供低于500ms的加入时间和低于30ms的音频延迟)。它们共同构成完整技术栈:Stream处理实时媒体传输和客户端体验,Amazon Nova 2 Sonic提供AI智能,Vision Agents作为胶水代码连接两者。

架构上,系统采用清晰的责任分离:Stream的边缘网络作为媒体代理,处理用户设备与Vision Agent工作进程之间的音频传输。用户语音通过WebRTC传输到最近的Stream SFU,SFU终止连接并转发音频给Vision Agent工作进程。工作进程解码音频为原始PCM,通过Bedrock实时API流式传输到Amazon Nova Sonic,响应音频再通过相同路径返回给用户。端到端延迟通常在500毫秒以下。语音活动检测(VAD)在工作进程中运行,回声消除在浏览器端防止自身输出触发VAD循环。

代码实现非常简洁:只需创建一个项目目录,安装Vision Agents并配置AWS和Stream凭证,然后编写一个包含代理创建和加入通话逻辑的main.py文件。如下示例展示了一个基本代理:

async def create_agent(**kwargs) -> Agent:
    agent = Agent(
        edge=getstream.Edge(),
        agent_user=User(name="Helpful Assistant", id="agent"),
        instructions="You are a helpful voice assistant. Be concise and friendly.",
        llm=aws.Realtime(
            model="amazon.nova-2-sonic-v1:0",
            region_name="us-east-1",
            voice_id="matthew",
        ),
    )
    return agent

async def join_call(agent: Agent, call_type: str, call_id: str, **kwargs) -> None:
    call = await agent.create_call(call_type, call_id)
    async with agent.join(call):
        await asyncio.sleep(2)
        await agent.llm.simple_response(
            text="Greet the user warmly and ask how you can help."
        )
        await agent.finish()

在不到30行代码中,即可创建一个由Amazon Nova Sonic驱动的实时语音代理,并通过Stream客户端SDK访问。该集成还支持函数调用、自动重连和多语言语音等高级功能,使开发者能够专注于业务逻辑而非基础设施。