在理想状况下,对于录音过程,只需要将麦克风获取到的analog信号通过ADC转换为digital信号并存储即可,对于播放音过程,只需要将digital信号通过DAC转换为analog并输出到speaker播放即可。
但在实际的过程中,对于录音过程而言,会受到外界声源的干扰,麦克风自身对信号的衰减以及物理链路接口上引入的杂音等因素的影响,对于放音,可能会受digital数据本身的问题等因素的影响。
举个简单的例子,拿着手机或者固定电话和别人讲话的时候,虽然一边自己说话,一边听电话另外一端的人讲话,但是从听筒中并没有非常明显的听到自己的讲话声音。这中间就是一些Audio Codec在起作用,它们可以实现回音消除,噪音抵消,以及ALC/Limiter等,当然它也实现了最重要的AD和DA功能。
不知道怎么来翻译这个词语,姑且称之为动态电压控制。
通过检测系统中的analog信号来判断是否超过Codec中设定的Max/Min值,如果超过的话,则去根据设定的attack rate和release rate来调整analog的电压,以达到使其介于一个合理范围内的目的。
所谓的attach rate其作用的过程就是增益增大(电压降低)的过程,而release rate则是增益减小(电压增高)的过程,如下图所示:
实际使用过程中,ALC功能所能够达到的效果如下图:
从图中可以看到,对于超过Max强度的电压,通过调整attach过程将其降低,反之则通过release将其增大。
对于一般的Codec芯片而言,使用ALC功能的时候都要去配置Max/Min的threshold(db)值,以及Attach rate和Release Rate(快or慢)。
不知道应该怎么翻译这个词。
与ALC类似,Limiter也是去检测analog信号的强度,当大于用于设置的threshold的时候通过直接对信号进行截断处理,也有的Codec不是野蛮的进行截断处理,而是采用类似ALC调整Gain的方法来调整analog信号的强度。
例如max9756中Output Limiter的效果图如下:
注:
个人理解,Limiter的效果比起ALC来说相对差一些,可能是内部硬件实现的决定了这点吧,前者可能是一种相对Cost-down的方案。