4、语音助手集成:安装与配置Assist管道、设置语音助手(Whisper + Piper)、本地语音处理 vs. 云端

好,咱们进入第四讲。这一章,说白了就是让Home Assistant真正「听懂人话」的关键一步。

前面几章我们搞定了硬件,搞定了系统。但音箱接上了,它只是个哑巴。你得给它装上「耳朵」和「嘴巴」——这就是语音助手集成要做的事。

我个人习惯把这一章叫做「灵魂注入」。因为从这开始,你的智能家居才算有了交互感。

4.1 Assist管道:语音处理的核心架构

先别急着装东西。咱们得搞清楚Home Assistant是怎么处理语音的。

它内部有一套完整的流程,叫Assist管道。你可以把它想象成一条流水线:

  1. 语音输入:麦克风捕捉你的声音
  2. 语音转文字(STT):把声音变成文字——这就是Whisper干的活
  3. 意图识别:理解你想干什么——比如「关灯」对应的是调用light.turn_off服务
  4. 执行动作:真的去关灯
  5. 文字转语音(TTS):把回复变成声音——这就是Piper干的活
  6. 语音输出:音箱告诉你「灯已关闭」

嗯,这里要注意:Assist管道是Home Assistant 2023年之后才引入的新架构。如果你还在用老版本,建议升级。我在项目中遇到过有人用2022年的版本折腾了两天,最后发现是版本不支持——这种坑,咱别踩。

核心要点:Assist管道把STT、意图识别、TTS这三个环节解耦了。你可以自由组合不同的引擎。比如用Whisper做STT,用云端服务做意图识别,再用Piper做TTS。灵活得很。

4.2 安装Whisper:本地语音转文字

Whisper是OpenAI开源的语音识别模型。Home Assistant把它做成了插件,安装起来其实不复杂。

我建议你通过加载项(Add-on)来安装。步骤如下:

  1. 进入Home Assistant的「设置」→「加载项」
  2. 点击右下角的「加载项商店」
  3. 搜索「Whisper」
  4. 选择「Whisper」并安装

安装完成后,记得配置一下模型大小。我个人推荐用tiny-int8base-int8。为什么?

  • tiny-int8:体积小,速度快,适合树莓派这类低功耗设备。准确率够用。
  • base-int8:准确率更高,但需要更多内存。如果你用的是x86的机器,选这个。
  • large模型:别碰。除非你有GPU,否则卡到你怀疑人生。

我的经验:在树莓派4上跑tiny-int8,一次语音识别大概需要1-2秒。能接受。如果你觉得慢,可以试试faster-whisper,它是个优化版,速度能快30%左右。

配置好之后,你需要在Home Assistant的「设备与服务」里添加Whisper集成。搜索「Whisper」,选择你刚才安装的加载项实例就行。

4.3 安装Piper:本地文字转语音

Piper是Home Assistant官方推荐的TTS引擎。它轻量、快速、支持中文。

安装方式和Whisper类似:

  1. 加载项商店搜索「Piper」
  2. 安装
  3. 配置语音模型——记得选中文的

Piper支持多种中文语音。我个人习惯用zh_CN-huihui-medium,听起来比较自然。你也可以试试zh_CN-xiaoxiao-medium,各有特色。

配置完成后,同样需要在「设备与服务」里添加Piper集成。

注意:Piper的首次加载会下载模型文件,大概几十MB。如果你的网络不好,可能会卡住。我曾经在客户现场遇到过这个问题——下载到一半断了,重试好几次才成功。建议提前准备好网络环境。

4.4 配置语音助手:把管道串起来

Whisper和Piper都装好了,接下来就是配置语音助手了。

在Home Assistant的「设置」→「语音助手」里,点击「添加语音助手」。你会看到这样的配置界面:

配置项 说明 我的建议
名称 给你的语音助手起个名字 比如「小蓝」或「管家」
语音转文字引擎 选择Whisper 选你刚才配置的那个实例
文字转语音引擎 选择Piper 同样选你的实例
意图处理管道 选择Home Assistant内置的管道 默认就行,除非你有自定义需求
对话代理 选择「Home Assistant」 这样它才能控制你的设备

配置好之后,保存。你的语音助手就活了。

你可以在开发者工具里测试一下。输入「打开客厅灯」,看看它能不能正确识别并执行。

4.5 本地语音处理 vs. 云端:怎么选?

这是很多人纠结的问题。我直接说结论:

能本地,就本地。

为什么?

  • 隐私:你的语音数据不会上传到任何服务器。你想想看,你在家里说的每一句话都被传到云端,你心里不膈应吗?
  • 延迟:本地处理没有网络延迟。云端方案通常需要1-3秒的往返时间,本地可以控制在0.5秒以内。
  • 可靠性:断网了照样能用。我曾经遇到过用户家里网络不稳定,云端语音助手动不动就罢工——本地方案就没这问题。

但云端也有它的优势:

  • 准确率更高:像Google Assistant、Alexa这些,背后有海量数据训练,识别率确实比本地模型高。
  • 支持更复杂的对话:本地模型目前还做不到多轮对话。

我的建议:日常控制灯光、窗帘、空调这些简单操作,用本地方案完全够。如果你需要问天气、查新闻、做复杂问答,可以再配一个云端助手做补充。两者不冲突,可以共存。

嗯,这里还要提一句:本地方案对硬件有要求。如果你用的是树莓派3,跑Whisper可能会有点吃力。树莓派4或以上没问题。如果是x86的小主机,那就更轻松了。

4.6 避坑指南:我踩过的几个坑

最后分享几个我实际遇到过的坑,你遇到了别慌:

  • Whisper加载项启动失败:八成是内存不够。检查一下你的系统内存,至少留1GB空闲。我曾在1GB内存的树莓派上试过,直接OOM。
  • Piper说中文像机器人:检查你选的模型是不是中文的。有人选了英文模型然后抱怨中文不好听——这锅Piper不背。
  • 语音助手能听懂但没反应:检查你的实体名称。Home Assistant默认只识别中文实体名称。如果你把灯命名为「living_room_light」,它听不懂「打开客厅灯」。需要配置别名。
  • 麦克风没声音:检查音频输入设备。在加载项配置里,确保选对了麦克风。我遇到过有人选了HDMI音频输出当输入——那能听到才怪。

好了,这一章的内容就这些。下一章我们会讲怎么优化语音识别的准确率,以及怎么配置自定义唤醒词。到时候见。