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将立刻开始语音播报天气信息。
到此自动语音播报天气 就完成了。
关注一下,更多精彩,不容错过!
Home Assistant系列 -- 自动语音播报天气的更多相关文章
- Home Assistant系列美化篇——替换天气 UI
		
替换天气组件 weather 的默认 UI,生成美观大方的气象卡片. Home Assistant 原生的天气平台不少,国内用户常用的有雅虎天气和 Darksky.其他论坛和社区也有分享自制的和风.彩 ...
 - PHP实现智能语音播报
		
原文地址 https://www.jianshu.com/p/91a046ec6ebc 大家估计都知道现在很多AI音响能够给你播报天气,叫你起床...甚至能够接受语音指令!所谓的人工智能音响,听起来很 ...
 - 智能家居系统 Home Assistant 系列 --安装系统之Windows
		
Home Assistant 是一个成熟完整的基于 Python 的智能家居系统. 首先得安装Python环境.在浏览器中访问Python官网 www.python.org 进入Downloads中的 ...
 - iOS10 语音播报填坑详解(解决串行播报中断问题)
		
iOS10 语音播报填坑详解(解决串行播报中断问题) 在来聊这类需求的解决方案之前,咱们还是先来聊一聊这类需求的真实使用场景:语音播报.语音播报需求运用最为广泛的应该是收银对账了,就类似于支付宝.微信 ...
 - Home Assistant系列 -- 基于树莓派安装并设置自启动
		
Home Assistant 是当前智能家居最火热的开源DIY 软件,之前的文章 智能家居系统 Home Assistant 系列 --介绍篇 已经详细介绍过了,这里就不详细介绍了,今天介绍 如何 ...
 - Android语音播报、后台播报、语音识别
		
Android语音播报.后台播报.语音识别 本文介绍使用讯飞语音实现语音播报.语音识别功能. 讯飞开放平台:http://www.xfyun.cn/index.php/default/index 程序 ...
 - iOS如何实现语音播报及后台播放
		
最近项目刚刚交付,偶然间用到了语音播报和语音搜索的功能.语音搜索我用的是讯飞的demo,感觉效果还不错,感兴趣的话可以去官网上面下载demo,里面讲的特别的详细,不过稍显麻烦一些.语音播报讯飞也有de ...
 - SpeechLib 语音播报
		
SpeechLib这的dll专门用来播放语音,能够识别英语.简体和繁体.并且可以播放声音文件,支持WAV格式,但不支持MP3.在报警场合下已经够用了. 基本播放语音及文件.支持异步. using Sy ...
 - 语音合成,语音播报功能(系统)-b
		
第一次接触语音合成,只实现了很简单的功能,记录一下,以后免得去网上四处找资料 最近在做高德地图导航的时候有个语音播报的功能,高德sdk已经提供了要语音的字符串.我要做的就是把这些字符串读出声音来即可. ...
 
随机推荐
- VS2013个版本密钥(亲测可用)
			
Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9 Visual Studio Premium 2013 KEY(密钥) ...
 - Java Spring中@Query中使用JPQL LIKE 写法
			
两种方式 // 一 public List<TestEntity> searchByJpql(){ String jpql = "select k from TestEntity ...
 - 为什么java中只允许继承一个类?
			
一个类只能继承一个其他的类 在Java语言中禁止多重继承:一个类可以具有多个直接父类.多重继承不合法的原因是容易引发意义不明确.例如,有一个类C,如果允许它同时继承A类与B类(class C ex ...
 - APRoundedButton
			
APRoundedButton https://github.com/elpsk/APRoundedButton 效果: 源码: APRoundedButton.h // // Created by ...
 - C++显式隐式构造函数
			
https://blog.csdn.net/starlee/article/details/1331268#comments
 - php给图片加文字
			
在图片上加文字是论坛,博客,新闻网站上最喜欢用的功能,防止盗图.这里看看代码是如何实现的. 首先还是upload_image.php这个文件,注意这里的caption文本框中输入的内容最终会写到图片上 ...
 - Linq to Entities,ADO.NET Entity Framework 模型优先
			
一.概念: Database First(数据库优先):存在的DB------------->生成Data Model .edmx文件 Model First(模型优先):Data Model ...
 - 栋哥你好,让我们回顾最初认识C++的时候(课堂作业)
			
计算器的第一步,至今还记记忆犹新,本次的课堂作业,便是那个框架.闲话少叙,代码如下传送门: Main.cpp #include "stdafx.h" #include<ios ...
 - iOS 内存泄漏监测自动化
			
在 Android 上,Square 这家公司提供了非常有名的工具: leakcanary ,来帮助开发者们在日常开发过程中就能够发现内存泄漏.但在 iOS 上呢?在 Google 的时候,我发现了两 ...
 - MFC各个控件之间运用SendMessage()传送CString和char[]字符串,以及int类型数据
			
LRESULT SendMessage( HWND hWnd, // handle to destination window UINT Msg, // message WPARAM wParam, ...