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

 找回密码
 立即注册
查看: 10167|回复: 41

[基础教程] 小爱音箱接入ChatGPT:上下文理解和去除小爱回应

  [复制链接]

81

主题

560

帖子

3680

积分

论坛元老

Rank: 8Rank: 8

积分
3680
金钱
3120
HASS币
0
发表于 2023-12-24 07:36:08 | 显示全部楼层 |阅读模式
本帖最后由 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出来了




整体的流在这里:



                               
登录/注册后可看大图


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




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







flows (4).zip

2.99 KB, 下载次数: 341

评分

参与人数 6金钱 +45 收起 理由
zyf6578 + 5 高手,这是高手!
locfai + 5 高手,这是高手!
baiqianlover + 5 高手,这是高手!
sctale + 10 膜拜大神!
DDDear + 10 高手,这是高手!
隔壁的王叔叔 + 10 我的级别不够,最多给你10分了。.

查看全部评分

回复

使用道具 举报

22

主题

473

帖子

6446

积分

元老级技术达人

略懂一些皮毛而已!

积分
6446
金钱
5963
HASS币
40
发表于 2023-12-24 10:39:22 | 显示全部楼层
分享下流文件就更好!
回复

使用道具 举报

3

主题

51

帖子

663

积分

高级会员

Rank: 4

积分
663
金钱
612
HASS币
0
发表于 2023-12-24 14:21:29 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

8

主题

145

帖子

792

积分

高级会员

Rank: 4

积分
792
金钱
647
HASS币
0
发表于 2023-12-24 19:33:51 | 显示全部楼层
大佬真厉害!求分享nodered流
回复

使用道具 举报

81

主题

560

帖子

3680

积分

论坛元老

Rank: 8Rank: 8

积分
3680
金钱
3120
HASS币
0
 楼主| 发表于 2023-12-24 21:14:24 | 显示全部楼层
Mr.G 发表于 2023-12-24 10:39
分享下流文件就更好!

原贴我把流传上来了
回复

使用道具 举报

81

主题

560

帖子

3680

积分

论坛元老

Rank: 8Rank: 8

积分
3680
金钱
3120
HASS币
0
 楼主| 发表于 2023-12-24 21:18:04 | 显示全部楼层
lugiya 发表于 2023-12-24 19:33
大佬真厉害!求分享nodered流

原贴我把流传上来了
回复

使用道具 举报

8

主题

145

帖子

792

积分

高级会员

Rank: 4

积分
792
金钱
647
HASS币
0
发表于 2023-12-25 10:43:07 | 显示全部楼层
silas3082 发表于 2023-12-24 21:18
原贴我把流传上来了

谢谢大佬,这就下载来研究学习学习
回复

使用道具 举报

35

主题

986

帖子

4776

积分

论坛元老

Rank: 8Rank: 8

积分
4776
金钱
3790
HASS币
20
发表于 2023-12-25 19:34:05 | 显示全部楼层
试一下。。。。。。。。。。
回复

使用道具 举报

0

主题

93

帖子

306

积分

中级会员

Rank: 3Rank: 3

积分
306
金钱
213
HASS币
0
发表于 2023-12-25 20:01:31 | 显示全部楼层
我的老是不成功,这下试试楼主的,
回复

使用道具 举报

6

主题

117

帖子

1026

积分

金牌会员

Rank: 6Rank: 6

积分
1026
金钱
909
HASS币
0
发表于 2023-12-28 11:23:44 | 显示全部楼层
为什么老流程和这个新流程的json节点都会提示"Unexpected token < in JSON at position 0"错误?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-28 17:02 , Processed in 0.141970 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表