动态范围控制原理

科技资讯 投稿 6500 0 评论

动态范围控制原理

DRC介绍

动态范围会受到系统中各个环节的影响。例如同样是这段音乐,在一个40dB背景噪声的环境中播放,那么由于掩蔽效应等因素的影响,最终实际听到的音乐动态范围实际上是50dB。如果对响度和动态范围感兴趣的可以移步看鬼斧神工的文章《详解音频中的响度与动态范围。(推力、耳放、响度战争、高解析度等)》

助听器中最常见的宽动态范围压缩方法(Wide Dynamic Range Compression,WDRC)、音频信号处理中最常用的自动增益控制(Automatic Gain Control,AGC)方法等。DRC侧重于从数字域上对增益进行有选择、有目的地调整,以保证最大信号有合适的headroom,中间信号得到合适的amplify,小信号或者底噪被cutoff掉。

作用

  • 将音频信号电平与其环境相匹配

  • 对输入的忽大忽小语音进行动态拉伸,使语音听起来平稳。

  • 抑制低电平噪声,避免噪声在后续模块AGC中被放大。

  • 保护 AD 转换器免受过载

  • 优化信息;也就是使音频信号使用到满幅的动态范围;

动态范围控制的类型

  • 压缩器衰减(Dynamic range compressor):

  • 动态范围
  • 超过给定阈值声音的音量;通常用于录音系统以保护硬件并提高整体响度。

  • 动态范围限幅器(Dynamic range limiter:是压缩器的一种,可以限制超过给定阈值的信号;

  • 动态范围扩展器(Dynamic range expander:衰减低于给定阈值的安静声音音量。它们通常用于使安静的声音更加安静。

  • 噪声门(Noise gate:是扩展器的一种,可以限制声音低于给定阈值

  • 底噪:Cutoff,attenuation

  • 中等幅度信号:Expander

  • 幅度较大,防止削顶的:Limiter

整体而言算法较为简单,其中最关键的地方在于曲线的设计。DRC的曲线一般具备下图这样的结构,该图表示的是来滤除小信号的曲线图,如果想要动态拉伸的功能,那么整体曲线需要高于$y=x$这条直线。

静态曲线(图片来自《Digital Audio Signal Processing-Udo Zölzer》第七章

  • NT:噪声门限(Noise Gate),低于NT的输入信号将会被滤除

  • LT:限制器阈值(Limiter threshold),高于CT且低于LT的信号也会被压缩,而高于LT的信号将会被直接限幅

  • CT:压缩器阈值(Compressor threshold),高于ET且低于CT的信号将会保持不变

  • ET:扩展器阈值(Expander threshold),高于NT且低于ET的信号将会被抑制

MALTAB的Audio Toolbox中实现了 动态范围压缩器、动态范围限幅器、动态范围扩展器和噪声门。本教程还提供了动态范围限制器各个阶段的动态范围限制示例。

基本原理

通用的动态范围控制系统 (来自Matlab官网

1、线性到dB转换

从线性值转换为dB值

2、计算增益

通过将$x_{dB}(n $信号传递到静态特征方程(DRC静态曲线,假设设计的曲线函数关系为$f(x$

计算差值:$g_c(n)=x_{sc}(n-x)_{dB}(n$)

  • Threshold:所有的静态特性都有一个阈值。在阈值的一侧,信号不变。在阈值的另一侧,应用compression, expansion, limiting, 或 gating。

  • Ratio:Expanders  和 compressors 使您能够将静态特性的输入输出比调整为高于或低于给定阈值。

  • KneeWidth:expander、compressors和 limiters 使您能够调整静态特性的拐点宽度。静态特性的拐点以阈值为中心。knee width的增加会在阈值周围产生更平滑的过渡。knee width为零不提供平滑,称为硬拐点(hard knee。knee width大于零被称为软拐点(soft knee。

3、增益平滑

增益平滑的类型由启动时间(attack time)、释放时间(release time)和保持时间(hold time)组合指定。启动时间和释放时间对应于增益信号从其最终值的10%上升到90%所需的时间。保持时间是应用增益之前的延迟时间。

expander 和 noiseGate 的平滑方程

\alpha_A g_s[n-1]+\left(1-\alpha_A\right g_c[n] & \text { if }\left(C_A>k\right \&\left(g_c[n] \leq g_s[n-1]\right \\
g_S[n-1] & \text { if } C_A \leq k \\
\alpha_{R}g_s[n-1]+\left(1-\alpha_R\right g_c[n] & \text { if }\left(C_R>k\right \&\left(g_c[n]>g_s[n-1]\right \\
g_S[n-1] & \text { if } C_R \leq k
\end{array}\right.$$

$k$是以样本为单位的指定保持时间。$C_A$和$C_R$分别是启动和释放hold counters

compressor 和 limiter 的平滑方程

a_Ag_s(n-1+(1-\alpha_Ag_c(n,\ \ g_c\le g_s(n-1 \\
a_Rg_s(n-1+(1-\alpha_Rg_c(n,\ \ g_c > g_s(n-1
\end{matrix}\right.$$

增益平滑实例

  • 在顶部,显示了针对不同启动时间值的平滑增益曲线,释放时间设置为零秒

  • 在中间,释放时间是变化的,启动时间保持在零秒不变

  • 在底部,启动和释放时间均由非零值指定

4、补偿增益(make-up gain

'auto'补偿增益确保 0 dB 输入产生 0 dB 输出。例如,假设具有软拐点的compressors 的静态特性:

x_{d B} & x_{d B}<\left(T-\frac{W}{2}\right \\
x_{d B}+\frac{\left(\frac{1}{R}-1\right\left(x_{d B}-T+\frac{W}{2}\right^2}{2 W} & \left(T-\frac{W}{2}\right \leq x_{d B} \leq\left(T+\frac{W}{2}\right \\
T+\frac{\left(x_{d B}-T\right}{R} & x_{d B}>\left(T+\frac{W}{2}\right
\end{array}\right.$$

$$\text { MAKE-UP GAIN }=-x_{s c}(0=\left\{\begin{array}{cl}
0 & \frac{W}{2}<T \\
-\frac{\left(\frac{1}{R}-1\right\left(T-\frac{W}{2}\right^2}{2 W} & -\frac{W}{2} \leq T \leq \frac{W}{2} \\
-T+\frac{T}{R} & -\frac{W}{2}>T
\end{array}\right.$$

5、dB到线性转换

6、应用增益

$$y(n=x(n*g_{lin}(n$$

栗子

本例中描述的音频信号是 0.5 秒间隔的鼓音。limiter属性是:

  • Threshold  = –15 dB

  • Knee width = 0(硬膝盖)

  • Attack time = 0.004 秒

  • Release time = 0.1 秒

  • Make-up gain = 1 dB

线性到 dB 转换

增益计算

增益平滑

补偿增益

dB 到线性转换

应用计算增益

参考

Digital Audio Signal Processing 2nd Edition

DRC--动态范围控制

Dynamic Range Control

Multiband Dynamic Range Compression

详解音频中的响度与动态范围。(推力、耳放、响度战争、高解析度等)

【论文】Giannoulis, Dimitrios, Michael Massberg, and Joshua D. Reiss. "Digital Dynamic Range Compressor Design –– A Tutorial And Analysis." Journal of Audio Engineering Society. Vol. 60, Issue 6, 2012, pp. 399–408。

编程笔记 » 动态范围控制原理

赞同 (39) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