Skip to content

Latest commit

 

History

History
173 lines (108 loc) · 6.61 KB

安装.md

File metadata and controls

173 lines (108 loc) · 6.61 KB

lowpower-robot安装指南

基础环境搭建

QT

安装QT有三种方法:online installer,apt install和源码安装。下面简要介绍三种方法

  • online installer: 推荐使用这种方法,但是arm机器可能安装不上。推荐安装5.15.2版本 image-20240301095821139image-20240301100000869

  • 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

部分组件需要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都必须保证有且仅有一个组件启用并有效,具体启用方法可以根据下面提示

Wakeup

名称 平台 定义
porcupine x86,arm WAKEUP_PORCUPINE
openwakeword any WAKEUP_OPEN
duilite x86 WAKEUP_DUILITE
snowboy x86,arm WAKEUP_SNOWBOY

porcupine

进入控制台将accessKey填入config.json的对应位置

    "porcupine": {
        "key": "xxx",
        "keyword": "嘿小智.ppn",
        "model": "porcupine_params_zh.pv",
        "sensitivity": "0.5"
    },

下载对应平台动态库并放入lib/porcupine/lib

openwakeword

仓库页面

可以直接使用,唤醒词为你好问问。openWakeWord没有官方的中文预训练模型,需要自己使用语料进行训练。此外在这个仓库中有大量的模型,中文模型还有你好米雅

duilite

思必驰提供的唤醒引擎,拥有10台机器的免费装机量,只支持x86_64的linux。不需要训练可以随意定制唤醒词

进入控制台,点击基础技术产品,选择本地语音唤醒

image-20240301105302150

点击授权管理,申请预烧录,填入设备的mac地址,mac可以使用ifconfig命令查看

image-20240301105455981

在Data目录下新建duilite_login.json,填入

{
        "productId": "xxx",
        "savedProfile": "Data/下载下来的证书",
        "logEnable": false,
        "prof": {
                "enable": 0,
                "level": 2
        },
        "upload": {
                "logId": 141,
                "tmpdir":"/tmp"
        }
}

snowboy

进入scripts目录,运行install_snowboy.sh

ASR

名称 平台 定义
sherpa asr any ASR_SHERPA
fun asr any ASR_FUN

sherpa asr

运行安装脚本,根据文档下载对应模型,然后在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

fun asr

funasr中提取出paraformer asr的部分,支持自定义热词,不支持lm。

TTS

名称 平台 定义
sherpa tts any TTS_SHERPA

sherpa tts

配置方法同sherpa asr

NLU

百度NLU

配置页面为

目前只添加了如下技能

image-20240301110749866

rasa

rasa是一个开源的对话机器人项目,其中包含了NLU。它可以自由配置NLU模型并且可以自定义意图和实体。本项目目前主要使用rasa。安装可见