印度开发者 Subhangi Dutta 在 VoiceForBharat 挑战赛中,用 10 天构建了 Sentinel——一个面向灾害应急场景的实时 Voice AI 调度代理。项目源于季风洪水中的真实困境:受灾家庭手机仅剩 14% 电量、网络退化到 2G,无法加载应急 App 或下载 PDF,唯一可行的求助方式是直接打电话。
Sentinel 针对印度应急响应的三个痛点设计:信息碎片化(指南、降雨警报、避难所容量分散在不同部门)、触屏界面在湿屏和高压下失效、以及传统聊天机器人转接时丢失上下文、迫使受害者重复叙述。系统通过统一 WebRTC 管道实现双向语音流,核心组件包括 Deepgram Nova-3 实时多语种转写、Google Gemini 负责灾情分诊与工具编排、Murf Falcon 提供低延迟印式英语语音合成,并配合 LiveKit 与 Silero VAD 支持自然打断。
架构分层上,LiveKit 负责浏览器与后端间的超低延迟 WebRTC 流,Silero VAD 动态追踪语音边界;Deepgram Nova-3 处理多样口音与快速语码切换;Gemini 作为决策引擎,评估灾情护栏、决定是否拉取外部遥测或执行 SQLite 查询,并在遇到避难所类问题时触发 ShelterInformationSpecialist 子代理;Murf Falcon 2 流式输出音频,无需等待完整句子生成即可开始播放;SQLite 维护呼叫者档案与升级日志,数据仅在用户明确语音同意后保存,并支持「忘记我的数据」指令即时清除。
Sentinel 具备状态记忆与隐私保护、实时天气遥测与故障回退(第三方 API 失败时自动切换缓存应急通告)、以及人工升级工作流——当呼叫者报告被困时,系统验证安全状态、记录紧急程度(Critical/Moderate/Low)、生成可追踪的参考 ID 并触发调度 webhook。
开发中最棘手的障碍是「静默转接」:多代理委派时,Sentinel 宣布转接后通话完全静音,LiveKit 将初始轮次视为结束,新代理只能等待呼叫者再次开口。解决方案是利用 LiveKit Agents 的 on_enter() 生命周期方法,在专家代理接管会话的瞬间立即通过 Murf Falcon 触发 session.say() 音频流,消除空白并即时播报避难所数据。
项目依赖 Python 3.10-3.13、Node.js 18+ 与 pnpm,需配置 LiveKit Cloud、Murf AI、Google Gemini 和 Deepgram 的 API 密钥。作者计划下一步接入 SIP 电话系统,直连 NDRF/SDMA 免费灾害热线,并扩展卡纳达语、阿萨姆语和孟加拉语的语码切换支持。
#开发者 #工具 #VoiceAI #Sentinel #WebRTC #LiveKit #Deepgram #Gemini #Murf #灾害应急
@DevToolboxHub