lowpower-robot安装指南
安装QT有三种方法:online installer,apt install和源码安装。下面简要介绍三种方法
-
apt: 运行安装脚本
-
源码安装: 需要注意ssl版本及gstreamer,pulseaudio是否成功配置。可以参照
./configure -opensource -confirm-license -pulseaudio -alsa -gstreamer -skip qtscript -skip qtwayland -skip qtlocation -skip qtwebengine -nomake examples -nomake tests -no-assimp -no-feature-eglfs_brcm -ssl -openssl-linked -I ~/projects/QSmartAssistant/lib/ssl/include -L ~/projects/QSmartAssistant/lib/ssl/lib -prefix ~/software/qt
进行配置
如果使用Server, 则需要qt 6.8.1版本。如果启用mqtt,需要手动编译qtmqtt模块,编译过程可以参照
scripts/install_qt.sh
部分组件需要python环境,如rasa和openwakeword。测试环境为python3.10
虽然代码中有预处理组件,但这里推荐使用pulseaudio自带的回声消除。语音预处理是系统的入口,对唤醒和语音识别非常重要。开启后将会占用5-10%的cpu。
部署方法:
在/etc/pulse/default.pa.d
中新建noise_cancel.pa并在其中输入如下内容
# load-module module-echo-cancel rate=16000 aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1 agc_start_volume=120 voice_detection=0 noise_suppression=1" source_name=echoCancel_source sink_name=echoCancel_sink source_master=alsa_input.usb-OmniVision_Technologies__Inc._USB_Camera-B4.09.24.1-01.multichannel-input
# from https://github.com/orgs/SEPIA-Framework/discussions/152
load-module module-echo-cancel use_master_format=1 aec_method=speex aec_args="agc=1 echo_suppress_attenuation=0 echo_suppress_attenuation_active=0" source_name=echoCancel_source sink_name=echoCancel_sink source_master=alsa_input.platform-soc_sound.seeed-source
set-default-sink echoCancel_sink
set-default-source echoCancel_source
source_master需要更改为自己的source,查找方法为pactl list sources short
下面解释各个字段的含义:
- source/sink: 麦克风/扬声器
- agc/gain_control: 自动音量控制,通过控制麦克风音量保证音量在一定范围。可选项,推荐开启
- noise_suppression: 噪声抑制,推荐开启,如果不开启可以使用代码中的预处理。speex默认开启
- 回声消除:消除麦克风中系统播放的声音
pulseaudio实现了webrtc和speex两个回声消除的方法。webrtc回声消除效果好但是信噪比低。经过测试推荐使用speex回声消除,因为在系统播放大音量的音乐时webrtc因为信噪比过低而无法唤醒。
需要cp Data/default_config.json Data/config.json
,来编辑组件的配置
通过cmake -Dxxx
来选择启用哪个组件,例如cmake -DWAKEUP_PORCUPINE=ON
Wakeup,Vad,ASR,TTS,NLU都必须保证有且仅有一个组件启用并有效,具体启用方法可以根据下面提示
名称 | 平台 | 定义 |
---|---|---|
porcupine | x86,arm | WAKEUP_PORCUPINE |
openwakeword | any | WAKEUP_OPEN |
duilite | x86 | WAKEUP_DUILITE |
snowboy | x86,arm | WAKEUP_SNOWBOY |
进入控制台将accessKey填入config.json的对应位置
"porcupine": {
"key": "xxx",
"keyword": "嘿小智.ppn",
"model": "porcupine_params_zh.pv",
"sensitivity": "0.5"
},
下载对应平台动态库并放入lib/porcupine/lib
可以直接使用,唤醒词为你好问问
。openWakeWord没有官方的中文预训练模型,需要自己使用语料进行训练。此外在这个仓库中有大量的模型,中文模型还有你好米雅
思必驰提供的唤醒引擎,拥有10台机器的免费装机量,只支持x86_64
的linux。不需要训练可以随意定制唤醒词
进入控制台,点击基础技术产品,选择本地语音唤醒
点击授权管理,申请预烧录,填入设备的mac地址,mac可以使用ifconfig
命令查看
在Data目录下新建duilite_login.json,填入
{
"productId": "xxx",
"savedProfile": "Data/下载下来的证书",
"logEnable": false,
"prof": {
"enable": 0,
"level": 2
},
"upload": {
"logId": 141,
"tmpdir":"/tmp"
}
}
进入scripts
目录,运行install_snowboy.sh
名称 | 平台 | 定义 |
---|---|---|
sherpa asr | any | ASR_SHERPA |
fun asr | any | ASR_FUN |
运行安装脚本,根据文档下载对应模型,然后在config.json中更改模型目录即可。
"sherpa":{
"model": "sherpa_paraformer/model.int8.onnx",
"tokens": "sherpa_paraformer/tokens.txt",
"stream": false
},
需要注意tranducer模型包含三个模块,因此配置方法为modle_path/%1-epoch-20-avg-1-chunk-16-left-128.int8.onnx
从funasr中提取出paraformer asr的部分,支持自定义热词,不支持lm。
名称 | 平台 | 定义 |
---|---|---|
sherpa tts | any | TTS_SHERPA |
配置方法同sherpa asr
目前只添加了如下技能
rasa是一个开源的对话机器人项目,其中包含了NLU。它可以自由配置NLU模型并且可以自定义意图和实体。本项目目前主要使用rasa。安装可见。