Open yihong0618 opened 1 year ago
我有一个二傻子斐讯R1音箱,看看能不能搞出来
现在不用抓包了,修改了文章
哈哈,直接做个APP,TTS做交互更简单,技术也成熟
我有一个二傻子斐讯R1音箱,看看能不能搞出来
期待好消息😃
有熬夜做一个傻儿子出来玩的冲动,哈哈哈😂
翻到了一个国外破解小爱同学的,[能用拆机后的 USB 来烧固件](https://github.com/duhow/xiaoai-patch/blob/master/research/lx06/install.md),但我没有 windows,-> 学习老的 macbookpro 2015 刷双系统,尝试给小爱刷机 -> 小米把这个也封了
这方式小米是怎么封的?新固件不让用了?
对,新的版本这个暂时不行
确实是个很有意思的项目!生命不息,折腾不止。 如果用NAS替代PC做中转,上面跑MiService截音响,这个想法是可行的嘛
@wsjq5477 可行,但是不要 mute-xiaomi
请教下为啥不加mute-xiaomi呢,我试了下加不加mute-xiaomi,小爱都只会回答自己的答案,但是终端会显示出gpt的答案
会频繁请求 api, 容易被 ban 要是一直跑
大佬们,能实现和小度交互么? https://juejin.cn/post/7203685609654550588
我有一个二傻子斐讯R1音箱,看看不能搞出来 斐讯可以刷,但是体验效果不好,更别说交互chatgpt了
@yihong0618 请问下放小猪佩奇是什么流程😊
@yihong0618 请问下放小猪佩奇是什么流程😊
小爱同学,帮我播放小猪佩奇
@yihong0618 是小爱同学语音读的节目吗?我以为是和小米盒子联动播放视频,希望能通过关键词播放某一集的剧情。。
是的。
可以用openwrt获取小爱设备突发特定流量后轮询
之前搞天猫精灵,发现提问题前一定需要某些语料然后才会回调接口,相信小爱也是一样的吧?怎么保持小爱可以一直说话,不需要语料?所以关键点是不断轮询吗?
是
你们谁在墙内试过亚马逊Echo智能音箱?我基本放弃破解国内的智能音箱了。
echo 有人做出来了
哈哈,yihong 佬也入了硬件的坑,我去年底开始折腾硬件,发现硬件真的好玩
关注这个有段时间,一直没能上手做。有个疑问,这个脚本我要跑在跟小爱同一个网络环境下么?
@deadjoker 不需要。
@yihong0618 如果我希望多个小爱音箱都能够使用chatgpt的话,有没有方法只跑一个脚本呢?还是必须得多个环境跑多个脚本
可以同环境部署多个吧
大神,你能写个手把手的流程就好了,才能让很多小白能去尝试。 你这个过程省略了好多细节,估计和你同级别的大牛才能看得懂操作起来。
大神,你能写个手把手的流程就好了,才能让很多小白能去尝试。 你这个过程省略了好多细节,估计和你同级别的大牛才能看得懂操作起来。
直接看视频就行。。还是保姆级别的。。。我在做的过程里面就遇到了一个ptython 版本的问题,其他的都是一次过。。
但是呢 是可以用,但是体验感不是很好
我看了你的教学视频,非常感兴趣,手里还没有小米音箱,准备买一个,请问现在购买的小米音箱Pro 型号是LX6,也可以按照你提供的方法,使用小爱同学和ChatGPT交互吗?小米音箱有没有版本要求?必须是哪个版本以下的才能按照你的方法做,我担心新购买的音箱,系统版本不对,无法实现教程的内容,谢谢!
我看了你的教学视频,非常感兴趣,手里还没有小米音箱,准备买一个,请问现在购买的小米音箱Pro 型号是LX6,也可以按照你提供的方法,使用小爱同学和ChatGPT交互吗?小米音箱有没有版本要求?必须是哪个版本以下的才能按照你的方法做,我担心新购买的音箱,系统版本不对,无法实现教程的内容,谢谢!
我就是新买的 可以 还是蛮简单的。。。 其实我有做一个类似的视频,但是国内的限制太多了
我在Windows系统上获取不到小米音箱的DID
请问,运行了以后,接受不到小爱的消息是什么原因?
有更多的报错信息么?@Enchner @liuwx2010
@yihong0618 没有报错信息,界面上就显示的请用'帮我'什么什么的,然后就没有了。和小爱说话,也打不出任何的消息
添加 arg --verbose
--mute_xiaoai 这个参数不能使用,一用就报错 MinaService里不存在xxx方法 例如不存在 player_get_status 不存在player_pause 我去查了源码的确没有
这个项目是不是有点bug
--mute_xiaoai 这个参数不能使用,一用就报错 MinaService里不存在xxx方法 例如不存在 player_get_status 不存在player_pause 我去查了源码的确没有
这个项目是不是有点bug
我遇到了问题, 但是尝试下来无法解决 python3 的环境 。 在MiService 项目中运行如下命令 ./micli.py list 或者 python3 ./micli.py list 或者 python3 micli.py list。 给出如下的报错。 `xception on login 2330087479: Cannot connect to host sts.api.io.mi.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')] Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 980, in _wrap_create_connection return await self._loop.create_connection(*args, **kwargs) # type: ignore[return-value] # noqa ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection transport, protocol = await self._create_connection_transport( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport await waiter File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/sslproto.py", line 574, in _on_handshake_complete raise handshake_exc File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/sslproto.py", line 556, in _do_handshake self._sslobj.do_handshake() File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 979, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "/Users/pdx/wk/AI/小爱AI/MiService/miservice/miaccount.py", line 74, in login serviceToken = await self._securityTokenService( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/pdx/wk/AI/小爱AI/MiService/miservice/miaccount.py", line 114, in _securityTokenService async with self.session.get( File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/client.py", line 1141, in aenter self._resp = await self._coro ^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/client.py", line 536, in _request conn = await self._connector.connect( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 540, in connect proto = await self._create_connection(req, traces, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 901, in _createconnection , proto = await self._create_direct_connection(req, traces, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 1206, in _create_direct_connection raise last_exc File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 1175, in _create_direct_connection transp, proto = await self._wrap_create_connection( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 982, in _wrap_create_connection raise ClientConnectorCertificateError(req.connection_key, exc) from exc aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host sts.api.io.mi.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')] Error https://api.io.mi.com/app/home/device_list: Login failed` 求解
我遇到了问题, 但是尝试下来无法解决 python3 的环境 。 在MiService 项目中运行如下命令 ./micli.py list 或者 python3 ./micli.py list 或者 python3 micli.py list。 给出如下的报错。 `xception on login 2330087479: Cannot connect to host sts.api.io.mi.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')] Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 980, in _wrap_create_connection return await self._loop.create_connection(*args, **kwargs) # type: ignore[return-value] # noqa ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection transport, protocol = await self._create_connection_transport( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport await waiter File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/sslproto.py", line 574, in _on_handshake_complete raise handshake_exc File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/sslproto.py", line 556, in _do_handshake self._sslobj.do_handshake() File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py", line 979, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "/Users/pdx/wk/AI/小爱AI/MiService/miservice/miaccount.py", line 74, in login serviceToken = await self._securityTokenService( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/pdx/wk/AI/小爱AI/MiService/miservice/miaccount.py", line 114, in _securityTokenService async with self.session.get( File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/client.py", line 1141, in aenter self._resp = await self._coro ^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/client.py", line 536, in _request conn = await self._connector.connect( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 540, in connect proto = await self._create_connection(req, traces, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 901, in _createconnection , proto = await self._create_direct_connection(req, traces, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 1206, in _create_direct_connection raise last_exc File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 1175, in _create_direct_connection transp, proto = await self._wrap_create_connection( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/aiohttp/connector.py", line 982, in _wrap_create_connection raise ClientConnectorCertificateError(req.connection_key, exc) from exc aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host sts.api.io.mi.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)')] Error https://api.io.mi.com/app/home/device_list: Login failed` 求解
ssl 问题
同上SSL问题。
1.家庭网以及个人热点都连接尝试了
命令执行:
./micli.py list ./micli.py: line 1: from: command not found ./micli.py: line 6: syntax error: unexpected end of file
查看目录
ls LICENSE build miservice requirements-dev.txt setup.py README.md micli.py miservice_fork.egg-info requirements.txt
换命令执行
python3 micli.py list
或者 python3 ./micli.py list
执行和上述结果相同 报错SSL。
执行前置: 确定下载了依赖, 按照文档配置了账号密码export..... 以及账号在app登陆,账号密码没错。 电脑蓝牙已连接音响
产品LX06 。 大陆地区。
ssl 问题
- 尝试不用 vpn
- 尝试换个网络,比如手机热点
ssl 问题
尝试不用 vpn 尝试换个网络,比如手机热点
添加 arg --verbose
@yihong0618 我添加了,没有任何错误信息,下面是详细情况
Running xiaogpt now, 用帮我/请回答
开头来提问
或用开始持续对话
开始持续对话
[03/31/23 00:45:29] DEBUG Now listening xiaoai new xiaogpt.py:91
message timestamp:
1680237928131
[03/31/23 00:45:30] DEBUG Now listening xiaoai new xiaogpt.py:91
message timestamp:
1680237928131
[03/31/23 00:45:31] DEBUG Now listening xiaoai new xiaogpt.py:91
message timestamp:
1680237928131
为什么不直接搞一个脚本接入安卓语音助手?这样一个更简单吧,小爱只是一个回复,手机貌似可以接入更多,目前只有iPhone有捷径,安卓貌似现在只有tasker太鸡了
@qingqingjiayuan6 @SwartzMss 请问教程视频的链接在哪里?麻烦发一下
我觉得AI音箱的主要作用还是它的6个麦克风的触发和声音收集功能 至于识别转文字(尤其是英文)还是siri最优秀,然后就只剩下GPT调用和回传播放语音了 想通了这个逻辑,还是直接用homepod上的捷径就好
以下是GPT的回答: GPT回答出错 Error communicating with OpenAI
这是我的报错,GPT使用不了
早上看到之后,果断入手一个小爱音响 Play,现在小爱版GPT已经上线了。过程吧,说来也心酸,获取did累个半死,其他都还挺顺溜。感谢大神的折腾笔记。
就是现在 "enable_edge_tts": true
就直接没声音了,不知道咋回事。
早上看到之后,果断入手一个小爱音响 Play,现在小爱版GPT已经上线了。过程吧,说来也心酸,获取did累个半死,其他都还挺顺溜。感谢大神的折腾笔记。
就是现在
"enable_edge_tts": true
就直接没声音了,不知道咋回事。
看看 http server 是否开启了,mac 的话需要点确认
写在前面
项目链接 -> https://github.com/yihong0618/xiaogpt 大多数事儿很简单的一个结论是:这么做有什么用? 但是,没用就不做了么?好玩也是有用之一呀。
注
下文中 revChatGPT 方案废弃了,全部改用 API, 请参考 repo.
想法
开始折腾
最早的 idea 是把小爱同学破解了,破解之后拦截我的对话,如果对话包含
GPT
就用破解的小爱发送请求到 ChatGPT, 再把 ChatGPT 的回复截包,读出来。第一个方式不太行,尝试去用路由 openwrt 截包再发送,依然失败,我折腾了一下发现 https 获取 payload 还是有些困难的
转向了 Siri 那么我能不能用 Siri 实现呢?是能的,可以用 Siri -> 捷径 -> 获取你说的话 -> 发送 ChatGPT -> 小爱 or 直接 Siri 自己来
网友象牙山刘能有一天发他儿子小爱同学的聊天记录,突然灵感来了,我可以用最蠢的轮询,来不断获取最新的聊天记录,如果有新的符合要求我就发送给 ChatGPT --> 再用 tts 让小爱同学朗读,但因为朗读需要时间,所以轮询也没那么笨了。
实现
准备
使用
micli list
拿到你音响的 DID 成功 别忘了设置 export MI_DID=xxx 这个 MI_DID 用python xiaogpt.py --hardware ${your_hardware}
hardware 你看小爱屁股上有型号,输入进来总结
彩蛋