动态范围控制可以自动调整信号的动态范围;(信号的动态范围是信号的最大幅值与最小幅值比值的对数,使用dB作为单位)
动态范围控制可以做的事情
- 根据环境匹配音频信号电平;也就是杜比volume leveler的作用;
- 保护ADC使其不会过载;在广播信号发送时,发送器有峰值限制,超过这个峰值会使得发送器过载。动态范围控制可以压缩原始信号的动态,使发送信号的动态范围满足发送器的要求。在音频领域,将数字音频信号送到DAC之前,音频智能功放算法中的DRC可以实现扬声器振幅保护;
- 优化信息;也就是使音频信号使用到满幅的动态范围;
- 压制低电平的噪声;DRC的噪声门有一定的降噪效果;
动态范围控制的类型
- 动态范围压缩器(Dynamic range compressor)--减弱超过给定阈值的大声信号的音量;可以保护硬件,增加整体响度;
- 动态范围限幅器(Dynamic range limiter)--是压缩器的一种,可以限制超过给定阈值的信号;
- 动态范围扩展器(Dynamic range expander)--减弱低于给定阈值的小声信号的音量;可以使得小信号听起来更加小声
- 噪声门(Noise gate)--是扩展器的一种,可以限制低于给定阈值的信号。
在动态范围控制系统中,增益信号在sidechain中计算,然后应用到输入信号中;
首先解释什么是增益信号,在DRC中要确定对离散信号的每一个样本使用多少增益,也就是给没一个样本值分别乘以一个系数,这个系数就是增益,这个增益序列就是增益信号;增益信号也叫做DRC的控制信号。
sidechain包含的模块
- 将原始信号从线性值转换为dB值:x->xdB,所有的DRC系统使用的增益信号都是用dB值进行处理。xdB = 20log10(x)
- 增益计算,通过将dB信号传递到静态特征方程(DRC静态曲线),获取差值gc=xsc-xdB;
- 增益平滑:gc->gs;使用attack time、release time以及hold time作为系数对信号进行平滑。也就是对于台阶信号,增益信号并不是台阶的,使用指数或者对数函数进行平滑过渡。Attack time和release time对应增益信号从最终值的10%到90%所花费的时间。Hold time是在增益被施加之前的延时周期。为什么会有hold time?因为即使使用很短的attack time,limiter仍然会出现超调量,这可以在增益平滑中使用一个很短的时延来解决,例如300微秒。增益平滑使用的是一阶递归滤波器:gs(n) = (1 − k) · gs(n − 1) + k · gc(n),k=AttackTime,ReleaseTime;
- 添加make-up gain(对于压缩器和限幅器):gs->gm
- dB值到线性值的转换:gm->glin
- 在原始音频信号中应用计算出来的增益信号:y=glin * x
增益计算
增益计算单元进行增益信号的初步预估,增益计算单元的核心模块是静态特征,每一种类型的DRC有不同的静态特征,包括了可调的属性参数:
a)阈值threshold--所有的静态特性都有一个阈值,在阈值的一边,输入信号没有被修改,在阈值的另一边,输入信号被压缩、扩展以及限幅;
b)压缩比率Ratio--扩展器和压缩器的静态特征模块在计算增益时依赖用户提供的输入/输出的压缩比;
c)kneewidth-- 扩展器、压缩器以及限幅器的静态特征模块可以调整拐点的宽度;拐点宽度包含在阈值中,拐点宽度越大,阈值附近的过渡越平滑。如果拐点没有提供过度,则是硬拐点;如果拐点附近有大于0的拐点宽度值,则是软拐点。
在计算信号增益要进行电平检测,电平检测使用递归一阶滤波器获取原始信号的电平;有基于Peak和基于RMS两种方法;Peak是生成信号电平的峰值包络,RMS是计算前N个样本的RMS值作为当前样本的电平。电平检测的作用是对于一个在原点波动的信号,DRC关心的是信号的峰值或者RMS值,而不关心信号的振荡情况。电平检测一阶递归滤波器,使用Attack time或者release time作为滤波器的系数进行控制。
参考:Matlab官网用户手册,结合自己的理解