3.7 子带编码
3.7.1 子带编码的工作原理
子带编码(Subb and Coding),简称SBC,与变换编码一样,是一种在频率域中进行数据压缩的方法。在子带编码中,如图3-28所示,首先用一组带通滤波器将输入信号分成若干个在不同频段上的子带信号,然后将这些子带信号经过频率搬移转变成基带信号,再对它们在奈氏频率上分别取样。取样后的信号经过量化、编码,并合成成一个总的码流传送给接收端。在接收端,首先把码流分成与原来的各子带信号相对应的子带码流,然后解码、将频谱搬移至原来的位置,最后经带通滤波、相加得到重建的信号。

图3-28 子带编、解码工作原理框图
在子带编码中,若各子带的带宽ΔWk是相同的,则称为等带宽子带编码;若ΔWk是互不相同的,则称为变带宽子带编码。
将信号分成若干个子带进行编码的好处是:
(1)可以利用人耳(或人眼)对不同频率信号的感知灵敏度不同的特性,在人的听觉(或视觉)不敏感的频段采用较粗糙的量化,从而达到数据压缩的目的;
(2)各子带的量化噪声都束缚在本子带内,这就可以避免能量较小的频带内的信号被其他频段中的量化噪声所掩盖。
图3-28中所示的带通滤波器组是子带编码的重要部件,它影响到子带编码的复杂程度和性能。
首先,我们注意到,如果各子带的下截止频率flk恰好是该子带宽度ΔWk的整数倍,即
flk=nΔWk (k=1,2,…,M) (3-80)
(其中n是一非负整数,M为子带的个数),则可以不必将带通信号搬移到基带上,直接以取样频率fsk=2ΔWk对子带信号取样,而不会产生混叠失真。以M=4的变带宽子带为例,图3-29给出了第三个子带的取样过程。图中(a)是输入信号的频谱;图(b)是第三个子带信号的频谱,其下截止频率fl3=2ΔW3;图(c)是以fs3=2ΔW3的频率对图(b)取样后,所得到的信号的频谱。

图3-29 整数子带的取样过程
满足(3-80)式条件的子带滤波器组称为整数子带滤波器组。采用整数子带滤波器组省去了进行频谱搬移所需要的调制器和解调器,使系统得以简化。同时,我们还可以将带通滤波和取样的次序互换,即输入模拟信号先以fs=2W的频率取样,然后再经带通滤波和抽取获得各子带信号。其中W为输入信号的总带宽,按下式计算:
图3-30(a)表示出使用抽取和内插的、M=2的子带编码和解码的原理方框图。此时,我们可以将系统的输入和输出看成是已在奈氏频率下取样的离散信号,图(b)给出了它对应的频谱。假设用带通滤波器取出图(b)中斜线所示的上子带,根据3.4.1节中讲述的原则,很容易得到经2∶1抽取后的上子带的频谱如图(c)所示。在解码端,再用1∶2的内插器,将频谱恢复到原来的位置。

图3-30 整数子带编码和解码原理
在采用整数子带滤波器的系统中,其总的传输速率I为
式中,Rk为第k个子带中每个样值量化的比特数。
对于子带编码的带通滤波器,我们注意到的第二个问题是,滤波器的具体实现不可能是理想的带通,其幅度响应不可避免地带有有限的滚降。因此在划分子带时,只能或者使子带间有交叠,如图3-31(a)所示;或者使子带之间有一定的间隙,如图3-31(b)所示。在图(a)的情况下,按照奈氏频率取样将会产生混叠失真;而在图(b)的情况下,由于原有信号的部分频带经滤波而损失掉了,重建的信号会有失真,例如对语音来讲,重建的语音会产生混响的主观感觉。3.7.2节将要介绍的正交镜像滤波器比较好地解决了混叠失真的问题,从而降低了对滤波器滚降特性的要求,简化了滤波器的复杂性,成为子带编码中最常采用的形式。

