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

 找回密码
 立即注册
查看: 656|回复: 6

[求助] 多条tts如何顺滑播报?

[复制链接]

30

主题

276

帖子

1667

积分

金牌会员

Rank: 6Rank: 6

积分
1667
金钱
1391
HASS币
0
发表于 2023-11-24 14:41:59 | 显示全部楼层 |阅读模式
有一个问题,比如我设置的一个闹铃:
1.轻音乐播放30s;
2.播一条天气预报(tts天气预报实体),如果今天气温下降明显会添加提醒,如果今天大概率会下雨也会插播提醒;
3.然后播放音乐。
那么这里就不知道tts到底多少时间会播放结束,如果直接设置一个10s时间给天气预报,可能有时候天气预报已经结束了,要等一会儿才有音乐,要么就是天气预报没有结束被打断了,目前我是用了两个音响,有没有更好的解决办法?


回复

使用道具 举报

15

主题

314

帖子

2298

积分

金牌会员

Rank: 6Rank: 6

积分
2298
金钱
1984
HASS币
0
发表于 2023-11-24 14:54:02 来自手机 | 显示全部楼层
论坛里搜一下Chime TTS
回复

使用道具 举报

30

主题

276

帖子

1667

积分

金牌会员

Rank: 6Rank: 6

积分
1667
金钱
1391
HASS币
0
 楼主| 发表于 2023-11-24 16:06:32 | 显示全部楼层
cjnt007 发表于 2023-11-24 14:54
论坛里搜一下Chime TTS

是个很棒的解决办法,就是这样需要在第三步中使用到的是本地的有音乐文件,如果使用的是云音乐貌似还是不好操作。
回复

使用道具 举报

4

主题

81

帖子

1186

积分

金牌会员

Rank: 6Rank: 6

积分
1186
金钱
1105
HASS币
0
发表于 2023-11-25 07:53:13 | 显示全部楼层
上次我好象看到了一个大佬写的一个TTL排序流程,我忘了在那里了,你到论坛里找一下试试,
回复

使用道具 举报

24

主题

883

帖子

4996

积分

论坛元老

Rank: 8Rank: 8

积分
4996
金钱
4108
HASS币
20
发表于 2023-11-25 13:23:22 | 显示全部楼层
我是用播放器播放tts的状态,控制下一段播报内容,即使等待播放器状态为空闲(上一段tts播放结束),再执行下一段tts的播放
action:
  - service: sonos.snapshot
    data:
      entity_id: media_player.sonos_one
  - service: media_player.volume_set
    data:
      volume_level: 0.6
    target:
      entity_id:
        - media_player.sonos_one_dlna
  - service: tts.edge_tts_say
    data:
      entity_id: media_player.sonos_one_dlna
      message: 现在是古诗词时间:
      cache: true
      options:
        voice: zh-CN-XiaoxiaoNeural
        rate: +0%
        volume: +00%
  - delay:
      hours: 0
      minutes: 0
      seconds: 3
      milliseconds: 0
  - service: tts.edge_tts_say
    data:
      entity_id: media_player.sonos_one_dlna
      message: >-
        {{ state_attr('sensor.short_part_of_poem','origin')['title'] }}。作者{{
        state_attr('sensor.short_part_of_poem','origin')['dynasty'] }}  • {{ 
        state_attr('sensor.short_part_of_poem','origin')['author'] }}。
      options:
        voice: zh-CN-XiaoyiNeural
        rate: "-10%"
        volume: +00%
  - wait_for_trigger:
      - platform: state
        entity_id:
          - media_player.sonos_one_dlna
        to: idle
        for:
          hours: 0
          minutes: 0
          seconds: 2
    continue_on_timeout: false
  - service: tts.edge_tts_say
    data:
      entity_id: media_player.sonos_one_dlna
      message: "{{ state_attr('sensor.short_part_of_poem','origin')['content'] }}"
      options:
        voice: zh-CN-XiaoyiNeural
        rate: "-20%"
        volume: +00%
  - wait_for_trigger:
      - platform: state
        entity_id:
          - media_player.sonos_one_dlna
        to: idle
        for:
          hours: 0
          minutes: 0
          seconds: 3
    continue_on_timeout: false
  - service: sonos.restore
    data:
      entity_id: media_player.sonos_one

评分

参与人数 1金钱 +5 收起 理由
justion + 5 感谢,又是一个思路

查看全部评分

回复

使用道具 举报

30

主题

276

帖子

1667

积分

金牌会员

Rank: 6Rank: 6

积分
1667
金钱
1391
HASS币
0
 楼主| 发表于 2023-11-25 18:45:31 | 显示全部楼层
chenquanhao 发表于 2023-11-25 13:23
我是用播放器播放tts的状态,控制下一段播报内容,即使等待播放器状态为空闲(上一段tts播放结束),再执行 ...

我才发现,播放器的状态里,有一个media_duration的属性,后面跟着的是数值,应该是秒数,也就是每一条tts会自动有个时间给出来。
回复

使用道具 举报

24

主题

883

帖子

4996

积分

论坛元老

Rank: 8Rank: 8

积分
4996
金钱
4108
HASS币
20
发表于 2023-11-26 11:03:56 | 显示全部楼层
justion 发表于 2023-11-25 18:45
我才发现,播放器的状态里,有一个media_duration的属性,后面跟着的是数值,应该是秒数,也就是每一条tt ...

是哦,我看了下也对,不管是播放tts或者媒体都有这个属性,是整个播放文件的长度
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-17 11:24 , Processed in 0.134864 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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