|
浅谈音频信号压缩电路
/ ^" C9 \6 T+ p8 Q1 N* y. j7 {4 A01 信号压缩
( m1 l( I9 F# M! q. E4 y一、为什么进行信号压缩?
; T! e; u2 h7 b! C, Z  对声音信号进行压缩,并不是对信号整体进行衰减, 而只是对于其中幅度超过某些阈值的部分进行衰减。 这样就可以防止由人耳朵的“遮蔽”效应,使得小的音乐信号无法听清。
! \1 F6 A3 P8 p2 [ [8 J9 _( U+ W9 ~ O" b/ ^$ l* u. }
$ r" r9 K0 P& N( i0 M+ v( V9 Y
/ p4 x' o8 y" E. l8 a' G J▲ 图1.1.1 信号没有被压缩之前的波形
6 }, y6 ~5 |' f7 |! m! ^4 l( D* }0 a0 \" T4 a% {2 D& ~& O
/ K9 c& |7 Q- b- S% _
  经过压缩之后,音乐中各种乐器动态范围比较接近,听起来音乐的层次更加丰富。 ) ^. V1 Q; W$ W, Y
2 j6 A! y! Y) a: n
$ o/ P' M- E+ y- I6 t3 g
4 V" o# P9 a9 l* y. W/ @9 o0 y▲ 图1.1.2 信号被压缩后的波形
3 o$ O# n+ J0 N$ x( q) G# q' f9 a* M
1 H( U$ n; @7 k' @3 L q) w
V/ m$ j& ^* H$ }. i1 k9 ^二、信号压缩参数
% {& ^6 d7 ^0 B& B* K8 @  下图所示信号压缩四个主要参数。 上面是输入待压缩音频信号。 下面是压缩后输出音频信号。 虚线表示信号压缩的阈值,所有超过这个阈值的信号 在输出中它们都被进行了压缩。 不过它们幅值仍然超过了阈值。 为什么呢?是因为规定了压缩的比率 。即对超过阈值信号进行多大比率的压缩。 通过修改这个比率,可以改变信号超出阈值后所剩余的幅值。 调整比率滑块上下移动,可以看到输出信号最大幅度的变化。当比率趋于无穷大时,输出信号就被阈值严格限制。如果比率趋于1比1,则信号实际上没有被压缩。% ~9 k F R. X3 W. I5 R
% l6 ~+ ^, U0 t- O- V
# |! ~; R! U* F% p. b* {
0 l) X) x7 S& i! x! @% P: d▲ 图1.2.1 信号压缩的参数
2 H1 X% y' r: p4 `" k) P- O4 [( I8 J! a( ~( S" _8 J: @" l
+ c! S2 q8 o V4 e9 U  信号压缩的第二个参数是启动时间参数,它表示在信号幅度超过阈值之后多长时间开始对信号进行压缩。  启动时间越小,信号被压缩越快速。 启动时间越大,信号被压缩越慢。 在启动时间内的信号保留原来的幅度。
- x2 V) B0 s) H9 B$ |6 o' Y
9 z( a' L( _% C2 a9 R8 I! j  最后一个压缩参数是释放时间参数。 它的含义恰好与启动时间相反。 表明信号回落到阈值以下之后多长时间停止信号压缩。 当释放时间很小时,信号幅度降低到阈值以下之后,就立即停止了压缩。 当释放时间增加时,信号回落阈值以下之后,幅度仍然被按相同比率压缩。 这就是信号压缩的四个参数,分别是压缩阈值、压缩比率、启动时间、释放时间。
7 r) n/ F4 O# H/ m/ m8 [8 N
9 Z6 {0 _: e) D1 k4 I; S* m三、信号压缩硬件电路
0 k6 J' V( y( l1、系统框图
! o8 H1 ? x, `6 s& m  下面讨论一下使用硬件电路实现信号压缩的方法。 首先需要一个能够控制输入信号幅度的电路,它根据输入的控制电压改变输出信号的幅度。 第二部分电路用于检测输出信号的幅度。 由于信号是一个快速变化信号,不能够直接使用信号的瞬态幅值代表信号的变化范围。  电路第三部分是对比输出信号幅值与给定阈值电压,给出信号超出阈值的大小。 最后将幅度比较输出信号连接到第一个电路控制信号输入端口,用于控制输出信号的幅度。 这就形成了一个反馈控制电路系统。. q, y( W& a7 L& j/ ^4 M
2 o/ f& Z7 J" H9 p1 |* _
) H+ [, a! V# ~, i
4 |$ l* h% i5 v! U( f2 H
▲ 图1.3.1 信号压缩硬件电路
4 q( H) O2 o7 Y8 L
) @- t6 {& r; F
6 v0 U3 w7 W# n9 _9 h  通过这种反馈硬件电路, 完成对输入信号进行幅值压缩。 下面从音量控制电路开始分别介绍这三个硬件电路实现方案。. {$ V2 h D1 J3 M4 X
% C; p% d n* ~- N- o0 L, `2、音量控制电路
1 Q( ^7 P/ [0 [7 V- z  实现音量控制电路的一种方法为VCA控制电路, 即电压控制放大倍数电路。 这里给出了利用二极管实现的VCA的电路。 电路核心功能是由这六个串联的二极管 以及输入100k欧姆电阻完成的。 根据电路设计,施加在串联二极管上下两端的电压极性相反,幅度相等。 输入信号通过100k电阻输入到二极管中间, 如果它的幅值没有超过二极管上下两端控制的导通电压, 输出信号与输入信号相等。 如果二极管上下偏置电压使得二极管导通,那么它的中间节点的电压就维持在0V附近, 输出信号的幅值就变为0V。 这是因为通过100k欧姆信号电流非常微弱,远小于流过二极管的电流。所以输出信号就由二极管中点电压决定。 因此越多的电流流过二极管,输出信号的幅度就越小。
0 N6 _2 Q5 e. B
: S; w" L% ~. J* m# r$ q
& b+ h# z1 o* \. j, K$ V Y4 X" H9 V. i5 {( { M2 _1 G7 r V: R2 L
▲ 图1.4.1 音量控制电路
7 b; t1 _/ g' L1 |+ C9 E" u) A8 S. I) E& R4 A( A6 W
9 N. D1 [1 z. B% {5 P/ W" C  电路中由四个运放组成的外围电路是来支持二极管电路功能的。 首先输入信号经过电阻分压,幅度降低到串联二极管导通电压范围之内。经过运放跟随接到串联二极管中点。 电压跟随可以将分压电路与后级电路隔离。 最上面运放是将控制电压信号进行跟随,避免电路对前一级电路影响。 下面运放是反相电路,产生二极管下面对称偏置电压信号。 上面运放输出的1k欧姆电阻是限制流过二极管电流。 最右边运放是对二极管中点信号进行放大,补偿前面分压电阻对信号的衰减, 使得信号的输出幅值与输入相同。 这里设计信号衰减和放大的倍数为8,可以使得中间信号幅度不要过低,否则会降低电路的信噪比。 中间选择六个二极管串联,也是保证信号不失真的动态范围, 避免过小受到噪声影响。 通过控制CV输入电压,可以控制输出信号的幅度。
5 V3 [* y/ D8 ?* r, H! ^
" {; ^) j& |0 e- r' Y8 l1 H  下面通过在面包板上搭建的电路测试一下VCA的功能。 改变控制电压,从0V增加到3V,可以看到输出信号的幅值逐步降低到0。
% A" X" {& ]0 N& Z+ i9 {( a, }6 U
2 q+ b% |+ {, ~( s* k7 j
2 Z8 O) \5 y/ v) _
▲ 图1.4.2 VCA电路的测试效果3 @ j3 J6 ?" I1 y
" A( q+ P1 p$ S J
0 y/ Q: _( Z$ s1 i! \, r* ]
3、信号幅度检测电路
2 ^9 r3 d# l$ W& U  下面讨论一下信号幅度检测电路。 它输出反映信号外包络线的幅值信号。 对于一个声音信号, 似乎它的上下幅度比较容易确定。 信号中心为0V,信号在0V上下波动。 如果确定任意时刻的幅度, 似乎只要将信号最大值求出即可。 但是如何将信号沿是时间轴拉宽,可以看到信号出现上下剧烈的波动。 因此为了需要获得信号的峰值,需要使用二极管峰值检波电路。 二极管峰值检波电路原理很简单,当输入信号超过二极管导通电压时, 输出信号便会给滤波电容充电,直到与输入信号峰值相同。 当输入信号降低, 二极管截止。电容上的电压便会通过电阻放电,进而输出电压也降低了。 二极管峰值检波电路输出信号就会随着输入信号的幅度变化而变化。5 P# l$ t- T2 _# q$ C8 \
+ ^0 S# C( l+ R3 U# o
. X) v X6 w3 g7 u6 w. K* o
- p( A. D) ?& i) x) ]$ d- f% p▲ 图1.5.1 峰值检波电路 x; J: \% d. ^" x% N: U+ _& L
4 C8 U, w# x! x% ~- K
8 g4 k4 w# X0 |3 H7 {- b2 _1 ~( d  检波电路中电阻和电容的乘积,是电路的时间常数。经过实验测试,时间常数选择100ms比较符合音乐信号幅度检测。 这里给出了电路中的RC取值。 通过面包板上搭建电路进行测试。示波器上黄色信号为输入信号, 蓝色信号是输入信号幅值信号。 可以看出电路的输出信号与期望值还是有很大的差异。 对于小的信号,电路输出为0。 这主要是受到二极管导通电压的影响。 对于二极管检波电路来说,输入电压小于0.3V时,它的输出为0。 使用运放与二极管组成一个理想检波电路,便可以解决这个问题。
2 D# u. O4 x: t7 }0 m" W8 O; o; J1 {7 [4 H |# i; m
% l9 n6 t8 W& \- [! @
' @$ W3 O6 S6 ^' i; G
▲ 图1.5.2 普通二极管检波电路输出信号
! @7 i) @; W2 ?6 [7 S2 `& ^# B8 ^$ `, q
& ?6 f: T2 o; @/ ]' @6 K, R
1 e$ R' X7 N0 ~+ e  这里展示了利用理想二极管检波电路给出的结果。 可以看到小信号对应的幅值非常不错了。 对于幅度检波电路先介绍到这里。
2 D0 k" M9 k+ r2 Y( Y1 ~8 e6 H' }8 J% S
4、阈值比较电路
! p, q; i% d; ~0 i2 n- d8 V  阈值比较电路是判断输入信号的幅度是否高于给定的阈值电压, 并给出高出电压的大小。 这个功能可以通过一个简单的减法电路来实现。 比如输入5V信号,设定阈值为4V, 那么它的输出信号就应该为1V。 输出正电压,表示信号幅度超过阈值电压。 输出负电压则表示信号幅度小于阈值。 它的绝对值则表示两者之差。! `% g6 g" {% J4 j" x2 N) W
( [" S5 C; m W! P) v- y7 S6 m+ l1 ^
& a' D1 e% @- ?▲ 图1.6.1 阈值比较电路
* z( h# S, L+ _0 f9 n$ _5 D
) j1 }$ n' Z: H; R% ]: L3 n% I. T+ r. m P, K! j3 n9 M
  这是一个标准的减法运放电路。 通过一个电位器设定压缩阈值电压。 通过上面串联20k电路,可以限定阈值电压最高为6V。) o5 S- A. m9 Z9 N: O
* H# r, z, @2 H: p- ?" U7 J: @
! X5 Z) r% n3 M) B, C1 B( y/ c: g1 D) Y3 s
▲ 图1.6.2 阈值电压检测电路
+ a4 u* U2 U% J. L2 z
- g6 J% x' S- p$ R, H$ t4 b7 R7 c# O" j" G
  这是在面包板上搭建电路的测试信号, 其中蓝色波形就是阈值比较电路输出信号。 它的幅值大于0, 表示信号幅度超过了设定电压阈值。 小于0, 表示信号幅度小于设定的阈值电压。
3 V2 S: f# Q. v. F. y
2 q& g( ~9 Y- S
9 K4 K! T9 T3 C# G
" G' r! w1 {7 @+ l( f
▲ 图1.6.3 面包板测试电路输出信号 |
|