Docker部署语音转文字(STT)服务并接入Home Assistant
在Home Assistant用API方式接入大模型或者树莓派docker安装ollama运行大模型并接入HomeAssistant之后,HA就有了智能助手了,但是想要语音让HA干活,还需要语音转文字(STT)服务
参考了多篇教程,也尝试了之后,采用yaming116构建的docker镜像是最方便的,因此这里我也记录一下
准备
1.已安装HomeAssistant及HACS,可以看我这篇文章
2.HA已接入大模型
3.已安装好docker
Docker安装语音转文字(STT)服务
yaming116构建了几个docker镜像,都是本地离线部署的,主要有两个技术路线:sherpa-onnx-asr和FunAsr
sherpa-onnx-asr占用资源较少,速度也挺快,FunAsr则占用资源较高,慢一些,但是识别率更好些
我把服务跑在了NAS中,CPU是J4125,根据自己硬件和需求在这两个之间选择即可
sherpa-onnx-asr
如果采用sherpa-onnx-asr,根据自己需要可以在下面的命令中选择版本
由于我的NAS内存较小,仅2G而且跑了其他服务,一开始安装的完整版,跑不动,后面换了
sherpa-onnx-asr-tiny
版本,速度很快,内存占用在150M左右,准确度也够用
下面命令来自作者的git,如果作者更新了以作者的仓库中的命令为准
# 完整版, 目前完整版占用 1g 内存
docker pull yaming116/sherpa-onnx-asr:latest
# 目前zipformer 和 latest 模型版本一致,sherpa-onnx 推荐实用 paraformer 模型,目前为了保持稳定暂时latest不修改
docker pull yaming116/sherpa-onnx-asr:zipformer-2024-7-5
# paraformer 非流式识别模式,效果更好
docker pull yaming116/sherpa-onnx-asr:paraformer-2024-7-5# 低内存版本
docker pull yaming116/sherpa-onnx-asr-tiny:latestdocker run -d \
--restart=always -it \
--name sherpa-onnx-asr \
-p 5001:5001 \
yaming116/sherpa-onnx-asr:latest
FunAsr
如果采用FunAsr,可以使用下面的命令
docker run -d \
--restart=always -it \
--name fun-asr \
-p 5001:5001 \
-v $PWD/models:/models \
yaming116/fun-asr:latest
注意,如果是用群晖跑服务,那么端口不能用5000、5001,要避开选用其他端口!
HA安装home-assistant-fun-asr集成
到作者的git上下载home-assistant-fun-asr ,然后到运行HA的服务器上,把仓库中的custom_components/fun_asr
文件夹复制到HA的config/custom_components/fun_asr
目录下
不管STT服务是用sherpa-onnx-asr还是FunAsr都是一样用这个集成
这里因为我的HA是跑在docker中的,物理机的文件夹直接映射到了容器中的/config文件夹内,所以这里就少了/config这一层的文件夹了
重启HA,进入【设置】-【设备与服务】,找到Fun Asr集成
填入STT服务的ip和端口,根据自己的跑的服务选择参数,比如我跑了sherpa-onnx-asr-tiny
版本,那么就勾选tiny
进入【设置】-【语音助手】,选择自己实现配好的语音助手,将语音转文字选择刚刚配置好的FunAsr即可
如果还没有配置语音助手,可以看看我之前的文章:Home Assistant用API方式接入大模型、树莓派docker安装ollama运行大模型并接入HomeAssistant
语音控制HA
语音一般用手机端进行使用,所以还需要下载homeassistant App
安卓
苹果
登录进去后,就可以用语音来控制设备了~
这里有些我参考过的文章,有些写的也挺详细的,可以参考~
可能是作者本人的文章:离线语音识别CPU 版本 本地化部署最佳实践&企微微信已支持
HomeAssistant 语音助手对接AI大模型相关系列教程说明
本地化部署HomeAssistant语音助手并接入DeepSeek