我如何构建 SilentEar —— 为聋人用户提供实时 AI 可访问性代理的 Gemini Live API
Source: Dev.to
要为您提供准确的中文翻译,请您把需要翻译的文章正文(包括标题、段落、列表等文字内容)粘贴在这里。这样我就可以在保持原有 Markdown 格式和技术术语不变的前提下,为您完成完整的简体中文翻译。谢谢!
为什么我创建这个
我的儿子天生失聪。随着他在学校开始学习巴基斯坦手语(Pakistan Sign Language,PSL),我也开始与他一起进行基础训练。通过这段旅程,我看到聋人及其家庭在日常生活中可能会感到孤立,甚至面临危险:
- 在群体环境中感到无关紧要或被孤立
- 与听力正常的人顺畅沟通困难
- 错过关键的环境警报(火警报警、敲门声、婴儿哭声等)
虽然 AI 已经取得了显著进展,但大多数无障碍工具仍然依赖 simple speech‑to‑text transcription。转录文本往往遗漏了让声音变得紧急的 上下文。受我儿子的经历以及 Gemini Live API 强大功能的启发,我决定构建一个代理,它能够 倾听、解释并以聋人真正需要的形式(触觉反馈、屏幕闪光、视觉手语)传递救命提示。
SilentEar 的功能
SilentEar 持续监测环境音频,提取含义,并实时向用户发出警报。
| 核心能力 | 工作原理 |
|---|---|
| 环境声音检测 | Gemini Live API 流式双向音频;函数调用(trigger_alert)触发自定义警报(狗叫、门铃、警报器、叫名等)。 |
| 上下文感知转录 | Gemini 3 Flash 将嘈杂的语音精炼为清晰的句子,并加入场景智能。 |
| 视觉手语支持 | SignMoji – 一个随警报出现的手语视频库。用户可通过视频上传、URL 或网页搜索添加自定义 SignMoji。 |
| 双向通信 | AI 驱动的 Voice Deck 提供文本转语音,并具备智能、上下文感知的短语预测(Gemini 3 Flash)。 |
| 护理人员仪表盘 | 受信任的联系人可以远程查看实时警报、设备状态和历史记录。 |
架构概览
前端
- 框架: React 19 + TypeScript (PWA)
- 样式: Tailwind CSS
- 音频处理: Web Audio API + 本地 FFT,用于超低延迟报警检测
后端
- 运行时: Node.js + Express,部署于 Google Cloud Run
- 流式传输: WebSocket 代理,将 PCM 音频(16 kHz)转发至 Gemini Live API
- AI 集成:
@google/genaiSDK —— 实时音频流、函数调用(trigger_alert),以及对 Gemini 3 Flash 的 REST 调用,用于转录细化和场景分析
数据与媒体
| Service | Role |
|---|---|
| Supabase (PostgreSQL + Realtime + Storage) | 用户资料、自定义 SignMoji 库、触发器定义、护理人员同步 |
| Cloud Firestore | 报警历史、设备状态、触发器配置 |
| Google Cloud Run | 托管 Express + WebSocket 后端,运行用于 Gemini 3 Flash 处理的服务器端 REST 接口 |
音频流程
Device Microphone → PCM Audio (16 kHz) → WebSocket → Cloud Run → Gemini Live API
↓
Haptic + Visual Alerts ← Function Call (trigger_alert)Gemini 实时函数调用
与其使用幼稚的关键词匹配,SilentEar 为 Gemini 提供了一个了解用户自定义类别的 trigger_alert 工具。当模型检测到匹配的声音或短语时,它会调用该工具,立即通知设备。
const triggerTool: FunctionDeclaration = {
name: 'trigger_alert',
description: 'Call this when an environmental sound or keyword matches alert categories.',
parameters: {
type: Type.OBJECT,
properties: {
alert_id: {
type: Type.STRING,
description: 'The ID of the alert to trigger.'
},
context: {
type: Type.STRING,
description: 'Short summary of what was heard.'
}
},
required: ['alert_id']
}
};结果:Gemini 能够区分 电视上狗叫 与 门口真实的狗,从而显著降低误报。
Gemini 3 Flash 增强功能
| 功能 | 好处 |
|---|---|
| Scene Analysis | 定期摘要(“附近有两个人在交谈。有人提到了你的名字。”) |
| Transcript Refinement | 将支离破碎的片段转化为流畅、易读的句子 |
| Trigger Auto‑Discovery | 分析环境模式并为用户建议新的警报类别 |
所有这些功能都以轻量级的 REST 端点在 Cloud Run 上运行,使移动客户端保持快速且响应灵敏。
全栈图(简化)
+----------------+ WebSocket +----------------+ Gemini Live API
| 移动设备 | ──────────────────► | Cloud Run | ──────────────────► |
| (React PWA) | | Express WS | |
+----------------+ +----------------+ |
│ │ |
│ ▼ |
│ +----------------+ |
│ | Gemini 3 Flash| |
│ +----------------+ |
│ │ |
▼ ▼ ▼
触觉/视觉提醒 精炼转录 场景摘要快速入门 (Quick‑Start)
克隆仓库
git clone https://github.com/your‑username/silent‑ear.git cd silent-ear设置环境变量 (
.env.local)GOOGLE_API_KEY=your_google_api_key SUPABASE_URL=... SUPABASE_ANON_KEY=... FIRESTORE_PROJECT_ID=...本地运行
# Frontend npm install && npm run dev # Backend cd backend && npm install && npm start部署(可选)——将后端推送到 Cloud Run,前端部署到 Firebase Hosting 或任何静态站点托管服务。
结束语
SilentEar 展示了 上下文感知 AI 如何超越转录,真正 解释 聋人用户的世界。通过利用 Gemini Live 的流式传输 + 函数调用以及 Gemini 3 Flash 的场景智能,我们提供及时的多模态警报,让用户保持安全和连接。
如果您有兴趣合作、测试或扩展平台,欢迎提交 issue 或直接联系。
触发配置
Gemini Live API
实时双向音频流式传输并调用工具
Gemini 3 Flash
场景智能,NLP 后处理
Cloud Build
自动化 CI/CD 流水线(Docker 构建 → 部署)
自动部署
部署完全通过单个 cloudbuild.yaml 文件实现自动化:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/silentear-backend', '.']
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/$PROJECT_ID/silentear-backend']
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args: [
'run', 'deploy', 'silentear-backend',
'--image=gcr.io/$PROJECT_ID/silentear-backend',
# …additional flags…
]只需运行一次 gcloud builds submit 命令,即可构建 Docker 镜像 并 将其部署到 Cloud Run——零手动步骤。
SilentEar – 不仅仅是演示
SilentEar 是一款面向真实聋人用户的生产级应用,具备以下功能:
- 可自定义触发词 – 用户可以自行设定提醒词(门铃、火警、婴儿、自己的名字),并为其分配独特的振动模式和颜色。
- 手语视频 – 提醒可以附带美式手语(ASL)、英式手语(BSL)或菲律宾手语(PSL)的视频演示。
- SignMoji – 一个配套的手语库,用户可以录制、搜索或关联手语视频,并生成 AI 图标,实现跨设备同步。
- Voice Deck – 基于文本转语音的工具,配合 AI 短语建议,让聋人通过设备“发声”。
- 看护者仪表盘 – 家属可通过 Supabase 实时订阅实时监控提醒。
- 离线模式 – 当云端不可用时,回退使用浏览器的语音识别 API。
- 多语言 – 支持 10 种语言的转录处理。
“我尤其为 SignMoji 的无缝集成感到自豪。让用户能够即时在网络上搜索、录制自己的手语视频,并安全地同步到触发系统中,使平台变得极具个人色彩和文化意义。通过 Gemini Live 函数调用实现的超低延迟提醒,在真实场景测试中也带来了变革性的体验。”
技术亮点与收获
- Web Audio API & Real‑Time Streaming – 深入掌握了 Web Audio API,并了解了现代浏览器中实时流媒体的限制。
- Accessibility‑First Development – 认识到聋人文化的细微差别:仅有转录是不够的;必须结合环境感知、视觉信号、触觉反馈和手语,才能实现真正的包容。
克服的挑战
- WebSocket Session Management on Cloud Run – 在 Cloud Run 基于请求的弹性伸缩环境中,确保了稳定的长连接。
- Audio Format Compatibility – 浏览器捕获的音频为 Float32 PCM,而 Gemini 需要特定格式。实现了实时 PCM 编码器,将音频转换并分块,以实现最佳流式传输。