3.8 后向矢量增益调节器
这个调节器更新激励增益?(n),n为每个矢量的索引,激励增益?(n)是一个调节因子,用于调节选择的激励矢量y(n)。调节器20以增益调节的激励矢量e(n)作为输入,产生一个激励增益?(n)作为它的输出。基本上,它希望在对数增益域用自适应线性预测方法预测e(n)的增益,e(n)是基于e(n-1),e(n-2),...的。这个后向矢量增益调节器20被详细地示于图A.6中。
46对数增益线性预测器δ( n )47对数增益限幅器激励增益 σ( n )48反对数运算41带宽扩展模块44Levinson-Durbin递归计算43混合窗模块δ( n-1 )45对数增益补偿671-矢量延迟e ( n –1 )RMS运算3920激励矢量e ( n )-+4240取对数运算图A.6 矢量增益后向调节器
参考图A.6。这个增益调节器操作如下。1–矢量延迟单元67输入为e(n),输出为e(n-1),均方根计算器39计算这个矢量e(n-1)的RMS值,接着,对数计算器40计算RMS的对数值,首先计算以10为底的对数,再把结果乘以20。
在图A.6中,一个32dB的对数增益补偿值被储存在对数增益补偿值保持器中,这个值近似等于浊音语音平均激励增益电平(dB值)。加法器42从对数增益计算器40中产生的对数增益减去这个对数补偿值,得到?(n?1)。这个对数增益又被用于混合窗模块43和Levinson-Durbin递推模块44。模块43和44的操作与感觉加权滤波器调节器模块(图A.4(a))中的块36和37的操作完全一样,只是混合窗参数不同,而且现在分析的信号是移去偏移的对数增益而不是输入语音。(注意对每5个语音样值只产生一个增益值)。
这时混合窗参数(块43)是M=10,N=20,L=4和?=(3/4)1/8=0.96467863
模块44(Levinson-Durbin递推模块)的输出是一个10阶线性预测器的系数,具有传递函数:
?i?(z)?????iz (A.3.26) Ri?110接着,带宽扩展模块45按照与图A.5的模块51相类似的方法向z平面的原点快速移动
这个多项式的根。结果,带宽扩展增益预测器有如下的传递函数
249
R(z)????iz (A.3.27)
i?110?i这里系数?i用下式计算:
?i?(0.90625)??i (A.3.28) ?i?(29)?ii32这个带宽扩展使增益调节器(图A.2中的块20)对信道误差更具有鲁棒性,这些?i接着被用作对数增益线性预测器(图A.6中的块46)的系数。
这个预测器46每4个语音矢量更新一次,更新出现在每4个矢量自适应周期的第二个语音矢量。这个预测器希望预测?(n),?(n)是基于?(n?1),?(n?2),?,?(n?10)的一个
?(n),以下式给出: 线性组合。?(n)的预测值被表示成??(n)?-∑??i?(n-i) (A.3.29)
i?110?(n)后,从对数增益线性预测器46得到?我们把它加上在块41中储存的对数增益补偿值
32dB,然后对数增益限幅器47检查得出的对数增益值,如果这个值不合理地大或小,就削去或省略。显然,最低和最高限幅被设为0dB和60dB。然后,增益限幅器的输出被传递到反对数计算器 48,它是对数计算器40的逆操作,把增益从dB值转变为线性值。增益限幅器保证线性域的增益在1~1000之内。
3. 9 码书搜索模块
在图A.2中块12到18构成一码书搜索模块24。这个模块在激励矢量码书19中的1024个候选码矢量中进行搜索,鉴别出一个最好的码矢量索引,这个码矢量对应于一个与输入语音矢量最接近的量化语音矢量。
为了减少码书搜索的复杂性,10bit、1024项的码书被分解成两个较小的码书:一个7bit“波形码书”含有128个独立的码矢量和一个3bit“增益码书”包含8个标量,这8个值以零为对称(即1位是符号位,2位是幅度位),最终的输出码矢量是最佳波形码矢量(来自7bit波形码书)和最佳增益电平(来自3bit增益码书)的积。7bit码书表在附件B中给出,3bit增益码书表也在附件B中给出。
3.9.1 码书搜索原理
原理上,码书搜索模块24通过当前的激励增益?(n)来标定1024个候选码矢量中的每一个,然后,让这1024个结果一次一个地通过由综合滤波器F(z)和感觉加权滤波器W(z)组成的级联滤波器。每当这个模块传送一个新的码矢量给具有传递函数H(z)?F(z)W(z)的级联滤波器时,这个滤波器的存储器都被预置为0。
VQ码矢量的滤波能用矩阵矢量乘法来表述。令yj是7bit波形码书中的第j个码矢量,
gi是3bit增益码书中的第i个电平。让{h(n)}表示并行滤波器的冲激响应序列,那么,当由
码书下标i和j给定的码矢量被传送到并行滤波器H(z)时,滤波器输出可以表示为:
250
~xij?H?(n)giyj (A.3.30)
这里,
?h(0) 0 0 0 0??h(1) h(0) 0 0 0???H??h(1) h(1) h(0) 0 0? (A.3.31)
??h(3) h(2) h(1) h(0) 0????h(4) h(3) h(2) h(1) 0??码书搜索模块24搜索下标i和j的最佳组合,这种组合使下面的均方误差最小:
D?x?n??~xij2??n??giHyj??2(n)x2 (A.3.32)
?(n)?x(n)/?(n)是归一化的VQ目标矢量。展开这些项,得到 这里,x??n??2gix?T(n)Hyj?gi2HyjD??2(n)[x22] (A.3.33)
?(n)因为x2?和?2(n)的值在码书搜索期间是确定的,所以使D最小就等价于使下式D最小:
???2gpT(n)y?g2E (A.3.34) Dijij?(n) (A.3.35) 这里, p(n)?Hx并且 Ej?Hyj2T (A.3.36)
?(n)。注意到Ej实际上是第j个经过滤波的波形码矢量的能量,不依赖于VQ目标矢量x也注意到波形码矢量yj是确定的,矩阵H只依赖于综合滤波器和加权滤波器,这两个滤波器在经过一个四矢量语音周期后被确定。结果,经过四矢量的一个语音周期后Ej也被确定。以这些结论为基础,当两个滤波器被更新时,我们能计算和储存这128个可能的语音项
Ej,j?0,1,?,127(对应于128个波形码矢量),然后用这些能量项在下一个四矢量语音周期期间重复码书搜索。这种处理减少了码书搜索的复杂性。
为进一步减小计算量,我们可以先计算和储存矩阵bi?2gi和
ci?gi (i?0,1,?,7)
?表示成: 因为gi是固定的,这两个矩阵也是固定的。我们可以把D2???bipj?ciEj D这里 pj=pT(n)yj
251
注意到,一旦Ej、bi和ci值被预先计算和储存,只依赖于j的内积项pj?p(n)yj就?中最大的计算量。因此,码书搜索方法通过波形码书的改善,对每个波形码矢量y判占有DjT别出最佳增益索引i。
对于一个已给定的波形码矢量yj,找到最佳增益索引i有以下几种方法:
?值对应于8个可能的i值,然后找(1) 第一种也是最明显的方法是计算出8个可能的D?的索引i 。但是,对于每个 i ,这种方法要求2次乘法。 出对应于最小D??p?j/Ej,然后把这个增益g?在3bit增益码书(2) 第二种方法是首先计算最佳增益g?的增益电平gi的中量化成8个增益电平?g0,g1,?,g7?之中的一个。最好的索引i是最接近g索引。但是这种方法对于128个波形码矢量中的每一个要求一次除法,而除法很明显对于使用DSP处理器是很无效的。
?的量化能被看(3) 第三种方法,是对第二种方法稍加修改,对于DSP实现是有效的。g?和“量化元边界”做在g(即两相邻增益电平的中点)间的比较结果。令di是有相同符号的??di?”就等价于检验“pj 通过利用后者检验,我们能避免除法操作。对每个索引i,仍然只要求一次乘法。这就是用 在码书搜索中的方法。增益量化元边界di是固定的,能被预先计算和储存一个表中,对八个增益电平,实际上只使用六个界限值d0,d1,d2,d4,d5和d6。 一旦最佳下标i和j被鉴别出来,它们被联系起来以形成码书搜索模块的输出—唯一的10bit最佳码书索引。 3.9.2 码书搜索模块的操作 根据已经介绍的码书搜索原理,码书搜索模块24的操作在下面描述。参考图A.2。每当综合滤波器9和感觉加权滤波器10被更新时,冲激响应矢量计算器12计算级联滤波器F(z)W(z)冲激响应的头5个样值。为了计算冲激响应矢量,我们首先置级联滤波器的存储器为0,然后用一个输入序列{1,0,0,0,0}来激励滤波器。对应的5个输出样值是h(0),h(1),?,h(4),它们组成了期望的冲激响应矢量。这个冲激响应矢量被计算后,它将保持为常数且被用于接着的四个语音矢量的码书搜索,直到滤波器9和10被再次更新。 接着,波形码矢量卷积模块14计算128个矢量Hyj,j=0,1,2,?,127。或者说,它对每个波形码矢量yj,j?0,1,2,?,127和冲激响应序列h(0),h(1),?,h(4)做卷积,在这里,卷积只对前5个采样值有效。然后根据方程(A.3.36)通过能量表计算器15计算128个矢量的能量并储存,一个矢量的能量定义为每个矢量元素平方值的和。 注意到在块12、14和15中的计算只是对每四个语音矢量进行一次,而在码书搜索模块 j中的其它块则是对每一个语音矢量执行一次。也注意到E表的更新与综合滤波器的系数更新是同步的。也就是说,新的Ej表将从每个自适应周期的第三个语音矢量开始被使用。 ?(n)?x(n)/?(n)。在DSPVQ目标矢量归一化模块16计算归一化增益VQ目标矢量x实现中,首先计算1/?(n)是更有效的,然后再用1/?(n)乘以x(n)的每个元素。 ?(n)的元素倒?(n)。这个操作等价于先把x接着,逆时卷积模块13计算矢量p(n)?Hx序,然后把它与冲激响应矢量卷积,最后再把输出元素的序列颠倒。(因此命名为逆时卷积)。 一旦Ej,bi和ci表被预先计算和存储,矢量p(n)也被计算出来,那么误差计算器17和最 252 T佳码书索引选择器18一起工作来完成下面有效的码书搜索算法: ?为一个比可能最大的D?值还要大的数(或者用DSP数表示系统的最大的可a) 预置Dmin能数); b) 设波形码书索引j=0; c) 计算内积pj?pT(n)yj; d) 如果 pj<0,转向步骤h)通过负增益搜索;否则,继续步骤e)通过正增益搜索; e) 如果 pj ???bipj?ciEj; k) 计算 D? m) 如果j<127,置j=j+1,转向步骤c);否则继续n); n) 当这个算法执行到这里时,全部1024个可能的增益和波形的组合已被搜索完毕。显然,对增益和波形而言,得出的imin和jmin是期望的码书下标。输出最佳码书索引(10位)是这两个下标的级联,对应的最佳激励码矢量是y(n)?gi过通信信道被发送到解码器。 minyjmin。选择的10bit码书索引通 3.10 仿真解码器 迄今,虽然解码器已经鉴别和传送了最佳码矢量,但一些附加的任务必须在下面的语音矢量的编码准备中被执行。首先,最佳码书索引被传送到激励VQ码书以提取对应的最佳码矢量y(n)?giyj;然后,这个最佳码矢量被在增益段21中的当前激励增益?(n)所调节, minmin得到的增益调节矢量是e(n)= ?(n)y(n)。 这个矢量e(n)然后被送到综合滤波器22以获得当前量化语音矢量sq(n)。注意到块19~23形成一仿真解码器8。 253