双麦相位校准是指对两个麦克风进行信号处理, 以确保它们在接收到相同的音频信号时产生相同的输出. 这对于使用双麦克风的耳机尤为重要, 因为它可以提高语音识别和语音通信的质量.
如果两个麦克风的相位不同步,那么它们的输出将会产生时间差, 导致声音失真或混淆. 因此, 通过双麦相位校准, 可以将两个麦克风的输出同步, 从而消除这种干扰. 这可以提高语音识别和语音通信的准确性, 并使用户的体验更加舒适和自然
适合使用BES双麦算法 SPEECH_TX_2MIC_NS2
SPEECH_TX_MIC_FIR_CALIBRATION
准备工作
- 需要一个带串口线的机器, 能dump出数据的机器
- BES Audio Developer工具, 下载地址: Audio Developer工具
- 小音箱
- 白噪声声源文件
双麦相位校准
-
首先dump校准前的双麦通道的数据, dump麦克风数据的方法可以参考 BES AUDIO DEMP工具使用说明
注意dump的是校准前的数据, 也就是dump代码的位置应该在经过任何算法之前
-
将小音箱放在双麦克中垂线上, 播放白噪声, dump 数据查看录音大小, 调整音箱声音大小, 使录音数据大概在-10dB左右最佳
-
使用 Adobe Audition 其他类似工具打开 dump 出的文件, 查看两个 mic 拾取到的信号的幅频或相频差异是否符合预期, 可以与结构工程师的结果比较. 如果没有相位差异, 则无需校准, 如下图相位差异大
-
若差异比较大偏得比较严重则需要校准, 校准前先使用音频编辑工具, 将dump出来的pcm文件转换格式, 转换成wav文件.
-
使用 Audio Developer工具中console里 aqe_tools.run_fir_calibration或者aqe_tools.run_iir_calibration, 将录音数据作为输入, 得到一组 FIR/IIR 滤波器系数(位于_coeffs.h里面). 需要注意的是 ‘infile.wav’ 为双声道音频数据, 左声道为主麦克信号, 右声道为辅麦克信号, ‘infile.wav’ 是相对于工具main.exe的相对路径, 或者直接将 ‘infile.wav’ 复制到main.exe同级目录即可
这里使用的是硬件FIR校准, aqe_tools.run_fir_calibration(‘infile.wav’) , 会在 dist 文件夹下生成文件名后缀为 _coeff_fir.h 文件
查看生成的文件 calib_noise_out.wav, 看校准后的相位是否达到预期. 当输入文件相位差较大时, 可能无法使用 FIR 滤波器来补偿, 如下为相位校准后效果
-
校准之后会生成的后缀为 _coeff_fir.h 文件, 将其中的数组替换 bt_sco_chain_cfg_default.c 里mic2_ft_caliration数组即可完成相位校准
-
验证校准后的效果
参考前面的步骤, 将dump双麦数据放在相位校准算法之后, 按照上面步骤查看双麦校准数据是否符合预期