Assist 卫星实体

Assist 卫星实体表示设备中由 Assist 管道驱动的语音助手能力。具有此类实体的设备可以让用户通过语音控制 Home Assistant。

Assist 卫星实体源自homeassistant.components.assist_satellite.AssistSatelliteEntity

特性

名称类型默认值说明
pipeline_entity_idstr; NoneNone对应 select 实体的 ID,该实体用于选择语音管道;也可以为 None
vad_sensitivity_entity_idstr; NoneNone带有 语音活动检测灵敏度Noneselect 实体的 ID。
tts_optionsdict; NoneNone响应时传递给文本转语音系统的选项。

状态

AssistSatelliteEntity 的状态跟随当前运行的语音管道AssistSatelliteState 枚举定义了所有可能状态。

Tip

当文本转语音响应播放完成并需要返回 IDLE 状态时,您必须在实体上调用 tts_response_finished 方法。

常量说明
IDLE设备正在等待用户输入,例如唤醒词或按下按钮。
LISTENING设备正在通过语音命令将音频传输到 Home Assistant。
PROCESSINGHome Assistant 正在处理语音命令。
RESPONDING设备正在说出响应。

支持的功能

支持的功能通过使用 AssistSatelliteEntityFeature 枚举中的值来定义 和 使用按位或 (|) 运算符进行组合。

说明
ANNOUNCE设备支持远程触发公告。实现 async_announce 方法以从 AssistSatelliteAnnouncement 播放提供的 media_id。仅当公告在设备上播放完毕后,此方法才应返回。
START_CONVERSATION设备支持远程触发对话,播放公告,然后监听一个或多个语音命令。实现 async_start_conversation 方法,从 AssistSatelliteAnnouncement 播放提供的 media_id,然后监听语音命令。此方法仅应在公告播放完毕后返回。

方法

运行管道并处理事件

卫星实体应仅通过 async_accept_pipeline_from_satellite 方法运行Assist 管道管道事件则通过实现 on_pipeline_event 方法处理。

当管道运行时,卫星实体的状态会自动更新,但 RESPONDINGIDLE 的切换除外。当设备播报完响应后,开发者必须调用 tts_response_finished 方法。

获取配置

async_get_configuration 方法必须返回(缓存的)AssistSatelliteConfiguration。如果实体必须与设备通信以检索配置,则应在初始化期间进行。

WebSocket 命令可用于获取实体配置。

设置配置

async_set_configuration 方法更新设备的配置,并且仅在设备和 Home Assistant 的 AssistSatelliteConfiguration 同步后才返回。

WebSocket 命令可用于设置活动唤醒词。

公告

如果设备具有 ANNOUNCE 支持的功能,则应实现 async_announce 方法,在 AssistSatelliteAnnouncement 中播放提供的 media_id。如果提供 preannouncement_media_id,则应先于 media_id 播放。 只有在公告于设备上播放完成后,async_announce 方法才应返回。

公告动作 可用于自动触发公告。

开始对话

如果设备具有 START_CONVERSATION 支持的功能,则应实现 async_start_conversation 方法,以便:

  1. AssistSatelliteAnnouncement 中播放 preannouncement_media_id(如果提供)
  2. AssistSatelliteAnnouncement 中播放提供的 media_id
  3. 监听一条或多条后续语音命令

只有在公告于设备上播放完成后,async_start_conversation 方法才应返回。此后,用户与卫星之间的对话会继续进行。

开始对话动作 可用于自动发起对话。

WebSocket API

拦截唤醒词

该集成提供了一个 WebSocket API,用于拦截唤醒词检测并通知用户。语音向导使用它来帮助用户登录并熟悉唤醒词。

{
  "type": "assist_satellite/intercept_wake_word",
  "entity_id": "assist_satellite.living_room"
}

实体 ID 必须对应一个支持 ANNOUNCE 功能的 Assist 卫星实体。

一旦检测到唤醒词,就会返回一个响应,如下所示:

{
  "wake_word_phrase": "okay nabu"
}

获取卫星配置

卫星的当前配置,包括可用和活动的唤醒词,可以通过以下方式检索:

{
  "type": "assist_satellite/get_configuration",
  "entity_id": ENTITY_ID
}

将返回如下响应:

{
  "active_wake_words": [
    "1234"
  ],
  "available_wake_words": [
    {
      "id": "1234",
      "trained_languages": [
        "en"
      ],
      "wake_word": "okay nabu"
    },
    {
      "id": "5678",
      "trained_languages": [
        "en"
      ],
      "wake_word": "hey jarvis"
    }
  ],
  "max_active_wake_words": 1,
  "pipeline_entity_id": "select.pipeline_entity",
  "vad_entity_id": "select.vad_entity"
}

active_wake_words 列表包含来自 available_wake_words 的唤醒词的 ID。

pipeline_entity_id 包含控制设备将运行的管道的选择实体的 ID。 vad_entity_id 包含具有语音活动检测器 (VAD) 灵敏度级别的所选实体的 ID。

设置活动唤醒词

使用以下命令设置活动唤醒词:

{
  "type": "assist_satellite/set_wake_words",
  "entity_id": ENTITY_ID,
  "wake_word_ids": ["1234", "5678"]
}

wake_word_ids 必须包含来自 assist_satellite/get_configuration 命令的 available_wake_words 列表中的 ID。 wake_word_ids 的大小也不应超过 max_active_wake_words