本帖最后由 yaoy 于 2023-3-14 22:15 编辑
rhasspy 本地语音控制,不连网,无延迟
一、整体环境设备介绍
1. Ubuntu 物理机
2. usb 外置麦克风音响
3. HA系统(vm)
4. rhasspy系统(docker)
(usb 麦克风+音响 一体设备)
二、外置麦克风音响设备-测试(不懂可以忽略)
# 建议使用 root 用户测试
# 列出声卡和数字音频设备
>> arecord -l
# 录音(可指定特定设备)
>> arecord test.wav
# 播放
>> aplay test.wav
三、rhasspy安装
# 官网地址:https://rhasspy.readthedocs.io/en/latest/installation/
$ docker run -d -p 12101:12101 \
--name rhasspy \
--restart unless-stopped \
-v "$HOME/.config/rhasspy/profiles:/profiles" \
-v "/etc/localtime:/etc/localtime:ro" \
--device /dev/snd:/dev/snd \
rhasspy/rhasspy \
--user-profiles /profiles \
--profile zh
# zh为支持中文的系统(运行以下命令会安装并运行,然后http://localhost:12101 打开webd页面)
四、rhasspy设置(选择下面的设置项并保存)
点保存后,将页面滑动到最上方,会让你下载本地文件,直接下载。查看日志,可能会有域名解析失败的错误。
如果报错,将域名复制到这个地址(https://site.ip138.com/ip.cn/),获取ip地址,然后在/etc/hosts文件中添加下面这句话
>> vim /etc/hosts
>> 85.199.110.133 raw.githubusercontent.com
然后再去下载文件,之后重启服务
五、rhasspy 系统基本测试及使用
1. Recognize :打开sentences 页面,加上下面内容(此页面每次修改都要记得Train一下)
[XingXinglamp]
(打开 | 关闭){state}星星[灯]
[Lamp3]
长相
2. 点击右上角的 Train 然后重启 Restart
3. 返回到首页,在Recognize中分别输入:打开 星星 灯 ,长相
recognize
输出“长相”也会有类似的结果
4. Speak
在Speak 输入框中输入文字,点击 Speak,会听到声音(如果没有声音要重新选择 第5步的输出设备:audio Playing)
speak
5. Audio Playing设置
点击 Audio Playing 选择设备,然后保存。重复4的操作,直到有声音为止
audio_play
6. Text to Speech
选择zh,这里speak 也可以说话
text_to_speech
----------完成以前操作,恭喜。说明整个系统是正常的-------------
6. Audio Recording 设置
打开Audio Recording,会有很多选择
官方文档说点test,选择working! 标记的设备,但我测试下来,有些bug!!!
如何确定设备: 先拔掉音频设备,点击test 检测设备,记录此时的设备(这些设备是排除的设备),然后插上音频设备,再点击test 检测设备,此时多出来的设备就是可选的设备,然后一个一个的选择测试。
audio_record
其它项默认即可,选择后保存。
(先选择一个保存,与后面流程一起测试)
7. 测试正常设备
7.1 在6中选择设备,并保存
7.2 返回首页,点击Wake Up,在听到‘叮’之后说话(‘打开星星灯’,‘长相’)
wake_up01
可以等待进度条自己消失,也可以点页面以结束。
然后点击 Play Recording,你会听到你刚才说的声音,如果播放正常,说明就是这个设备了。如果播放时语速,音色等不正常,那就返回到6中更换设备重新测试。
正常情况下会与3中的结果一样
8. Wake Up 的设置
这里有很多类型可选择,我采用 Rhasspy Raven,在这里录入自己想要的名字,录入三次即可,可录入多个,然后 Train , restart
wake_word
9. 此时可以放下鼠标,对着麦克风 说出唤醒词(第8步设置的唤醒词),会听到‘叮’后,说出你的目标(第一步中的“长相”),会看到3中的效果
------至此,恭喜,rhasspy 部分已经完成,下面就是 homeassistant,node-red结合部分
六、 配置HA中的node-red
官方文档:https://rhasspy.readthedocs.io/en/latest/tutorials/#wake-word
将一下控制流复制到 node-red 中
[{"id":"70d90eed.9fc7e8","type":"tab","label":"Rhasspy Intent","disabled":false,"info":""},{"id":"d7f94fdd.9b5028","type":"debug","z":"70d90eed.9fc7e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":230,"y":200,"wires":[]},{"id":"d60f2a3e.ec485","type":"websocket in","z":"70d90eed.9fc7e8","name":"","server":"","client":"be111083.116b5","x":200,"y":60,"wires":[["d7f94fdd.9b5028"]]},{"id":"be111083.116b5","type":"websocket-client","z":"","path":"ws://localhost:12101/api/events/intent","tls":"","wholemsg":"true"}]
node_1
node_2
配置node的数据源地址(rhasspy地址)
配置node
然后唤醒麦克风,说出命令,可以看到以下信息:
out_put
现在 外置麦克风+外置音响+rhasspy+HA+node-red 本地语音控制的整个流程就完成了,当然rhasspy玩法很多,这只是最基本用法,欢迎大家学习交流
|