9.10. JL_KWS打断唤醒
概述
本文档简单展示了jlkws打断唤醒的说明,具体实现代码均在 jlkws.c
中查看
9.10.1. 应用实例
1.使用wifi_story_machine工程,进入
app_config.h
,开启宏#define CONFIG_ASR_ALGORITHM JLKWS_ALGORITHM //本地打断唤醒算法选择
。2.未获取授权时,默认使用临时授权,临时授权每次开机后算法可使用二十分钟,逾时临时授权失效唤醒失效
3.获取授权方式:发送邮件到 weiyushu@zh-jieli.com 杰理开发团队进行申请,然后把申请到的客户批次号填写到
apps/common/net/platform_cfg.c
的get_kws_auth_key()和get_kws_code()函数中4.第一次需联网获取到权限以后会把license记录到flash保存,之后可不需联网进行本地唤醒
#if (defined CONFIG_ASR_ALGORITHM) && (CONFIG_ASR_ALGORITHM == JLKWS_ALGORITHM)
char *get_kws_auth_key(void)
{
return "kws_test_key";
}
char *get_kws_code(void)
{
return "jieli_TWbvCB";
}
#endif
9.10.2. 操作说明
连接配置好对应的MIC引脚
jlkws.c中编码参数默认使用req.enc.channel_bit_map = BIT(CONFIG_AISP_MIC0_ADC_CHANNEL==1); 对应板级文件board.c使用adc1对应引脚
#define TCFG_MIC_IO_PORT {-1/*MIC0P*/, -1/*MIC0N*/, IO_PORTC_11/*MIC1P*/, IO_PORTC_12/*MIC1N*/}
app_config.h
打开 #define CONFIG_ASR_ALGORITHM AISP_ALGORITHM 本地打断唤醒算法选择
具体实现流程代码在 jlkws.c 文件中
唤醒词
//jl_far_kws_model_process识别数据后返回值 //ret = jl_far_kws_model_process(kws, model, (u8 *)near_data_buf, sizeof(near_data_buf)); //if (ret > 1) { //log_info("jlkws wakeup event : %d", ret); 唤醒词 - 返回值 小杰小杰 2 播放音乐 4 暂停播放 5 增大音量 7 减小音量 8 上一首 9 下一首 10
- 5.回声消除
回声消除app_cofnig.h中打开CONFIG_AEC_ENC_ENABLE宏,具体回声消除参数查看jlkws.c中宏包住部分代码, 回声消除使用16k采样率数据
代码中默认使用硬件回采在app_config.h中打开宏#define CONFIG_AEC_HW_REC_LINEIN_ENABLE //AEC回采使用硬件通道数据
#if defined TCFG_AUDIO_ADC_ALL_CHANNEL_OPEN && defined CONFIG_AISP_LINEIN_ADC_CHANNEL && defined CONFIG_AEC_HW_REC_LINEIN_ENABLE if (req.enc.aec_enable) { aec_param.output_way = 1; //1:使用硬件回采 0:使用软件回采 req.enc.rec_linein_channel_bit_map = BIT(CONFIG_AISP_LINEIN_ADC_CHANNEL); //设置linein的回采通道 req.enc.channel_bit_map |= BIT(CONFIG_AISP_LINEIN_ADC_CHANNEL); //配置回采硬件通道 if (CONFIG_AISP_LINEIN_ADC_CHANNEL < CONFIG_PHONE_CALL_ADC_CHANNEL) { req.enc.ch_data_exchange = 1; //如果回采通道使用的硬件channel比MIC通道使用的硬件channel靠前的话处理数据时需要交换一下顺序 } } #endif //使用adc0的linein进行回采 #define TCFG_LINEIN_IO_PORT {IO_PORTC_07/*AUX0P*/, IO_PORTC_06/*AUX0N*/, -1/*AUX1P*/, -1/*AUX1N*/}
使用软件回采,关掉app_config.h中宏#define CONFIG_AEC_HW_REC_LINEIN_ENABLE //AEC回采使用硬件通道数据
软件回采不同采样率的需要打开宏#define CONFIG_AEC_USE_PLAY_MUSIC_ENABLE //播歌时需要使用AEC进行变采样,而且回采的采样率必须为16k的整数倍,解码部分必须强制变采样为16k的整数倍,在解码部分加上强制变采样参数req.dec.force_sr,并在编码参数中加上aec_param.dac_ref_sr回采的参考采样率
- 6.查看唤醒时的回声消除数据
在app_config.h中打开宏 #define CONFIG_AUDIO_ENC_AEC_DATA_CHECK //打开查看AEC操作数据(mic/dac/aec数据)
在jlkws.c中打开宏#define AEC_DATA_TO_SD 1 //将唤醒前的mic/dac/aec数据写卡进行查看,3channel(mic,dac,aec)
插入sd开机后,进行唤醒测试,唤醒成功后,可查看数据aec.pcm中的三通道数据mic/dac/aec数据,可查看aec效果