al-one / hass-xiaomi-miot

Automatic integrate all Xiaomi devices to HomeAssistant via miot-spec, support Wi-Fi, BLE, ZigBee devices. 小米米家智能家居设备接入Hass集成
https://miot-spec.com
Apache License 2.0
4.47k stars 627 forks source link

关于精确把控小爱唤醒时机的问题 #457

Closed vincenthsing closed 2 years ago

vincenthsing commented 2 years ago

首先感谢作者提供如此好用的插件,让HA和小米组合起来如虎添翼。 当前在配置小爱主动问询场景的时候,遇到一些问题。

我的需求是先让小爱调用xiaomi_miot.intelligent_speaker播放一段文字,比如:房间湿度太低,是否需要打开加湿器。 然后当TTS播放完成立马调用xiaomi_miot.xiaoai_wakeup进入唤醒状态(其实在TTS的过程中就wake也是可以的,但是貌似不行,调用wake的话tts会被打断)。

在用HA的自动化配合这俩服务实现上述需求的过程中,我发现很难去把控wakeup的时机,tts文字特别固定的还好,通过ha的延时功能可以勉强把控住时机。但是TTS不固定的情况下,那体验就比较糟糕了,要么TTS没说完就被打断,要么说完了还要过个几秒才wakeup,加上小爱wakeup的时候没有提示音,你不知道什么时候应该说话,更不知道小爱有没有接收到你说的话,有可能你说完了她才被wakeup。

我个人总结问题如下(问题均基于ha的自动化或者脚本的action编排): xiaomi_miot.intelligent_speaker服务在做TTS调用时,无法根据实际情况将完成状态告知HA。当TTS内容过短时,TTS结束后还会等待几秒才会进入下一个action。当TTS内容过长时,则TTS还没播报完毕就进入下一个action并打断之前的TTS。

以上,不知道作者是否可以解决,或者有没有什么曲线救国的方案,还请不吝赐教,再次感谢作者!!!

al-one commented 2 years ago

服务xiaomi_miot.intelligent_speaker仅將文本发送给小爱音箱,TTS是在小爱内部进行的,插件无法播报时长,也不知道什么时候结束。

vincenthsing commented 2 years ago

服务xiaomi_miot.intelligent_speaker仅將文本发送给小爱音箱,TTS是在小爱内部进行的,插件无法播报时长,也不知道什么时候结束。

那有办法获取到音箱tts的状态吗,用于判断何时结束的?

al-one commented 2 years ago

无法获取。

vincenthsing commented 2 years ago

无法获取。

好的,谢谢:)