|
浅谈音频信号压缩电路
0 O+ S4 ?- {) V( w% u! U01 信号压缩5 Q3 M4 x4 V# z" ^0 p, F
一、为什么进行信号压缩? E. q: s- W1 Z& s3 |2 r
  对声音信号进行压缩,并不是对信号整体进行衰减, 而只是对于其中幅度超过某些阈值的部分进行衰减。 这样就可以防止由人耳朵的“遮蔽”效应,使得小的音乐信号无法听清。
' v. ~! k( R. a5 Y0 R, j1 Y
& O: ^' e8 _1 k+ D; G: P$ U3 ]/ Q `) v
. d9 n/ c2 q8 X8 c& `1 M! x5 H3 o▲ 图1.1.1 信号没有被压缩之前的波形% J. F5 F S% x& S5 C% t
/ u5 M9 ~+ l9 X) ~4 O
0 j7 m4 u$ A/ c# V- B# r  经过压缩之后,音乐中各种乐器动态范围比较接近,听起来音乐的层次更加丰富。 
) \# N3 X( Q4 Z. U2 N* ?- X+ H) B, T) A& n R q5 m# s
- }& S2 w4 K3 {) ?5 }
0 @ i8 U. k: t6 g# P0 V▲ 图1.1.2 信号被压缩后的波形
+ j. T& f/ J. `7 a5 B) y( v0 c/ [" w! G+ F
# o) G7 i9 M) k* ~8 Z. q0 g二、信号压缩参数; j: O' R! X# ^
  下图所示信号压缩四个主要参数。 上面是输入待压缩音频信号。 下面是压缩后输出音频信号。 虚线表示信号压缩的阈值,所有超过这个阈值的信号 在输出中它们都被进行了压缩。 不过它们幅值仍然超过了阈值。 为什么呢?是因为规定了压缩的比率 。即对超过阈值信号进行多大比率的压缩。 通过修改这个比率,可以改变信号超出阈值后所剩余的幅值。 调整比率滑块上下移动,可以看到输出信号最大幅度的变化。当比率趋于无穷大时,输出信号就被阈值严格限制。如果比率趋于1比1,则信号实际上没有被压缩。5 G j9 S8 M* ?) \, A9 q- V
* N2 M; F/ w" S* ^! ~' W3 o; K
: ?# s2 h4 r3 W
6 u, R1 K- m/ \6 @4 u$ S; J▲ 图1.2.1 信号压缩的参数/ p/ R' r6 ~& j. ^) S
7 d. m% v5 b$ M4 S' B* Q5 R( B8 q1 n% P8 q; i5 \& g; q e7 I* h
  信号压缩的第二个参数是启动时间参数,它表示在信号幅度超过阈值之后多长时间开始对信号进行压缩。  启动时间越小,信号被压缩越快速。 启动时间越大,信号被压缩越慢。 在启动时间内的信号保留原来的幅度。
' n; x8 D4 }/ C/ w' }( ~0 u5 x4 @8 A
  最后一个压缩参数是释放时间参数。 它的含义恰好与启动时间相反。 表明信号回落到阈值以下之后多长时间停止信号压缩。 当释放时间很小时,信号幅度降低到阈值以下之后,就立即停止了压缩。 当释放时间增加时,信号回落阈值以下之后,幅度仍然被按相同比率压缩。 这就是信号压缩的四个参数,分别是压缩阈值、压缩比率、启动时间、释放时间。) t5 R8 Q9 m% }; k) Q+ B
' R6 j# T2 J0 v4 I/ ?% X. q6 U
三、信号压缩硬件电路+ F b1 y8 E& B; S* l. \. G
1、系统框图8 i9 N3 h. w3 F; H, G- J
  下面讨论一下使用硬件电路实现信号压缩的方法。 首先需要一个能够控制输入信号幅度的电路,它根据输入的控制电压改变输出信号的幅度。 第二部分电路用于检测输出信号的幅度。 由于信号是一个快速变化信号,不能够直接使用信号的瞬态幅值代表信号的变化范围。  电路第三部分是对比输出信号幅值与给定阈值电压,给出信号超出阈值的大小。 最后将幅度比较输出信号连接到第一个电路控制信号输入端口,用于控制输出信号的幅度。 这就形成了一个反馈控制电路系统。
