双麦声源定位算法¶
该算法能进行声源方位角度估计,当前版本支持0-180度检测范围,分辨率为10°,双mic位置需处于同一平面相同朝向。本文以offline_asr_llm_aiot_uart_sample为例,offline_asr_llm_aiot_hpout_sample同样适用。
用户可选择NN DOA或者GCC DOA,以下是两种算法的对比列表:
| 双麦声源定位算法 | 检测范围 | 分辨率 | 麦间距支持 | 角度输出方式 |
|---|---|---|---|---|
| NN DOA(后续版本支持) | 0-180° | 10° | 推荐麦间距为4cm ~ 6cm,小于4cm效果很差,训练好的模型是4cm ~ 10cm,模型替换在本文第4章介绍 | 识别词条后输出 |
| GCC DOA | 0-180° | 22.5° | 推荐麦间距为3~8cm,需修改对应间距的distance_scale | 识别词条后输出或者实时输出 |
1. 该算法参数宏说明在CI13XX_SDK_LLM_AIOT_Vx.x.x\projects\offline_asr_llm_aiot_uart_sample\app\app_main\user_config.h文件中
#if USE_GCC_DOA
#define GCC_DOA_OUT_TYPE 1 //doa输出类型:0-周期输出角度 1-唤醒词和命令词都输出角度
#endif
#if USE_NN_DOA
#if !USE_AEC_MODULE
#define NN_DOA_OUT_TYPE 1 //doa输出类型:1-唤醒词输出角度 2-命令词输出角度 3-唤醒词和命令词都输出角度
#endif
#endif
V3.0.19 说明
- 自 V3.0.19 起声源定位默认使用 GCC DOA(
USE_GCC_DOA,在system/user_alg_config.mk中使能),NN DOA(USE_NN_DOA)暂未支持; - 输出角度宏由原
AI_DOA_OUT_TYPE(1 唤醒词 / 2 命令词 / 3 两者)调整为GCC_DOA_OUT_TYPE(0 周期输出角度 / 1 唤醒词和命令词都输出角度)。
2. 该算法相关应用函数在CI13XX_SDK_LLM_AIOT_Vx.x.x\projects\offline_asr_llm_aiot_uart_sample\app\app_doa\doa_app_handle.c文件中
/**
* @brief 角度信息输出
*/
void ci_doa_get_cb(int audio_state, int doa_angle)
V3.0.19 重要变化
V3.0.19 起 NN DOA 暂不支持,其算法模型(原 external\model\doa(声源定位) 中的 [60004]nn_dual_mic_doa_vxxxx.bin)已不再随包提供,三个模板工程的 firmware\dnn 也已删除该模型。双麦声源定位请改用 GCC DOA:在 system\user_alg_config.mk 中将 USE_GCC_DOA 置 1(无需算法模型),角度输出方式由 GCC_DOA_OUT_TYPE 控制(0-周期输出角度、1-唤醒词和命令词都输出角度)。若后续版本恢复 NN DOA 支持,再按“把 [60004]nn_dual_mic_doa_vxxxx.bin 复制到 projects\offline_asr_llm_aiot_uart_sample\firmware\dnn”的方式配置。
4.声源定位算法请把CI13XX_SDK_LLM_AIOT_Vx.x.x\external\model\doa(声源定位)中[60004]nn_dual_mic_doa_vxxxx.bin算法模型,复制到CI13XX_SDK_LLM_AIOT_Vx.x.x\projects\offline_asr_llm_aiot_uart_sample\firmware\dnn文件夹中
注意
- 双mic位置需处于同一平面相同朝向,推荐麦间距为4cm~6cm。
- 声源定位算法支持多种不同方式输出角度信息,可通过
GCC_DOA_OUT_TYPE(或NN_DOA_OUT_TYPE)宏来设置。 - 声源定位需搭配该算法的前端算法模型使用。