4.3.29.2. 语音休眠唤醒示例
示例功能概述
A core侧
搭配A core智能
示例源码结构
sample_wakeup目录
.
├── CMakeLists.txt # 编译所需cmake文件
├── hobot_speech_x5_sdk # 算法目录
│ ├── example # 算法示例
│ ├── hrsc # 配置文件
│ ├── include # 算法头文件
│ │ └── horizonspeechsdk
│ │ └── hrsc_sdk.h
│ ├── lib # 算法库文件
│ │ ├── libhisf.so
│ │ ├── libhisfvad.so
│ │ └── libhrsc.so
│ └── ReadMe.txt
├── i2c_control.sh # 音频版配置脚本
├── include # 示例头文件
│ ├── HrscAudioRecorder.h
│ └── HrscDemo.h
├── README.md
├── src # 示例源文件
│ ├── hobot_speech_device_test.cpp # 音频device测试
│ ├── HrscAudioRecorder.cpp # tinyalsa封装实现
│ ├── HrscDemo.cc # 通用函数和回调函数实现
│ ├── hrsc_sdk_demo_files.cc # 文件测试实现
│ ├── hrsc_sdk_demo_lp_to_normal.cc # 进入低功耗,语音唤醒并进入正常功耗唤醒实现
│ ├── hrsc_sdk_demo_pipeline0.cc # 原生音频送入A core,在A core处理降噪和唤醒实现
│ ├── hrsc_sdk_demo_pipeline1.cc # 低功耗asr音频获取实现(废弃)
│ ├── hrsc_sdk_demo_pipeline2.cc # 低功耗唤醒词音频获取实现,唤醒后可获取asr音频
│ └── hrsc_sdk_demo_pipeline4.cc # 正常功耗下,DSP进行降噪前处理,A core进行唤醒实现
├── x5audio_init.sh # 环境搭建脚本
└── xbuild.sh # 编译脚本
编译依赖
首先bsp源码,选择
其次adsp的firmware,详情
之后/adsp/sample_wakeup目录
./xbuild.sh
即可out目录,结构
.
├── adsp # firmware
├── hrsc # 算法配置文件目录
│ ├── asr_vad
│ │ ├── DGRU_ECNR.meanvar
│ │ ├── DGRU_ECNR.params
│ │ └── hisf_config.ini
│ ├── CRGRU_SUBBAND_HIOK_reset_hx_-1.meanvar
│ ├── CRGRU_SUBBAND_HIOK_reset_hx_-1.params
│ ├── hesr_conf.txt
│ ├── hisf_config_encrypt.ini
│ ├── hrsc_config.cfg # Log打印及保存、音频保存等
│ ├── libmono.so
│ ├── meanvar_prior
│ ├── mxfeats_v36_okyiko.pack
│ ├── phone_strs
│ ├── tree-out2
│ └── wakeup_graph.bin
├── hobot_speech_device_test # 音频device测试可执行文件
├── hrsc_sdk_demo_files # 音频文件离线测试可执行文件
├── hrsc_sdk_demo_lp_to_normal # 低功耗->正常功耗全通路测试可执行文件
├── hrsc_sdk_demo_pipeline0 # pipeline0语音唤醒测试可执行文件
├── hrsc_sdk_demo_pipeline1 # pipeline1语音唤醒测试可执行文件
├── hrsc_sdk_demo_pipeline2 # pipeline2语音唤醒测试可执行文件
├── hrsc_sdk_demo_pipeline4 # pipeline4语音唤醒测试可执行文件
├── i2c_control.sh # 音频版配置脚本
├── lib # 算法库
│ ├── libhisf.so
│ ├── libhisfvad.so
│ └── libhrsc.so
└── x5audio_init.sh # 环境配置脚本
语音唤醒步骤
环境配置
可以
测试命令
-i:音频文件
-ch:音频文件
-switch:音频
-o:输出switch置
-cfg:配置文件
注意:测试demo无
# device 0测试。可选0、1、2、4,对应四个pipeline
chmod 777 hobot_speech_device_test
export LD_LIBRARY_PATH=./lib
./hobot_speech_device_test 0
chmod 777 hrsc_sdk_demo_files
export LD_LIBRARY_PATH=./lib
./hrsc_sdk_demo_files -i ./audio.pcm -o ../log -cfg ./hrsc -ch 2 -switch 1
chmod 777 hrsc_sdk_demo_pipeline0
export LD_LIBRARY_PATH=./lib
./hrsc_sdk_demo_pipeline0 -o ../log -cfg ./hrsc -switch 1
chmod 777 hrsc_sdk_demo_pipeline1
export LD_LIBRARY_PATH=./lib
./hrsc_sdk_demo_pipeline1 -o ../log -cfg ./hrsc -switch 1
chmod 777 hrsc_sdk_demo_pipeline2
export LD_LIBRARY_PATH=./lib
./hrsc_sdk_demo_pipeline2 -o /mnt/log -cfg ./hrsc -switch 1
chmod 777 hrsc_sdk_demo_pipeline4
export LD_LIBRARY_PATH=./lib
./hrsc_sdk_demo_pipeline4 -o ../log -cfg ./hrsc -switch 1
chmod 777 hrsc_sdk_demo_lp_to_normal
export LD_LIBRARY_PATH=./lib
./hrsc_sdk_demo_lp_to_normal -o ../log -cfg ./hrsc -switch 1
hobot_speech_device_test为
hrsc_sdk_demo_files为
hrsc_sdk_demo_pipeline0为i2s获取3+1音频
hrsc_sdk_demo_pipeline1为dsp端asr音频
hrsc_sdk_demo_pipeline2为dsp端enhance唤醒
hrsc_sdk_demo_pipeline4为dsp端正常功耗enhance唤醒asr音频,给vad进行
hrsc_sdk_demo_lp_to_normal为litesleep状态,进行dsp侧pipeline2传给A core做pipeline2第二
算法调试说明
在sample_wakeup/hobot_speech_x5_sdk/hrsc/hrsc_config.cfg文件
[HRSC_CONFIG]
# HRSC SDK CONFIG FILE
[LOG]
LOG_LEVEL=2 # log等级,1:debug,2:info,3:warning,4:error,一般建议3
SAVE_LOG_PATH="/mnt/log/log.txt" # log保存路径,绝对路径
SAVE_LOG_FLAG=1 # log保存开关,1为开,0为关
[DATA]
# save data mode, 0 is new mode, 1 is previous mode
SAVE_DATA_MODE=0 # 音频保存模式,无需修改
# switch flag 1
SAVE_DATA_FLAG1="./hobot_speech_device_test" # 任意存在的文件的路径,例如可执行文件的路径,包含文件名
# file name 1
SAVE_DATA_PATH1="../log" # 音频保存路径,绝对路径或者可执行文件的相对路径
# switch flag 2
SAVE_DATA_FLAG2=""
# file name 2
SAVE_DATA_PATH2=""
# valid if only SAVE_DATA_MODE is 1
SAVE_AUDIO_FLAG=""
# valid if only SAVE_DATA_MODE is 1
SAVE_AUDIO_PATH=""
# limit file size, support G,M,K, default K
PER_FILE_LIMIT_SIZE=0K
[ASR]
SAVE_ASR_FLAG=""
SAVE_ASR_PATH=""
[CPU]
CPU_THRESHOLD_FREQ="1008000"
[TCP TEST]
TCP_TEST_FLAG=0
TEST_IP=""
TEST_PORT=""
[WAKERESULT]
SAVE_WAKE_RESULT_FLAG=0
SAVE_WAKE_RESULT_PATH=""
[THREAD_ID]
THREAD_ID_FILE=""
[AUTH]
ACTIVATE_DEVICE_SN=""
AUTH_PATH="/data/"
AUTH_CHECK_TIME=5
[VERSION]
VERSION="x5-0.0.5" # 算法版本号
运行结果展示
测试pipeline4,且log_level为3结果

log及

wkp_x.pcm和asr_x.pcm分别x数字
hrsc_asr.pcm是
hrsc_enhance.pcm是
hrsc_raw.pcm是
hrsc_vad.vadvad标识,0和1,算法
log_xxx.txtlog.txt为log保存
process.pcm音频