图3-31 4子带滤波器组的幅度响应
3.7.2 正交镜像滤波器组
图3-32给出了一个M=2、等带宽的正交镜像滤波器组(Quadrature Mirror Filter Banks)的幅频特性图,其中上、下子带的幅频响应以fs/2为镜像对称,且有交叠。如果在图3-30(a)中使用这样的滤波器,该图就是所对应的正交镜像滤波的子带编、解码系统。
由于系统的输入是在奈氏频率上对信号取样所得到的离散序列,因此在2∶1抽取后,下子带的大于fs/2的部分会以fs/2为轴折叠到上子带中,而上子带的小于fs/2的部分会以fs/2为轴折叠到下子带中(见图3-32中斜线部分)。在一般的情况下这种混叠失真是不能消除的,但是如果满足下面所介绍的条件,失真在子带解码过程中将得以抵消。对于具有偶数个抽头(即N为偶数)的对称及反对称的FIR滤波器:

图3-32 M=2的正交镜像滤波器组的幅频特性
hl(n)=hl(N-1-n) (n=0,1,…,N/2-1) (3-83)
hu(n)=-hu(N-1-n)(n=0,1,…,N/2-1) (3-84)
这些条件是hu(n)=(-1)nhl(n)(n=0,1,…,N-1) (3-85)
h′l(n)=hl(n)(n=0,1,…,N-1) (3-86)
h′u(n)=-hu(n)(n=0,1,…,N-1) (3-87)
而且|Hl(ejw)|2+|Hu(ejw)|2=1 (3-88)
其中hl(n)和hu(n)分别为编码器中的下子带和上子带滤波器的冲激响应,Hl(ejw)和Hu(ejw)分别为hl(n)和hu(n)的傅氏变换,而h′l(n)和h′u(n)则分别为解码器中的下、上子带滤波器的冲激响应。
(3-88)式表示的条件代表频域的全通特性。除了N=2和N接近于无穷大的情况以外,满足(3-85)式条件的镜像滤波器不能满足(3-88)式的要求。但是,通过谨慎地选择N的大小,可以极其接近(3-88)式的要求。参考文献中给出了N在8~64范围内符合上述条件的正交镜像滤波器的系数值。
下面我们证明,在不考虑量化失真和信道误码的情况下,满足(3-83)式至(3-88)式条件的正交镜像滤波器组能够消除混叠失真,正确地重建输入信号。设输入序列x(n)的Z变换为X(z),经过下子带滤波器后,得到
Xl(z)=X(z)·Hl(z) (3-89)
根据数字信号处理的有关理论(见本章习题3),经2∶1抽取后的下子带信号l(n)的Z变换L(z)为
经1∶2内插之后为
L′l(z)=L(z2) (3-91)
再经H′l(z)(即h′l(n)的Z变换)的滤波,得到
X′l(z)=L′l(z)H′l(z) (3-92)
将(3-89)式至(3-91)式代入(3-92)式,得到
用相类似的方法,可以得到重建的上边带信号x′u(n)的Z变换X′u(z)为
因此,输出信号x′(n)的Z变换X′(z)为
上式等号右边的第一项代表所需要的重建信号,第二项代表混叠失真。由(3-85)式至(3-87)式,我们有
Hu(z)=Hl(-z) (3-96)
H′l(z)=Hl(z) (3-97)
H′u(z)=-Hu(z) (3-98)
将(3-96)式至(3-98)式代入(3-95)式,得到
从上式可以看出,(3-85)式至(3-87)式所表示的条件保证了使(3-95)式中的混叠失真项为零。由(3-83)式和(3-84)式所示的子带滤波器的对称性,我们可以导出
将(3-100)式和(3-101)式代入(3-99)式,并考虑到j=ejw和(3-88)式的条件,得到
上式说明正交镜像子带编、解码可以准确地恢复出原有的信号,而仅引入(N-1)个取样间隔的延时。
3.7.3 时域混叠消除
时域混叠消除法(Time Domain Alias Cancellation,TDAC)也是一种子带编码,它与正交镜像滤波方法之间具有对偶性。正交镜像滤波在频率域内抵消混叠失真,TDAC则在时间域内抵消混叠失真。
假设有图3-33(a)所示的系统,其输入信号为一个长时间序列y(n)(如宽带的数字音频信号),用一个长度为K的窗h(n)将其截断,将截取的部分y(n)h(n)变换到频率域得到K个变换系数X(k),k=0,1,K-1。然后将窗移动K/2,重复上述过程。这样,就把一个时间序列分解成了K个变换系数序列[见图3-33(b)],这一过程称为分析。
由变换系数还原为时间序列的过程称为综合。首先将一组变换系数(即变换系数序列在同一时间m的样值)经反变换后得到K个时间域的样值g(n)。然后用一个同样长度的窗f(n)对g(n)加权。依次对每组变换系数都进行上述处理,并将所得到的具有K个样值的时域序列逐次移动K/2个样点后相加,就还原出一个长时间序列。
在图3-33(a)所示系统中使用的变换不是一般的DFT或DCT,而是修正的(Modified)离散余弦和离散正弦变换,简称MDCT/MDST。MDCT的正变换与反变换分别定义如下:
其中n0=(K/2+1)/2为一固定的时间偏移。与MDCT类似,MDST的正、反变换分别定义为

