rtos自动增益(AGC)模块说明
功能说明
录音的增益共有三级,MICL增益,ALCL增益,ADCL数字增益。
ALCL模块中可以设置固定增益或者通过AGC模块自动控制ALCL增益。
AGC模块将对低于最低音量阈值的声音每间隔一小段时间增加1.5db直到音量超过最低音量阈值或已经达到最高增益范围。
同理对于超过最高音量阈值的声音,会快速降低增益,直到小于最高音量阈值或已经达最低增益范围。
参数以及使用说明
c_codec = pcm_get("icodec-capture");
pcm_private_ctrl(c_codec, "agc_on", 1); // 配置alcl模块为agc自动增益
// range_max = n (0-0x7fff) 转换为db: 20lg(n/0x7fff)db
// 16422 为默认值,为满幅0x7fff的一半
pcm_private_ctrl(c_codec, "range_max", 16422); // 超出这个阈值agc会减低增益
// range_min = n (0-0x7fff) 转换为db: 20lg(n/0x7fff)db
pcm_private_ctrl(c_codec, "range_min", 8294); // 低于这个阈值agc会增高增益
// pgain_max [0-7] 最低 -13.5d 6db per step
pcm_private_ctrl(c_codec, "pgain_max", 7); // 最大的agc增益
// pgain_min [0-7] 最低 -18db 6db per step
pcm_private_ctrl(c_codec, "pgain_min", 0); // 最小的agc增益
调试方法与建议
调试应用
调试应用基于AD101开发板(含屏及触摸)开发,方便修改参数与查看效果,用户需要根据自己的开发环境作相应修改。
应用使用ad101_evb_v10_lvgl_nor_defconfig
基本配置,使用到usb_gadget_uac1,确保如下配置已经勾选。
小系统中应用在:example/driver/audio_agc_test_example.c
编译该应用。
应用将开发板作为UAC录音设备,接入电脑能实时查看录到的音频,同时使用lvgl在屏幕上直接显示当前AGC增益值,也可以动态调整AGC相关参数。
使用audacity应用,选择录制设备为开发板,实时显示录制到的波形。
选择录制设备为开发板
通过电脑上的amixer或其他声音设置来设置开发板上的数字增益
屏幕中显示AGC相关接口以及增益值
上方从左到右分别设置最大增益范围,最小增益范围,最大音量阈值,最小音量阈值以及AGC开关功能,与AGC的控制接口对应。
调试建议
开启AGC功能,将数字增益置为0db
pcm_private_ctrl(c_codec, "adcl_gain", 196);
(196为ad10x平台0db增益时的值),此时录制到的声音就是AGC动态调节后的声音,可以在电脑上看到波形一段时间内的最大值是在1/2到1/4也就是range_max到range_min之间(或超出AGC调节的增益范围,则无法达到区间)。为避免突然的冲击影响后续录制,模拟使用场景常见的声音冲击,在开启AGC功能后查看增益的变化以及后续对声音的影响,来确定最低增益pgain_min