摘要
AgentOS 2 Live 是一个使用 OpenAI Realtime API(GPT-4o Realtime)构建的高性能、低延迟实时语音助手平台,支持端到端的语音到语音交互,集成语音活动检测(VAD)、模块化工具调用系统,并提供机器人面部动画UI与硬件控制能力。通过 monorepo 架构(npm workspaces),同时包含 React 前端、Node.js 后端、共享类型协议以及针对 OrionStar 机器人的 Android WebView 桥接项目,适合开发低延迟语音交互应用,如人脸登记和3C产品导购场景。
实时语音交互如今已成为AI助手的重要形态。很多人会问:怎样才能用最少的延迟实现“听-想-说”全链路?AgentOS 2 Live 提供了一个现成的、可快速上手的解决方案。下面我们从架构到部署,一步步拆解这个项目到底是怎么做到的,以及你能怎样基于它开发自己的语音助手。
为什么实时语音助手需要特别关注延迟?
传统的语音助手通常走三步:语音转文字 → 大模型处理文字 → 文字转语音。这种流水线虽然成熟,但每一步都会引入几十到几百毫秒的延迟,累积下来用户会明显感觉到“卡顿”。
OpenAI Realtime API 改变了游戏规则。它直接在多模态模型(gpt-4o-realtime-preview)内部处理音频输入和输出,不依赖中间的文字转录环节。模型能听到语调、情绪、停顿,直接以语音形式思考并回复。这就是为什么 AgentOS 2 Live 把“低延迟”作为核心卖点——它充分利用了这个原生语音到语音的能力。
项目整体架构一览
AgentOS 2 Live 采用 monorepo 结构,使用 npm workspaces 管理多个包。这种方式让前端、后端、共享类型保持一致性,避免版本冲突。
| 目录 | 主要职责 | 核心技术栈 |
|---|---|---|
client/ |
浏览器端界面与音频处理 | React + TypeScript + Tailwind CSS + Web Audio API + VAD + Opus 编解码 |
server/ |
WebSocket 服务与 OpenAI 协调 | Node.js + TypeScript + Express + WebSocket |
shared/ |
前后端共享的类型定义与通信协议 | TypeScript 类型与协议定义 |
e2e_android/ |
OrionStar 机器人硬件桥接 | Android WebView + Kotlin + RobotService SDK |
前后端通过统一的 WebSocket 协议通信,协议本身也在 shared/ 中定义,保证类型安全。这一点对中大型团队尤其友好——改动一个接口,前后端都能立刻感知。
核心技术亮点拆解
1. 超低延迟语音交互
整个系统依赖 OpenAI Realtime API 的 speech-to-speech 能力。音频从麦克风采集后,经过 Opus 编码,通过 WebSocket 实时推送到后端,后端几乎不做额外处理,直接转发给 OpenAI,模型直接返回语音流。
客户端再把收到的音频流解码播放。中间省去了 ASR(自动语音识别)和 TTS(文本转语音)两个独立模型的往返时间。
2. 内置语音活动检测(VAD)
VAD 是实时语音系统的关键。没有 VAD,用户说话停顿时系统也会持续发送静音数据,既浪费带宽又增加延迟。
AgentOS 2 Live 在前端集成了 VAD 模块(通过 postinstall 脚本自动拷贝必要的资产到 public 目录)。一旦检测到用户停止说话,SDK 就会自动结束输入,触发模型生成回复,大幅降低交互往返时间。
3. 机器人面部动画UI
client 目录下有一个很实用的功能:实时机器人脸。它会根据当前状态(用户说话、AI 说话、思考中、空闲)切换不同的表情和口型动画。
这种视觉反馈能显著提升用户体验,尤其在机器人实体上使用时,能让交互更像“和一个人对话”而不是对着机器说话。
4. 两个内置场景
项目直接提供了两个典型场景,开箱即用:
-
Face Register:人脸登记与身份识别场景。适合需要实名或会员识别的业务。 -
Advice 3C:3C数码产品导购场景。AI 可以根据用户描述推荐手机、电脑、耳机等产品。
这两个场景证明了系统在垂直领域的可落地性。
5. OrionStar 机器人硬件控制能力
最独特的部分是 e2e_android/ 目录。这是一个 Android WebView 项目,专门为 OrionStar 机器人设计。
通过 RobotService SDK(需自行放入 libs 目录的 jar 包),Web 页面可以调用机器人的物理能力:
-
头部转动 -
底盘导航 -
传感器读取 -
其他硬件指令
这意味着你可以用 React 页面直接控制真机,实现“语音+肢体动作”的完整机器人交互。
手把手:本地开发与运行
准备工作
-
Node.js ≥ v18 -
npm ≥ v9 -
一个有 Realtime API 权限的 OpenAI Key(gpt-4o-realtime-preview 模型)
配置 .env 文件
在项目根目录创建 .env:
OPENAI_API_KEY=sk-你的密钥
PORT=8081
USE_SSL=false
USE_SSL 如果设为 true,需要自行准备 HTTPS 证书和域名,否则 WebSocket 会用 wss:// 协议。
安装依赖
npm install
这一步会自动触发 postinstall,把 VAD 相关文件拷贝到 client/public 目录。
开发模式启动
npm run dev
-
前端:http://localhost:3000 -
后端:http://localhost:8081
打开浏览器访问 3000 端口,就能看到机器人脸界面并开始语音对话。
生产部署
先构建:
npm run build
然后启动服务:
node server/dist/index.js
server 会同时提供静态文件(打包后的 React)和 WebSocket 服务,一机搞定。
如何在 OrionStar 机器人上运行
准备
-
Android Studio -
从机器人系统获取 robotservice_xx.jar,放入e2e_android/app/libs/
构建与安装
-
用 Android Studio 打开 e2e_android文件夹 -
Gradle 同步 -
用 USB 连接机器人(确保 ADB 已开启) -
点击 Run 安装 -
首次启动授予相机、麦克风等权限
默认加载 http://localhost:3000。如果你的 server 部署在其他地址,修改 MainActivity.kt 中的 DEFAULT_URL,或者通过 Intent 传入。
AgentSDK:最简单的接入方式
项目提供了一个封装良好的 AgentSDK,使用起来非常直观:
import { AgentSDK } from './sdk';
const agent = new AgentSDK({
modelType: 'openai',
systemPrompt: '你是一个友好的3C产品导购。',
voice: 'alloy',
tools: [
{
name: 'get_weather',
description: '查询某地当前天气',
parameters: {
type: 'object',
properties: { location: { type: 'string' } }
}
}
],
});
agent.on('ready', () => console.log('助手已就绪'));
agent.on('text_output', ({ text }) => console.log('AI 说:', text));
agent.on('tool_call', (toolCall) => {
console.log('需要执行工具:', toolCall.name);
// 在这里实现工具逻辑,例如调用天气API
});
await agent.initialize();
agent.connect();
通过监听事件,你可以轻松拿到文本输出、工具调用请求,并实现自己的业务逻辑。
常见问题 FAQ
Q1:一定要用 OpenAI 的 Realtime API 吗?能换其他模型吗?
目前项目明确基于 OpenAI Realtime API 构建,modelType 只支持 ‘openai’。但由于通信协议在 shared 中定义清晰,理论上可以扩展支持其他兼容 WebSocket 的实时模型。
Q2:延迟大概多少?
官方没有给出具体数值,但得益于 speech-to-speech 架构和前端 VAD,通常在安静环境下首句回复延迟可控制在 800–1500ms 以内(包含网络往返)。
Q3:机器人面部动画是怎么实现的?
通过 React 组件实时监听当前对话状态(用户说话、AI 说话、思考、空闲),切换不同的 SVG 或 Lottie 动画。代码在 client 目录的 UI 组件中。
Q4:我想自己加新场景,应该怎么做?
最简单的方式是修改 systemPrompt,或者在后端维护多 session,根据用户意图动态切换 prompt。工具调用机制也支持扩展复杂业务流程。
Q5:商用需要注意什么?
README 中明确标注:本项目仅用于演示与测试,商用时必须遵守 OpenAI 使用政策,特别是语音合成的披露要求(需告知用户声音为 AI 生成)。
总结:适合哪些开发者?
如果你正在寻找一个现成的、可快速落地的实时语音助手框架,尤其希望:
-
直接用 OpenAI Realtime API -
需要前端机器人动画 -
想控制实体机器人(如 OrionStar) -
追求低延迟语音交互
那么 AgentOS 2 Live 是一个非常值得 fork 和二次开发的起点。它已经帮你解决了最麻烦的几件事:音频编解码、VAD、前后端协议一致性、机器人硬件桥接。
从克隆仓库到本地跑通对话,通常不到 30 分钟。剩下的就是根据你的业务场景,调整 prompt、增加工具、优化动画表现了。
希望这篇文章让你对 AgentOS 2 Live 有更清晰的认识。如果你已经上手,欢迎在评论区分享你的使用体验或遇到的问题,我们一起把这个实时语音框架玩得更深入。

