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

标题: 小爱音箱配合ha的语音助理,让你体验更加好 [打印本页]

作者: foxad    时间: 2024-7-27 16:45
标题: 小爱音箱配合ha的语音助理,让你体验更加好
本帖最后由 foxad 于 2024-7-29 15:44 编辑

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



由于ha的语音唤醒功能让我很是恼火,但是小爱通过NR接入ha的话,按照传统方法,如果设备多了,switch要分出来的是一大堆一大堆,既费力又需要大量时间编辑。
因此,想偷懒的我就弄了另外一个方法。
[attach]61851[/attach]
小爱音箱通过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" 。
根据自己的值修改为各自的助手。这个值可以在开发者工具中找到。
[attach]61922[/attach][attach]61923[/attach]
上面的是以修改后的ghatgpt(豆包)。

[attach]61924[/attach][attach]61925[/attach]
上面的是大佬修改的语音助手。




作者: 混饭吃的机器猫    时间: 2024-7-28 08:05
谢谢分享,,不会用,希望大佬出小白教程,先谢谢了。
作者: [email protected]    时间: 2024-7-28 14:57

谢谢分享,,不会用,希望大佬出小白教程,先谢谢了。
作者: dctiger    时间: 2024-7-28 20:35
谢谢分享,应该可行,回家试试。
作者: hlhl    时间: 2024-7-29 00:22


谢谢分享,,不会用,希望大佬出小白教程,先谢谢了
作者: skylan    时间: 2024-7-29 11:19
谢谢分享,需要更改哪一些呢?设备我改成自己的了,但是小爱会提示找不到。希望大佬能出一下教程。
作者: skylan    时间: 2024-7-29 14:40
skylan 发表于 2024-7-29 11:19
谢谢分享,需要更改哪一些呢?设备我改成自己的了,但是小爱会提示找不到。希望大佬能出一下教程。 ...

已经解决了,agent_id发现是豆包,但我没有安装豆包 改成ha自带的就好了
作者: foxad    时间: 2024-7-29 15:18
skylan 发表于 2024-7-29 14:40
已经解决了,agent_id发现是豆包,但我没有安装豆包 改成ha自带的就好了 ...

啊 抱歉 我这个流是用了豆包替换后弄的。因此在助手测试节点里agent_id需要根据情况修改
作者: skylan    时间: 2024-7-29 15:33
又碰到一个问题,就是输入指令后,小爱会先回复未找到xxx,不会播报请稍后。看了一下,可能是我唤醒词不知道应该怎么设置,发现用“打开”“打开xxx”都是不行的,看小爱同学里面意思要一个具体的语句,那是不是得把所有可能用到的都给输入一遍
作者: foxad    时间: 2024-7-29 15:49
skylan 发表于 2024-7-29 15:33
又碰到一个问题,就是输入指令后,小爱会先回复未找到xxx,不会播报请稍后。看了一下,可能是我唤醒词不知 ...

这里相当于自定义技能,只有将指定的唤醒词填到小爱里面,才不会触发没找到xx这样的提示。这个我也没有好的办法。但是应该不影响操作。而且这个自定义技能好像好像还不支持变量输入,不方便偷懒。
作者: sinosix    时间: 2024-7-29 16:17
没装NR  该天配置上
作者: Kevin8961    时间: 2024-7-30 17:16
小爱对话记录和豆包的处理有有一定的延时,目前还没有好的办法解决。
作者: foxad    时间: 2024-7-31 07:32
Kevin8961 发表于 2024-7-30 17:16
小爱对话记录和豆包的处理有有一定的延时,目前还没有好的办法解决。

