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

 找回密码
 立即注册
查看: 46668|回复: 11

[基础教程] 利用机顶盒实现TTS语音播报

[复制链接]

13

主题

121

帖子

795

积分

高级会员

Rank: 4

积分
795
金钱
669
HASS币
20
发表于 2021-4-24 18:08:02 | 显示全部楼层 |阅读模式

                               
登录/注册后可看大图
一、前言

网上有许多homeassistant自动播报天气的教程,但这些教程比较老,都是一两年以前的版本,随着homeassistant版本的升级,有些代码会报错。另外,本人的homeassistant配置在群辉docker中,与教程中基于树莓派的homeassistant也有区别,群辉没有音频输出端口,因此无法通过安装VLC外接音箱输出音频,只能通过局域网串流的方式发送到局域网音频设备进行播放,通过1天的调试终于成功解决这一问题。


二、搭建环境
  • 主机型号:群辉DS918+
  • DSM版本:DSM 6.2.3-25426 Update 3
  • Docker版本:18.09.0-0519
  • 安装类型:Home Assistant Container
  • Homeassistant版本: core-2021.4.6
  • 语音合成:百度TTS
  • 音频播放设备:海美迪机顶盒+polk回音壁

三、方法步骤
1. 群辉安装Docker套件

套件中心中搜多“docker”进行安装。

2. 安装Homeassistant

官网有基于群辉docker的安装教程,网上也有很多类似教程,过程非常简单,安装过程不再详述。

3. 安装百度TTS

百度云控制台

网上许多类似教程,安装过程非常简单,简单几步就可以安装好,因此不再详述,具体可以度娘,这里只提醒一点要注意的地方,百度TTS需要申请百度开发者账号,然后前往人工智能-语音技术,点击语音合成选项,再点击上方的创建应用。


                               
登录/注册后可看大图

应用创建好后就可以看到AppID、API Key、Secret Key等信息。这还没完,百度TTS是收费项目,免费使用是需要申请限额的,如果不申请限额,后续是无法调用百度TTS服务,Homeassistant会报错,所以别忘记了领取免费额度,这是很多教程都没有注明的“”。


                               
登录/注册后可看大图


4. 设置语音播放实体

网上教程都是安装VLC、kodi等实体,现在很多电视机顶盒自带局域网播放功能,因此无需另外安装语音播放实体,只需将机顶盒接入路由器,省去了一些中间步骤。然后编辑Homeassistant的configuration.yaml文件,在空白处填写一下代码:

# 自动发现DLNA设备
discovery:
  enable:
    - dlna_dmr

然后重启Homeassistant,便可自动发现海美迪机顶盒,作为TTS的语音播放器。


                               
登录/注册后可看大图

我的机顶盒中也安装了kodi,所以kodi也被发现了,实际上我是在设置kodi中无意中发现机顶盒可以作为播放器使用的,以后就不用安装kodi,简化了步骤,也不用安装过多的软件,软件越少越好,够用就行。

5. 配置自动化程序

配置自动化程序的时候也遇到了一个坑,网上的教程虽然给出了代码,但在调用TTS过程中始终报错,不知道为啥,本人不是程序猿,和大多数人一样,对于Homeassistant也是个小白,度娘了一天,看得头晕脑胀,还是不会。后来看到一篇文章,具体哪篇文章忘记了,大概说的是Homeassistant的发展历程,以前基本上撸代码,可视化很少,发展到现在,很多东西做了可视化的处理,但同时也保留了代码编辑,因此我就找呀找呀找,终于被我发现了一片新大陆,自动化程序编辑的可视化面板,这可真是我这种小白的福音,感谢那位Homeassistant的历史老师,激发了我的灵感。


                               
登录/注册后可看大图

点击配置-自动化,再点击右下角的添加自动化。

点击“从空的自动化开始”,开始进入自动化的配置


                               
登录/注册后可看大图

名字随便起,描述也随意,模式,我也不知道啥意思,第一次选了个“单点”,结果自动化没有调用,所以我猜测这个选项意思是必须用户点击才能调用。重启估计是上次调用后重启Homeassistant才能再次调用,就一个“队列”比较像,选了“队列”,长度默认10没改,启用/禁用自动化默认开启不用改。


                               
登录/注册后可看大图


触发条件选项中有多个出发条件可供选择,我设置的是早上7点30分开始播报,另外还可以设置多个触发条件。


                               
登录/注册后可看大图

