1、方案关键技术简介
1.1 ANC 与AANC 的区别
在传统的(FF)模式下(静态ANC),ANC根据输入信号进行滤波以产生抗噪声。假设一次和二次声路是静态的并且事先知道,在耳机ANC场景中是固定的,静态ANC可以获得最佳性能。这就要求,耳机密闭性强,对耳朵产生很大的压迫感!
一般耳机设备ANC场景是不固定的。听筒声学主要和次要路径的显着变化取决于耳机设备的位置以及设备和耳朵之间的压力。
在AANC中有一个额外的自适应算法。该自适应算法接收噪声输入信号和误差信号,并根据主、次路径的变化计算出最优滤波器值。传统的FF-ANC只需要输入信号,而自适应算法也需要误差信号。这种自适应抗噪声信号为噪声消除提供了更好的用户体验,尤其是对于耳机设备。
总之AANC 耳机,消噪效果好,佩戴更舒适。
如下图:
Static ANC 与Adaptive ANC 的区别
2、硬件原理图图
3、软件开发过程
3.1. 环境配置
在使用 QCC5141 开发板前,请确保下载并安装好以下软件 “
1)MDE:MDE WIN 2.5.1.47
2)Toolkit : ADK Toolkit 1.1.2.40
3)ADK:ADK 20.3 (r00201.1)
3.2. 开发流程
1)、打开MDE工具,MDE版本:2.5.1.47,点击Open Project
打开ADK 20.3 (r00201.1)
2)、设置宏定义
首先设置有关的宏,
打开ANC与 Adaptive ANC:ENABLE_ANC,ENABLE_ADAPTIVE_ANC
3)、把 AANC capability (download_aanc.edcks) 加到 ro_fs (MDE -> Right click ro_fs -> Add Existing Files… -> 选择audioqcc514x_qcc304xkalimba_ROM_7120kymeraprebuilt_dkcsstreplus_rom_releasedownload_aanc.edkcs文件
4) Microphone 配置
earbud 工程可以配置6个麦克风,其中 有定义 MAX_SUPPORTED_MICROPHONES
#define MAX_SUPPORTED_MICROPHONES 6
在 srcdomainsaudiomicrophonesmicrohones_config.h 有MIC 的相关设置
//!@{ @name Parameters for microphone 0 - Left analog MIC */
#define appConfigMic0Bias() (BIAS_CONFIG_MIC_BIAS_0)
#define appConfigMic0BiasVoltage() (3) /* 1.9v */
#define appConfigMic0Pio() (0x13)
#define appConfigMic0Gain() (0x5)
#define appConfigMic0IsDigital() (FALSE)
#define appConfigMic0AudioInstance() (AUDIO_INSTANCE_0)
#define appConfigMic0AudioChannel() (AUDIO_CHANNEL_A)
//!@}
//!@{ @name Parameters for microphone 1 - Right analog MIC */
#define appConfigMic1Bias() (BIAS_CONFIG_MIC_BIAS_0)
#define appConfigMic1BiasVoltage() (3) /* 1.9v */
#define appConfigMic1Pio() (0x16)
#define appConfigMic1Gain() (0x5)
#define appConfigMic1IsDigital() (FALSE)
#define appConfigMic1AudioInstance() (AUDIO_INSTANCE_0)
#define appConfigMic1AudioChannel() (AUDIO_CHANNEL_B)
//!@}
接下来,配置 麦克风的 ANC 模式或者 ANC 与 cVc 共享的Run Mode模式,在srcdomainsaudiokymerakymera_config.h 中Hybrid ANC example (with 1-mic cVc sharing and mixed mic configuration):
//!@{ @name ANC configuration for hybrid mode */
#define appConfigAncPathEnable() (hybrid_mode_left_only)
/*! Disable ANC tuning functionality */
#define appConfigAncTuningEnabled() (FALSE)
#define appConfigAncTuningMonitorMic() (microphone_none)
/* Use microphone 3 (digital mic) for ANC feed-forward */
#define appConfigAncFeedForwardMic() (microphone_3)
/* Use microphone 1 (analog mic) for ANC feed-back */
#define appConfigAncFeedBackMic() (microphone_1)
/* ANC filter mode selection in default case */
#define appConfigAncMode() (anc_mode_1) //!@}
/*! microphone to use for the first SCO mic */
#define appConfigVaMic1() (microphone_3)
/*! microphone to use for the second and third SCO mics. These should be defined as microphone_none if using 1-mic CVC */
#define appConfigMicExternal() (microphone_none)
#define appConfigMicInternal() (microphone_none)
5)、Adaptive ANC Filesystem 配置
首选确保静态ANC定义的参数文件系统配置,ps_cfg>anc_tuning_config.htf是可用的,如图:
此外,自适应ANC在ps_cfg>aanc_parameters.htf是可用的:
6)、ANC打开,关闭与切换
ANC UI控制部分代码:可以设置ANC打开和关闭,以及存储几组不同ANC参数之间的切换。
4、运行调试与测试
4.1 Build /Deploy
Build 后,然后单击Deploy All,就可以把程序下载到板子上
4.2 运行
程序下载后,启动,默认MFB按键3s 可以 进入 Anc Enable 模式
或则用Python Debug 输入,Debug 命令:apps1.fw.call.EarbudTest_SetAncEnable()
即可进入 ANC Mode
4.3 测试
打开 QACT ,如下图,
就进入AANC 的调试界面,在 AANC View 选项上,
可以进行AANC 的调试,
把调试好的参数保存成htf 文件,复制到ADK 中,就生效了
具体 EQ 上的效果,可以用anc_filter_designer ,如下图
可以进行拖动,来调节一些AANC 的音效
结语
以上是方案的介绍与功能演示,基于Qualcomm QCC5141 Adaptive ANC自适应主动降噪的蓝牙耳机方案,更全面的舒适体验。