YAOTU INSIGHTS

为视障者发声:VisionClaw辅助模式与Earcons提示音系统的无障碍实现

为视障者发声:VisionClaw辅助模式与Earcons提示音系统的无障碍实现
为视障者发声VisionClaw辅助模式与Earcons提示音系统的无障碍实现【免费下载链接】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/VisionClawVisionClaw 是一款面向 Meta Ray-Ban 智能眼镜的实时 AI 助手而它的**辅助模式Assistive Mode**与Earcons 提示音系统让这位你所即我所见的助手真正能被视障用户依赖AI 用钟表方位描述世界、逐字读出包装上的文字一连串短促而彼此可区分的提示音则随时告诉你——通话是接通了、断开了还是结束了。为什么视障用户需要专门的辅助模式对看得见的人来说AI 通话界面上的连接中已断开文字状态一目了然但对看不见屏幕的用户来说这些文字根本不存在。项目代码里的注释一针见血VoiceOver 的播报只能到达正在运行 VoiceOver 的人——而老年用户往往并不使用它辅助模式恰恰是为他们准备的。耳边的提示音是那个永远能到达的信号用户绝不会再对着一个已经死掉的通话自说自话。为此VisionClaw 构建了一个三层信号体系层层兜底信号层服务对象实现️ VoiceOver / TalkBack 语音播报使用读屏的用户Accessibility.swift 中的A11y.announce断线等紧急状态用高优先级打断播报 触感反馈手动开启触觉的用户可选连接、冻帧等状态触发系统振动Earcons 提示音所有开启辅助模式的用户不依赖任何系统辅助功能声音永远到达第三层正是本文的主角Earcons——一组专为通话状态变化设计的合成提示音。Earcons 提示音的 5 种音效告别对着空气说话Earcons 在 iOS 与 Android 上使用完全相同的音符序列保证同一个提示音在两台设备上含义一致。每种提示音都由频率 Hz时长 秒的音符序列定义0表示休止提示音触发时机听感设计connectedAI 通话接通660 → 990 Hz两音上扬像叮的确认ended通话结束990 → 660 Hz两音下落明确收尾⚠️lost连接丢失 / 正在重连520 → 390 Hz缓慢下行且较长警示意味✅reconnected重连成功660 → 830 → 990 Hz快速三音攀升captured冻帧固定画面1800 Hz 极短高频嘀声音符序列定义可直接查看iOS 端 Earcons.swiftAndroid 端 Earcons.kt。为什么不带一个音频文件这是 Earcons 最有意思的工程决策所有提示音都是在内存中实时合成的仓库里没有任何音效资源文件。合成方式44.1 kHz、16 位单声道 PCM 正弦波振幅 0.35每个音符带 8 ms 淡入淡出起音落音毫无咔哒爆音性能友好合成结果按提示音缓存Earcons.swift 的wav(for:)重复播放零开销Android 端不抢话筒Earcons.kt 把音频标记为USAGE_ASSISTANCE_SONIFICATION辅助类声音化信号它不会抢占音频焦点可以和 AI 的语音擦肩而过地同时响起iOS 端从眼镜里响播放走 LiveKit 已配置好的同一个音频会话佩戴眼镜通话时提示音直接从眼镜的扬声器发出和 AI 的声音同一个出口开关可控只有辅助模式开启时Earcons.play才会真正发声普通用户完全听不到。触发时机则分布在通话视图的状态监听里连接、断开、失败、代理离开、冻帧、重连开始与恢复——每一个状态跃迁都同时喊给读屏A11y.announce和耳朵Earcons.play见 LiveKitStreamView.swift 与 Android 的 LiveKitStreamScreen.kt。辅助模式如何工作从一个开关到 AI 提示词Earcons 只解决了听得见的问题。说得对要靠另一半——辅助提示词档案assistive profile。它的工作链路横跨 App、网关与 AI 代理三端用户拨动开关设置页Accessibility分组下的Assistive modeiOS 见 SettingsView.swiftAndroid 见 SettingsScreen.kt。改动立即生效——如果正处在通话中App 会自动重拨一次以套用新档案LiveKitSession.swift 在拨号请求中附带profile: assistive网关盖章server.ts 校验请求后把profile写入参与者的房间元数据代理换人格main.py 读取元数据中的 profile为assistive用户在系统提示词末尾追加一段专门的ASSISTIVE_INSTRUCTIONSmain.py在组装 Gemini 会话指令时合并生效main.py。AI 的说话方式会变成什么样追加的这段指令是整个无障碍体验的灵魂规则朴素而克制⏰ 钟表方位 距离描述位置一律说2 点钟方向、约一臂远的杯子正前方约五步的一扇门禁止正如你所见就在那儿这个这类看不见方向的说法 逐字朗读读邮件、药盒、价签、保质期时逐字照读、绝不概括看不清的部分明说看不清而不是脑补 永不承诺安全AI 自知每秒只能看到约一帧画面无法可靠判断地面与交通——它永远不会说这条路可以安全通过只会描述所见并提醒你用盲杖、导盲犬或同伴确认️ 卡片内容出声屏幕卡片视障用户看不见AI 会把卡片里回答问题的关键行直接念出来 花钱先确认任何消费或代发操作前AI 必须复述我即将做什么并等到一个明确的是️ 简短优先先说障碍与危险再说答案每次回复一两句短句除非用户要更多。这些规则让同一个 AI在辅助模式下从聪明的聊天伙伴切换成谨慎的同行者。快速上手3 步开启辅助模式想亲眼看看这套无障碍设计无需眼镜用手机摄像头模式即可体验完整链路git clone https://gitcode.com/gh_mirrors/vi/VisionClawiOS用 Xcode 打开samples/CameraAccess/复制 Secrets.swift.example 为Secrets.swift并填入 Gemini API Key即可运行主界面点Start on iPhone在Settings → Accessibility打开 Assistive mode。Android用 Android Studio 打开samples/CameraAccessAndroid/复制 Secrets.kt.example 为Secrets.kt填好密钥设置页同样位置拨动开关。 开启后拨一通 AI 通话试着说我在看什么然后留意接通与挂断时那两声上扬、下落的不同提示音——这就是 Earcons 在为你看着。写在最后VisionClaw 的无障碍实现没有花哨的算法却处处是把用户当人的细节不假设用户开着读屏软件所以声音永远在场不假设 AI 能看清一切所以宁可明说不确定也不许它猜测不做两套平台逻辑所以同一个提示音在任何设备上都意味着同一件事。核心模块速览模块相对路径辅助提示词AI 行为规范agent/main.py辅助档案路由网关gateway/src/server.tsiOS 提示音合成Earcons.swiftAndroid 提示音合成Earcons.kt无障碍播报工具Accessibility.swift设置开关iOS / AndroidSettingsView.swift / SettingsScreen.kt完整文档README.md技术为少数人让路时走的才是真正宽阔的路。【免费下载链接】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),仅供参考