gitblog icon indicating copy to clipboard operation
gitblog copied to clipboard

不用 root 使用小爱同学和 ChatGPT 交互折腾记

Open yihong0618 opened this issue 2 years ago • 136 comments

写在前面

项目链接 -> https://github.com/yihong0618/xiaogpt 大多数事儿很简单的一个结论是:这么做有什么用? 但是,没用就不做了么?好玩也是有用之一呀。

下文中 revChatGPT 方案废弃了,全部改用 API, 请参考 repo.

想法

  • 从 ChatGPT 刚上第二周开始,我弄了个账号,后来发现一个很好玩的项目 ChineseAiDungeonChatGPT --> 用 ChatGPT 玩 DND, 我突然想我能语音就更有带入感了。
  • 因为之前折腾 blue 时候了解了一些小米 IOT 设备的交互 tts, 我觉得我用一些方式是可以实现的
  • 不过从想法到可用确实经历了不少

开始折腾

  1. 最早的 idea 是把小爱同学破解了,破解之后拦截我的对话,如果对话包含 GPT 就用破解的小爱发送请求到 ChatGPT, 再把 ChatGPT 的回复截包,读出来。
  • 遇到最大的困难是小爱怎么破解,搜了一圈发现,小爱是有办法通过串口来 hook 再刷固件的。
  • 但串口是啥?我学习了串口通信,用自己树莓派做实验,去淘宝买 usb2ttl 学会了。但是需要焊接,我又去 B 站刷视频学习,问同事硬件大神如何焊接,学会了焊接。但,他妈的,新的小爱同学把串口通信给封了。
  • 翻到了一个国外破解小爱同学的,能用拆机后的 USB 来烧固件,但我没有 windows,-> 学习老的 macbookpro 2015 刷双系统,尝试给小爱刷机 -> 小米把这个也封了
  • 有趣的是每天用发现确实还挺好用的,让他放歌,给我儿子放小猪佩奇。于是又给丈母娘买了一个,给她配置好,可以放歌。
  1. 第一个方式不太行,尝试去用路由 openwrt 截包再发送,依然失败,我折腾了一下发现 https 获取 payload 还是有些困难的
  2. 转向了 Siri 那么我能不能用 Siri 实现呢?是能的,可以用 Siri -> 捷径 -> 获取你说的话 -> 发送 ChatGPT -> 小爱 or 直接 Siri 自己来
  3. 网友象牙山刘能有一天发他儿子小爱同学的聊天记录,突然灵感来了,我可以用最蠢的轮询,来不断获取最新的聊天记录,如果有新的符合要求我就发送给 ChatGPT --> 再用 tts 让小爱同学朗读,但因为朗读需要时间,所以轮询也没那么笨了。

实现

  • 先实现不断拿对话历史
  • 测试 revChatGPT 可行
  • 利用 MiService call tts 可行
  • 剩下就是写代码了

准备

  1. ChatGPT id
  2. 小爱音响
  3. 能正常联网的环境或 proxy
  4. python3.8+

使用

  1. pip install -r requirements.txt
  2. 参考 MiService 项目 README 并在本地 terminal 跑 micli list 拿到你音响的 DID 成功 别忘了设置 export MI_DID=xxx 这个 MI_DID 用
  3. 参考 revChatGPT 项目 README 配置 chatGPT 的 config
  4. run python xiaogpt.py --hardware ${your_hardware} hardware 你看小爱屁股上有型号,输入进来
  5. 跑起来之后就可以问小爱同学问题了,“帮我回答开头的问题” 会发送一份给 ChatGPT 然后小爱同学用 tts 回答

总结

  • 完成那一刻确实挺开心,但过程中发现了几个好玩的博客,惊讶了做 revChatGPT 的学生真牛逼,学会了焊接,开始发现硬件也挺有意思的,不断折腾的过程沮丧有一些,但更多的是学习新东西带来的兴奋感。
  • 拆机发现,小爱同学内部做工确实不错
  • 折腾过程中的感受,将来肯定有一天这些智能音箱厂商也会训练大模型,将彻底改变智能家居,仿佛看到了未来

彩蛋

image

yihong0618 avatar Feb 16 '23 05:02 yihong0618

我有一个二傻子斐讯R1音箱,看看能不能搞出来

LukeWJ avatar Feb 16 '23 06:02 LukeWJ

现在不用抓包了,修改了文章

yihong0618 avatar Feb 16 '23 13:02 yihong0618

哈哈,直接做个APP,TTS做交互更简单,技术也成熟

suiming avatar Feb 27 '23 01:02 suiming

我有一个二傻子斐讯R1音箱,看看能不能搞出来

期待好消息😃

auzeonfung avatar Mar 02 '23 08:03 auzeonfung

有熬夜做一个傻儿子出来玩的冲动,哈哈哈😂

NeoSmithX avatar Mar 02 '23 16:03 NeoSmithX

