9.15. 回声消除算法
概述
提供回声消除算法的配置和使用说明
9.15.1. 使用说明
进入相应的工程 /include/app_config.h
,开启宏 CONFIG_AEC_ENC_ENABLE
,在请求编码服务时 AUDIO_ENC_OPNE
增加以下代码
struct aec_s_attr aec_param = {0};
req.enc.aec_attr = &aec_param;
req.enc.aec_enable = 1;
extern void get_cfg_file_aec_config(struct aec_s_attr * aec_param);
get_cfg_file_aec_config(&aec_param);
if (aec_param.EnableBit == 0) {
req.enc.aec_enable = 0;
req.enc.aec_attr = NULL;
}
#if defined CONFIG_ALL_ADC_CHANNEL_OPEN_ENABLE && defined CONFIG_AISP_LINEIN_ADC_CHANNEL && defined CONFIG_AEC_LINEIN_CHANNEL_ENABLE
if (req.enc.aec_enable) {
aec_param.output_way = 1; //1:使用硬件回采 0:使用软件回采
if (aec_param.output_way) {
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
if (req.enc.sample_rate == 16000) {
aec_param.wideband = 1;
aec_param.hw_delay_offset = 50;
} else {
aec_param.wideband = 0;
aec_param.hw_delay_offset = 75;
}
server_request(__this->enc_server, AUDIO_REQ_ENC, &req);
Note
外部依赖库libaec.a、libdns.a、libjlsp.a,工程需要添加
apps/common/jl_math/jl_fft.c
9.15.2. 参数调试
打开编译前配置工具,AC791N_配置工具入口:
cpu/wl82/tools/AC791N_config_tool/AC791N_配置工具入口(Config Tools Entry).jlxproj)
,选择“编译前配置工具”

点击通话参数配置,通过点击ON/OFF按钮选择打开或关闭需要的功能模块,AGC模块暂时不支持使用

点击其中某一个模块,可调整具体参数

参数设置完成后,点击保存成bin文件,将生成的cfg_tool.bin文件复制到
cpu\wl82\tools
目录,重新烧录即可生效

9.15.3. 常见问题
回声消除算法支持哪些采样率?
答: AEC目前只支持采样率8000或16000,且只支持单通道。
回声消除打开后发现无效果?
答: 检查AEC是否打开成功,aec_encoder任务是否有加到app_main.c的任务列表,任务是否创建成功,MIC配置是否正确。
回声消除后还是有一点回声未能完全消掉,应该如何优化?
答: 考虑到外接功放模块的特性,可采用硬件差分回采电路,效果比纯软件回采DAC输出数据更好。