itutg728标准学习资料_第1页
itutg728标准学习资料_第2页
itutg728标准学习资料_第3页
itutg728标准学习资料_第4页
itutg728标准学习资料_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE260PAGE261附录A:ITU-TG.728标准16kbit/sLD-CELP语音编码1.概述这个建议包含用低延迟码激励线性预测方法进行16kbit/s语音编码算法的描述。该建议由以下几个部分组成。在第2节给出了LD-CELP算法的简要原理。在第3节和第4节,分别讨论了LD-CELP编码器和解码器的原则。在第5节,定义了与每个功能算法块有关的计算细节。附件A、B、C和D包含了用于LD-CELP算法的常数表格。在附件E中,给出了可变自适应序列及其用途。最后在附录I(略)中提供了用于验证算法实现的信息。2.LD-CELP概述LD-CELP算法由一个编码器和一个解码器组成,分别在2.1节和2.2节描述它们,原理图示于图A.1。CELP技术的本质,是用分析—合成的方法对码书进行搜索,该方法被保留在LD-CELP中。但是,LD-CELP用反向自适应预测器和增益来获得一种延迟0.625ms的算法,只有激励码书的索引被传送。预测器系数通过对以前量化语音的LPC分析来更新,激励增益通过利用以前嵌入在量化激励中的增益信息来修正。激励矢量和增益自适应块的体积仅为5个采样值。一个感觉加权滤波器利用未量化语音的LPC分析来更新。2.1LD-CELP编码器从A-律或μ-律PCM变换到均匀PCM后,输入信号被分成五个连续输入信号样值的各个块,对每一个输入块,编码器让1024个候选码书矢量(存储在一个激励码书中)中的每一个通过一个增益调节单元和一个综合滤波器。从这1024个候选量化信号矢量中,编码器鉴别出一个使频域加权均方误差最小的量代表输入信号矢量。对应代表最佳候选量化信号矢量的最佳码书矢量(或“码矢量”)的10位码书索引被传送到解码器。然后,最佳码矢量通过增益调节单元和综合滤波器准备为下一个信号矢量而建立正确的滤波器存储。综合滤波器参数和增益被以反向自适应的方式周期地更新,而这种反向自适应的方式是以以前量化信号和增益调节激励为基础的。2.2LD-CELP解码器解码操作也是以一块接一块的方式被执行。每接收到一个10bit索引,解码器执行一次查表操作以从激励码书中提取对应的码矢量。然后这个码矢量通过一个增益调节单元和一个综合滤波器以产生正确的解码信号矢量。然后综合滤波器系数和增益以与在编码器中相同的方式被更新。接着,解码信号矢量通过一个自适应后滤波以提高听觉质量。后滤波器参数的周期更新是利用解码器端的有效信息。后滤波器矢量的5个采样值接着被变换成5个A-律或μ-律PCM输出值。3.LD-CELP编码原则图A.2是LD-CELP编码器的详细方框原理图。这个图与前面的图A.1信号在数学上是等价的,但对于实现更为有效。对图A.2做下列说明:a.对每一个要描述的变量,k是采样索引,样值以125µs的间隔被采样。b.在一个已给信号中,一组5个连续样值被叫做这个信号的一个矢量。例如,5个连续语音采样值形成一个语音矢量,5个连续激励样值形成一个激励矢量等等。c.我们用n表示矢量索引,它不同于采样索引k。d.四个连续的矢量构成一个自适应周期。在后面章节里,我们也把自适应周期叫做帧,两个名称可互换使用。激励矢量量化(VQ)码书索引明显地是从编码器向解码器传送的唯一信息。三种其它参数被周期地更新,它们是:激励增益、综合滤波器和感觉加权滤波器参数。这些参数是从出现在当前信号矢量以前的信号中以一种反向自适应的方式推导出来的。激励增益对每一个矢量更新一次,而综合滤波器系数和感觉加权滤波器系数每四个矢量更新一次(即20个采样值或2.5ms更新周期)。注意,虽然算法中的处理序列有4个矢量(20个采样值)的自适应周期,但基本缓冲器体积仍然是一个矢量(5个采样值)。这样小的缓冲体积使得到一个少于2ms的延迟方式成为可能。编码器的每个方框的说明在下面给出。因为LD-CELP编码器主要用于对语音编码,为便于描述,在下面我们将假定输入信号是语音,虽然实际上它也能用于非语音信号。3.1输入PCM格式转换这个方框把输入A–律或–律PCM信号转换成一个均匀PCM信号。3.1.1内部线性PCM电平在从A–律或–律变换为线性PCM过程中,不同的内部表示是可能的。这决定于仪器。例如,对于–律PCM标准表格定义的线性范围是-4015.5~+4015.5。这对应于A–律PCM的范围是-2016~+2016。两种表列出的某些输出值有0.5的小数部分;这些小数部分在整数仪器中并不能表示出来。除非整个表格乘以2以使所有的值都成为整数。事实上,这一点在定点DSP芯片上是很普遍的。相反,浮点DSP芯片能表示列在表中同样的值。这篇文章假定输入信号有最大范围-4095~+4095,这包括了–律和A–律的情况。在A–律的情况下,它意指当线性变换的结果在-2016~+2016范围时,在继续对信号编码之前,这些值应被一个2的因子调节(乘2)。在–律情况下,对一个定点处理器,输入范围被变换到-8031~+8031。它意指在开始编码处理以前,输入值应除以2。换句话说,这些值能被作为Q1格式来处理,意指有一位在十进制小数点的右边,那么所有涉及到这个数据的计算都应把这一位考虑进去。对于16-bit线性PCM输入的情况,有满动态范围-32768~+32768,输入值应被考虑成Q3格式,这就是说,输入值应被除以8。在解码器输出端,这个因子8将被恢复。3.2矢量缓冲器这个方块缓冲5个连续语音样值以形成一个5维语音矢量。3.3感觉加权滤波器自适应图A.4显示了感觉加权滤波器调节器的细节操作(块3)。这个调节器对每四个语音矢量计算一次感觉加权滤波器的系数,而这四个语音矢量是基于未量化语音的线性预测分析(常被叫做LPC分析)上的。系数更新出现在每四个矢量自适应周期的第三个语音矢量处,这些系数在每两次更新间保持为常数。参考图A.4(a),这个计算按下列步骤执行。首先,输入(未量化)语音矢量通过一混合(hybrid)窗模块(块36)即加一窗在以前的语音矢量上,然后计算加窗语音信号的头11个自相关系数。Levinson-Durbin递推模块(块37)变换这些自相关系数成为预测器系数。以这些预测器系数为基础,权滤波器系数计算器(块38)能得出期望的权滤波器系数。下面我们仔细讨论这三部分。我们先描述混合窗的原理。因为这个混合窗技术将被用于三种不同的LPC分析中,我们先给出它的总体描述,然后再针对不同情况专门讲述。假定LPC分析对每L个信号样值执行一次,为一般化,认为对应于当前LD-CELP自适应周期的信号样值是。那么,对于反向自适应LPC分析,混合窗被用于样值索引小于m的所有以前的样值,如图A.4(b)。设在混合窗函数中有N个非递归样值,则信号样值全部被这个窗的非递归部分加权。从开始(包括这个样值),样值左边的所有信号样值被这个窗的递归部分加权,有值b,这里,0<b<1和0<α<1。在时刻m,混合窗函数被定义为:(A.3.1)窗加权信号是:(A.3.2)非递归部分的样值和递归部分的起始段对不同的混合窗在附件A中被专门说明。对一个M阶LPC分析,我们需要计算M+1个自相关系数,对当前自适应周期,第i个自相关系数能被表示为:(A.3.3)这里,(A.3.4)在方程(A.3.3)的右边,第一项是的“递归部分”,而第二项是“非递归部分”,对于每个自适应周期都要计算非递归部分的有限和。另一方面,递归部分被递归计算。下面来说明怎样做。假定我们对于当前的自适应周期已经计算和储存了所有的,想要继续下一个自适应周期,它是从采样)开始的。混合窗被右移L个采样,对下一个自适应周期,这个新的窗加权信号变成:(A.3.5)的递归部分被写作(A.3.6)或(A.3.7)因此,能从方程(A.3.7)递归计算。这个新计算出的送回存储器以为下一个自适应周期所使用。然后,自相关系数由下式计算:(A.3.8)迄今,我们已以一般方法描述了混合窗的计算方法。对图A.4(a)中的模块36中的混合窗,参数值是M=10,L=20,N=30,(因为)用上边描述的混合窗方法计算了11个自相关系数R()后(,一个“白噪声”相关方法被应用,通过一个小量来增加能量R(0):(A.3.9)这样做有一个作用,即用白噪声来填充谱谷以便降低谱动态范围和缓和后续Levinson-Durbin递推的不良条件。白噪声相关因子257/256对应于大约24dB的白噪声电平,这个电平低于平均语音能量。其次,应用白噪声修正自相关系数,Levinson-Durbin递推模块37递归地计算了1~10阶预测器的系数。令第i阶预测器的第j个系数为,则递归方法可如下描述:(A.3.10)(A.3.11)(A.3.12)(A.3.13)(A.3.14)方程(A.3.11)到(A.3.14)对递归计算,最终的解可给出:(A.3.15)如果我们定义,则10阶“预测误差滤波器”(有时被称作“分析滤波器”)有如下的传递函数(A.3.16)相应地,10阶线性预测器用下列传递函数定义:(A.3.17)感觉加权滤波器系数计算(块38)根据下列方程来计算感觉加权滤波器系数:(A.3.18)(A.3.19)(A.3.20)感觉加权滤波器是在方程(A.3.18)中用传递函数W(z)定义的一个10阶零–极滤波器。和的值分别是0.9和0.6。参考图A.2,感觉加权滤波器调节器(块3)根据方程(A.3.17)至(A.3.20)周期地更新W(z)的系数,再把这些系数馈送到冲激响应矢量计算器(块12)和感觉加权滤波器(块4和块10)。3.4感觉加权滤波器在图A.2中,当前输入语音矢量s(n)通过感觉加权滤波器(块4),成为加权的语音矢量v(n)。注意,除了在预置期间,滤波器存储值(即内部状态变量,或被保留在滤波器延迟单元的值)在任何时间不应再置为0。换句话说,感觉加权滤波器(块10)的存储器将需要下面描述的特殊处理。3.4.1非语音操作对调制解调器信号或其它非语音信号,CCITT测试结果表明,最好不用感觉加权滤波器,这等于置W(z)=1。如果在方程(A.3.18)中,和被设为0,就很容易地得到了这个结果。在语音方式下这些变量的标称值是0.9和0.6。3.5综合滤波器在图A.2中,有两个具有同样系数的综合滤波器(块9和块22),这两个滤波器被后向综合滤波器调节器(块23)更新。每一个综合滤波器是一个50阶全极点滤波器,该全极点滤波器由一个在反馈支路中具有50阶LPC预测器的反馈环组成。综合滤波器的传递函数是F(z)=1/[1-P(z)],这里的P(z)是50阶LPC预测器的传递函数。如果已获得加权语音矢量v(n),则用综合滤波器(块9)和感觉加权滤波器(块10)产生一个零输入响应矢量r(n)。为做到这一点,我们首先打开开关5,即把它指向节点6。这意味着从节点7到综合滤波器9的信号将是零。然后我们让综合滤波器9和感觉加权滤波器10构成5个采样(1个矢量)的“环”。这意指我们继续对五个采样信号和节点7的零信号进行操作。加权滤波器10的输出结果就是期望的零输入响应矢量r(n)。3.6VQ目标矢量计算这个块从加权的语音矢量v(n)减去零输入响应矢量r(n),以获得VQ码书搜索目标矢量x(n),即。3.7反向自适应综合滤波器这个调节器23调整综合滤波器9和22的系数。它把量化的(合成的)语音做为输入,产生一组综合滤波器系数做为输出。它的操作类似于感觉加权滤波器调节器3。这个调节器的流程说明示于图A.5,混合窗模块49和Levinson-Durbin递推模块50的操作除下列三点与图A.4(a)中模块36和37的计算部分不同外,其余完全相同:现在的输入信号是量化(合成)语音,而不是未量化(原始)输入语音;预测器阶数是50而不是10;混合窗参数不同:N=35,注意:更新周期仍然是L=20,白噪声相关因子仍然是257/256=1.00390625。令表示50阶LPC预测器的传递函数,则它有形式(A.3.21)这里是预测器系数。为改善信道对误差的鲁棒性,把这些系数作微小的改动,以便LPC谱的峰值宽度稍微增大。带宽扩张模块51按下列方法执行带宽扩张。已给LPC预测器系数,一组新的根据下式得到:(A.3.22)这里(A.3.23)这样,通过一个的因子,就能把综合滤波器的所有极点快速地向原点移动。因为这些极点离开了单位圆,频域响应的峰就被加宽了。这样的带宽扩张以后,变化了的LPC预测器的传递函数为:(A.3.24)接着,改变的系数被传送到综合滤波器9和22,这些系数也被传送到冲激响应矢量计算器12。综合滤波器9和22有传递函数为:(A.3.25)类似于感觉加权滤波器,综合滤波器9和22也是每4个矢量更新一次,更新也发生在每4个矢量自适应周期的第三个语音矢量,但是,更新正是建立在一个自适应周期的量化语音矢量基础上,或者说,更新发生前引进了两个矢量的延迟。这是因为Levinson-Durbin递推模块50和能量表计算器15(后边介绍)在计算上过于集中。结果,虽然以前量化语音的自相关在每4个矢量周期的第一个矢量是有效的,但计算可能要求不只一个矢量的时间,因此,为保持一个矢量的基本缓冲体积(为使编码延迟短),和维持实时操作,在滤波器更新中,一个2-矢量延迟被引进,以利于实时实现。

3.8后向矢量增益调节器这个调节器更新激励增益,n为每个矢量的索引,激励增益是一个调节因子,用于调节选择的激励矢量y(n)。调节器20以增益调节的激励矢量e(n)作为输入,产生一个激励增益作为它的输出。基本上,它希望在对数增益域用自适应线性预测方法预测e(n)的增益,e(n)是基于e(n-1),e(n-2),...的。这个后向矢量增益调节器20被详细地示于图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中产生的对数增益减去这个对数补偿值,得到。这个对数增益又被用于混合窗模块43和Levinson-Durbin递推模块44。模块43和44的操作与感觉加权滤波器调节器模块(图A.4(a))中的块36和37的操作完全一样,只是混合窗参数不同,而且现在分析的信号是移去偏移的对数增益而不是输入语音。(注意对每5个语音样值只产生一个增益值)。这时混合窗参数(块43)是M=10,N=20,L=4和模块44(Levinson-Durbin递推模块)的输出是一个10阶线性预测器的系数,具有传递函数:(A.3.26)接着,带宽扩展模块45按照与图A.5的模块51相类似的方法向z平面的原点快速移动这个多项式的根。结果,带宽扩展增益预测器有如下的传递函数(A.3.27)这里系数用下式计算:(A.3.28)这个带宽扩展使增益调节器(图A.2中的块20)对信道误差更具有鲁棒性,这些接着被用作对数增益线性预测器(图A.6中的块46)的系数。这个预测器46每4个语音矢量更新一次,更新出现在每4个矢量自适应周期的第二个语音矢量。这个预测器希望预测,是基于的一个线性组合。的预测值被表示成,以下式给出:(A.3.29)从对数增益线性预测器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通过当前的激励增益来标定1024个候选码矢量中的每一个,然后,让这1024个结果一次一个地通过由综合滤波器F(z)和感觉加权滤波器W(z)组成的级联滤波器。每当这个模块传送一个新的码矢量给具有传递函数的级联滤波器时,这个滤波器的存储器都被预置为0。VQ码矢量的滤波能用矩阵矢量乘法来表述。令是7bit波形码书中的第j个码矢量,是3bit增益码书中的第i个电平。让{h(n)}表示并行滤波器的冲激响应序列,那么,当由码书下标i和j给定的码矢量被传送到并行滤波器H(z)时,滤波器输出可以表示为:(A.3.30)这里,(A.3.31)码书搜索模块24搜索下标i和j的最佳组合,这种组合使下面的均方误差最小:(A.3.32)这里,是归一化的VQ目标矢量。展开这些项,得到(A.3.33)因为和(n)的值在码书搜索期间是确定的,所以使D最小就等价于使下式最小:(A.3.34)这里,(A.3.35)并且(A.3.36)注意到实际上是第j个经过滤波的波形码矢量的能量,不依赖于VQ目标矢量。也注意到波形码矢量是确定的,矩阵H只依赖于综合滤波器和加权滤波器,这两个滤波器在经过一个四矢量语音周期后被确定。结果,经过四矢量的一个语音周期后也被确定。以这些结论为基础,当两个滤波器被更新时,我们能计算和储存这128个可能的语音项(对应于128个波形码矢量),然后用这些能量项在下一个四矢量语音周期期间重复码书搜索。这种处理减少了码书搜索的复杂性。为进一步减小计算量,我们可以先计算和储存矩阵和因为是固定的,这两个矩阵也是固定的。我们可以把表示成:这里注意到,一旦、和值被预先计算和储存,只依赖于j的内积项就占有中最大的计算量。因此,码书搜索方法通过波形码书的改善,对每个波形码矢量判别出最佳增益索引。对于一个已给定的波形码矢量,找到最佳增益索引有以下几种方法:第一种也是最明显的方法是计算出8个可能的值对应于8个可能的i值,然后找出对应于最小的索引i。但是,对于每个i,这种方法要求2次乘法。第二种方法是首先计算最佳增益,然后把这个增益在3bit增益码书中量化成8个增益电平之中的一个。最好的索引是最接近的增益电平的索引。但是这种方法对于128个波形码矢量中的每一个要求一次除法,而除法很明显对于使用DSP处理器是很无效的。第三种方法,是对第二种方法稍加修改,对于DSP实现是有效的。的量化能被看做在和“量化元边界”(即两相邻增益电平的中点)间的比较结果。令是有相同符号的增益电平和的中点,那么检验“?”就等价于检验“?”。因此,通过利用后者检验,我们能避免除法操作。对每个索引,仍然只要求一次乘法。这就是用在码书搜索中的方法。增益量化元边界是固定的,能被预先计算和储存一个表中,对八个增益电平,实际上只使用六个界限值。一旦最佳下标和被鉴别出来,它们被联系起来以形成码书搜索模块的输出—唯一的10bit最佳码书索引。3.9.2码书搜索模块的操作根据已经介绍的码书搜索原理,码书搜索模块24的操作在下面描述。参考图A.2。每当综合滤波器9和感觉加权滤波器10被更新时,冲激响应矢量计算器12计算级联滤波器F(z)W(z)冲激响应的头5个样值。为了计算冲激响应矢量,我们首先置级联滤波器的存储器为0,然后用一个输入序列{1,0,0,0,0}来激励滤波器。对应的5个输出样值是,它们组成了期望的冲激响应矢量。这个冲激响应矢量被计算后,它将保持为常数且被用于接着的四个语音矢量的码书搜索,直到滤波器9和10被再次更新。接着,波形码矢量卷积模块14计算128个矢量,j=0,1,2,…,127。或者说,它对每个波形码矢量和冲激响应序列做卷积,在这里,卷积只对前5个采样值有效。然后根据方程(A.3.36)通过能量表计算器15计算128个矢量的能量并储存,一个矢量的能量定义为每个矢量元素平方值的和。注意到在块12、14和15中的计算只是对每四个语音矢量进行一次,而在码书搜索模块中的其它块则是对每一个语音矢量执行一次。也注意到表的更新与综合滤波器的系数更新是同步的。也就是说,新的表将从每个自适应周期的第三个语音矢量开始被使用。VQ目标矢量归一化模块16计算归一化增益VQ目标矢量。在DSP实现中,首先计算是更有效的,然后再用乘以x(n)的每个元素。接着,逆时卷积模块13计算矢量。这个操作等价于先把的元素倒序,然后把它与冲激响应矢量卷积,最后再把输出元素的序列颠倒。(因此命名为逆时卷积)。一旦和表被预先计算和存储,矢量p(n)也被计算出来,那么误差计算器17和最佳码书索引选择器18一起工作来完成下面有效的码书搜索算法:预置为一个比可能最大的值还要大的数(或者用DSP数表示系统的最大的可能数);b)设波形码书索引j=0;c)计算内积;d)如果,转向步骤h)通过负增益搜索;否则,继续步骤e)通过正增益搜索;e)如果置i=0,转向步骤k);否则继续f);f)如果置i=1,转向步骤k);否则继续g);g)如果置i=2,转向步骤k);否则置i=3转向k);h)如果置i=4,转向步骤k);否则继续i);i)如果置i=5,转向步骤k);否则继续j);j)如果置i=6,否则置i=7;k)计算;l)如果,那么置;m)如果j<127,置j=j+1,转向步骤c);否则继续n);n)当这个算法执行到这里时,全部1024个可能的增益和波形的组合已被搜索完毕。显然,对增益和波形而言,得出的和是期望的码书下标。输出最佳码书索引(10位)是这两个下标的级联,对应的最佳激励码矢量是。选择的10bit码书索引通过通信信道被发送到解码器。3.10仿真解码器迄今,虽然解码器已经鉴别和传送了最佳码矢量,但一些附加的任务必须在下面的语音矢量的编码准备中被执行。首先,最佳码书索引被传送到激励VQ码书以提取对应的最佳码矢量;然后,这个最佳码矢量被在增益段21中的当前激励增益所调节,得到的增益调节矢量是e(n)=y(n)。这个矢量e(n)然后被送到综合滤波器22以获得当前量化语音矢量。注意到块19~23形成一仿真解码器8。因此,实际上当没有信道误差时量化语音矢量是仿真解码语音矢量。在图A.2中,后向综合滤波器调节器23需要这个量化语音矢量以更新综合滤波器系数。类似地,后向矢量增益调节器20需要增益调节激励矢量e(n)以更新对数增益线性预测器的系数。在继续对下一个语音矢量进行编码之前的一项任务是更新综合滤波器9和感觉加权滤波器10的存储器。为完成这项任务,我们先保留滤波器9和10的存储值,后者是完成零输入响应计算(在3.5节中描述)后被保留下来的。然后我们置滤波器9和10的存储值为零并且合上开关5。也就是说,把它与结点7连接起来。接着,增益调节激励矢量e(n)被传送到两个滤波器9和10的存储器。注意到因为e(n)只是5个样值的长度,滤波器有零存储值,乘加的数目对5个样本的周期只从0上升到4,这在计算量上是一个很大的节省。因为如果滤波器存储值不是零,每个样本将有70次乘加。然后,我们再把原先保留的存储内容与对e(n)滤波后新建立的滤波器存储值相加。结果,这就是把滤波器9和10的零输入响应与零状态响应相加。这使得滤波器的存储值按期望设置,它被用于计算在下一个语音矢量编码期间的零输入响应。注意到滤波器存储值更新后,综合滤波器9的存储器的头5个元素与期望的语音矢量的元素完全相同。因此,实际上,我们能忽略综合滤波器22而从综合滤波器9的更新存储器值来获得,这意味着每秒节省50次乘–加运算。到现在为止描述的编码方法是针对一个单独的输入语音矢量的。整个语音波形的编码通过对每个语音矢量重复上面的操作而获得。3.11同步和带内信号传送在上述对编码器的描述中,假定解码器知道接收的10-bit码书索引的界限值,也知道什么时候综合滤波器和对数增益预测器需要更新(回忆它们每4个矢量被更新一次)。实际上,这样的同步信息通过在16kbit/s位流的顶部加一同步位就可有效。但是,在许多应用中,有必要插入同步位或带内传送信号位成为16kbit/s位流的一部分。这可以按下列方法办到:认为一个同步位每N个语音矢量被插入一次,那么,对每次第N个输入语音矢量,我们可以只搜索波形码书的一半而产生一个6bit波形码书索引。用这种方法,我们每次从第N个传送的码书索引中得到1位,插入1个同步位或带内传送信号位。注意到我们不能从一个已经选出的7-bit波形码书索引中任意得到一位,相反,编码器必须知道哪一个语音矢量将被去掉一位,然后对于这些语音矢量只搜索一半码书。否则,解码器对这些语音矢量将没有同样的解码激励码矢量。因为编码算法有一个四矢量的基本自适应周期,让N是4的倍数是合理的,以便解码器能容易地决定编码自适应周期的界限。对一个合理的N值(例如16,对应于一个10ms的位擦除周期),在语音质量上的降低基本上是可忽略的。特别是,我们发现N=16的值导致极小的偏差。这个位擦除速率仅是100bit/s。如果上述方法被采用,我们建议当期望位是一个0时,波形码书的前一半被搜索,也就是说,这些矢量具有下标0到63。当这个期望位是1时,那么,码书的另一半被搜索,结果索引值在64到127之间,这种选择的意义是期望位在码字的最左边。因为7位波形码矢量先于3位符号和增益码书,我们进一步建议同步位从一个四矢量周期的最后一个矢量获得。当它被检测的时候,接收的下一个码字可以开始新的码矢量周期。虽然,我们陈述了同步能引起极小的误差,但我们注意到在包含这个同步方法的硬件上进行非正式的检测时,降低的质量没有测量出来。但是,我们特别建议在编码器被重复接通和断开的系统中不要为了同步而用同步位。例如没有语音出现的一个系统可能用一台语音活动检测器来断开编码器。每当编码器被接通时,解码器就需要确定同步序列。按100bit/s算,这可能要花费几百毫秒的时间;另外,从解码状态到跟踪编码状态也需要时间。两者时间的结合将导致一种称作首尾削波的现象,这种现象是语音的起始点将被丢失。如果编码器和解码器在与语音起始时刻相同的时刻动作,那么就没有语音丢失。要做到这一点唯一的可能是在系统中使用外部信号来确定起始时刻和进行外部同步。

