本帖最后由 llmmkc123 于 2019-5-25 20:53 编辑
通过https://bbs.hassbian.com/thread-5439-1-1.html这个帖子,把树莓派成功连接了蓝牙音箱。在使用tts的时候发现有个问题,就是需要触发多次才能发声。比如,我打开门时要求语音自动播报当前温度,但是得重复打开几次门才能成功播报。感觉是tts还没把语音合成发下来,本地就把声音发到mdp那边去了。如果把缓存设置成true就没事,但是这样就不能实时播报温度这些数据了。谁有试过这问题,求教。
这个是第一次触发自动化的报错日志
这个是第二次触发自动化报错日志
- alias: auto_huijia
hide_entity: true
trigger:
- platform: state
entity_id: binary_sensor.door_window_sensor_158d00019facdc
from: 'off'
to: 'on'
condition:
- condition: state
entity_id: binary_sensor.motion_sensor_158d0001d8e98d
state: 'off'
action:
- service: script.test
- delay:
seconds: 5
- service: script.test
test:
sequence:
- service: tts.baidu_say
data_template:
entity_id: media_player.mpd
message: >
主人
{% if now().hour >= 6 and now().hour < 9 %}
早上好,欢迎回家,
{%- elif now().hour >= 9 and now().hour < 12 %}
上午好,欢迎回家,
{%- elif now().hour >= 12 and now().hour < 13 %}
中午好,欢迎回家,
{%- elif now().hour >= 13 and now().hour < 18 %}
下午好,欢迎回家,
{%- elif now().hour >= 18 and now().hour < 23 %}
晚上好,欢迎回家,
{% else %}
,夜深了,请注意休息哦,
{% endif %}
当前室内温度为{{states.sensor.temperature_158d000171bfdc.state}}摄氏度,
cache: false
这是我的自动化播报脚本,自动化触发成功时自动调用。
============================================================================
通过一个月的摸索,终于在大神的支持下,搞清楚了原因。下面分享下解决方法。原来是因为ha的mpd播放器不能接受空字符导致的。所以在tts上把空字符去掉,完美解决。
1、树莓派输入docker exec -it homeassistant bash
2、vi /usr/local/lib/python3.7/site-packages/homeassistant/components/baidu/tts.py
3、def get_tts_audio(self, message, language, options=None): 这句话后加入
import re
message = re.sub(r'\s','',message)
保存,重启ha,解决。
|