是的 从说话到处理结束 大概需要3-5秒。但是基本上可用
作者: Ari    时间: 2024-7-31 13:31
谢谢分享,,不会用,希望大佬出小白教程,先谢谢了。
作者: C哩C哩    时间: 2024-7-31 15:19
有效果展示就更好了
作者: qmzp    时间: 2024-9-13 18:11
感谢分享,目前遇到三个问题:第一个是问题延迟,第二个什么对话都会往chatgpt走,第三个是讲故事等大量文字tts会报错
作者: foxad    时间: 2024-9-14 07:32
qmzp 发表于 2024-9-13 18:11
感谢分享,目前遇到三个问题:第一个是问题延迟,第二个什么对话都会往chatgpt走,第三个是讲故事等大量文 ...

延迟的问题我也遇到,但是这个是处理机制的问题应该。对话修改可以在流中修改处理对象,帖子内有描述。
至于第三个问题,我还没用它讲过故事,所以……
作者: dabase    时间: 2024-10-22 15:20
谢谢分享,,不会用,希望大佬出小白教程,先谢谢了。
作者: yinghu183    时间: 2024-10-23 11:47
和我的思路一个样,这下省心了,拿来用就可以了,感谢分享
作者: xieyongmou    时间: 2024-11-23 10:53

谢谢分享,应该可行,回家试试。

作者: ldwnt    时间: 2024-12-15 00:23
foxad 发表于 2024-7-29 15:49
这里相当于自定义技能,只有将指定的唤醒词填到小爱里面,才不会触发没找到xx这样的提示。这个我也没有好 ...

这个一句话不是唤醒词吧,唤醒词是后面跟真正的指令,而这个一句话匹配到固定文本就结束了,无法接收动态指令,只是针对固定文本回复一句话而已
作者: Honour    时间: 2024-12-15 02:52
可以试试
作者: foxad    时间: 2024-12-15 10:37
ldwnt 发表于 2024-12-15 00:23
这个一句话不是唤醒词吧,唤醒词是后面跟真正的指令,而这个一句话匹配到固定文本就结束了,无法接收动态 ...

实际上我需要的不是指令。因为ha能获得你对小爱说了什么东西。将获得的指令丢给ha的助手处理,但是如果没有这个自定义的话,小爱会回复找不到这个设备之类。后续处理不是交给小爱处理的。
作者: kaattz    时间: 2025-1-31 17:38
本帖最后由 kaattz 于 2025-1-31 22:19 编辑

"助手测试"中修改数据“{"text":msg.payload,"language":"ZH-CN","agent_id":"conversation.chatgpt","conversation_id":"my_conversation_1"}”,language和conversation_id都不要。

还有米家是训练计划->个人训练,添加要说的唤醒词。用个人训练的唤醒词有个问题,就是说的话要一摸一样。

假如唤醒词是输入“打开餐厅的灯”,那么说“请打开餐厅的灯”,“打开餐厅灯”,小爱音箱都会按自己逻辑回应,虽然最后餐厅的灯都会打开



