深度降噪算法¶
该法算能抑制设备本身产生的高噪声,以提升低信噪比环境下的识别率,针对不同应用领域需使用对应的领域模型。本文以offline_asr_llm_aiot_uart_sample为例,offline_asr_llm_aiot_hpout_sample、offline_asr_llm_aiot_iis_sample同样适用。
V3.0.19 说明
- 自 V3.0.19 起 NN 深度降噪由
system/user_alg_config.mk中的USE_NN_DENOISE开关控制(默认开启); - 降噪模型最终替换为 ANS1-061(
firmware/dnn/[60003]ANS1-061.bin); - 新增**降噪强度 beta 系数**与**降噪强度自适应模式**,可在
ci_ssp_config.c的nn_denoise_config中配置。
1. 深度降噪算法请把CI13XX_SDK_LLM_AIOT_Vx.x.x\external\model\nn_denoise中[60003]ANS1-061.bin算法模型,复制到CI13XX_SDK_LLM_AIOT_Vx.x.x\projects\offline_asr_llm_aiot_uart_sample\firmware\dnn文件夹中(V3.0.19 默认已随包提供;目录名由旧版的 nn_denoise(深度降噪) 简化为 nn_denoise)
2. 降噪参数配置: 打开 projects\<工程名>\app\app_main\ci_ssp_config.c,NN 降噪模块配置如下:
//NN 降噪模块配置
denoise_nn_config_t nn_denoise_config =
{
.alg_enable = true,
.alpha_forget = 0.75f,
.denoise_mode = 0,
.denoise_beta = 1.0f, //降噪强度系数(0.0 < beta <= 1.0),1.0 为默认降噪强度,beta 越小降噪强度越低
.denoise_beta_adaptive_mode = false,//beta 自适应模式,配合 NN 噪声估计模块使用(由 DENOISE_STRENGTH_ADAPT_ENABLE 决定)
.denoise_ratio_upper_limit = 1.0f, //beta 上限值
.denoise_ratio_lower_limit = 0.87f, //beta 下限值,推荐大于 0.85
.denoise_energy_highest_thr = 90.0f,//噪声能量对数最高阈值
.denoise_energy_lowest_thr = 75.0f, //噪声能量对数最低阈值
};
3.降噪强度自适应模式
需将 user_config.h 中的 DENOISE_STRENGTH_ADAPT_ENABLE 置 1;开启后由 denoise_energy_highest_thr 与 denoise_energy_lowest_thr 均分出 4 个噪声能量对数区,每个分区使用 beta 上下限均分得到的 beta 值——高噪环境使用小 beta 保留人声,低噪环境使用大 beta 完全相信降噪(大于最高阈值或在 4 个分区中最大的分区使用 beta 上限,小于最低阈值则 beta 取 1.0)。
例如如下配置,与其对应的降噪强度分布:
DENOISE_BETA_UPPER_LIMIT 1.0f
DENOISE_BETA_LOWER_LIMIT 0.87f(此处仅为演示使用,该值推荐为0.9f以上)
DENOISE_ENG_HIGHEST_THR 90.0f
DENOISE_ENG_LOWEST_THR 75.0f

4.降噪和原始音频数据采集,请参考☞降噪和原始音频采集
5.降噪前后数据对比,从图中可以看出降噪算法将底噪和环境噪声进行了抑制

注意
- 深度降噪算法无用户必须配置的参数,可通过
denoise_beta与自适应模式微调降噪强度。 - 深度降噪需搭配该算法的前端算法模型使用。
- 深度降噪在AI平台制作ASR与DNN模型请选择深度降噪专用模型。