找回密码
 立即注册

微信扫码登录

搜索
楼主: caim1017

[技术讨论] 快2026年了,大家都用什么音箱TTS?

[复制链接]

36

主题

325

回帖

1451

积分

金牌会员

积分
1451
金钱
1090
HASS币
10
发表于 昨天 15:50 | 显示全部楼层
chenquanhao 发表于 2026-1-1 21:29
Microsoft Edge TTS
版本 0.7.7
无科学环境,确认可以。记得之前有段时间也是不行,以为是科学的问题,后来 ...

我先在用小爱音箱pro的播放文本进行播报。用的不舒服,因为在自动化里,如果有两段播报的话,需要用延时进行隔开。如果用等待音箱状态“空闲”来触发下一段播报的话,因为轮询的关系,不流畅。不知道edge的TTS,会有这种吗?另外,我之前就下载了edgeTTS,一直没用,也没配置。今天更新了0.7.7后,配置后,直接就是配置失败。不知道什么问题了。能解答下吗?
回复

使用道具 举报

25

主题

928

回帖

5557

积分

论坛元老

积分
5557
金钱
4599
HASS币
20
发表于 昨天 19:10 | 显示全部楼层
misLia 发表于 2026-1-15 15:50
我先在用小爱音箱pro的播放文本进行播报。用的不舒服,因为在自动化里,如果有两段播报的话,需要用延时 ...

你参考,延时有两种方法,一个是delay(适用于上一段语音时长相对稳定),一个是wait_for_trigger(适用于上一段语音时长不确定,加入超时继续continue_on_timeout),我这样用起来很稳定,没什么问题
actions:
  - data:
      media_player_entity_id: media_player.sonos_one_dlna
      message: 现在是古诗词时间:
      cache: true
      options:
        voice: zh-CN-XiaoxiaoNeural
        rate: +0%
        volume: +00%
    action: tts.speak
    target:
      entity_id: tts.edge_tts
  - delay:
      seconds: 3
  - data:
      media_player_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%
    action: tts.speak
    target:
      entity_id: tts.edge_tts
  - wait_for_trigger:
      - entity_id:
          - media_player.sonos_one_dlna
        to: idle
        for:
          seconds: 2
        trigger: state
    continue_on_timeout: true
    timeout:
      seconds: 8
  - data:
      media_player_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%
    action: tts.speak
    target:
      entity_id: tts.edge_tts
回复

使用道具 举报

36

主题

325

回帖

1451

积分

金牌会员

积分
1451
金钱
1090
HASS币
10
发表于 昨天 21:29 | 显示全部楼层
chenquanhao 发表于 2026-1-15 19:10
你参考,延时有两种方法,一个是delay(适用于上一段语音时长相对稳定),一个是wait_for_trigger(适用 ...

那看来方法大家都是一样的。可能你用tts,本地音响状态响应的及时,还是和设备有关系。我用小爱自己的tts,使用wait_for_trigger,没法用状态更新的太慢了,导致两段之间间隔太长了。另外我edge tts配置失败,我怀疑是我ha版本太低了,我是core2025.4.2。不知道你的是多少?
回复

使用道具 举报

36

主题

325

回帖

1451

积分

金牌会员

积分
1451
金钱
1090
HASS币
10
发表于 昨天 21:58 | 显示全部楼层
本帖最后由 misLia 于 2026-1-15 22:00 编辑
chenquanhao 发表于 2026-1-15 19:10
你参考,延时有两种方法,一个是delay(适用于上一段语音时长相对稳定),一个是wait_for_trigger(适用 ...

其实你这种是可以将两次播报合并成一次播报的。这个是我今天刚测试的。通过定义响应变量,让tts直接播放响应变量。但是这种方法也有局限性,变量里带了if后导致整个播报时间变的非常不固定了。后面如果还要接动作,就必须得用wait_for_trigger。
alias: 测试天气播报
sequence:
  - variables:
      base_text: >-
        早上好,我的主人们。今天是{{ now().strftime('%Y年%m月%d日') }} 
        {{['周一','周二','周三','周四','周五','周六','周日'][now().weekday()] }}。我将为您介绍下今天的天气。
        现在上海浦东新区天气{{states('sensor.tian_qi_miao_shu_2')}},温度{{state_attr('weather.he_feng_tian_qi_2','temperature')}}℃,
        最高温度{{states('sensor.max_temperature')}}℃,最低温度{{states('sensor.min_temperature')}}℃,
        {{state_attr('sensor.chuan_yi_zhi_shu_2','states')}}。
        空气质量{{states('sensor.kong_qi_zhi_liang_zhi_shu_ji_bie_2')}}。
        {{state_attr('sensor.zi_wai_xian_zhi_shu_2','states')}}
      temp_advice_text: >-
        {% set ti_gan = states('sensor.ti_gan_wen_du_2') | float %} {% if ti_gan
        > 29.99 %}
          上班骑电动车穿件防晒衣,注意防晒。
        {% elif ti_gan > 20.1 and ti_gan <= 29.99 %}
          天气舒适,上班骑电动车不需要特别防护。
        {% elif ti_gan > 14.1 and ti_gan <= 20.1 %}
          上班骑电动车穿件外套,会让你温暖一点。
        {% elif ti_gan <= 14.1 %}
          上班骑电动车穿好披风,注意保暖,别感冒了。
        {% endif %}
      air_quality_text: >-
        {% set air_quality = states('sensor.zong_he_kong_qi_zhi_liang_2') |
        float %} {% if air_quality > 179.9 %}
          空气质量不太好,出门记得戴口罩。
        {% else %}
          {# 空气质量良好时不需要额外播报 #}
        {% endif %}
      final_text: "{{ base_text }} {{ temp_advice_text }} {{ air_quality_text }} "
  - action: text.set_value
    data:
      value: "{{ final_text }}"
    target:
      entity_id: text.xiaomi_lx06_6ee3_play_text


回复

使用道具 举报

25

主题

928

回帖

5557

积分

论坛元老

积分
5557
金钱
4599
HASS币
20
发表于 昨天 23:41 | 显示全部楼层
misLia 发表于 2026-1-15 15:50
我先在用小爱音箱pro的播放文本进行播报。用的不舒服,因为在自动化里,如果有两段播报的话,需要用延时 ...

我也因为小爱同学可以主动唤醒买了一个小爱音箱art,不过用
回复

使用道具 举报

25

主题

928

回帖

5557

积分

论坛元老

积分
5557
金钱
4599
HASS币
20
发表于 半小时前 | 显示全部楼层
misLia 发表于 2026-1-15 21:29
那看来方法大家都是一样的。可能你用tts,本地音响状态响应的及时,还是和设备有关系。我用小爱自己的tts ...

因为小爱同学可以主动唤醒,也买了小爱音箱art,但是对回复内容(sensor.xiaomi_xxx_xxx_conversation,Content)小爱云端和ha识别的指令不一致。
小爱音箱是可以用tts的,但我用的有些小问题,比如tts语音会循环播放不会结束,然后小爱同学的实体也变成不可操作(小爱音箱app还能操作),要重载集成才能回复正常。所以就闲置了。
你说的edge_tts配置失败具体是怎么情况,忘记哪个ha版本开始,tts的配置改了,你看是不是这个问题。
动作从
“action: tts.edge_tts_say”
改成了
“action: tts.speak
    target:
      entity_id: tts.edge_tts“
例外,我分开播报主要是为了不同部分,配置不同语速和声调等。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2026-1-16 00:52 , Processed in 0.050465 second(s), 7 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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