Assist 流水线
Assist 流水线 集成执行语音助手的常见步骤:
- 唤醒词检测
- 语音转文字
- 意图识别
- 文字转语音
流水线通过 WebSocket API 运行:
以下输入字段可用:
事件
流水线运行过程中,会通过 WebSocket 连接发出事件。 可能发出的事件如下:
错误代码
流水线 error 事件返回以下代码:
wake-engine-missing- 未安装唤醒词引擎wake-provider-missing- 配置的唤醒词 provider 不可用wake-stream-failed- 唤醒词检测期间出现意外错误wake-word-timeout- 超时前未检测到唤醒词stt-provider-missing- 配置的语音转文字 provider 不可用stt-provider-unsupported-metadata- 语音转文字 provider 不支持音频格式(采样率等)stt-stream-failed- 语音转文字期间出现意外错误stt-no-text-recognized- 语音转文字未返回转录文本intent-not-supported- 配置的对话代理不可用intent-failed- 意图识别期间出现意外错误tts-not-supported- 配置的文字转语音 provider 不可用或不支持选项tts-failed- 文字转语音期间出现意外错误
发送语音数据
以 stt 作为第一个 stage 启动流水线并收到 stt-start 事件后,可以通过 WebSocket 连接以二进制数据发送语音数据。音频应尽快发送,每个数据块前面带一个字节作为 stt_binary_handler_id 前缀。
例如,如果 stt_binary_handler_id 为 1 且音频块为 a1b2c3,消息为(十六进制):
要指示语音数据发送结束,发送一个包含单个字节的二进制消息,该字节为 stt_binary_handler_id。
唤醒词检测
当 start_stage 设置为 wake_word 时,流水线将不会运行,直到检测到唤醒词。客户端应避免不必要的音频流传输,使用本地语音活动检测器(VAD)仅在检测到人类语音时才开始流传输。
对于 wake_word,input 对象应包含一个 timeout 浮点值。这是流水线在唤醒词检测期间超时的静默秒数(错误代码 wake-word-timeout)。
如果 Home Assistant 的内部 VAD 检测到足够多的语音,超时将持续重置。
音频增强
当 start_stage 设置为 wake_word 时,以下设置作为 input 对象的一部分可用:
noise_suppression_level- 噪音抑制级别(0 = 禁用,4 = 最大)auto_gain_dbfs- 自动增益控制(0 = 禁用,31 = 最大)volume_multiplier- 音频样本乘以常数(1.0 = 不变,2.0 = 两倍响)
如果你的设备麦克风音量较小,推荐设置如下:
noise_suppression_level- 2auto_gain_dbfs- 31volume_multiplier- 2.0
增加 noise_suppression_level 或 volume_multiplier 可能导致音频失真。