环境条件是自动化流程中的逻辑处理部分,其中给出了多个环境条件类型,最简单的就是数值型,同样可以添加多个环境条件。


                               
登录/注册后可看大图

最后就是动作设置部分,简单的动作可以通过可视化编辑器编辑,稍微复杂一点的智能通过撸代码的方式编辑,以下便是我的配置信息,传感器利用的是和风天气组件的传感器,如果抄作业,必须安装和风天气组件,具体教程自行度娘,非常简单,这里就不展开。


                               
登录/注册后可看大图


四、结束语

Homeassistant发展到现在,有很多版本,每次升级可以说都会带来一些坑,以前的教程就会失效,好在现在的Homeassistant的可视化程度逐渐完善,一方面可以减少我这种小白学习负担,另一方面可以减少“出坑率”。

此外这次发现机顶盒可以作为播放器使用也减少了一个配置步骤,家里没有树莓派,没有蓝牙音箱一样可以实现语音播报的功能,只不过机顶盒必须24小时开机才行。



评分

参与人数 2金钱 +25 HASS币 +20 收起 理由
wang767034558 + 5
+ 20 + 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

11

主题

313

帖子

1324

积分

金牌会员

Rank: 6Rank: 6

积分
1324
金钱
1011
HASS币
10
发表于 2021-4-24 18:52:31 | 显示全部楼层
这么认真规范的新人贴么?不!一定是隐藏大佬
回复

使用道具 举报

33

主题

2196

帖子

5838

积分

论坛元老

Rank: 8Rank: 8

积分
5838
金钱
3642
HASS币
60
QQ
发表于 2021-4-24 18:57:21 | 显示全部楼层
膜拜大佬……
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

43

主题

412

帖子

3806

积分

元老级技术达人

积分
3806
金钱
3389
HASS币
136
发表于 2021-4-24 19:57:59 来自手机 | 显示全部楼层
骨灰级玩家,先赞后嫖
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2021-4-24 21:59:04 | 显示全部楼层
大佬请收下我的膝盖
Nero
回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2021-4-24 23:20:07 | 显示全部楼层
本帖最后由 27hh 于 2021-4-24 23:21 编辑

"模式"不知道啥意思可以点那个链接看说明啊……
举个例子:设置自动化:按下按钮→TTS说“你”;延迟10秒;TTS说“好”
然后你在第0秒、第5秒、第8秒时按下按钮,结果是:
单点:(0s)(10s)
重启:(0s)(5s)(8s)(18s)
队列:(0s)(10s)好你(20s)好你(30s)
并行:(0s)(5s)(8s)(10s)(15s)(18s)

明白了不?
回复

使用道具 举报

16

主题

151

帖子

1070

积分

金牌会员

Rank: 6Rank: 6

积分
1070
金钱
914
HASS币
30
发表于 2021-4-25 14:15:15 | 显示全部楼层
但是机顶盒/电视不是随时都打开的吧~实用性上是否稍打折扣
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2021-4-25 14:51:43 | 显示全部楼层
楼主对单点的理解有偏差,单点是单次执行的意思,重启是如果动作中有执行不完的,会重新开启一个自动化线程,队列是这个自动化实例全部执行完毕才能触发下一轮,并列是这次被触发如果没有完全执行完毕,下次再触发就会重新开启一个自动化实例。
因为动作中有可能有挂起操作,比如等待 wait for  或者 delay 延时。
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2021-4-25 14:54:50 | 显示全部楼层
27hh 发表于 2021-4-24 23:20
"模式"不知道啥意思可以点那个链接看说明啊……
举个例子:设置自动化:按下按钮→TTS说“你”;延迟10秒; ...

超版讲的很明白,连调试结果都发出来了。
所以,一般情况下,单点和重启是够用的,队列和并行简单自动化 执行结果会与预期效果不匹配。
回复

使用道具 举报

0

主题

4

帖子

10

积分

新手上路

Rank: 1

积分
10
金钱
6
HASS币
0
发表于 2021-4-29 13:33:31 | 显示全部楼层
哈哈哈,楼主我有个小想法,比如用个什么红外遥控之类的创建一个自动化,你7:30播报,那就让这个自动化7:25执行开启机顶盒,然后如果平时播报5分钟,就再创建一个自动化7:48执行关闭机顶盒。
完美!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 00:47 , Processed in 0.152608 second(s), 40 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表