本章将继续跟随官方的调优文档开始探究,建议在确定每个调优参数的合适值后,使用这些值重新构建设备固件并重新刷写设备,此过程在后续官方的“构建应用程序”部分有详细描述;建议在每个调优步骤开始时重启设备。

AEC的参考增益

AUDIO_MGR_REF_GAIN

xvf_host --use i2c AUDIO_MGR_REF_GAIN

        默认值为1.5:

        根据官方的说法是REF信号可能在进来之前已经经过处理了,可能被EQ过,衰减,某些频段被Boost过。这里从AEC算法上我们推测他可能还有这种意图:

        当REF的增益过小的时候:回声消除欠消,回声有残留。

        当REF的增益过大的时候:参考信号被削波,AEC无法收敛,后级BF和NR出问题

        设置参数,将左通道输出为增益前的参考信号:

xvf_host --use i2c AUDIO_MGR_OP_L 4 0

        将右通道输出为增益后的参考信号:

xvf_host --use i2c AUDIO_MGR_OP_R 12 0

        此时默认是增益了1.5的,我们直接使用树莓派播放白噪声将白噪声(白噪声在所有频段都是均衡的!)注入参考信号通道,开启路由观察。

        XVF3800-Software_v3_2_1-3/sources/modules/fwk_xvf/modules/tuning/audio_files/48khz目录下,播放 white_noise_0dbfs_2ch_48khz.wav 文件。

aplay white_noise_0dbfs_2ch_48khz.wav

        测试发现官方设置的1.5刚好,所有的信号没有被削顶,且接近满幅度!所以我们这里无需在固件中修改这个参数,但是我们在新的工程和硬件部署的时候请注意设置这个参数!

麦克风增益

AUDIO_MGR_MIC_GAIN

xvf_host --use i2c AUDIO_MGR_MIC_GAIN

 默认增益设置的为10:

将左输出设置为选定麦克风增益后的信号(直接直接采用麦克风0):

xvf_host --use i2c AUDIO_MGR_OP_L 3 0

将右输出设置为参考音频增益后的信号:

xvf_host --use i2c AUDIO_MGR_OP_R 12 0

        我们在 XVF3800-Software_v3_2_1-3/sources/modules/fwk_xvf/modules/tuning/audio_files/48khz目录下,播放 white_noise_0dbfs_2ch_48khz.wav 文件。查看录音的电平幅度!

aplay white_noise_0dbfs_2ch_48khz.wav

        上图左声道就是回声信号,右声道就是参考信号。

        为什么一定要比-6dB还要低?

        如果回声比参考信号只低一点点,AEC算法算法就无法收敛:

        回声太强 -> 某些频段被放大 -> 算法误认为房间路径有放大效果 -> 算法学到错误的放大系数 -> 残余回声影响下一次适应!

        所以这里一定回声信号要比参考信号小-6dB以上!

静音等级设置

AEC_AECSILENCELEVEL

xvf_host --use i2c AEC_AECSILENCELEVEL

        这里是不是觉得很奇怪?设置的值和实际DSP内部的参数不一致?实际上这个XVF3800内部自适应的一个过程。

        这个阈值的作用是:

        当信号功率大于阈值的时候,这个信号就被当作有效信号,反之小于就认为是静音或者是噪声!

        翻看内部代码可以观察到:

        当检测到强信号的时候(>set),cur = set

        当检测到中等信号的时候(1e-6f 到 set之间) cur = 0.05 × set

        当检测到极低信号的时候 (< 1e-6f) cur = 1e-6f

我们开始来测量底噪的功率,设置左声道为增益后的参考信号输出!(这是因为再曾以后相对的AEC获取到的噪声也是会增加的,这非常符合实际AEC的使用噪声)

xvf_host --use i2c AUDIO_MGR_OP_L 12 0

设置右声道为静音声道:

xvf_host --use i2c AUDIO_MGR_OP_R 0 0

实际我们只需要测量左声道即可!

进入XVF3800-Software_v3_2_1-3/sources/modules/fwk_xvf/modules/tuning/audio_files/48khz目录下,播放 silence_2ch_48khz.wav 文件,开启Audacity路由10秒以上。

        选择左声道,然后使用Analyze选项,分析Foreground音频即可算出平均功率,目前我们测试为0即系统默认设置1e-9这个值是合理的!

        

        

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