PiCarVoice 吉祥物
智能机器人 · 实时语音交互

PiCarVoice —— 家庭机器人实时语音交互系统

面向家庭陪伴机器人的端侧实时语音对话系统:低延迟、可打断、带回声消除的自然语音交互,支持人设注入与机器人小车集成。

桌面 + Raspberry Pi 5 Ubuntu · ROS2 端到端多模态语音大模型 Flutter 跨平台前端

一、项目背景

随着大语言模型在通用场景下的普及,自然语音对话正在成为新一代家庭机器人、陪伴机器人、儿童教育机器人的核心交互方式。与传统"语音唤醒 + 命令词"模式不同,实时全双工语音对话要求:

然而,把这一整套能力稳定地跑在 Raspberry Pi 5 这样的边缘设备上,并与家庭机器人底盘深度融合,在工程上面临大量挑战:音频总线稳定性、实时回声抑制、流畅打断机制、上下文个性化注入等。本项目从零搭建完整可用的端侧语音交互方案,沉淀出一份可复用的家庭机器人实时对话参考设计。

二、项目目标

面向家庭场景(尤其是儿童陪伴 + 老人看护方向),研制一套端到端可落地的实时语音交互系统,实现:

  1. 桌面开发端 + Pi5 部署端 双平台一致的交互体验;
  2. 接入主流大模型实时语音服务,享有最新多模态对话能力;
  3. 跨平台图形化前端,提供唤醒、音量调节、挂断、状态指示等直观交互;
  4. 可打断 + 抗回声 —— 接近商用产品的自然对话体验;
  5. 人设与用户背景注入 —— 通过系统提示一次注入,实现角色个性化;
  6. 与机器人小车集成 —— 可扩展为"语音驱动的家庭机器人",支持语音导航、传感器状态播报等。

三、系统架构

系统自上而下分为四层:图形化前端 → 语音中台(Audio Bridge)→ 云端实时语音链路 → 端到端多模态语音大模型。上行链路负责采集、门控、静音策略与 Barge-in 检测;下行链路负责合成语音播放与文字转写展示。

PiCarVoice 系统总体架构图
图 1  PiCarVoice 家庭机器人实时语音交互系统 · 总体架构

硬件平台

开发端桌面操作系统 + USB 阵列麦克风
部署端Raspberry Pi 5 · Ubuntu · ROS2 机器人操作系统
麦克风USB 阵列麦克风,免驱即插即用,带硬件 AEC
播放器USB 音箱 / 3.5mm 耳机口
网络WiFi 联网

四、关键技术方案

1. 双状态 AEC 回声消除

在没有通话级硬件 AEC 的边缘设备上,纯软件方案难以彻底清除音箱到麦克风的回声。本项目采用双状态静音门控策略:

配合本地 Barge-in 检测(音量阈值 + 连续帧计数),实现:

2. 能量 + VAD 双重门控

Pi5 端采用能量阈值 + 语音活动检测的双重门控机制,在静默时段完全不上传音频,减少无意义的网络流量与服务端 token 消耗:

3. 人设与用户背景注入

采用系统提示一次注入的轻量方案,在建连时传入 人设段 + 用户背景段 拼接后的完整 system prompt:

该方案零架构改动、延迟零增加、即可生效。后续可平滑升级为动态刷新 + 知识库检索,支持病历、体检报告等大文档的按需注入。

4. 全双工状态机

后端采用三态状态机

离线(SLEEPING) 倾听(LISTENING) 播放(PLAYING)

用户唤醒即建连,长时无语音自动断连回到离线态。整条对话链路可靠可观测,异常易于恢复。

5. 跨平台图形化前端

基于 Flutter 跨平台 UI 框架打造桌面 + 嵌入式双端应用,共享同一套界面代码:

五、App 界面预览

前端采用深色主题,主屏以"情绪表情 + 时间问候语 + 可横滑的信息卡片"为核心;底部为音量滑块与状态按钮。下图为桌面端待命态的两种首屏:

App 待命首屏 - 日程与健康提醒
图 2  待命首屏:日程复诊提醒 + 右侧健康吃药提醒
App 待命首屏 - 天气与日程
图 3  待命首屏:天气卡(晴 23 ℃ 微风)+ 日程卡

界面要素:左上关闭右上电量与时间顶部情绪表情 + 时间问候中部横滑信息卡(天气 / 日程 / 健康)、底部音量滑块橙色电源按钮(离线态入口)。点击电源按钮即唤起后端,进入待命;再次点击即开始对话。

六、工程亮点

七、应用场景

实时语音对话 Raspberry Pi 5 边缘计算 双状态 AEC Barge-in VAD 门控 大模型多模态 WebSocket Flutter ROS2 家庭机器人