图3-33 MDCT/MDST分析与综合系统
系统在分析过程中交替地使用MDCT和MDST。将窗函数从初始位置开始移动的次数记为m。当m为偶数时,用MDCT对窗所截取的数据进行变换,m为奇数时使用MDST变换。从(3-103)式和(3-105)式,我们注意到
X(k)=X(K-k) (k=0,1,…,K/2) (MDCT) (3-107)
X(k)=-X(K-k) (k=0,1,…,K/2) (MDST) (3-108)
即K个点的MDCT/MDST只产生个独立的系数。
如果我们将分析所得到的变换系数序列(仅指独立的变换系数)经时分复用后构成一个输出序列,并要求输出序列与输入序列y(n)具有相同的比特率,那么每个变换系数序列的比特率只能为输入比特率的2/K。满足这一要求的系统称为临界取样系统。从图3-33(b)可以看出,窗h(n)每次移动K/2,正好将X(k)的速率降低到临界取样所要求的数值。
现在来看信号的综合过程。由于MDCT和MDST正变换所产生的独立系数的个数少于K,因此反变换不可能精确地恢复出原来的时间序列。以MDCT为例,将(3-103)式代入(3-104)式,并经简单的三角关系的推导,得到
考虑到
得到
由上式看出,反变换的结果是在原时间序列上再加上一个混叠项。由于离散变换周期性延拓的特点,混叠项中的负时间值可看作是高端的折叠,例如,x(-1)=x(K-1)。
与MDCT类似地,可以得到MDST反变换的结果为
在图3-33(a)所示的系统中交替地使用MDCT/MDST,其综合过程的输出正好使得在时间域内的混叠相互抵消,精确地恢复出原序列。我们现在以m=i(i为偶数)的一段数据为例说明这一过程。在输出序列中,n=0,1,…,K/2-1的值是本段(m=i)数据经MDCT分析/综合的结果和前一段(m=i-1)数据经MDST分析/综合的结果之和,即
其中h(n)和f(n)分别为分析窗和综合窗函数。假设f(n)=h(n)和h(K-1-n)=h(n)。考虑到m=i和m=i-1的两个窗有50%的重叠,即
则(3-113)式可变为
因此,只要满足下式:
则=yi(n),(n=0,1,…,K/2-1),即可精确地恢复出原来的时间序列。图3-34描述了上述分析/综合的过程。

图3-34 TDAC编码中混叠失真的抵消