9.10. AISP打断唤醒
概述
本例子简单展示了打断唤醒的流程
9.10.1. 应用实例
进入
demo_DevKitBoard/include/demo_config.h
,开启宏USE_AUDIO_DEMO
。使用打断唤醒需要第一次进行联网拿到权限,第一次联网获取到权限以后会把license记录到flash保存,之后可不需联网进行本地唤醒
使用demo_DevKitBoard工程打开USE_SUDIO_DEMO需要同时打开demo_config.h中USE_DEMO_WIFI_TEST,并在
apps/demo/demo_DevKitBoard/wifi_demo_task.c
配置STA模式,并配置填入STA_SSID和STA_PWD
//选择其中一种开机默认的模式测试
//#define AP_MODE_TEST
#define STA_MODE_TEST
//#define MONITOR_MODE_TEST
#define STA_SSID "配置需要连接的路由器SSID" //配置 STA模式的SSID
#define STA_PWD "配置需要连接的路由器密码" //配置 STA模式的密码
使用开源板demo_DevKitBoard工程打开USE_SUDIO_DEMO按键(K2)切换使用打断唤醒模式模式
使用故事机工程wifi_story_machine需长按配网键(KEY_MODE)进入配网,使用微信公众号杰理智能机器人点击配网小程序进行配网
9.10.2. 库依赖
libauth.a libauth_aisp.a 思必驰打断唤醒算法授权管理
aisIntlib_single_xiaoai.a libaisp_single.a 思必驰单麦打断唤醒算法(小爱同学唤醒词)
aisIntlib_dual_xiaoai.a libaisp_dual.a 思必驰双麦打断唤醒算法(小爱同学唤醒词)
aisIntlib_single_xiaole.a libaisp_single.a 思必驰单麦打断唤醒算法(你好小乐唤醒词)
aisIntlib_dual_xiaole.a libaisp_dual.a 思必驰双麦打断唤醒算法(你好小乐唤醒词)
cJSON.a JSON格式构造和解析接口(第三方开源)
9.10.3. 操作说明
连接配置好对应的MIC引脚,注意单麦和双麦配置的区别
app_config.h
打开 #define CONFIG_ASR_ALGORITHM AISP_ALGORITHM 本地打断唤醒算法选择
打开 #define CONFIG_ASR_ALGORITHM_ENABLE 打断唤醒模式使能
从其他模式切换到打断唤醒模式时, (提示音提示“打断唤醒模式”) 默认进入语音识别例子程序
(1)打开audio服务,初始化cbuf,注册audio服务处理函数,信号量创建,创建aisp_task线程
(2)获取第三方算法所需堆空间大小
(3)获取第三方授权信息,并且授权启动第三方算法程序
(4)申请算法运行所需内存
(5)运行第三方算法程序,处理数据后通过回调进行通知
(6)打开mic,获取语音数据
(7)while环喂数据给第三方算法程序
(8)将整理好的数据喂给第三方算法程序
9.10.4. 接入第三方打断唤醒流程
可以根据[杰理开放平台文档]
doc/stuff/杰理开放平台文档20201216_136.pdf
,发送邮件到杰理开发团队申请,然后把申请到的客户批次号填写到apps/common/net/platform_cfg.c
的get_aisp_auth_key()和get_aisp_code()函数中
#if (defined CONFIG_ASR_ALGORITHM) && (CONFIG_ASR_ALGORITHM == AISP_ALGORITHM)
char *get_aisp_auth_key(void)
{
return "aisp_test_key";
}
char *get_aisp_code(void)
{
return "aisp_test_code";
}
#endif
拥有DUI的服务授权信息能连接上DUI平台,但是还需联系思必驰进行唤醒的授权
联系思必驰进行唤醒的授权后,将DUI服务器授权信息填入
apps/common/net/platform_cfg.c
和apps/common/asr/aisp/aisp.c
文件中aisp_task()函数中
#ifdef CONFIG_DUI_SDK_ENABLE
const char *get_dui_auth_product_key(void)
{
return "请向思必驰购买lisence";
}
const char *get_dui_auth_product_id(void)
{
return "请向思必驰购买lisence";
}
const char *get_dui_auth_product_secret(void)
{
return "请向思必驰购买lisence";
}
const char *get_dui_auth_deviceid(void)
{
return "请向思必驰购买lisence";
}
#endif
/* 此处信息请根据dui信息修改 https://www.duiopen.com/ */
auth_info.productKey = "请向思必驰购买lisence";
auth_info.productId = "请向思必驰购买lisence";
auth_info.ProductSecret = "请向思必驰购买lisence";
修改唤醒词在
apps/aisp/aisp.c
文件aisp_task()函数,根据所使用的的库(“小爱同学”或者“你好小乐”进行唤醒),其余唤醒词:“大声一点”、“小声一点”、“暂停播放”和“下一首”。
/* start engine and pass auth cfg*/
pstLfespdEng = LDEEW_RUN(pcMemPool, memPoolLen, "words=xiao ai tong xue,da sheng yi dian,xiao sheng yi dian,zan ting bo fang,xia yi shou;thresh=0.60,0.32,0.32,0.33,0.33;", wtk_handler, aec_handler); //唤醒词:小爱同学
/* pstLfespdEng = LDEEW_RUN(pcMemPool, memPoolLen, "words=ni hao xiao le,da sheng yi dian,xiao sheng yi dian,zan ting bo fang,xia yi shou;thresh=0.60,0.32,0.32,0.33,0.33;", wtk_handler, aec_handler); //唤醒词:你好小乐 */
9.10.5. 思必驰打断唤醒耗时测试结果
1.FFT算法各函数耗时测试(测试环境:AC7911B开发板:双麦,打开腾讯云工程)
函数 |
硬件算法(vc_hw_fft) |
软件算法(kiss_fft) |
---|---|---|
jl_fft_1024_ex |
96us-161us |
1.46ms-1.92ms |
jl_fft_512 |
30us-390us |
0.51ms-1.01ms |
jl_ifft_1024_ex |
79us-99us |
1.65ms-2.19ms |
jl_ifft_512 |
30us-265us |
0.58ms-1.18ms |
各函数耗时统计 |
软件算法:ASM_ENABLE == 2 |
硬件算法:ASM_ENABLE == 3 |
---|---|---|
AISP_TSL_cmac_vec_32x32 |
27us-0.480ms |
33us-0.372ms |
AISP_TSL_cmul_vec_32x32 |
24us-0.315ms |
34us-0.191ms |
AISP_TSL_cmul_real_32x32 |
18us-0.219ms |
34us-0.258ms |
AISP_TSL_cmul_real_32x16 |
9us-0.23us |
13us-0.183ms |
AISP_TSL_cmacWithGain_vec_32x32_2 |
77us-0.48ms |
96us-0.57ms |
jl_vector_multadd |
1us-44us |
2us-0.244ms |
jl_vector_mult |
1us-5.5us |
2.5us-0.11ms |
9.10.6. 思必驰打断唤醒识别率测试结果
点击图片可放大查看测试结果
9.10.7. 思必驰打断唤醒内存算力占用情况
CPU占用率 |
总占用内存 |
其中静态内存占用 |
其中动态内存占用 |
---|---|---|---|
320M(51%) = 160M |
843K |
SDRAM_SIZ:181K RAM_SIZE:136K |
HEAP_SIZE:526K |