前言
现在为止也开发了许多杰理TWS蓝牙耳机、音响项目SDK的案子,在调试案子时不断的向前辈们学习到了很多关于蓝牙音响、蓝牙TWS耳机专业的知识。想在这里做一个学习汇总,方便各位同行和对杰理芯片SDK感兴趣的小伙伴们学习;
本章详细讲解ANC主动降噪模块配置教程
本文针对TWS蓝牙耳机ANC主动降噪模块进行一个详细讲解配置教程,讲解内容本博主围绕着杰理文档进行整合为:
1、什么是ANC?
2、ANC工作原理?
3、根据硬件原理图在可视化JL studio中如何配置ANC?
4、软件上ANC相关代码讲解
5、ANC相关代码配置根据flash容量配置起始地址
6、调试ANC效果步骤
1、什么是ANC?
ANC( Active Noise Cancellation) 中文称呼:主动降噪,使用耳机内的麦克风采集环境的中低频噪声,经过算法实时运算,并喇叭发射出与噪声相位、振幅相同(理想情况)的声波来抵消噪声;
ANC类型:
单麦类型为FF/FB,双麦类型(HYBIRD);
ANC降噪效果HYBIRD = FF +FB;
ANC模式:
降噪、通透、关闭:分别为对应ANC3个模式,可根据实际开启对应模式
2、ANC工作原理
FF 麦(前馈麦克风,Feedforward Mic)
物理位置:耳机外侧,直接暴露在环境噪声中。
作用:采集 外部环境噪声(如引擎声、风噪等)。
降噪原理:FF 麦拾取噪声 → ANC 滤波器生成 反向声波 → 通过扬声器播放,在耳内与原始噪声 相消干涉。
优点是响应快,对高频噪声效果好,但对佩戴状态和角度较敏感。
FB 麦(反馈麦克风,Feedback Mic)
物理位置:耳机内侧,紧贴耳道或扬声器附近。
作用:采集 耳道内的残余噪声(实际听到的噪声与反相声波叠加后的剩余部分)。
降噪原理:将残余噪声作为 误差信号 反馈回系统,动态修正滤波器系数,形成闭环控制。
优点是能补偿佩戴泄漏,低频稳定性好,但对高频受限且存在延时导致的高频啸叫风险。
(Hybrid ANC)混合降噪中的组合使用
杰理 SDK 支持 混合降噪(Hybrid ANC),即同时使用 FF + FB 麦克风,两者协同:
FF 麦克风处理 宽频外部噪声FB
麦克风补偿 低频残余并适应佩戴变化
3、在可视化JL studioa 中如何配置ANC模式
配置说明:
左声道FFMIC、左声道FBMIC、右声道FFMIC、右声道FBMIC:
ANC MIC的通道配置,根据原理图,配置对应的ANC MIC;
TWS一般仅需配置 左声道FFMIC、左声道FBMIC;头戴式/挂脖耳机需配置左/右声道,多余的MIC配置选择MIC; NULL
TALK MIC:
根据原理图和实际功能设计,配置TALK MIC对应的ADC 通道,一般供ANC_EXT算法使用;


ADC MIC配置:

4、软件上ANC相关代码讲解
cpp
/* ANC 模式定义 */
typedef enum {
ANC_OFF = 1, /*关闭模式*/
ANC_ON = 2, /*降噪模式*/
ANC_TRANSPARENCY = 3, /*通透模式*/
} ANC_mode_t;
/* ANC模式切换(下一个模式) */
void anc_mode_next(void);
/*
ANC模式切换(切换到指定模式),并配置是否播放提示音
param: mode 指定模式ANC_mode_t
tone_play 0: 不播放提示音;1: 播放提示音
*/
void anc_mode_switch(u8 mode, u8 tone_play);
/*
ANC状态获取
return 0: idle(初始化/OFF); 1: busy(ANC/通透/训练)
*/
u8 anc_status_get(void);
/*
获取当前ANC模式
return ANC_mode_t
*/
u8 anc_mode_get(void);
/*
ANC切模式繁忙标志
return 0:空闲; 1:切模式中
*/
u8 anc_mode_switch_lock_get(void);
ANC功能模块主要配置的文件在" audio_anc.c "和" audio_anc.h "这两个文件中里面有anc的初始化、ANC配置参数填充、ANC提示音播放、ANC增益淡入淡出等功能设置;
现在带着小伙伴一起代码追踪一下:
1、触摸按键触发时我们可以设置发送如下进入ANC模式的消息(如下图所示):有ANC模式循环切换、ANC降噪开启、ANC降噪关闭、ANC通透模式开启;通常使用ANC模式循环切换消息接口:APP_MSG_ANC_SWITCH;


2、ANC模式提示音播放(如下图所示)

5、ANC相关代码配置根据flash容量配置起始地址
根据SDK版本不同,更换4M芯片、8M芯片或16兆芯片后,有些SDK会根据FLASH空间容量自动切换ANC相关代码配置起始地址,有些SDK需要我们手动在" isd_config_rule.c "文件中进行设置;如不进行设置那么编译会报资源不够、代码段空间不够、容量等类似问题;

6、调试ANC效果步骤
1、在JL studio中打开" FW编辑、在线调音 "功能

2、将代码固件编译之后烧录到耳机端拿给声学工程师调试ANC效果;调试软件为:" ANC DESIGNER "
3、调试完成ANC主动降噪效果之后会有两个文件分别为:
anc_gains.bin: 存放增益/采样率等其他ANC硬件配置(多场景滤波器,不存放Total gain);anc_coeff.bin: 存放降噪/通透滤波器(多场景滤波器,存放 Total gain)。

将这两个新的anc_gains.bin和anc_coeff.bin文件替换SDK路径下的旧文件,这样就更新好了最新调试的ANC降噪效果

制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!