我如何构建 SilentEar —— 为聋人用户提供实时 AI 可访问性代理的 Gemini Live API

发布: (2026年3月16日 GMT+8 04:39)
10 分钟阅读
原文: Dev.to

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/genai SDK —— 实时音频流、函数调用(trigger_alert),以及对 Gemini 3 Flash 的 REST 调用,用于转录细化和场景分析

数据与媒体

ServiceRole
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)

  1. 克隆仓库

    git clone https://github.com/your‑username/silent‑ear.git
    cd silent-ear
  2. 设置环境变量 (.env.local)

    GOOGLE_API_KEY=your_google_api_key
    SUPABASE_URL=...
    SUPABASE_ANON_KEY=...
    FIRESTORE_PROJECT_ID=...
  3. 本地运行

    # Frontend
    npm install && npm run dev
    
    # Backend
    cd backend && npm install && npm start
  4. 部署(可选)——将后端推送到 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 – 认识到聋人文化的细微差别:仅有转录是不够的;必须结合环境感知、视觉信号、触觉反馈和手语,才能实现真正的包容。

克服的挑战

  1. WebSocket Session Management on Cloud Run – 在 Cloud Run 基于请求的弹性伸缩环境中,确保了稳定的长连接。
  2. Audio Format Compatibility – 浏览器捕获的音频为 Float32 PCM,而 Gemini 需要特定格式。实现了实时 PCM 编码器,将音频转换并分块,以实现最佳流式传输。
0 浏览
Back to Blog

相关文章

阅读更多 »