邬嘉文:GPT具身对话机器人
作者:Garman邬嘉文
更详细的教程邬嘉文:GPT机器人制作指引
整体框架
实验目的
Transformer本质是生成内容,包括文本 示GPT的表现力。
硬件框架
POC由Arduino主板和双轴舵机云台组成,接线方式如下,成本约200元。
软件框架
程序由三个进程组成,进程间通过socket通讯。
Activicity |
进程作用 |
硬件平台 |
chat.py |
核心进程,实现聊天对话,发出语音、表情、头部动作(舵机转向)指令。 |
Macbook |
face.py |
播放声音和显示表情,底层由pythonista提供运行环境。 |
iPhone |
head.py |
闲时机器人面向用户,有eye contact功能,接收指令后会配合表情做头部动作。 |
Arduino |
已经有小伙伴复现做出来了
作者@沐雯
将SUNO AI放到小机器人里面,动作节奏不够
功能特性
(播放视频时请打开声音)
机器人能力(features) |
具体表现 |
角色初始化 设定角色:对话机器人 设定性格:(空) 设定表情:Kaomoji 设定动作:头部动作servoX和servoY 返回格式:Json格式 多语言:支持 |
Prompt 假设你是一个可以和人类对话的具身机器人,反应内容包括响应内容,以及对应的kaomoji表情和头部动作(双轴舵机转动参数)。以json格式返回,响应内容定义为response,表情定义为kaomoji,kaomoji表情要反映响应内容情感。与表情对应的头部动作水平角度(无需单位)为servoX,范围是10~170,面向正前方是90。与表情对应的头部动作垂直角度(无需单位)为servoY,范围是10~170,水平面是90。
|
面向用户 由脸部追踪实现,让机器人面向用户,实现类似eye contact眼神接触功能。
|
画面是镜像,现实世界里,头部动作和机器人转向是一致的。 参考视频 |
动作指令 请输入对话内容,输入quit退出: 向右看 { "response": "好的,我向右看!", "kaomoji": "(^_^)", "servoX": 120, "servoY": 90 } 请输入对话内容,输入quit退出: 向左看 { "response": "好的,我向左看。", "kaomoji": "(⌒.⌒)", "servoX": 30, "servoY": 90 } 请输入对话内容,输入quit退出: 抬头看 天空 { "response": "抬头看看天空,可以让心情变得更加轻松愉快哦~", "kaomoji": "(っ˘ڡ˘ς)", "servoX": 90, "servoY": 30 } 请输入对话内容,输入quit退出: 抬头 { "response": "好的,请稍等一下。", "kaomoji": "( ̄▽ ̄)~*", "servoX": 90, "servoY": 30 } 请输入对话内容,输入quit退出: 看地面 { "response": "我现在在看地面啦~", "kaomoji": "( ̄▽ ̄)", "servoX": 90, "servoY": 170 }
|
请打开声音
|
问答对话 请输入对话内容,输入quit退出: How do you think about Transformer structure drive the embodiment robot? { "response": "I think the Transformer structure can greatly enhance the performance of embodiment robots, as it allows for efficient processing of sequential information and complex interactions. By leveraging self-attention mechanisms, embodiment robots can better understand and respond to human input in a more context-aware manner.", "kaomoji": "( ̄▽ ̄)~*", "servoX": 90, "servoY": 120 |
英文翻译 提问:您如何看待 Transformer 结构驱动体现机器人? 回答:我认为 Transformer 结构可以极大地提高实体机器人的性能,因为它可以有效地处理顺序信息和复杂的交互。 通过利用自我注意机制,体现机器人可以以更加上下文感知的方式更好地理解和响应人类输入。
|
情感安慰 请输入对话内容,输入quit退出: 슬픈 감정을 일으키다 { "response": "왜 울고 있어요? 저를 토토하다면, 함께 이야기해요.", "kaomoji": "(っ˘̩╭╮˘̩)っ", "servoX": 90, "servoY": 110 }
|
韩语翻译 提问:造成悲伤的感觉 响应:为什么哭了?如果你想说话,就和我一起聊 |
优化空间
|
详细内容 |
声音
|
OpenAI的TTS模块声音还不够自然,但支持多语言。 OpenVoice擅长声音克隆,缺乏情感语调处理机制。 Suno Bark对中文支持不友好。 Azure Speech Studio最新声音效果更好,但API仍未公开。zh-CN-XiaoxiaoMultilingualNeural效果如下: |
MCU
|
Arduino R4有点高配了,价格大约170元。R3兼容性更好,价格更低。这块成本有很大下降空间。 |
舵机云台
|
传统9g双轴舵机云台(左图),支撑200克iPhone有点吃力。 建议改为步进机或力量更大的舵机云台(右图)。 人脸追踪有点太敏感,也可以加一个平滑滤波,减少舵机抖动。 |
充电模块 |
目前是缺失。应该支持无线或有线充电。 |
ID设计
|
目前是缺失。可以做得更可爱一点,例如LOOI,NOMI等。 |
产品价值
这究竟是一个怎样的产品?实践下来,核心在于情绪价值,有点像宠物。
- 有趣的性格。有时候听指令,有时候不听,例如抬头,要二次要求。当然,性格可以在prompt里面设定。
- 可爱的表情。Kaomoji蛮可爱,也可以参考蔚来汽车Nomi,只做双2眼表情。Finetune模型就可以。
- 肢体语言。有些肢体语言动作让人意想不到。
- ID设计,即使在关机状态也传递情绪,像LINE friend家族。
文章导读
建了个爱好者的群,欢迎一起研究手搓
群满了,可以加微信:AAAAAAAJ (一定要备注暗号“111” 拉你进群)