Micro Wake Word
ESPHome 实现了来自 microWakeWord 的设备端唤醒词检测框架。 此存储库/库允许您为 ESPHome 设备创建自定义唤醒词。
训练过程在 microWakeWord GitHub 存储库 中描述。
# 简写名称micro_wake_word: models: - model: okay_nabu
# GitHub 简写 URLmicro_wake_word: models: - model: github://esphome/micro-wake-word-models/models/v2/okay_nabu.json-
stop_after_detection (可选, boolean):检测到唤醒词后是否停止组件。默认为
true。 -
models (必需, list):要使用的模型。只有第一个模型在首次启动时默认启用。然后每个模型的启用状态会保存到闪存中或从闪存中恢复。
-
id (可选, ID):用于下面模型动作的可选 ID。
-
model (必需, string):可以是以下之一:
-
官方 ESPHome 模型存储库 中存在的模型简单名称。 例如
okay_nabu。 -
模型 JSON 文件的 GitHub 简写 URL。 例如
github://esphome/micro-wake-word-models/models/okay_nabu.json@main。 -
模型 JSON 文件的完整 URL。 例如
https://github.com/esphome/micro-wake-word-models/raw/main/models/okay_nabu.json。
-
-
probability_cutoff (可选, percentage):唤醒词检测的概率阈值。 如果唤醒词的概率低于此值,则不会检测到唤醒词。 较大的值会减少错误接受的数量,但会增加错误拒绝的数量。
-
sliding_window_size (可选, int):唤醒词检测的滑动窗口平均大小。较小的值会降低延迟,但可能会增加错误接受的数量。
-
internal (可选, boolean):唤醒词模型是设备内部的,无法在 Home Assistant 中启用/禁用。
-
-
on_wake_word_detected (可选, 自动化):检测到唤醒词时执行的自动化。 模型清单中的
wake_word短语作为std::string提供给此自动化中的任何动作。 -
vad (可选, model):启用语音活动检测模型以减少非语音声音的错误接受。
-
model (可选, string):可以是以下之一:
-
模型 JSON 文件的 GitHub 简写 URL。 例如
github://esphome/micro-wake-word-models/models/v2/vad.json@main。 -
模型 JSON 文件的完整 URL。 例如
https://github.com/esphome/micro-wake-word-models/raw/main/models/v2/vad.json。
-
-
probability_cutoff (可选, percentage):语音活动检测的概率阈值。 如果概率低于此值,则不会接受任何唤醒词。 较大的值会减少错误接受的数量,但会增加错误拒绝的数量。
-
sliding_window_size (可选, int):语音活动检测的滑动窗口平均大小。平均概率与
probability_cutoff比较以确定是否检测到语音活动。
-
probability_cutoff 和 sliding_window_size 由 JSON 文件提供,但可以在 YAML 中覆盖。默认的 VAD 模型通过 vad 配置变量提供,但可以在 YAML 中覆盖为不同的模型。
micro_wake_word.start 动作
Section titled “micro_wake_word.start 动作”启动唤醒词检测。
micro_wake_word.stop 动作
Section titled “micro_wake_word.stop 动作”停止唤醒词检测。
micro_wake_word.enable_model 动作
Section titled “micro_wake_word.enable_model 动作”on_...: then: - micro_wake_word.enable_model: model_id启用指定的模型,以便在组件运行时可以检测到它。
micro_wake_word.disable_model 动作
Section titled “micro_wake_word.disable_model 动作”on_...: then: - micro_wake_word.disable_model: model_id禁用指定的模型,以便在组件运行时不会检测到它。
micro_wake_word.is_running 条件
Section titled “micro_wake_word.is_running 条件”检查组件是否正在运行以检测唤醒词。
micro_wake_word.model_is_enabled 条件
Section titled “micro_wake_word.model_is_enabled 条件”检查给定的模型是否已启用。
micro_wake_word: microphone: microphone: ... channels: 0 gain_factor: 4 vad: models: - model: okay_nabu id: okay_nabu_model - model: hey_mycroft id: hey_mycroft_modelwake_word: on_wake_word_detected: then: - voice_assistant.start: wake_word: !lambda return wake_word;模型 JSON
Section titled “模型 JSON”{ "type": "micro", "wake_word": "okay nabu", "author": "Kevin Ahrendt", "website": "https://www.kevinahrendt.com/", "model": "stream_state_internal_quant.tflite", "version": 2, "micro": { "probability_cutoff": 0.97, "sliding_window_size": 5, "feature_step_size": 10, "tensor_arena_size": 22860, "minimum_esphome_version": "2024.7" }}模型 JSON 文件包含以下字段,除非另有说明,否则都是必需的:
-
type (string):模型的类型。应该始终是
micro。 -
wake_word (string):模型训练检测的唤醒词。
-
author (string):训练模型的作者姓名。
-
website (可选 string):作者的网站。
-
model (string):TFLite 训练模型文件的相对或绝对路径或 URL。
-
trained_languages (list of strings):训练时使用的唤醒词样本的主要语言/发音列表。
-
version (int):JSON 架构的版本。当前版本为
2。 -
micro (object):microWakeWord 特定配置。
-
probability_cutoff (float):唤醒词检测的概率阈值。 如果唤醒词的概率低于此值,则不会检测到唤醒词。
-
sliding_window_size (int):唤醒词检测的滑动窗口大小。唤醒词对滑动窗口中的所有概率取平均值,而 VAD 模型使用滑动窗口中所有概率的最大值。
-
feature_step_size (int):频谱图特征生成的步长(以毫秒为单位)。
-
tensor_arena_size (int):张量竞技场的最小大小(以字节为单位)。
-
minimum_esphome_version (version):使用此模型所需的最低 ESPHome 版本。
-