SuperAPI AI 工具集

nova-sonic-voice-agent

智能体与模型

查看项目

更新于 10-15 17:22

技能介绍

用途:从零搭建一个实时语音智能体。它用 Strands BidiAgent 搭配 Amazon Nova Sonic,以 WebSocket 服务器形式在浏览器与模型之间双向流式传输音频。架构为浏览器麦克风与扬声器经 WebSocket 连接 FastAPI 服务器,服务器再以 BidiStream 连接 Nova Sonic,并可在中间挂载工具与子智能体。

主要能力:提供 WebSocket 编排层(server.py 暴露 /ws 端点,并对较大的 base64 音频事件按边界切分)、BidiAgent 会话处理(agent.py 配置模型、语音、提示词与采样率)、自定义 @tool 函数(tools.py)以及作为工具接入的文本子智能体(subagents.py)。客户端由 Python HTTP 服务托管网页,用 AudioWorklet 以 16kHz 采集麦克风,调度 AudioBufferSourceNode 无缝播放,支持推测/最终转录与打断。

使用方式:前置条件为 Python 3.11+、可访问 Amazon Bedrock(Nova Sonic 模型)的 AWS 凭证、支持麦克风的现代浏览器。安装依赖:pip install strands-agents strands-agents-builder aws-sdk-bedrock-runtime;pip install fastapi uvicorn[standard] websockets。环境变量含 AWS_DEFAULT_REGION(默认 us-east-1)与 AWS 凭证。运行服务器:uvicorn.run(app, host=os.getenv("HOST", "0.0.0.0"), port=int(os.getenv("PORT", "8081")))。客户端连接后先发送 config 事件,再进入会话。

适用场景:需要端到端参考实现的实时语音对话、语音助手原型、在语音流中调用工具或委派子智能体处理查询的场景。

限制与注意:Nova Sonic 要求 16kHz 采样率,错误采样率会导致音频失真;系统提示词建议控制在约 500 词以内,细节移入工具描述;工具结果应返回自然语言而非原始 JSON,因为内容会被朗读;子智能体输出需简短;缺失 portaudio 系统库时(仅 CLI 客户端需要)需先安装再 pip install pyaudio。音频配置为 16000 Hz、16 位有符号整数 PCM、单声道,Base64 经 JSON WebSocket 传输。可用语音包括 tiffany、matthew、ruth、gregory、joanna。项目结构与完整浏览器客户端实现见 references/client-reference.md。具体定价、性能指标与平台兼容性资料暂未提供。