Home Assistant系列 -- 自动语音播报天气
在树莓派上要让 Home Assistant 发声朗读 ,从硬件上我们需要 3.5mm插口音箱(耳机)或usb口音箱(耳机)。软件方面 我们需要一个媒体播放器以及 tts ( 将文字转化为语音的服务 )。
1. 安装媒体播放器
使用命令 sudo apt-getinstall vlc 在树莓派上安装 VLC 媒体播放器。
因为树莓派有多个音频输出设备,我们在它的图形界面中设置音频输出设备为 Analog 也就是它的耳机插口。
打开 Home Assistant 的配置文件 configuration.yaml 配置 VLC 媒体播放器。在配置中添加如下内容 保存退出:
media_player:
- platform: vlc
2. 配置TTS 语音服务
国内外有多家大厂都提供tts 服务,这里我选择的是使用百度的tts,当然大家也可以使用谷歌或微软。
首先需要登录百度云官网,注册百度语音服务。注册完成后,保存appid、apikey及secretkey三个数值备用。打开Home Assistant 的configuration.yaml配置文件。在配置文件中找到tts配置节点修改为如下内容:
tts: - platform: baidu #app_id,api_key,secret_key从百度云上注册得到 app_id: xxxxxxxxxx api_key: xxxxxxxxxx secret_key: xxxxxxxxxx #speed:语速0-9(缺省5) #pitch:语调0-9(缺省5) #volume:音量0-15(缺省5) #person:声音(0:女,1:男,3:百度合成,4:百度合成,缺省0) speed: 5 pitch: 5 volume: 15 person: 0
保存配置后,重新启动Home Assistant,使配置生效。打开 HA 的 web界面这时就会在面板中看到vlc 媒体播放器。打开后 在其中输入文字 系统就会调用tts服务 将文字转化为语音,然后用媒体播放器播放出来。
3. 配置自动化
打开 HA 的配置文件 configuration.yaml ,在文件中填入如下内容:
- alias: weather_report initial_state: true trigger: - platform: time hours: 7 minutes: 30 seconds: 0 condition: condition: numeric_state entity_id: sensor.weather_temperature above: 30 #判断气温是否高于30°C action: - service: tts.baidu_say data_template: entity_id: media_player.vlc message: "现在播报天气信息。温度,{{states('sensor.weather_temperature')}}°C, 湿度{{states('sensor.weather_humidity')}},风速{{states('sensor.weather_wind_speed')}}, 气压{{states('sensor.weather_pressure')}}"
以上配置是接入了天气组件的,有朋友不知道如何接入天气请看这篇文章智能家居系统 Home Assistant 系列 --配置天气信息
保存配置后,重新启动Home Assistant,使配置生效。重启完成后,新添加的自动化将自动出现在web操作界面上。按照此自动化规则,Home Assistant将在每天早上7点30分判断气温是否高于30°C,如果高于该温度则语音播报天气信息。
当然也可以手工触发该自动化规则,点击自动化面板上左下角操作图标。
此时Home Assistant将立刻开始语音播报天气信息。
到此自动语音播报天气 就完成了。
关注一下,更多精彩,不容错过!
👇👇👇