翻到了一个国外破解小爱同学的,[能用拆机后的 USB 来烧固件](https://github.com/duhow/xiaoai-patch/blob/master/research/lx06/install.md),但我没有 windows,-> 学习老的 macbookpro 2015 刷双系统,尝试给小爱刷机 -> 小米把这个也封了

这方式小米是怎么封的?新固件不让用了?

tonyqus avatar Mar 02 '23 23:03 tonyqus

对,新的版本这个暂时不行

yihong0618 avatar Mar 02 '23 23:03 yihong0618

确实是个很有意思的项目!生命不息,折腾不止。 如果用NAS替代PC做中转,上面跑MiService截音响,这个想法是可行的嘛

wsjq5477 avatar Mar 04 '23 13:03 wsjq5477

@wsjq5477 可行,但是不要 mute-xiaomi

yihong0618 avatar Mar 04 '23 13:03 yihong0618

请教下为啥不加mute-xiaomi呢,我试了下加不加mute-xiaomi,小爱都只会回答自己的答案,但是终端会显示出gpt的答案

wsjq5477 avatar Mar 05 '23 03:03 wsjq5477

会频繁请求 api, 容易被 ban 要是一直跑

yihong0618 avatar Mar 05 '23 03:03 yihong0618

大佬们,能实现和小度交互么? https://juejin.cn/post/7203685609654550588

imkingcn avatar Mar 05 '23 18:03 imkingcn

我有一个二傻子斐讯R1音箱,看看不能搞出来 斐讯可以刷,但是体验效果不好,更别说交互chatgpt了

jihan-socool avatar Mar 06 '23 01:03 jihan-socool

@yihong0618 请问下放小猪佩奇是什么流程😊

BussanQ avatar Mar 06 '23 05:03 BussanQ

@yihong0618 请问下放小猪佩奇是什么流程😊

小爱同学,帮我播放小猪佩奇

yihong0618 avatar Mar 06 '23 05:03 yihong0618

@yihong0618 是小爱同学语音读的节目吗?我以为是和小米盒子联动播放视频,希望能通过关键词播放某一集的剧情。。

BussanQ avatar Mar 06 '23 05:03 BussanQ

是的。

yihong0618 avatar Mar 06 '23 06:03 yihong0618

可以用openwrt获取小爱设备突发特定流量后轮询

jjp9624022 avatar Mar 06 '23 22:03 jjp9624022

之前搞天猫精灵,发现提问题前一定需要某些语料然后才会回调接口,相信小爱也是一样的吧?怎么保持小爱可以一直说话,不需要语料?所以关键点是不断轮询吗?

YuanZhencai avatar Mar 06 '23 22:03 YuanZhencai

yihong0618 avatar Mar 06 '23 22:03 yihong0618

你们谁在墙内试过亚马逊Echo智能音箱?我基本放弃破解国内的智能音箱了。

tonyqus avatar Mar 07 '23 05:03 tonyqus

echo 有人做出来了

yihong0618 avatar Mar 07 '23 05:03 yihong0618

哈哈,yihong 佬也入了硬件的坑,我去年底开始折腾硬件,发现硬件真的好玩

ryan4yin avatar Mar 08 '23 07:03 ryan4yin

关注这个有段时间,一直没能上手做。有个疑问,这个脚本我要跑在跟小爱同一个网络环境下么?

deadjoker avatar Mar 15 '23 12:03 deadjoker

@deadjoker 不需要。

yihong0618 avatar Mar 15 '23 12:03 yihong0618

@yihong0618 如果我希望多个小爱音箱都能够使用chatgpt的话,有没有方法只跑一个脚本呢?还是必须得多个环境跑多个脚本

deadjoker avatar Mar 16 '23 01:03 deadjoker

可以同环境部署多个吧

yihong0618 avatar Mar 16 '23 01:03 yihong0618

大神,你能写个手把手的流程就好了,才能让很多小白能去尝试。 你这个过程省略了好多细节,估计和你同级别的大牛才能看得懂操作起来。

goofegg avatar Mar 22 '23 01:03 goofegg

大神,你能写个手把手的流程就好了,才能让很多小白能去尝试。 你这个过程省略了好多细节,估计和你同级别的大牛才能看得懂操作起来。

直接看视频就行。。还是保姆级别的。。。我在做的过程里面就遇到了一个ptython 版本的问题,其他的都是一次过。。

但是呢 是可以用,但是体验感不是很好

SwartzMss avatar Mar 22 '23 01:03 SwartzMss

我看了你的教学视频,非常感兴趣,手里还没有小米音箱,准备买一个,请问现在购买的小米音箱Pro 型号是LX6,也可以按照你提供的方法,使用小爱同学和ChatGPT交互吗?小米音箱有没有版本要求?必须是哪个版本以下的才能按照你的方法做,我担心新购买的音箱,系统版本不对,无法实现教程的内容,谢谢!

qingqingjiayuan6 avatar Mar 25 '23 05:03 qingqingjiayuan6