YRobot 给 Reachy Mini Wireless 加上了全双工、全模态的对话能力,背后由 MiniCPM-o 4.5 实时 API(文档)驱动。
机器人能同时听、看、说、动。你随时可以打断它:一旦本地确认插话开始,它会立刻硬停被打断的那一轮回复。它还会转向说话的人,说话时呼吸、转动视线、摆动天线。
Plain Text
you ─── voice ─► tuned XVF3800 AEC ─► 20 ms VAD/control ─► 1 s model units ──┐
camera ─► continuous scene-aware latest-only JPEG worker ───────────────┤
▼
wss://…/v1/realtime?mode={audio|video}
│
◄── lifelike motion ◄─ 50 Hz choreographer ◄─ DoA compass │
◄── speech ◄─ epoch-tagged speaker ◄─ 24 kHz audio deltas ◄─────────┘
为什么它反应这么快
下面每一条在源码里都有对应的实现和设计理由,这里只做个索引。
| 问题 | 机制 | 位置 |
|---|---|---|
| 回复延迟 | 麦克风 / VAD 从不等着摄像头编码或 WebSocket 发送。音频进有界实时队列,视频只留最新帧。MiniCPM-o 流用它原生的完整 1 秒推理单元,自适应 0.25–0.8 s 播放预缓冲用来吃掉服务端抖动 | main.py、audio.py |
| 插话打断(Barge-in) | 客户端主导,而且是破坏性的:清楚的近端语音走 140 ms 的高置信快速路径;拿不准的双讲走 500 ms 的保守路径。一旦确认,播放 epoch 前进,调用 SDK 的 clear_player(),被打断的音频不会再播。之后的完整 1 秒输入会带上 force_listen,直到模型回到倾听状态 | barge.py、turn.py、main.py |
| 自身回声 / 电机噪声导致误触发 |
