跳转至

深度降噪算法

该法算能抑制设备本身产生的高噪声,以提升低信噪比环境下的识别率,针对不同应用领域需使用对应的领域模型。本文以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.降噪前后数据对比,从图中可以看出降噪算法将底噪和环境噪声进行了抑制 降噪前后音频对比

注意

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