找回密码
 立即注册

微信扫码登录

搜索
查看: 9009|回复: 36

[技术探讨] 小爱音箱配合ha的语音助理,让你体验更加好

  [复制链接]

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
发表于 2024-7-27 16:45:48 | 显示全部楼层 |阅读模式
本帖最后由 foxad 于 2024-7-29 15:44 编辑

参考链接:
告别智障的HomeAsistant 语音助手,迎接豆包——你的智能专...
HomeAssistant 语音助手对接AI大模型相关系列教程说明
小爱直接控制HA里的设备



由于ha的语音唤醒功能让我很是恼火,但是小爱通过NR接入ha的话,按照传统方法,如果设备多了,switch要分出来的是一大堆一大堆,既费力又需要大量时间编辑。
因此,想偷懒的我就弄了另外一个方法。
无标题.png
小爱音箱通过miio auto接入 hass后,会有一个状态是你对音箱说的话。实际上就是stt。这个状态在ha中是可以获得到的。那么,将获得到的值传给ha自身的语音助手进行执行的话,就减轻了编辑nr的工作量。
而且,如果有多个音箱的话,可以添加一个脚本以在值前面添加一个位置信息,比如卧室,客厅之类,以达到分区控制。
当ha的语音助手处理好后,会返回一个状态值,将这个值丢给小爱的tts后,由小爱来播报处理信息。这样一来,既能操作也有反馈。

需要注意一点的是,这样操作的时候,需要在米家-音箱设备中添加训练计划-唤醒词。回应我用的是“一句话”,内容为“请稍后”。而我对小爱说打开xx后,小爱会先回答“请稍后”,然后由tts输出“xx已经xx了”。

且 可以将小爱tts节点后增加一个函数处理,在内容前面或者后面加上时间日期,并写入文件。这样的话相当于有了一个完整的设备工作/状态记录了。

将代码附上,以供参考。

补充说明:
由于每个人的语音助手不一样,所以需要针对性的修改。导入流后,双击“助手测试”,修改数据“{"text":msg.payload,"language":"ZH-CN","agent_id":"conversation.chatgpt","conversation_id":"my_conversation_1"}”中的"agent_id":"conversation.chatgpt" 。
根据自己的值修改为各自的助手。这个值可以在开发者工具中找到。
2.png 3.png
上面的是以修改后的ghatgpt(豆包)。

2.png 3.png
上面的是大佬修改的语音助手。



flows (1).zip

1.21 KB, 下载次数: 108

售价: 1 金钱  [记录]

参考

评分

参与人数 2金钱 +13 收起 理由
linxianxin + 1 厉害了word楼主!
隔壁的王叔叔 + 12 高手,这是高手!

查看全部评分

回复

使用道具 举报

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
 楼主| 发表于 2024-7-29 15:18:07 | 显示全部楼层
skylan 发表于 2024-7-29 14:40
已经解决了,agent_id发现是豆包,但我没有安装豆包 改成ha自带的就好了 ...

啊 抱歉 我这个流是用了豆包替换后弄的。因此在助手测试节点里agent_id需要根据情况修改
回复

使用道具 举报

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
 楼主| 发表于 2024-7-29 15:49:32 | 显示全部楼层
skylan 发表于 2024-7-29 15:33
又碰到一个问题,就是输入指令后,小爱会先回复未找到xxx,不会播报请稍后。看了一下,可能是我唤醒词不知 ...

这里相当于自定义技能,只有将指定的唤醒词填到小爱里面,才不会触发没找到xx这样的提示。这个我也没有好的办法。但是应该不影响操作。而且这个自定义技能好像好像还不支持变量输入,不方便偷懒。
回复

使用道具 举报

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
 楼主| 发表于 2024-7-31 07:32:51 | 显示全部楼层
Kevin8961 发表于 2024-7-30 17:16
小爱对话记录和豆包的处理有有一定的延时,目前还没有好的办法解决。

是的 从说话到处理结束 大概需要3-5秒。但是基本上可用
回复

使用道具 举报

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
 楼主| 发表于 2024-9-14 07:32:02 | 显示全部楼层
qmzp 发表于 2024-9-13 18:11
感谢分享,目前遇到三个问题:第一个是问题延迟,第二个什么对话都会往chatgpt走,第三个是讲故事等大量文 ...

延迟的问题我也遇到,但是这个是处理机制的问题应该。对话修改可以在流中修改处理对象,帖子内有描述。
至于第三个问题,我还没用它讲过故事,所以……
回复

使用道具 举报

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
 楼主| 发表于 2024-12-15 10:37:34 | 显示全部楼层
ldwnt 发表于 2024-12-15 00:23
这个一句话不是唤醒词吧,唤醒词是后面跟真正的指令,而这个一句话匹配到固定文本就结束了,无法接收动态 ...

实际上我需要的不是指令。因为ha能获得你对小爱说了什么东西。将获得的指令丢给ha的助手处理,但是如果没有这个自定义的话,小爱会回复找不到这个设备之类。后续处理不是交给小爱处理的。
回复

使用道具 举报

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
 楼主| 发表于 2025-2-3 14:10:23 | 显示全部楼层
kaattz 发表于 2025-1-31 17:38
"助手测试"中修改数据“{"text":msg.payload,"language":"ZH-CN","agent_id":"conversation.chatgpt","conv ...

的确。如果说的词不准确的话 操作是没有问题的,因为操作逻辑是交给语音助手的。但是会说没有这个设备。自定义训练不支持模糊词匹配很伤脑筋
回复

使用道具 举报

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
 楼主| 发表于 2025-2-21 16:43:31 | 显示全部楼层
misLia 发表于 2025-2-21 15:39
这一直是我想要的。我接入了智普AI,我将一部分实体公开了,在网页右上角的语音助手里,用文字测试了官方的 ...

官方的助手好像必须明确你要操作的实体名称。比如 你把一个开关命名为 "test1测试" 那么你使用官方助手就必须为 "打开test1测试"这样 不能有遗漏和缺失。 而智普是可以说 "打开test1"就能操作。我本地测试是存在这样的情况。
至于对话标识符的问题,我当初是再开发者页面填写相关信息后直接进入yaml模式进行筛选获得,所以最开始可能勾选了对话标识符。
第二个问题,想将开关和其他分开,可以使用两个节点分别使用官方助手和智普,使用switch节点,一个是正则匹配开关和一个反向匹配,这个需要测试,这只是一个思路。
回复

使用道具 举报

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
 楼主| 发表于 2025-3-10 16:55:01 | 显示全部楼层
misLia 发表于 2025-3-10 15:12
想问下,按你这方法,触发条件要写很多啊。

谁叫小爱不支持模糊词呢
回复

使用道具 举报

3

主题

141

回帖

1163

积分

金牌会员

积分
1163
金钱
1019
HASS币
0
 楼主| 发表于 2025-3-11 16:48:57 | 显示全部楼层
misLia 发表于 2025-3-11 11:21
早上刚才测试了下,可以不需要固定语言就可以控制所有的灯。只要包含“灯”这个关键词,就可以执行了。 ...

啊抱歉  前面理解错了你的意思。在nr这边 是不需要那么多触发条件的。因为他就是把小爱获取到的信息提交给ha就完事了。如果需要分离的画,进行正则匹配就好了。但是对于小爱那边,因为不支持模糊词匹配,因此要做很多条目,否则会提示找不到设备影响感官。虽然目前我没有中枢网关,但是根据现有视频来看也是存在同样的问题。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-7-9 10:50 , Processed in 0.390424 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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