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. 操作说明

    1. 连接配置好对应的MIC引脚,注意单麦和双麦配置的区别

    1. app_config.h

    • 打开 #define CONFIG_ASR_ALGORITHM AISP_ALGORITHM 本地打断唤醒算法选择

    • 打开 #define CONFIG_ASR_ALGORITHM_ENABLE 打断唤醒模式使能

    1. 从其他模式切换到打断唤醒模式时, (提示音提示“打断唤醒模式”) 默认进入语音识别例子程序

    • (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.capps/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