/ V& R1 d% e5 a9 h0 y
* G& m3 j1 X/ F/ u2 a. N, H2 O5 X' u) i
2 u$ L* t" y) f" E▲ 图1.3.1 信号压缩硬件电路
8 B% L8 Q/ c9 L$ Z. N4 |/ |: p2 L/ q m" ?0 [, y- g- z( S& O2 I7 [
& l% c4 H2 f8 V6 P  通过这种反馈硬件电路, 完成对输入信号进行幅值压缩。 下面从音量控制电路开始分别介绍这三个硬件电路实现方案。
+ ~! A- o# o( \# e) V
+ A1 V% F! p$ J* q2、音量控制电路
' Y3 p( ]- o4 C0 K6 ~  实现音量控制电路的一种方法为VCA控制电路, 即电压控制放大倍数电路。 这里给出了利用二极管实现的VCA的电路。 电路核心功能是由这六个串联的二极管 以及输入100k欧姆电阻完成的。 根据电路设计,施加在串联二极管上下两端的电压极性相反,幅度相等。 输入信号通过100k电阻输入到二极管中间, 如果它的幅值没有超过二极管上下两端控制的导通电压, 输出信号与输入信号相等。 如果二极管上下偏置电压使得二极管导通,那么它的中间节点的电压就维持在0V附近, 输出信号的幅值就变为0V。 这是因为通过100k欧姆信号电流非常微弱,远小于流过二极管的电流。所以输出信号就由二极管中点电压决定。 因此越多的电流流过二极管,输出信号的幅度就越小。, w; e$ ]$ z% E' k3 B
. I: r' R1 @; R; Z. t# n' |
6 I! x' N) u+ S) }' m+ c: R" P" q5 k
▲ 图1.4.1 音量控制电路+ h1 {2 I8 w3 \* K2 I
6 o( r% t( S! k! G$ B! O) Y A4 i+ C9 i
  电路中由四个运放组成的外围电路是来支持二极管电路功能的。 首先输入信号经过电阻分压,幅度降低到串联二极管导通电压范围之内。经过运放跟随接到串联二极管中点。 电压跟随可以将分压电路与后级电路隔离。 最上面运放是将控制电压信号进行跟随,避免电路对前一级电路影响。 下面运放是反相电路,产生二极管下面对称偏置电压信号。 上面运放输出的1k欧姆电阻是限制流过二极管电流。 最右边运放是对二极管中点信号进行放大,补偿前面分压电阻对信号的衰减, 使得信号的输出幅值与输入相同。 这里设计信号衰减和放大的倍数为8,可以使得中间信号幅度不要过低,否则会降低电路的信噪比。 中间选择六个二极管串联,也是保证信号不失真的动态范围, 避免过小受到噪声影响。 通过控制CV输入电压,可以控制输出信号的幅度。
( C( a4 l7 y$ |# L: y+ G7 c& c: m o- G' C2 Q9 q( G2 G
  下面通过在面包板上搭建的电路测试一下VCA的功能。 改变控制电压,从0V增加到3V,可以看到输出信号的幅值逐步降低到0。
0 p8 ^/ ], e. Z- f) Z. S# s
9 k a7 |: Z5 v$ H" ?; e* S9 P' p7 C2 r
* C" @, h0 E$ _8 C
▲ 图1.4.2 VCA电路的测试效果
0 h" t9 E5 K8 m
% ?7 T* u1 w+ ~! Y0 M6 n: N0 u; K, k/ R4 x6 ^
3、信号幅度检测电路 ~( O" Q( D4 r" H$ O2 z
  下面讨论一下信号幅度检测电路。 它输出反映信号外包络线的幅值信号。 对于一个声音信号, 似乎它的上下幅度比较容易确定。 信号中心为0V,信号在0V上下波动。 如果确定任意时刻的幅度, 似乎只要将信号最大值求出即可。 但是如何将信号沿是时间轴拉宽,可以看到信号出现上下剧烈的波动。 因此为了需要获得信号的峰值,需要使用二极管峰值检波电路。 二极管峰值检波电路原理很简单,当输入信号超过二极管导通电压时, 输出信号便会给滤波电容充电,直到与输入信号峰值相同。 当输入信号降低, 二极管截止。电容上的电压便会通过电阻放电,进而输出电压也降低了。 二极管峰值检波电路输出信号就会随着输入信号的幅度变化而变化。
* a# [5 \6 N- D- a8 o2 x0 W9 l {4 M6 L- r
7 {: _0 W, c) M
# J/ @, X; ?: R$ z) n# q3 K▲ 图1.5.1 峰值检波电路
) [6 n: z. I4 q& R9 N/ z$ x9 k6 A6 b/ x0 E' C0 F3 R! S9 U! W( [
' y7 r7 o9 j! G0 ?8 w9 o! i
  检波电路中电阻和电容的乘积,是电路的时间常数。经过实验测试,时间常数选择100ms比较符合音乐信号幅度检测。 这里给出了电路中的RC取值。 通过面包板上搭建电路进行测试。示波器上黄色信号为输入信号, 蓝色信号是输入信号幅值信号。 可以看出电路的输出信号与期望值还是有很大的差异。 对于小的信号,电路输出为0。 这主要是受到二极管导通电压的影响。 对于二极管检波电路来说,输入电压小于0.3V时,它的输出为0。 使用运放与二极管组成一个理想检波电路,便可以解决这个问题。: c, o6 m V+ D I9 j
7 X" E9 G/ i: g' z: o2 b; Y: C
" \$ J z4 E! ] r! R/ P
▲ 图1.5.2 普通二极管检波电路输出信号
6 X6 I: q4 Y5 p) A( j8 m. }0 L. [( ^' f* B% c8 C
# ^- n( T# w) j: ]5 f# Q. D% m  这里展示了利用理想二极管检波电路给出的结果。 可以看到小信号对应的幅值非常不错了。 对于幅度检波电路先介绍到这里。4 M1 d4 y+ M% A; n/ U
$ r7 q0 a3 V# B8 w; P8 |
4、阈值比较电路
; r7 u. F# L! X  阈值比较电路是判断输入信号的幅度是否高于给定的阈值电压, 并给出高出电压的大小。 这个功能可以通过一个简单的减法电路来实现。 比如输入5V信号,设定阈值为4V, 那么它的输出信号就应该为1V。 输出正电压,表示信号幅度超过阈值电压。 输出负电压则表示信号幅度小于阈值。 它的绝对值则表示两者之差。1 k$ K, p% Z+ \+ G" F- F
2 m! c0 O' a/ R- |( t- i
* q% M7 q( P7 C& ]* W8 T▲ 图1.6.1 阈值比较电路9 s/ A: f8 K% K- {
9 Y* a, Q9 a9 S; R
/ H5 ?! t' [( U
  这是一个标准的减法运放电路。 通过一个电位器设定压缩阈值电压。 通过上面串联20k电路,可以限定阈值电压最高为6V。8 {" ^; W% P+ s3 x& E6 O0 F) @
' X) |6 x" ]5 l$ g! m8 l1 J$ g
$ h- [1 p2 O9 W+ X5 \ l+ l
, y) T8 X; _5 m* _# v1 r8 M, D! c
▲ 图1.6.2 阈值电压检测电路
3 j2 O/ K9 O' @: ^! @# K U$ p8 |: y8 a3 H$ b
% @2 C, e6 B. _. q9 d$ V2 P( L2 [  这是在面包板上搭建电路的测试信号, 其中蓝色波形就是阈值比较电路输出信号。 它的幅值大于0, 表示信号幅度超过了设定电压阈值。 小于0, 表示信号幅度小于设定的阈值电压。
& G- v: E" Q U0 |, s2 y
+ {. C5 A. h, O2 n' N
/ i0 ?+ f: t2 x' K& T" ?+ A6 L9 A2 q, X5 F0 D' |; S
▲ 图1.6.3 面包板测试电路输出信号 |
|