Assist 管道
Assist 管道 集成负责运行语音助手的常见步骤:
- 唤醒词检测
- 语音转文本
- 意图识别
- 文本转语音
管道通过 WebSocket API 运行:
可用的输入字段如下:
事件
在管道运行过程中,它会通过 WebSocket 连接回传事件。 可发出的事件如下:
错误代码
以下代码会在管道的 error 事件中返回:
wake-engine-missing- 未安装唤醒词引擎wake-provider-missing- 配置的唤醒词提供方不可用wake-stream-failed- 唤醒词检测期间发生意外错误wake-word-timeout- 在超时时间内未检测到唤醒词stt-provider-missing- 配置的 speech-to-text 提供方不可用stt-provider-unsupported-metadata- speech-to-text 提供方不支持该音频格式(采样率等)stt-stream-failed- speech-to-text 期间发生意外错误stt-no-text-recognized- speech-to-text 未返回转录文本intent-not-supported- 配置的对话代理不可用intent-failed- 意图识别期间发生意外错误tts-not-supported- 配置的 text-to-speech 提供方不可用,或其选项不受支持tts-failed- text-to-speech 期间发生意外错误
发送语音数据
当以 stt 作为运行的第一个阶段启动管道,并收到 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 可能会导致音频失真。

