VisionClaw低延迟语音助手内幕:Gemini Live WebSocket如何做到实时语音交互
【免费下载链接】VisionClawReal-time AI assistant for Meta Ray-Ban smart glasses -- voice + vision + agentic actions via Gemini Live and OpenClaw项目地址: https://gitcode.com/gh_mirrors/vi/VisionClaw
VisionClaw 是一个开源的实时语音助手,专为 Meta Ray-Ban 智能眼镜打造。它基于Gemini Live API(WebSocket)构建低延迟语音交互管线:你的声音以 16kHz PCM 流式推上云端,AI 的回应以 24kHz 原生语音流式返回——无需"先转文字再合成",因此对话体验接近真人。本文将带你拆解这套实时语音助手背后的工作原理。
它能做什么:一副眼镜上的实时语音助手
戴上眼镜,点一下 AI 按钮,开口说:
- "我在看什么?"—— AI 透过眼镜摄像头"看见"你的画面并描述场景
- "把牛奶加进我的购物清单"—— 通过 OpenClaw 网关操作你已连接的 App
- "给 John 发消息说我晚点到"—— 经 OpenClaw 路由到 WhatsApp/Telegram/iMessage
- "搜一下附近的咖啡店"—— 联网搜索后把结果念给你听
整个过程中,眼镜摄像头以约 1 帧/秒推送 JPEG 画面提供视觉上下文,而音频则是双向实时流动的——这才是"低延迟语音交互"的核心。
一张图看懂整体架构
项目根目录的 README.md 中给出了完整的架构示意:
数据流可以概括为三方协作:
| 角色 | 职责 |
|---|---|
| 眼镜 / 手机摄像头 | 产生视频帧 + 麦克风音频 |
| iOS / Android 客户端(本项目 App) | 编码、节流、双向收发 WebSocket 数据 |
| Gemini Live API | 一条 WebSocket 承载语音理解、语音生成、视觉分析与工具调用 |
为什么是 WebSocket:低延迟的三个关键设计
很多语音助手是"录音 → 上传 → STT 转文字 → LLM 生成 → TTS 合成"的串行长链路,每一环都在叠加延迟。VisionClaw 采用的 Gemini Live 走的是全双工 WebSocket 长连接,带来三点本质不同:
1. 原生音频到音频,不走 STT-first 路线
麦克风采集的 PCM 数据(16kHz、单声道、100ms 一块)直接送入 WebSocket;返回的是 24kHz PCM 语音流,直接进播放器。语音从不"落地成文字",省掉了两次最耗时的转换环节,也保留了语气和停顿等副语言信息。
2. 全双工流式收发,边说边听
同一条 WebSocket 上,上行音频、下行音频、工具调用互相独立、并发流动。AI 说话时麦克风会被主动门控(iOS 用.voiceChat音频会话做回声消除;Android 使用VOICE_COMMUNICATION音源启用系统级 AEC),避免"自己听到自己"的反馈。
3. 视觉帧与语音共用同一条通道
视频流被节流到约 1fps、压缩为 50% 质量的 JPEG 后随 WebSocket 上行。对视觉理解来说,每秒一帧就足够维持场景上下文,既满足"看得懂你在看什么",又不挤占语音的带宽和延迟预算。眼镜端 DAT SDK 的 24fps 视频流、手机端的 30fps 采集,都在这一步被刻意降帧。
一次对话在管线里走了多远?
以"把鸡蛋加进购物清单"为例,README.md 的 Tool Calling 章节描述了完整时序:
- 用户说出指令
- Gemini先开口确认"好的,这就加上"(工具调用前的口头回执,让用户感知不到等待)
- Gemini 下发
execute(task: ...)工具调用 - 客户端
ToolCallRouter以 HTTP POST 转发到 OpenClaw 网关 - OpenClaw 调用其 56+ 技能(搜索、消息、智能家居、备忘录等)执行
- 结果以
toolResponse文本回填给 Gemini - Gemini 把结果念出来
可以看到,WebSocket 在这里承担的不只是语音传输,而是整个会话的状态总线:语音、视觉、工具调用三种消息类型在同一条连接上有序流动。
动手体验:没有眼镜也能跑通全链路
没有 Meta Ray-Ban 也能完整体验这套实时语音助手:App 内置Phone 模式,用 iPhone / 手机后置摄像头代替眼镜,点 "Start on iPhone" 再点 AI 按钮即可开始 Gemini Live 会话。
若使用真眼镜,需先在 Meta AI App 中开启 Developer Mode(设置 → App Info → 连点版本号 5 次解锁):
配置要点(详见 gateway/README.md):
- 复制 Secrets.swift.example 为
Secrets.swift,填入 Gemini API Key - 可选:接入 OpenClaw 网关解锁"动手执行"能力,或在设置页运行时修改
- 眼镜模式还依赖 LiveKit 云账号(免费额度即可)打通语音呼叫链路
核心源码导航
想深挖 Gemini Live WebSocket 客户端的实现,建议从这些模块入手:
- GeminiConfig.swift —— API Key、模型与系统提示词配置
- StreamSessionViewModel.swift —— 眼镜/手机双模视频采集、帧率节流与重连策略
- OpenClawBridge.swift —— 工具调用通往 OpenClaw 网关的 HTTP 桥
- NudgeScheduler.swift —— AI 主动发起的语音提醒调度
- gateway/ —— 自托管网关源码(房间票据、任务执行、仪表盘)
小结
VisionClaw 的答案其实并不神秘:用一条 Gemini Live WebSocket 同时承载语音双向流、视觉帧流和工具调用流,配合 16kHz/24kHz 的原生 PCM 音频与系统级回声消除,把传统"录音-转写-生成-合成"的串行长链路压缩成一条全双工管道。这正是智能眼镜上"说出口就听到"的低延迟体验的全部秘密。
【免费下载链接】VisionClawReal-time AI assistant for Meta Ray-Ban smart glasses -- voice + vision + agentic actions via Gemini Live and OpenClaw项目地址: https://gitcode.com/gh_mirrors/vi/VisionClaw
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考