背景技术
在图1a中示意性地示出了语音的声源-滤波器模型。如所示,语音能够被建模为包括从声源102经过时变滤波器104的信号。声源信号表示声带的直接振动,而滤波器表示由咽喉、口部和舌头的形状形成的声道的声效。滤波器的作用是改变声源信号的频率分布从而增强或者削弱特定的频率。语音编码通过使用声源-滤波器模式的参数表示语音来工作而不是试图直接表示为实际的波形。
如图1b中所示意性地示出的,编码信号将被分成多个帧106,其中每个帧包括多个子帧108。例如,语音可以16kHz被采样并且以20ms的帧被处理,其中一些处理以5ms的子帧进行(每帧有4个子帧)。每个帧包括标记107,帧通过标记107根据其各自的类型被分类。因此每个帧至少被分为“浊音的”或者“清音的”,并且清音帧不同于浊音帧地被编码。因此每个子帧108包括一组表示在该子帧中的语音声音的声源-滤波器模型的参数。
对于浊音声音(诸如元音声),声源信号具有对应于感知到的声音的基音的一定程度的长期周期性。在该情形中,声源信号能够被建模为包括准周期性信号,其中对应于各自的“基音脉冲”的每个周期包括一系列不同幅度的波峰。声源信号被称为是“准”周期性的,原因在于:在至少一个子帧的时标上,可能需要使其具有大致恒定的单个的、有针对性的(meaningful)周期;但是在多个子帧或帧上,信号的周期和形式则可改变。在任意给定点的大致周期可以被称为基音滞后。在图2a中示意性地示出了被建模的声源信号202的示例,其中逐渐变化的周期P1、P2、P3等各包括四个波峰的基音脉冲,基音脉冲从一个周期到下一个周期在形状和幅度上逐渐变化。
根据诸如使用线性预测编码(LPC)的算法的多种语音编码算法,使用短期滤波器来将语音信号分成两个单独的分量:(i)表示时变滤波器104的作用的信号;和(ii)去除了滤波器104的作用的剩余信号,其表示声源信号。表示滤波器104的作用的信号可以被称为频谱包络线信号(spectralenvelope signal),并且典型地包括一系列描述在各个阶段的频谱包络线的LPC参数组。图2b示出了随时间变化的一连串频谱包络线2041、2042、2043等的示意性示例。如图2a示意性所示,当去除了变化的频谱包络线时,仅表示声源的剩余信号可以被称为LPC残差信号。短期滤波器通过去除短期相关性(即与基音周期相比的短期)而工作,从而产生具有比语音信号更少能量的LPC残差。
频谱包络线信号和声源信号各自被单独编码以进行传输。在图示出的示例中,各个子帧106将包括:(i)表示频谱包络线204的一组参数;和(ii)表示去除了短期相关性的作用的声源信号202的LPC残差信号。
为了改善声源信号的编码,可以利用其周期性。为此,使用长期预测(LTP)分析来确定LPC残差信号从一个周期到下一个周期与其自身的相关性,即在当前基音滞后下当前时间的LPC残差信号与一个周期之后的LPC残差信号之间的相关性(相关性是数据组之间的相关程度的统计测定结果,在该情形中是信号的部分之间的重复度)。就此而言,声源信号可被称为是“准”周期性的,原因在于:在至少一个相关性计算的时标上,可能需要使其具有大致恒定的有针对性的周期;但是在多次的这种计算上,声源信号的周期和形状则可改变得更加明显。对于每个子帧,从此相关性导出(derive)的一组参数被确定为至少部分地表示声源信号。每个子帧的参数组典型地是一组系列参数,该组系列系数形成各自的矢量。
然后从LPC残差中去除这个周期间相关性的作用,留下去除了基音周期之间的相关性的作用的表示声源信号的LTP残差信号。为了表示声源信号,LTP矢量和LTP残差信号被单独地编码以进行传输。
LPC参数组、LTP矢量组和LTP残差信号组在传输之前各自被量化(量化是将连续范围的值转换为一组离散值,或者将较大的大致连续的一组离散值转换为较小的一组离散值的处理)。将LPC残差信号分成LTP矢量和LTP残差信号的优点在于,LTP残差典型地具有比LPC残差小的能量,因此需要较少的比特来进行量化。
因此在图示出的示例中,各个子帧106将包括:(i)一组量化的表示频谱包络线的LPC参数(包括基音滞后);(ii)(a)与声源信号中的基音周期之间的相关性有关的量化的LTP矢量,和(ii)(b)去除了此周期间相关性的作用的表示声源信号的量化的LTP残差信号。
在传输之前,对量化值进行编码。
锥形矢量编码是为具有拉普拉斯概率分布的整数值提供有效编码的无损枚举编码技术,其中整数值的概率随着其绝对值指数式地减小。锥形矢量编码一般用于静止图像和活动图像的变换编码和子带编码以及音频转换编码。对于这些编码方法,变换系数或者子带系数大致地具有拉普拉斯概率分布,以使得锥形矢量编码成为有效的方法。
锥形矢量编码作用于L个量化索引q(n)的块,L个量化索引q(n)典型地由标量、点阵(lattice)或者格栅(trellis)量化变换系数生成。在锥形矢量编码的一个实施方式中,第一步骤是将量化索引的块转换为符号值s(n)的块和绝对值u(n)的块。与非零量化索引相对应的符号值是通过简单的二级熵编码器进行编码的。将绝对值累加在一起以生成半径K:
其被单独指示给解码器。
锥形矢量编码将绝对值u(n)块表示为K个单位脉冲在L个样本上的分布。可能的这种分布数由N(L,K)表示并且能够使用N(l,k)=N(l-1,k)+N(l,k-1)其中
进行递归计算,其中N(l,0)=1,并且N(l,K)=1。
根据以下的伪码,编码处理计算N(L,K)分布中的一个的索引b:
结果是索引b,其中0<=b<N(L,K)。为了效率,通常将N(l,k)值存储在LKmax大小的ROM表中从而避免N(l,k)的递归计算。
根据以下的伪码对索引b进行解码:
每个索引对应于唯一的分布,并且每个分布以相同的比特率进行编码。在实践中,正在被编码的信号可能不具有拉普拉斯概率分布,因此每个分布不是同等可能的。可以观察到,为了最优的编码效率,在该情形中一些分布应当比其他的分布以更小的比特率进行编码。例如在线性预测语音编码中,对具有大致高斯概率分布的残差信号进行编码。对于拉普拉斯概率分布,使用熵编码器对这种残差进行量化和编码降低了编码效率,导致了更高的比特率。
在锥形矢量编码的另一实施方式中,对本身可能为负的量化索引进行编码,无需首先将量化索引转换为符号值和绝对值。
存在类似的枚举编码技术,例如条件乘积码(Conditional Product Code)、阶乘压缩和条件乘积-乘积码(Factorial Packing and ConditionalProduct-Product Code),如果量化索引具有拉普拉斯概率分布,则上述枚举编码技术都能对量化索引进行有效的编码。
在预测语音编码中,有时每块的单位脉冲数量是固定的。在这种情形中,不将半径K传输给解码器。可选地,只允许半径K有少数几个值,这与不受限制的达到最大值Kmax的半径K相比,减小了用于对半径进行编码的比特率。
期望提供一种用于对语音传输中的量化值进行编码的改进的编码技术。
具体实施方式
线性预测编码是语音编码中的常用技术,从而利用样本之间的相关性来提高编码效率。从语音输入信号中减去LPC合成滤波器的输出以生成LPC残差信号。从LPC残差信号中减去LTP合成滤波器的输出以建立LTP残差信号。对LTP残差信号进行量化以生成激励信号。量化器可以是标量量化器、矢量量化器、代数码本量化器或者任何其他合适的量化器。长期预测器的输出与激励信号相加,生成LPC激励信号。将LPC激励信号输入至长期预测器,长期预测器例如是由基音滞后和量化的LTP系数控制的严格因果型(strictly causal)移动平均(MA)滤波器。短期预测器的输出与LPC激励信号相加,生成量化的输出信号。将量化的输出信号输入至短期预测器,短期预测器是由量化的LPC系数控制的因果型MA滤波器。
所描述的实施例图示出了一种用于在传输之前激励量化系数的新编码技术。该技术还能够用于对在语音编码中使用的其他系数进行编码,或者能够用于值的块待编码的任何情形。现在将参照图3说明该技术。
将由标量量化器生成的激励量化索引的信号输入至算术编码器518。在其中,如此处所述的发生熵编码。L*M个量化索引的帧被分成每个具有L个量化索引的M个块1090…109M。每个块按顺序并且独立地被编码。在优选实施例中,L=16而M=20。
对于每个块,将量化索引q(n)转换为符号s(n)和绝对值u(n)。对绝对值进行累加以生成半径K:
如果半径K超出最大半径值Kmax=20,则减去一个或者多个绝对值u(n)以使得半径K变成20。
使用位于存储在ROM 320中的多个概率值表中的概率值表对每个块的半径K进行算术的编码。也即是说,将来自ROM 320的固定概率表传至算术编码器322,算术编码器322基于选择出的概率表中的概率值执行绝对值的总和K的算术编码处理。算术编码是公知的(例如参见http://en.wikipedia.org/wiki/Arithmetic_coding)。编码的细节并不重要(重要的是编码是基于概率表的事实)。
编码的结果被传至暂时存储器324。
在一些情形中,半径K是固定的,在这种情形中不需要确定K或者对K进行编码。在这种情形中,半径K的固定值在编码器和解码器中将是已知的。
接下来,绝对值在块上的分布通过以16个绝对值的块开始,将父块BlockParent递归地拆分成大小相等的两个子块而进行编码。对于每次拆分,基于父块的长度Lparent和父块中绝对值的和Kparent而从多个概率表P1…Pi中选择概率表P。对于从0至Kparent的Ksub的值,每个概率表P存储具有块中的绝对值的和Ksub的概率。在编码器322中使用选择出的概率表对第一子块中的绝对值的和进行算术编码。结果对暂时存储器324中的结果进行更新。每当对存储的结果进行更新时,这是递归地执行的。当遇到绝对值的和为零的子块时,该子块不再被拆分,并且不再对该子块进行算术编码。当块已经被拆分到此程度时,最终的结果是准备进行传输的编码比特流。图3以图解的方式表示出了该方法,其中P1、P2…Pi是概率表,其中Pi表示对于在每次拆分之后的每个子块选择出的表。
在伪码中,这个程序可被表述为:
因为存在4种不同的父块长度:16、8、4和2,并且最大半径Kmax是20,因此存储了总共4×20=80个概率表P。
对于块中的每个非零绝对值,使用两个概率值的表对符号值s(n)进行算术编码,一个用于正符号,一个用于负符号。
可以通过离线训练处理(training process)建立概率表。训练处理经由语音信号的训练数据库运行编码器,并且存储访问概率表元素的每次发生情况。在运行数据库之后,对于每个表计算访问概率表元素的频率以及使其归一化以生成对于表元素的概率值。
基于似然表进行熵编码以将给定数量的单位脉冲拆分在两组样本上是新颖的。
将父块递归性地拆分成成对的子块,并且在给定父块中的单位脉冲的数量的情况下对每个子块中的多个单位脉冲进行算术编码,使得能够对单位脉冲在样本的块上的分布的有效编码。对于L个样本的块长度,对于块中的每个样本,需要总数L-1次的拆分来唯一地表示单位脉冲的数量,即幅度值。对于父块k中的每次拆分和单位脉冲的每个数量,使用了大小为k+1的算术编码概率表P。对于最大但是不受限制的半径(块中单位脉冲的总数)Kmax,使用了总数为(L-1)Kmax个的表,其中每个表的元素的平均数为(Kmax+1)/2个。因此总存储量为大约LKmax 2/2个元素。如果半径固定为值K(例如如上文所限定的k=20),则总存储量被减小至大约LK/2。概率表P可以被存储在ROM 320中。
只要满足两个条件,编码就是有效的。第一个条件是样本值的实际概率分布与算术编码表的概率分布相匹配。这可以通过借助上述的训练处理来构建算术编码表来保证。可选地,可以通过对特定概率分布进行数值积分来创建算术编码表。
第二个条件是样本值在统计上是独立的。通过去除样本值之间的相关性,白化的残差信号的量化主要保证这点。
如果块中的所有样本具有相同的概率分布,则通过使用相同的算术编码表以相同的子块大小进行拆分可以获得表尺寸的减小。例如,当输入块具有数量L=2M时,则将父块拆分成相等的两半将引起子块拆分的M个不同的大小,因此仅需要M=2log(L)个算术编码表。在这种情形中,总的表尺寸是大约2log(L)Kmax 2/2个元素。如果半径固定为值K,则总的ROM存储量被减小至大约2log(L)Kmax 2/2。
当以低的比特率进行编码时,许多量化索引具有零的值。这保证了计算的优化,其中,当子块遇到其绝对值的和是零时,编码器中的递归性熵编码和解码器中的解码就停止,而不再进一步拆分该子块。用于停止进一步拆分的可选条件是所有的子块具有相同的长度。
图4是量化索引的帧在编码之前和之后的示意性表示。帧被分为如上文所述的用于编码的16个子帧1090…10915。编码处理生成具有16个编码流的比特流106′,编码流表示子帧109并且能够被传输给解码器。
现在结合图5描述用于实施本发明的编码器500的示例。
编码器500包括高通滤波器502、线性预测编码(LPC)分析块504、第一矢量量化器506、开环基音分析块508、长期预测(LTP)分析块510、第二矢量量化器512、噪声成形分析块514、噪声成形量化器516和算术编码块518。高通滤波器502的输入端设置为从诸如麦克风的输入设备接收输入的语音信号,并且其输出端联接至LPC分析块504、噪声成形分析块514和噪声成形量化器516的输入端。LPC分析块的输出端联接至第一矢量量化器506的输入端,并且第一矢量量化器506的输出端联接至算术编码块518和噪声成形量化器516的输入端。LPC分析块504的输出端联接至开环基音分析块508和LTP分析块510的输入端。LTP分析块510的输出端联接至第二矢量量化器512的输入端,并且第二矢量量化器512的输出端联接至算术编码块518和噪声成形量化器516的输入端。开环基音分析块508的输出端联接至LTP分析块510和噪声成形分析块514的输入端。噪声成形分析块514的输出端联接至算术编码块518和噪声成形量化器516的输入端。噪声成形量化器516的输出端联接至算术编码块518的输入端。算术编码块518设置为基于其输入生成输出比特流,以便通过诸如有线调制解调器或者无线收发器的输出设备进行传输。
在工作中,编码器以20毫秒的帧对以16kHz采样的语音输入信号进行处理,其中一些处理以5毫秒的子帧进行。输出的比特流净载荷包含算术编码的参数,并且具有随提供给编码器的品质设置和输入信号的复杂性和感知重要性而变化的比特率。
将语音输入信号输入至高通滤波器504以去除80Hz以下的频率,所述频率几乎不包含语音能量,并且可能包含对编码效率不利的且在解码的输出信号中产生伪像的噪声。高通滤波器504优选地是二阶自回归移动平均(ARMA)滤波器。
经高通滤波的输入XHP被输入至线性预测编码(LPC)分析块504,LPC分析块504使用使得LPC残差rLPC的能量最小化的协方差方法来计算16个LPC系数ai:
其中n是样本数。LPC系数与LPC分析滤波器一起使用以建立LPC残差。
将LPC系数变换为线性频谱频率(LSF)矢量。使用第一矢量量化器506、具有10级的多级矢量量化器(MSVQ)对LSF进行量化,生成一起表示量化的LSF的10个LSF索引。量化的LSF被反向变换以生成在噪声成形量化器516中使用的量化的LPC系数。
将LPC残差输入至开环基音分析块508,以对于每5毫秒的子帧生成一个基音滞后,即每一帧四个基音滞后。对应于从56Hz至500Hz的基音频率,在32个样本和288个样本之间选择基音滞后,其覆盖了典型语音信号中得到的范围。而且,基音分析生成了基音相关性值,该基音相关性值是当前帧中的信号和由基音滞后值延迟的信号的归一化的相关性。对于其相关性值在0.5的阈值以下的帧被分类为清音,即,不包含周期性信号,而所有其他的帧被分类为浊音。将基音滞后输入至算术编码器518和噪声成形量化器516。
对于浊音的帧,对LPC残差执行长期预测分析。将LPC残差rLPC从LPC分析块504提供给LTP分析块510。对于每个子帧,LTP分析块510对归一化方程式求解以得出5个线性预测滤波器系数bi,以使得对于该子帧的LTP残差rLTP中的能量最小:
因此,根据当前子帧中的LPC残差减去经滤波且延迟的LPC残差来计算LTP残差。当前子帧中的LPC残差和经延迟的LPC残差都通过由相同的LPC系数控制的LPC分析滤波器生成。这意味着当LPC系数被更新时,不仅对于当前帧计算LPC残差而且对于在当前帧之前至少滞后+2个样本计算新的LPC残差。
使用矢量量化器(VQ)对于每个帧的LTP系数进行量化。得出的VQ码本索引被输入至算术编码器,并且量化的LTP系数bQ被输入至噪声成形量化器。
噪声成形分析块514对经高通滤波的输入进行分析以得出在噪声成形量化器中使用的滤波系数和量化增益。滤波系数确定量化噪声在谱上的分布,并且将滤波系数选择为使得量化是几乎听不到的。量化增益确定残差量化器的步长因而控制比特率和量化噪声电平之间的平衡。
每5毫秒的子帧,计算和应用所有的噪声成形参数。首先,对16毫秒的加窗信号块执行16阶的噪声成形LPC分析。信号块相对于当前子帧具有5毫秒的超前,并且窗口是不对称的正弦窗口。噪声成形LPC分析是以自相关方法进行的。通过噪声成形LPC分析根据残差能量的平方根得出量化增益,将量化增益乘以常数以将平均比特率设定为理想水平。对于浊音帧,将量化增益进一步乘以0.5倍的由基音分析确定的基音相关性的倒数,以减小对于浊音信号更易于听到的量化噪声的电平。对于每个子帧的量化增益进行量化,并且将量化索引输入至算术编码器518。量化的量化增益被输入至噪声成形量化器616。
接下来通过将带宽展开应用到噪声成形LPC分析中得出的系数而得出一组短期噪声成形系数ashape,i。根据公式:
ashape,i=aautocorr,i gi,
这个带宽展开使得噪声成形LPC多项式的根朝向原点移动。
其中,aautocorr,i是来自噪声成形LPC分析的第i个系数,并且对于带宽展开因子g,得出0.94的值从而给出良好的结果。
对于浊音帧,噪声成形量化器也应用长期噪声成形。其使用了如下描述的三个滤波器抽头:
bshape=0.5sqrt(基音相关性)[0.25,0.5,0.25]
短期和长期噪声成形系数被输入至噪声成形量化器516。
通过LPC残差信号计算出稀疏度(sparseness measure)S。首先确定当前帧中的LPC残差信号的十个能量,每2毫秒的块一个能量
然后根据对于帧添加连续块中的能量的对数之间的绝对差来获得稀疏度
经高通滤波的输入也被输入至噪声成形量化器516。
现在结合图6来论述噪声成形量化器516的示例。
噪声成形量化器516包括第一加法级602、第一减法级604、第一放大器606、标量量化器608、第二放大器609、第二加法级610、成形滤波器612、预测滤波器614和第二减法级616。成形滤波器612包括第三加法级618、长期成形块620、第三减法级622和短期成形块624。预测滤波器614包括第四加法级626、长期预测块628、第四减法级630和短期预测块632。
第一加法级602的一输入端设置为接收来自高通滤波器502的高通滤波输入,并且另一个输入端联接至第三加法级618的输出端。第一减法级的输入端联接至第一加法级602和第四加法级626的输出端。第一放大器的信号输入端联接至第一减法级的输出端并且其输出端联接至标量量化器608的输入端。第一放大器606还具有联接至噪声成形分析块514的输出端的控制输入端。标量量化器608的输出端联接至第二放大器609和算术编码块518的输入端。第二放大器609还具有联接至噪声成形分析块514的输出端的控制输入端,并且具有联接至第二加法级610的一输入端的输出端。第二加法级610的另一个输入端联接至第四加法级626的输出端。第二加法级的输出端联接回第一加法级602的输入端,并且联接至短期预测块632和第四减法级630的一输入端。短期预测块632的输出端联接至第四减法级630的另一个输入端。第四加法级626的输入端联接至长期预测块628和短期预测块632的输出端。第二加法级610的输出端进一步联接至第二减法级616的一输入端,并且第二减法级616的另一个输入端联接至来自高通滤波器502的输入。第二减法级616的输出端联接至短期成形块624和第三减法级622的一输入端。短期成形块624的输出端联接至第三减法级622的另一个输入端。第三加法级618的输入端联接至长期成形块620和短期预测块624的输出端。
噪声成形量化器516的目的是以如下的方式对LTP残差信号进行量化:将由量化建立的失真噪声加权为人耳更能忍受噪声的频谱的部分。
在工作中,除了LPC系数是每帧更新一次以外,所有的增益和滤波器系数和滤波器增益对于每个子帧进行更新。噪声成形量化器516生成与在解码器中最终产生的输出信号相同的量化的输出信号。在第二减法级616中从这个量化的输出信号中减去输入信号以获得量化误差信号d(n)。将量化误差信号输入至成形滤波器612,随后将对成形滤波器612进行详细描述。将成形滤波器612的输出与第一加法级602的输入信号相加以实现量化噪声的频谱成形。在第一减法级604中从得出的信号中减去预测滤波器614的输出以建立残差信号,下文将对预测滤波器614进行详细描述。在第一放大器606中将残差信号乘以来自噪声成形分析块514的量化的量化增益的倒数,并且将残差信号输入至标量量化器608。标量量化器608的量化索引表示输入至算术编码器518的激励信号。标量量化器608还输出量化信号,在第二放大器609中该量化信号乘以来自噪声成形分析块514的量化的量化增益以建立激励信号。预测滤波器614的输出在第二加法级中与激励信号相加以形成量化的输出信号。将量化的输出信号输入至预测滤波器614。
在术语的意义上,应当注意的是,在术语“残差”和“激励”之间存在小的差别。残差是通过从输入的语音信号中减去预测而获得的。激励仅基于量化器的输出。通常,残差只是量化器的输入而激励是其输出。
成形滤波器612将量化误差信号d(n)输入至短期成形滤波器624,根据公式:
短期成形滤波器624使用短期成形系数ashape,i来建立短期成形信号Sshort(n)。
在第三加法级622中从量化误差信号中减去短期成形信号以建立成形残差信号f(n)。将成形残差信号输入至长期成形滤波器620,根据公式:
长期成形滤波器620使用长期成形系数bshape,i来建立长期成形信号Slong(n)。
在第三加法级618中将短期成形信号和长期成形信号相加在一起以建立成形滤波器输出信号。
预测滤波器614将量化的输出信号y(n)输入至短期预测滤波器632,根据公式:
短期预测滤波器632使用量化的LPC系数ai来建立短期预测信号pshort(n)。
在第四减法级630中从量化的输出信号中减去短期预测信号以建立LPC激励信号eLPC(n)。将LPC激励信号输入至长期预测滤波器628,根据公式:
长期预测滤波器628使用量化的长期预测系数bi来建立长期预测信号plong(n)。
在第四加法级626中将短期预测信号和长期预测信号相加在一起以建立预测滤波器输出信号。
LSF索引、LTP索引、量化增益索引和基音滞后均由算术编码器518进行算术的编码并且多路传输以建立净载荷比特流。算术编码器518使用具有对于各个索引的概率值的查询表。查询表通过运行语音训练信号的数据库和测定每个索引值的频率而创建。频率通过归一化步骤变换为概率。在算术编码器518中使用参照图3的上述技术对激励量化索引进行编码。
现在结合图7描述根据本发明的实施例的在对编码的信号进行解码中使用的示例性解码器700。
解码器70包括算术解码和反量化块702、激励产生块704、LTP合成滤波器706和LPC合成滤波器708。算术解码和反量化块702的输入端设置为接收来自诸如有线调制解调器或者无线收发器的输入设备的编码比特流,并且其输出端联接至激励产生块704、LTP合成滤波器706和LPC合成滤波器708中的每个的输入端。激励产生块704的输出端联接至LTP合成滤波器706的输入端,而LTP合成块706的输出端连接至LPC合成滤波器708的输入端。LPC合成滤波器的输出端设置为提供解码输出以用于提供给诸如扬声器或者耳机的输出设备。
在算术解码和反量化块702中,对经算术编码的比特流进行多路分解和解码以建立LSF索引、LTP索引和LTP索引、量化增益索引和基音滞后。
解码块702对320个激励量化索引的帧进行解码,该帧有20个块,每个块16个量化索引。对每个块按顺序并且独立地进行解码。
对于每个块,使用概率值的固定的、预存储的表对表示该块中的量化索引的绝对值的和的半径K进行算术解码。
接下来,绝对值在块上的分布通过如下方式来重构:以16个绝对值的块开始,将表示父块的经熵编码的比特流递归地拆分成大小相等的两个子块,并且对累加的绝对值在两个子块上的分布进行解码。对于每次拆分,基于父块的长度和父块中绝对值的和Kparent来选择概率表P。对于从0至Kparent的Ksub,0的值,概率表P存储具有第一子块(块0)中的绝对值的和Ksub,0的概率。使用选择出的概率表对第一子块中的绝对值的和进行算术解码。根据以下公式来计算第二子块中的绝对值的和
Ksub,1=kparent-ksub,0。
当遇到绝对值的和为零的子块时,将该子块中的绝对值设定为零而不再进行算术解码。在对于块中的每个非零绝对值对块进行解码之后,使用概率值的表对符号值s(n)进行算术解码,并且将符号值s(n)与绝对值u(n)相乘以生成量化索引。在伪码中,这个程序可被表述为:
将量化的量化增益(每5毫秒的子帧一个)乘以量化索引q(n)以生成激励信号e(n)。
通过添加十级的MSVQ的码本矢量,将LSF索引转换为量化的LSF。将量化的LSF变换成量化的LPC系数。通过量化码本中的查询表,将LTP索引和增益索引转换为量化的LTP系数和量化增益。
在激励产生块中,激励量化索引信号乘以量化增益从而建立激励信号e(n)。
将激励信号输入至LTP合成滤波器706以使用基音滞后和量化的LTP系数bi根据:
建立LPC激励信号eLPC(n)。
将LPC激励信号输入至LPC合成滤波器以使用量化的LPC系数ai根据:
建立经解码的语音信号y(n)。
编码器500和解码器700优选地实施在软件中,以使得各个部件502至632和702至708均包括软件模块,软件模块存储在一个或者多个存储设备上并且在处理器上执行。本发明的优选应用在于对在诸如因特网的基于分组的网络上传输的语音进行编码,优选地使用在因特网上实施的对等(P2P)网络,例如作为诸如因特网语音协议(VoIP)呼叫的实时呼叫的部分。在这种情形中,编码器500和解码器700优选地实施在客户应用软件中,该软件在经由P2P系统通信的两个用户的最终用户终端上执行。
应当理解的是,上述实施例仅仅是通过示例进行描述的。当给出了此处的公开内容时,对于本领域技术人员而言其他应用和构造是明显的。本发明的范围不由上述实施例限制,而是仅由下面的权利要求所限制。