『瀚思彼岸』» 智能家居技术论坛

标题: 小爱音箱接入ChatGPT:上下文理解和去除小爱回应 [打印本页]

作者: silas3082    时间: 2023-12-24 07:36
标题: 小爱音箱接入ChatGPT:上下文理解和去除小爱回应
本帖最后由 silas3082 于 2023-12-24 21:12 编辑

之前写了一个帖子:白嫖openai的api key把小爱音箱接入chatgpt https://bbs.hassbian.com/thread-23674-1-1.html 已经基本实现了小爱音箱接入chatgpt,可以正常的到自己想要的结果,并让小爱tts出来

存在的问题就是:1没有实现上下文。2.小爱会先回复自己的问题,之后才是chatgpt的回答

经过论坛大佬idummy的指点,他提供了一个离线语音模块接入的方法,他的方法如下:

提供一个让小爱不回答你的问题方法,开启贾维斯 时,先在小爱训练一个自定义回答,当然楼主也是这样做的,当开启贾维斯时,我们定义一个全局变量global.set('jtta', 0); 然后向text.xiaomi_l05b_990e_play_text发送{"value":"_"}值,可以静音小爱,再接一个function 判断全局变量有没有变成1,没有为1则再次连接循环静音,另外一个流程当获取到chatgpt返回的文本时在function里定义全局变量global.set('jtta', 1); 即可,这时循环静音就取消了,TTS这时就发出你要的声音了,完全关闭小爱回答你的声音,还有你可以在发送开启贾维斯时等小爱回答完自定义语音后,直接触发button.xiaomi_l05b_990e_wake_up按钮唤醒小爱,你就可以实现叫小爱同学 ,小爱音箱回答 自定义回答如 你说 然后唤醒小爱,你直接就可以说出你的话了,然后提交给GTP得到文本停止循环静音再TTS给小爱         

“用一个离线语音模块详见https://bbs.hassbian.com/forum.p ... =%E8%AF%AD%E9%9F%B3 自定义唤醒语音后,发送串口数据到esphome 然后直接触发唤醒小爱音箱,这时就不用conversion传感器了,直接禁用conversion传感器,手动去获取对话文本,同时静音小爱,获取对话文本我是直接用嗅探软件嗅探小爱音箱APP的对话记录那里,把CURL请求拿到NODE-RED里手动去请求获取最新对话文本,保存其中一个requesid,下次用这个ID比较用以知道是不是获取的新对话记录了,这样就是还要去获取servertokens 我是用https://www.npmjs.com/package/xiaoai-tts这个来获取的 这样就可以完美解决了



有兴趣的可以研究一下大佬的方法,不过还得用一个离线语音放在小爱上边,我觉得没有必要,要是不用,小爱音箱自己也能实现就好了

接下来就是我的思路:
上下文:设置一个全局变量即可,然后放在请求头

那么,怎么实现把小爱自身的回答静音呢?idummy给了一个启发,就是发送{"value":"_"}值,随便一个什么标点符号都行,这样就静音了。

要是一直这样发送{"value":"_"}不就可以一直静音从而达到覆盖小爱原本回答的目的,可能这就是大佬说的循环静音。

那么如何在得到chatgpt回答之后,如何解除循环静音让小爱tts出来呢?大佬用了一个全局变量判断和抓包,我没法抓包,这次用了之前创建的辅助开关,判断状态。
流程就是当对小爱说唤醒贾维斯时,先自定义回答,同时weake up,同时打开辅助开关。同时用辅助开关激活循环静音。当获取到gpt回答,关闭辅助开关进而关闭循环静音,小爱就可以tts出来了




整体的流在这里:



                               
登录/注册后可看大图


这个是实现的效果,大伙看看怎么样?




源码已贡献出来了,欢迎交流








作者: Mr.G    时间: 2023-12-24 10:39
分享下流文件就更好!
作者: sanwangxiang    时间: 2023-12-24 14:21
感谢楼主分享
作者: lugiya    时间: 2023-12-24 19:33
大佬真厉害!求分享nodered流
作者: silas3082    时间: 2023-12-24 21:14
Mr.G 发表于 2023-12-24 10:39
分享下流文件就更好!

原贴我把流传上来了
作者: silas3082    时间: 2023-12-24 21:18
lugiya 发表于 2023-12-24 19:33
大佬真厉害!求分享nodered流

原贴我把流传上来了
作者: lugiya    时间: 2023-12-25 10:43
silas3082 发表于 2023-12-24 21:18
原贴我把流传上来了

谢谢大佬,这就下载来研究学习学习
作者: sctale    时间: 2023-12-25 19:34
试一下。。。。。。。。。。
作者: baiqianlover    时间: 2023-12-25 20:01
我的老是不成功,这下试试楼主的,
作者: yuejr    时间: 2023-12-28 11:23
为什么老流程和这个新流程的json节点都会提示"Unexpected token < in JSON at position 0"错误?
作者: guoqiang881245    时间: 2023-12-30 10:40
本帖最后由 guoqiang881245 于 2023-12-30 11:13 编辑

