跳到正文
Reflection · 官方动态·· 7 小时前AI 评分40

Reflection 如何用 Gemini Live API 与 Flutter 构建实时语音 AI 教练

Building Real-Time Voice AI with Gemini Live API and Flutter | Reflection

内容导读

Reflection 推出语音优先的 AI 教练功能 Interactive Coach,用户可实时谈论自己的一天,会话结束后系统自动把对话转成书面日记。该功能基于 Flutter 与 Firebase AI 的 Gemini Live API,通过 WebSocket 双向音频流实现轮流对话与打断。团队称最难的部分是语音活动检测,需区分思考停顿与说完,并为此设计了多层阈值与三种流式模式。

中文解读

从对话到日记

Reflection 近期上线 Interactive Coach:用户打开教练功能后,系统先根据姓名、情绪和相关过往日记构建个性化上下文,再通过 WebSocket 与 Gemini Live 建立会话。教练会以姓名问候用户,随后进行实时语音对话,会话结束时由 AI 把转录内容整理成格式化日记。这一流程把“说出来”与“写下来”接在一起,针对的是人们愿意开口、却未必愿意动笔记录日常的处境。

最难的是判断何时该停

文章把语音活动检测列为实现中最难的问题。人说话有自然停顿:“今天上班……(停顿)……发生了件很烦的事”中的两秒是思考时间,而“这就是我的感受”之后的三秒静默才更可能表示说完了。判断过早会打断思路,判断过晚则显得迟钝。Reflection 的方案分多层:以振幅阈值判断是否在说话,默认静默阈值 0.15、等待 1500 毫秒、需连续 60 帧静默确认;再按用户基线做自适应音量归一,避免轻声说话者被反复打断。

三种模式与打断

不同设备需要不同阈值,团队因此设置三种流式模式:Legacy 为 2000 毫秒,面向旧设备和延迟不稳定的 Web 环境;CP1 为 1500 毫秒,是多数现代 iOS 与 Android 设备的移动端基线;CP2 为 1200 毫秒并支持 barge-in,面向最新 iPhone 与 Pixel 等高端硬件。CP2 下用户可在教练说话时插话,系统检测到持续约 75 毫秒、达到 35% 的振幅突增便立即停止播放;该阈值高于语音检测阈值,以减少误触发。

作者保留的边界

这些参数通过 Firebase Remote Config 下发并做范围钳制,说明阈值是可调而非固定结论。文章还预告会分享哪些做法没成功、希望 API 支持什么,但所给材料未展开这些内容,因此无法据此判断该功能的效果或适用范围。

来源:Reflection · 官方动态 · reflection.app