作者: foxad    时间: 2025-2-3 14:10
kaattz 发表于 2025-1-31 17:38
"助手测试"中修改数据“{"text":msg.payload,"language":"ZH-CN","agent_id":"conversation.chatgpt","conv ...

的确。如果说的词不准确的话 操作是没有问题的,因为操作逻辑是交给语音助手的。但是会说没有这个设备。自定义训练不支持模糊词匹配很伤脑筋
作者: misLia    时间: 2025-2-21 15:39
这一直是我想要的。我接入了智普AI,我将一部分实体公开了,在网页右上角的语音助手里,用文字测试了官方的HA助手和智普AI,是能实现“开关”功能的,但是用开发者工具里-“对话”选择官方助手就不行,智普就可以。另外不太明白那个对话标识符什么意思?似乎填不填不影响对话过程。
至于我为什么想用官方助手,因为我测试官方的助手在“开和关”能做到秒开秒关。所以我的想法,对于一些单纯开关的动作,让官方助手来执行。对于像空调这种需要有具体状态的,让大模型执行。
作者: w565612583    时间: 2025-2-21 16:35
学习一下
作者: foxad    时间: 2025-2-21 16:43
misLia 发表于 2025-2-21 15:39
这一直是我想要的。我接入了智普AI,我将一部分实体公开了,在网页右上角的语音助手里,用文字测试了官方的 ...

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

我看了你的帖子,找到原因了,我之前用官方助手时,语言要么没选,要么写的“中文”,周五我把它改成“zh-cn”就行了。最近刚买了小爱音箱,刚开始着手语音控制,所以相关的内容还不了解。哈哈,还得多学习。
作者: jon    时间: 2025-3-1 12:22
谢谢,出个抄作业的教程吧
作者: misLia    时间: 2025-3-10 15:12
foxad 发表于 2024-12-15 10:37
实际上我需要的不是指令。因为ha能获得你对小爱说了什么东西。将获得的指令丢给ha的助手处理,但是如果没 ...

想问下,按你这方法,触发条件要写很多啊。
作者: foxad    时间: 2025-3-10 16:55
misLia 发表于 2025-3-10 15:12
想问下,按你这方法,触发条件要写很多啊。

谁叫小爱不支持模糊词呢
作者: misLia    时间: 2025-3-11 11:21
foxad 发表于 2025-3-10 16:55
谁叫小爱不支持模糊词呢
  1. alias: AI控制测试
  2. description: ""
  3. triggers:
  4.   - trigger: state
  5.     entity_id:
  6.       - sensor.xiaomi_lx06_6ee3_conversation
  7.     to: null
  8. conditions:
  9.   - condition: template
  10.     value_template: "{{ '灯' in states('sensor.xiaomi_lx06_6ee3_conversation') }}"
  11. actions:
  12.   - action: conversation.process
  13.     metadata: {}
  14.     data:
  15.       text: "{{states('sensor.xiaomi_lx06_6ee3_conversation')}}"
  16.       agent_id: conversation.home_assistant
  17.       language: zh-cn
  18. mode: single
复制代码

早上刚才测试了下,可以不需要固定语言就可以控制所有的灯。只要包含“灯”这个关键词,就可以执行了。但是这也带来一个问题,需要给小爱加上N种对话技能只为控制一个灯。
作者: foxad    时间: 2025-3-11 16:48
misLia 发表于 2025-3-11 11:21
早上刚才测试了下,可以不需要固定语言就可以控制所有的灯。只要包含“灯”这个关键词,就可以执行了。 ...

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

我现在遇到的问题是不管给小爱一个什么指令,小爱和配置的大语言模型都会处理一遍。。。如何才能不让小爱处理,全都交给大模型呢?
作者: foxad    时间: 2025-7-6 21:07
本帖最后由 foxad 于 2025-7-6 21:08 编辑
dreamsafari 发表于 2025-7-4 20:54
感谢楼主

我现在遇到的问题是不管给小爱一个什么指令,小爱和配置的大语言模型都会处理一遍。。。如何才能 ...

米家中的自定义指令,就是前面说的训练计划。需要注意的是,填写的训练计划和你告诉小爱的要一致,否则会触发米家自身的操作逻辑。
如果有中枢网关的话,可以使用mi_home接入,然后在米家app中,只能-右上角+号-添加手动控制,结果为家居设备-中枢网关-产生虚拟事件。nr监听中枢网关的虚拟事件。这样的好处是回复更像直接接入米家。但是和前面方法存在同样的弊端:手动控制的名称和你告诉小爱也是要一致,否则无效。
作者: dreamsafari    时间: 2025-7-6 21:57
foxad 发表于 2025-7-6 21:07
米家中的自定义指令,就是前面说的训练计划。需要注意的是,填写的训练计划和你告诉小爱的要一致,否则会 ...

明白了,就是每一句话对应一个自定义指令是吧?然后小爱音箱里面设置一句话回复相当于是打断了小爱执行这个指令,否则的话就会小爱执行一次,大模型再执行一次




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