这个怎么填,在哪里找KEY[attach]54709[/attach]
作者: fencanyan    时间: 2024-1-13 15:41
请问我这个是什么问题呢?
作者: DD_Grank    时间: 2024-1-14 10:31
openai加持的小爱同学,与时俱进啊
作者: bayue    时间: 2024-1-14 21:51
判断id:input_boolean.xiao_ai_yin_xiang_chatgptkai_guan,这个id是什么?在Home Assistant要安装小米AI插件?谢谢啦!
作者: bayue    时间: 2024-1-14 21:53

判断id:input_boolean.xiao_ai_yin_xiang_chatgptkai_guan,这个id是什么?在Home Assistant要安装小米AI插件?谢谢啦!
作者: silas3082    时间: 2024-1-14 21:58
bayue 发表于 2024-1-14 21:53
判断id:input_boolean.xiao_ai_yin_xiang_chatgptkai_guan,这个id是什么?在Home Assistant要安装小米AI ...

这个是在ha中建立的辅助元素
作者: jiangjunxia    时间: 2024-1-15 10:10
这个必须要试试
作者: W@LTER    时间: 2024-1-15 18:02
楼主请问, 我对小爱说了召唤贾维斯的时候, 怎么没有听到小爱的回应“正在召唤贾维斯,请说”,这一段的,是不是在哪里设置的?如果没有这一段,好像不好判断是否召唤成功
作者: silas3082    时间: 2024-1-15 18:20
W@LTER 发表于 2024-1-15 18:02
楼主请问, 我对小爱说了召唤贾维斯的时候, 怎么没有听到小爱的回应“正在召唤贾维斯,请说”,这一段的, ...

在小爱训练里边设置的
作者: W@LTER    时间: 2024-1-15 18:25
silas3082 发表于 2024-1-15 18:20
在小爱训练里边设置的

就是创建一个训练,当我们对小爱说“召唤贾维斯”,他就自动回复,“正在召唤贾维斯,请说”, 这样子吗?
作者: silas3082    时间: 2024-1-15 18:29
W@LTER 发表于 2024-1-15 18:25
就是创建一个训练,当我们对小爱说“召唤贾维斯”,他就自动回复,“正在召唤贾维斯,请说”, 这样子吗 ...

yes            
作者: 窗寒轻雨    时间: 2024-1-22 23:08
[attach]55474[/attach]
这里的text.xiaomi_xxxx_play_text,是哪里来的呢,我的实体里没有这个呢



作者: 岁月流失的泡馍    时间: 2024-1-23 02:18
感谢分享
作者: qawei    时间: 2024-2-3 21:53
看不懂啊
作者: Ashthunder    时间: 2024-2-6 17:01
高手,这是高手!
作者: Philipshot    时间: 2024-3-6 16:49
学习了,要试试看
作者: smallyoung    时间: 2024-3-8 19:19
感谢楼主分享

作者: jihaitao    时间: 2024-4-29 16:37
感谢大佬 贾维斯
无私奉献
作者: snowing    时间: 2024-4-29 18:33
大佬,连续对话的问题解决了吗
作者: xianyinweijue    时间: 2024-5-23 08:30
大佬,现在小爱同学播放连续文本最大字数是255个字符,gpt反馈的文字过多的时候就会报错,我现在的解决方法是把文字拆成几段来念,但是没法准确判断小爱同学什么时候念完,因为他内置的play状态延迟太高,大佬有啥好办法没
作者: q7885524    时间: 2024-5-28 21:59
那个流得实体ID好像没法更换,不知道啥原因
作者: q7885524    时间: 2024-5-28 22:00
求助啊,有搞成功得大佬吗求教,可以有偿
作者: w-aiguo    时间: 2024-6-3 19:38
这才是高手
作者: xiaomumu0303    时间: 2024-6-24 22:39
2024年 抄完流以后小爱一直问 在吗在吗,我在我在.......

作者: rui5man    时间: 2024-8-28 09:57
现在还可以吗?
作者: pzwwzp    时间: 2024-8-28 16:08
学习一下
作者: liberty    时间: 2024-8-31 17:17
感谢大佬分享
作者: q7885524    时间: 2024-10-12 00:23
xianyinweijue 发表于 2024-5-23 08:30
大佬,现在小爱同学播放连续文本最大字数是255个字符,gpt反馈的文字过多的时候就会报错,我现在的解决方法 ...

请问抄成功了吗
作者: q7885524    时间: 2024-10-26 00:00
本帖最后由 q7885524 于 2024-10-26 00:01 编辑

老哥可以联系一下吗。V或Q有尝求教
作者: ericliao    时间: 2024-11-4 14:54
學習一下
作者: scriptsmay    时间: 2024-12-13 09:47
大佬佩服,学习了!
作者: xiaomi2024    时间: 2024-12-17 03:12
感谢分享,试一下好不好用
作者: spanbin    时间: 2024-12-31 08:39
ha里的辅助卡关能否分享下代码,不太理解实现过程
作者: 314538494    时间: 2025-1-20 21:11
github 有个 docker  项目   把各种AI接入小爱同学
lmk123/migpt-server
作者: mbdy2020    时间: 2025-4-25 14:32
silas3082 发表于 2024-1-14 21:58
这个是在ha中建立的辅助元素

楼主能说一下ha中辅助元素的类型吗?应该是bool值,我没有找到呢





欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5