传统“唤醒词 + 命令词”只能覆盖少量固定任务,而家庭陪伴、老人看护、儿童教育需要更自然、更连续、更个性化的对话体验。
PiCarVoice 以自然语音作为家庭机器人交互入口
桌面端与 Pi5 端共享同一套前端交互设计
图形化前端(桌面 / 嵌入式)
├── 唤醒按钮(三态:离线 / 待命 / 对话中)
├── 音量调节 + 文字转写气泡
└── 状态指示灯
│
▼
语音中台(Audio Bridge)
├── 麦克风阵列采集 + 扬声器播放
├── 能量 + VAD 双重门控
├── 双状态 AEC:SPEAKING / PLAYING
├── 本地 Barge-in:音量阈值 + 连续帧计数
└── 人设与用户背景注入
│
▼
大模型实时语音服务(Audio-to-Audio)
系统总体架构:前端控制、Audio Bridge 和实时语音服务分层解耦
| 设备 | 规格 | 作用 |
|---|---|---|
| 开发端 | 桌面操作系统 + USB 阵列麦克风 | 快速调试 UI、音频链路与模型接口 |
| 部署端 | Raspberry Pi 5 · Ubuntu · ROS2 | 家庭机器人边缘平台 |
| 麦克风 | USB 麦克风阵列,免驱即插即用 | 采集用户语音,部分型号具备硬件 AEC |
| 播放器 | USB 音箱 / 3.5mm 耳机口 | 播放 AI 回复语音 |
| 网络 | WiFi 联网 | 连接实时语音大模型服务 |
在边缘设备上,纯软件 AEC 难以彻底消除扬声器到麦克风的回声。本项目采用双状态静音门控,从上行通道切断回声来源。
Pi5 端采用能量阈值 + VAD 的双重门控,在静默时段完全不上传音频,减少网络流量、模型 token 消耗和误触发。
麦克风音频帧
│
├─ 能量低于阈值 → 本地过滤
│
└─ 能量超过阈值
│
├─ VAD 判断非语音 → 丢弃
│
└─ VAD 判断为语音 → 上传实时语音模型
本地门控降低模型调用压力,让待命首屏更像家庭设备而不是开发 Demo
本地 Barge-in 使用音量阈值 + 连续帧计数判断真实用户插话,避免功放余音误触发。后端采用三态状态机保证对话链路可观测、可恢复。
家庭机器人不是电话客服。用户经常会在 AI 没说完时纠正、补充、打断,系统如果无法实时停止,会显得“听不懂人话”。
PiCarVoice 把打断逻辑放在本地,避免完全依赖云端 VAD,从而减少等待和误判。
系统在建连时传入人设段 + 用户背景段拼接后的完整 system prompt,实现零架构改动、零额外延迟的人格和上下文定制。
| 注入内容 | 示例 | 作用 |
|---|---|---|
| 人设段 | 阳光知性大男孩,轻快有活力 | 确定语气、角色与陪伴风格 |
| 用户背景 | 幼儿园大班男孩,喜欢英语与机械电子 | 让回答更贴近用户兴趣和年龄 |
| 风格规则 | 1-2 句话,只在明确提问时回答,禁止复读 | 控制回复长度与交互节奏 |
待命首屏:日程、天气、健康提醒与底部语音入口
PiCarVoice 可作为 PiCarHome 等家庭机器人的自然语言入口,把语音意图转换为导航、状态查询、传感器播报和家庭提醒。
语音系统不直接耦合底盘细节,而是通过上层任务接口与机器人系统通信,便于后续替换模型和底盘。
语音中台可向下连接机器人导航、感知和家庭任务系统
项目以家庭机器人真实交互体验为目标,而不是单次语音问答 Demo