4.LD—CELP解码原理图A.3是LD—CELP解码器的框图,每个框的功能叙述在下面的章节中给出。4.1激励VQ码书这个框含有一个激励矢量量化码书(包括波形和增益码书),它与在LD—CELP编码器中的码书19是一致的。它用接收到的最佳码书索引来提取在LD—CELP编码器中选择的最佳码矢量y(n)。4.2增益调节单元这个块计算已调节的激励矢量4.3综合滤波器这个滤波器的传递函数与LD—CELP编码器中的传递函数是相同的(假设没有误差传输)。它对已调节的激励矢量e(n)滤波以产生解码语音矢量。注意到在解码期间为了避免任何可能的舍入误差的积累,有时希望精确地复制用在编码器中的方法。如果是这样,那么若编码器获得是从综合滤波器9的更新存储中得到的,则解码器也应该把作为综合滤波器的零输入响应和零状态响应来计算,就象在编码器中那样。4.4后向矢量增益自适应这个块的功能在3.8节中描述过。4.5后向综合滤波器自适应这个块的功能在3.7节中描述过。4.6后滤波器这个块对解码语音进行滤波以增强感觉质量。这个块在图A.7基础上进一步扩展以表示出更多的细节。参考图A.7,这个后滤波器主要由三部分组成:长时后滤波器71,短时后滤波器72和输出增益调节单元77。在图A.7中的其余四个块刚好是用于计算输出增益调节单元77中的合适的调节因子的。长时后滤波器71,有时叫做基音后滤波器,是一个在将要进行后滤波的语音基频的整数倍处具有谱峰的梳齿滤波器。基频的倒数被叫做基音周期。基音周期可以利用基音检测器从解码语音中提取。令p是通过基音检测器获得的基音周期,那么长时后滤波器的传递函数可以表示为:(A.4.1)在这里系数,b和基音周期p每4个语音矢量更新一次(一个自适应周期),实际的更新发生在每个自适应周期的第三个语音矢量。为方便起见,从现在开始,我们称一个自适应周期为一帧。,b和p的推导将在后边的4.7节描述。短时后滤波器72由一个10阶零极滤波器和与之级联的一个一阶全零滤波器组成。10阶零极滤波器对共振峰间的频率部分进行衰减,而一阶全零滤波器试图补偿10阶零极滤波器频率响应中的谱的倾斜。令是通过解码语音的反向LPC分析而获得的10阶LPC预测器的系数,是通过同样的LPC分析而获得的第一个反射系数。那么,和k可以通过50阶反向LPC分析(图A.5中的块50)附带地得到。我们需要做的事是使50阶Levinson-Durbin递推在10阶时停下来,记录下k1和,然后从11阶到50阶重新开始Levinson-Durbin递推。短时后滤波器的传递函数为(A.4.2)这里系数,和也是一帧调节一次,但调节发生在每一帧的第一个矢量处(也就是使尽快有效)。总之,解码语音通过长时滤波和短时滤波后,滤波语音将不再与未滤波语音有相同的数量级。为了避免有时有大的增益偏离,有必要使用增益控制来迫使后滤波的语音与未滤波的语音有大致相同的数量级,这项工作由块73到块77来完成。绝对值和计算器73对逐个矢量进行操作,它取当前的解码语音矢量并计算它的五个语音样点的绝对值之和。类似地,绝对值和计算器74执行同类型的计算,但当前语音是短时后滤波器的输出语音矢量sf(n)。然后调节因子计算器75用块74的输出值除以块73的输出值获得现行sf(n)矢量的一个调节因子。这个调节因子随后通过一个一阶低通滤波器76以得到对应于sf(n)中的五个元素中每一个独立的调节因子。一阶低通滤波器76的传递函数为:输出增益调节单元77利用低通滤波器的调节因子对短时后滤波器的输出进行逐个样点的更新。注意到因为调节因子计算器75对每个矢量只产生一个调节因子,如果没有低通滤波器,它将对块77逐个样点的调节操作有一个阶梯的影响。低通滤波器76对这样的阶梯波能有效地平滑。4.6.1非语言操作CCITT客观测试结果表明:对一些非语音信号,当自适应后滤波器被关闭时,这个编码器的功能被改善,因为自适应后滤波器的输入是综合滤波器的输出,所以这个信号总是有效的。在实际实现时,当这个开关被置于使后滤波器无效位置时,这个未滤波的信号也就是输出。4.7自适应后滤波器这一块一帧一次地计算和更新后滤波器的系数。这个自适应后滤波器在图A.8中被详细说明。参考图A.8,10阶LPC逆滤波器模块81和基音周期提取模块82一起工作以从解码语音中提取基音周期。实际上,具有合理功能的基音提取器(不引进附加延迟)都可以用在这里。我们在这里描述的只是实现基音提取的一种可能方法。10阶LPC逆滤波器81有如下传递函数:在这里系数是从Levinson-Durbin递推公式(图A.5中的块50)得到的,它在每一帧的第一个矢量处被更新。这个LPC逆滤波器以解码语音作为它的输入,产生LPC预测残差序列{d(k)}作为它的输出。我们使用100个样点的基音分析窗和20到140个样点的基音周期范围。基音周期提取模块82保持一个长的缓冲区以保留LPC预测残差的最后240个样点。为方便检索,这240个LPC残差样值被标以d(-139),d(-138),…,d(100)而储存在缓冲器里。基音周期提取模块82一帧一次地提取基音周期,在每帧的第三个矢量基音周期被提取。因此,LPC逆滤波器输出矢量应该以特殊的次序储存在LPC残差缓冲器里。对应于上一帧的第四个矢量的LPC残差矢量被储存为d(81),d(82),d(83),…,d(85),现行帧的第一个LPC残差矢量被储存为d(86),d(87),…,d(90),现行帧的第二个LPC矢量被储存为d(91),d(92),…,d(95),现行帧的第三个LPC残差矢量被储存为d(96),d(97),d(98),d(99),d(100)。样点d(-139),d(-138),…,d(80)只是以现行的时间次序排列的以前的LPC残差样值。一旦LPC残差缓冲区准备好,基音周期提取模块82就以下列方式工作:首先,LPC残差的最后20个样值[d(81)~d(100)]通过一个1kHz的三阶椭圆低通滤波器(系数在附录D中给出),然后按4:1压缩采样点数(也就是用因子4除采样数),这形成5个低通滤波的,4:1抽取的LPC残差样值,标以d(21),d(22),…,d(25)。储存在压缩后的LPC残差缓冲器中,除这5个采样外,其余55个采样d(-34),d(-33),…,d(20)通过移动以前帧压缩抽取后的LPC残差样值来获得。接着,压缩LPC残差样值的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论