BES2700双麦通话ENC调试--TX_2MIC_NS8算法
在开发蓝牙耳机过程中,经常会遇到通话效果需要调试的需求,本篇文章简单说明了双麦上行降噪的设计原理并记录了一次使用恒玄BES2700调试双麦ENC通话上行降噪的过程,双MIC ENC通话上行降噪算法采用的是SPEECH_TX_2MIC_NS8算法。
双麦通话降噪原理
在调试双麦通话降噪效果之前,我们首先需要搞清楚SDK中,耳机进行通话时候音频处理流程一般如下(不同SDK处理流程可能稍微有些差异,可根据需求增加或bypass某些处理,但主要流程是差不多的)。
我们调试的SPEECH_TX_2MIC_NS8算法,就是在上图Beamforming的流程。双麦ENC的核心原理是通过两个麦克风采集声音信号,利用空间和信号差异处理算法,通过算法形成Beam指向性声学波束,也能对最大的噪声干扰形成Null,能有效滤除环境动态噪声区分目标语音与环境噪声,最终抑制噪声并增强人声。
双麦ENC设计需求
恒玄BES双麦降噪技术主要应用于耳机设备的语音上行通话中,BES算法技术对双麦麦克风的一致性和布局有一定的要求。
-
双麦布局要求
入耳式耳机受限于ID设计,双麦的布局需要结合实际产品来确定。以下图为示例,以下为入耳式耳机双麦的推荐布局。如双麦的物理距离为d0,双麦相对于人嘴的有效距离为d2-d1,其取值应小于d0。
头戴式耳机mic可选位置相对灵活,因而推荐双麦和人嘴在一条直线上,并且双麦之间的距离最大化。如下图头戴式耳机双麦布局推荐所示,双麦相对于嘴的有效距离为耳机直径d0。双麦降噪技术要求双麦相对于嘴的有效距离(即d2-d1)大于1cm,而双麦克间距(即d0)大于1.5cm。出于对风噪抑制效果的考虑,双麦最好不在同一平面上。
-
双麦腔体要求
BES原厂推荐腔体设计,双麦克之间的隔离度大于60dB(双麦的Vmic要分开),腔体密封性大于20dB,Speaker和麦之间工艺尽量要做点胶隔离,这样麦克收到的回声信号会比较小,双麦克降噪算法可以将回声作为干扰信号抑制掉,不用外加回声抑制算法,不仅节省功耗而且对音质也有好处。 -
双麦一致性要求
BES原厂推荐麦克风选用灵敏度大于-42dBV,麦克开孔0.8~1mm,SNR>60dB。
幅频一致性要求为:2-mic在50Hz~4kHz范围内,误差在±1dB,BES有产线校准工具可以对幅频一致性进行校准。
相位一致性要求为:2-mic在500Hz的相位差在±3°,1000Hz ±5°。
SPEECH_TX_2MIC_NS8算法调试
以下记录了使用恒玄BES2700芯片SPEECH_TX_2MIC_NS8通话上行算法调试使用过程,2MIC_NS8算法对比其他TX_NS2的优势是集成的功能模块更多(如回声抑制、风噪抑制等),支持深度学习的噪声抑制,降噪效果会更优,但占用的资源(RAM、FLASH、MIPS)可能会相应增加。(有些芯片或旧版本SDK可能没有这个算法,需要BES原厂算法库中加入)
-
在项目target.mk文件中打开TX_2MIC_NS8算法
这里将单麦通话算法关闭,开启双麦NS8算法
-
在tgt_hardware.c文件中配置所使用的麦克风,这里的通道配置和VMIC配置需要和原理图上设计的通道对应。(硬件通道MIC15对应软件通道CH04)
-
原始信号确认
可以通过dump工具将原始双麦通道的数据dump出来。确认原始双麦的数据正常(可以排查麦克风是否有损坏),通话音频上行dump数据可以参考文章 通话dump工具使用。
从双麦原始数据可以看到1CH为主麦克风通道拾取的声音比副麦的声音相对较大,如副麦的拾取的声音比主麦的声音较大,则需要通过打开宏定义SWAP_CHANNELS来调换两个通道的数据,以防止主麦的声音被认为噪音而被抑制的情况。
-
TX_2MIC_NS8参数调整
从以上参数中可以看到NS8算法集成了基础降噪功能、回声抑制、风噪检测、自适应滤波、降噪后处理等功能。用户可以根据配置参数动态地启用和禁用功能模块。
基础降噪相关参数
dist:麦克风间距,用于优化空间滤波性能。
min_frequency/max_frequency:设定降噪处理的频率范围(如仅处理300Hz-4kHz语音频段)。
energy_threshold:噪声能量阈值,低于此值的信号视为噪声。
corr_threshold:双麦克风信号相关性阈值,用于区分语音(低相关)与环境噪声(高相关)。
gamma:噪声功率谱密度(PSD)估计的遗忘因子,控制噪声模型更新速度。
风噪抑制参数
wind_supp_enable:启用/禁用风噪抑制处理。
回声抑制/消除AEC
echo_af_enable:启用自适应滤波器,通过参考信号建模回声路径(回声小可以不开启这个功能可以节省些资源)。
echo_supp_enable:启用频域回声检测与压制。
echo_band_start/echo_band_end:定义检测回声的频段(如200Hz-4kHz)。
min_ovrd:调节抑制强度(值越大,回声压制越强)。
后处理功能
对降噪后的信号进一步优化语音质量。
post_supp_enable:启用后处理降噪(如谱减法或维纳滤波)。
denoise_dB:设定最大降噪幅度(如15dB)。
wdrc_enable:启用宽动态范围压缩,提升低音量语音清晰度,抑制过载。
pre_gain/post_gain:处理前后信号增益调节,平衡输入输出音量。
建议参数调试步骤:调试建议是先调整硬件相关参数,如dist麦克风间距参数,再调整噪声阈值energy_threshold、corr_threshold;根据场景适配高噪声环境或语音保真优先场景打开post_supp_enable和wdrc_enable,调整denoise_DB,结合目标场景的噪声特性与硬件资源,精细调节参数以达成性能与资源占用的最佳平衡。祝大家开发顺利。