预测器的制作方法

文档序号:7539958阅读:295来源:国知局
专利名称:预测器的制作方法
技术领域
本发明涉及预测器。
无损音频编码器是这样一种音频编码器,其从原始音频信号来产生编码的音频信号以使得相应的音频解码器能够从该编码的音频信号来产生原始音频信号的准确拷贝。
在MPEG-4标准化形成过程中,产生了针对音频无损编码(ALS)的标准。无损音频编码器典型地包括两部分线性预测器,其通过减小包含于原始音频信号中的音频样本的相关性来从原始音频信号产生残留信号;和熵编码器,其对残留信号进行编码以形成编码的音频信号。在产生残留信号的过程中,预测器将相关性减小得越多,可实现的对原始音频信号的压缩就越多,即所编码的音频信号相对于原始音频信号的压缩比越高。
如果原始音频信号是立体声的信号,即包括针对第一通道和第二通道的音频样本,那么就既有通道内的相关性,即相同通道的音频样本之间的相关性,也有通道间的相关性,即不同通道的音频样本之间的相关性。
通常用于无损音频编码的线性预测器是基于RLS(递归最小平方)算法的预测器。
经典的RLS算法可以总结如下 通过设定P(0)=δI来初始化该算法, 其中δ是小的正的常数,I是M×M单位矩阵,其中M是预测器的阶。
此外,被定义为W(n)=[w0(n),w1(n),…wM-1(n)]T的M×1加权向量W(n)通过W(0)=0来初始化。
对于每个时刻,n=1,2,...,进行下面的计算 V(n)=P(n-1)*X(n) 其中X(n)是M×1矩阵(即M维向量)形式的输入信号,其被定义为X(n)=[x(n-1),...,x(n-M)]T (P(n)是M×M矩阵,因此V(n)是M×1矩阵)
K(n)=m*V(n) e(n)=x(n)-WT(n-1)X(n) W(n)=W(n-1)+K(n)e(n) P(n)=Tri{λ-1[P(n-1)-K(n)*VT(n)]} K(n)是M×1矩阵,λ是略小于1的正值,T是转置符号,Tri表示计算P(n)的上(或下)三角部分并使用与上(或下)三角部分相同的值填充矩阵的其余部分的运算。
使用定点数学来实现上述的经典RLS算法存在两个问题。
第一,由于固定点的有限动态范围,变量m往往容易被舍入为零。如果m是零,则K(n)将为零,P(n)将根据λ-1(略大于1)缓慢增加,并且除非以减小XTV(n)(XTV(n)的高值导致m为零)的方式改变该输入X(n),否则P(n)将最终溢出。
第二,V(n)的动态范围非常大(有时大于232),同时需要高精度(至少32比特)以保持高预测增益。然而,因为对于大多数32比特定点实现,用于上述方程的变量的动态范围太大。所以,当使用类似用于该算法中的其它变量的定点实现来编码V(n)时,存在精确度损失。
本发明的一个目的是为了解决当使用固定点实现的RLS算法时出现的发散问题和精确度问题。
该目的通过具有根据独立权利要求的特征的预测器来实现。
提供了一种预测器,用于计算针对多个样本值x(n)的预测值e(n),其中n是时间索引,其中 设定P(0)=δI,其中δ是小的正的常数,I是M×M单位矩阵,其中M是预测器的阶,并且设定W(0)=0; 针对每个时间索引n=1,2,...,进行下面的计算 V(n)=p(n-1)*X(n)where X(n)=[x(n-1),...,x(n-M)]T
K(n)=m*V(n) e(n)=x(n)-WT(n-1)X(n) W(n)=W(n-1)+K(n)e(n) P(n)=Tri{λ-1[P(n-1)-K(n)*VT(n)]} 其中K(n)是M×1矩阵(即M维向量),λ是略小于1的正值,T是转置符号,Tri表示计算P(n)的上(或下)三角部分,并使用与上(或下)三角部分相同的值填充矩阵的其余部分的运算; 并且其中进一步针对每个n,确定m是否小于或等于预定值,如果m小于或等于预定值,则将P(n)设定为预定的矩阵。
进一步提供一种预测器,用于计算针对多个样本值x(n)的预测值e(n),其中n是时间索引,其中 设定P(0)=δI,其中δ是小的正的常数,I是M×M单位矩阵,其中M是预测器的阶,并且设定W(0)=0; 而且针对每个时间索引n=1,2,…,进行下面的计算 V(n)=P(n-1)*X(n)whereX(n)=[x(n-1),...,x(n-M)]T
K(n)=m*V(n) e(n)=x(n)-WT(n-1)X(n) W(n)=W(n-1)+K(n)e(n) P(n)=Tri{λ-1[P(n-1)-K(n)*VT(n)]} 其中K(n)是M×1矩阵,λ是略小于1的正值,T是转置符号,Tri表示计算P(n)的上(或下)三角部分并使用与上(或下)三角部分相同的值填充矩阵的其余部分的操作,而且其中更进一步,变量V(n)被编码为标量乘以变量V′(n)的积,该标量以使V′(n)位于预定区间内的方式被预先确定。
作为解释,当值m已经在预测算法的一个步骤中变得非常小时,P(n)被重新初始化。这样,系统因为P(n)将不溢出而保持稳定。
此外,使用一标量,即缩放因子(下面用vscale表示)对V(N)进行缩放,以使得V(N)=vscale*V′(N)。这样,与V(N)相比,缩放的变量V′(N)的范围被缩减。因此,当定点实现被用于编码V′(N)时,不会有精确度损失。
例如,根据MPEG-4标准规范,可以使用小的常数0.0001初始化P(0)。在另一实施例中,设置P(0)=δ-1I,其中δ是小的正的常数。
本发明的优选实施例由从属权利要求来体现。
在一个实施例中,预定值为0。预定值也可以是小的正的常数。预定的向量是例如P(0)=δI。预定向量也可以是P(0)=δ-1I。在一个实施例中,将定点实现用于计算。特别地,在一个实施例中,使用定点实现来编码V′(n)。
下面参考附图来解释本发明的说明性的实施例。


图1示出根据本发明实施例的编码器。
图2示出根据本发明实施例的解码器。
图1示出根据本发明实施例的编码器100。
编码器100接收原始音频信号101作为输入。
该原始音频信号包括多个帧。将每个帧分成块。每个块包括多个样本。该音频信号可以包括用于多个音频通道的音频信息。在这种情况下,通常帧包括用于每个通道的一个块,即帧中的每个块对应一个通道。
原始音频信号101是数字音频信号,并且例如是通过以某采样率(例如48kHz、96kHz和192kHz)来采样模拟音频信号而产生的,其中每个样本具有某分辨率(例如8比特、16比特、10比特和14比特)。
提供缓冲器102来存储一个帧,即包含在一个帧中的音频信息。
通过自适应预测器103来处理原始音频信号101(即处理原始音频信号101的所有样本),所述自适应预测器103根据原始音频信号101的过去样本的过去样本值来计算原始音频信号101的当前(即当前处理的)样本的当前样本值的预测(估计)104。为此,自适应的预测器103使用自适应算法。这个过程将在下面详细描述。
针对当前样本值的预测104通过减法单元106从当前样本值减去,以产生当前残留105。
当前残留105然后通过熵编码器107被熵编码。熵编码器107能够例如执行Rice编码或BGMC(块式Gilbert-Moore代码)编码。
所编码的当前残留、描述由熵编码器107执行的当前残留105的编码的编码索引、由自适应预测器用来产生预测104的预测器系数、以及任选地其它信息通过多路复用器108被多路复用,以使得当处理原始信号101的所有样本时,形成比特流109,所述比特流109持有无损编码的原始信号101和把它解码的信息。
对于编码和压缩原始音频信号,编码器100可以提供几个具有不同复杂度的压缩等级。然而,对于高压缩等级,编码效率方面的差异通常是相当小的,因此放弃最高的压缩以便减小计算工作量可能是合适的。
通常,比特流109以某种方式例如经由计算机网络传送给在下面所描述的解码器。
图2示出根据本发明实施例的解码器200。
解码器200接收对应于比特流109的比特流201作为输入。
作为解释,解码器200执行编码器的逆功能。
正如所说明的,比特流201持有编码的残留、代码索引和预测器系数。该信息通过多路分离器202从比特流201中被多路分离。
使用各自的编码索引,当前(即当前处理的)编码的残留通过熵编码器203被解码以形成当前残留206。
因为假设已经处理了对应于当前残留206的样本之前的样本的样本值,所以类似于自适应预测器103的自适应预测器204能够产生当前样本值的预测205,即要根据当前残留206来无损重构的样本值,该预测205通过加法器单元207与当前残留206相加。
加法单元207的输出是无损重构的当前样本,该无损重构的当前样本与由编码器100来处理以形成当前编码的残留的样本是相同的。
解码器200的计算量依赖于自适应预测器204的阶,自适应预测器204的阶通过编码器100来选择。除了自适应预测器204的阶以外,解码器200的复杂度与编码器100的复杂度相同。
编码器100在一个实施例中也提供CRC(循环冗余校验)校验和,该校验和在比特流109中被提供给解码器200,以便解码器200能够校验被解码的数据。在编码器100侧,CRC校验和能够被用于确保压缩的文件是可无损解码的。
下面说明根据本发明的一个实施例的自适应预测器103的功能性。
通过设定P(0)=δI来初始化预测器, 其中δ是小的正的常数,I是M×M单位矩阵,其中M是预测器阶。
此外,通过设定W(0)=0来对定义为 W(n)=[w0(n),w1(n),…wM-1(n)]T的M×1加权向量W(n)进行初始化,该M×1加权向量W(n)示例性地作为初始滤波器加权向量。
针对每个时刻,即针对要被预测器处理的每个样本值x(n),其中n=1,2,...,是相应的时间索引,进行下面的计算 V(n)=P(n-1)*X(n) 其中X(n)是M×1矩阵形式的输入信号,其被定义为 X(n)=[x(n-1),...,x(n-M)]T (P(n)是M×M矩阵,因此V(n)是M×1矩阵) 向量X(n)是当前样本值x(n)之前的样本值的向量。作为解释,向量X(n)持有用于预测当前值的过去值。

K(n)=m*V(n) e(n)=x(n)-WT(n-1)X(n) W(n)=W(n-1)+K(n)e(n) P(n)=Tri{λ-1[P(n-1)-K(n)*VT(n)]} K(n)是M×1矩阵,λ是略小于1的正值,T是转置符号(表示转置运算),Tri表示计算P(n)的上(或下)三角部分并使用与上(或下)三角部分相同的值填充矩阵的其余部分的运算。
为了防止出现由于m被舍入为零而导致发散的问题,在每个步骤中检验m是否为零。如果是这种情况,则例如根据P(n)=δI来重新初始化P(n)。
为了解决由变量、特别是V(n)被以定点格式编码的所导致的精确度损失的问题,引入缩放因子vscale。
严格地选择缩放因子vscale以用于V(n)。利用与移位参数有关vscale,比例因子vscale使其它变量能够以32比特的形式来简单表示。这样,该算法能够主要用32比特定点运算而不是仿效浮点数学运算来操作。
V(n)被编码为vscale和变量V′(n)的积。选择vscale以使得V′(n)可以按照定点格式编码而不损失(或很少损失)精确度,例如与浮点实现相比。
权利要求
1.一种预测器,用于计算针对多个样本值x(n)的预测值e(n),其中n是时间索引,其中
设定P(0)=δI,其中δ是小的正的常数,I是M×M单位矩阵,其中M是所述预测器的阶,而且设定W(0)=0;
以及针对每个时间索引n=1,2,...,进行下面的计算
V(n)=P(n-1)*X(n)where X(n)=[x(n-1),...,x(n-M)]T
K(n)=m*V(n)
e(n)=x(n)-WT(n-1)X(n)
W(n)=W(n-1)+K(n)e(n)
P(n)=Tri{λ-1[P(n-1)-K(n)*VT(n)]}
其中,K(n)是M×1矩阵,λ是略小于1的正值,T是转置符号,Tri表示计算P(n)的上(或下)三角部分并使用与所述上(或下)三角部分相同的值填充矩阵的其余部分的运算;
以及其中进一步
针对每个n,确定m是否小于或等于预定值;
如果m小于或等于所述预定值,则将P(n)设定为预定的矩阵。
2.根据权利要求1所述的预测器,其中所述预定值是小的正的常数。
3.根据权利要求1或2所述的预测器,其中所述预定的向量是δI。
4.根据权利要求1至3中的任何一项所述的预测器,其中采用定点实现进行所述计算。
5.一种预测器,其用于计算针对多个样本值x(n)的预测值e(n),其中n是时间索引,其中
设定P(0)=δI,其中δ是小的正的常数,I是M×M单位矩阵,其中M是所述预测器的阶,而且设定W(0)=0;
以及针对每个时间索引n=1,2,...,进行下面的计算
V(n)=P(n-1)*X(n)whereX(n)=[x(n-1),...,x(n-M)]T
K(n)=m*V(n)
e(n)=x(n)-WT(n-1)X(n)
W(n)=W(n-1)+K(n)e(n)
P(n)=Tri{λ-1[P(n-1)-K(n)*VT(n)]}
K(n)是M×1矩阵,λ是略小于1的正值,T是转置符号,Tri表示计算P(n)的上(或下)三角部分,并使用与所述上(或下)三角部分相同的值填充矩阵的其余部分的运算;
以及其中进一步
所述变量V(n)被编码为一标量乘以变量V′(n)的乘积
所述标量以使得V′(n)位于预定区间内的方式来预先确定。
6.根据权利要求5所述的预测器,其中使用定点实现来编码所述变量V′(n)。
全文摘要
公开了一种预测器,用于计算针对多个样本值x(n)的预测值e(n),其中n是时间索引,设定P(0)=δI,δ是小的正的常数,I是M×M单位矩阵,M是所述预测器的阶,而且设定W(0)=0;以及针对每个时间索引n=1,2,…,进行上面的计算其中,K(n)是M×1矩阵,λ是略小于1的正值,T是转置符号,Tri表示计算P(n)的上(或下)三角部分并使用与所述上(或下)三角部分相同的值填充矩阵的其余部分的运算;针对每个n,确定m是否小于或等于预定值;如果m小于或等于所述预定值,则将P(n)设定为预定的矩阵。
文档编号H03M7/30GK101156318SQ200680011587
公开日2008年4月2日 申请日期2006年3月9日 优先权日2005年3月11日
发明者朱伟文, 黄海滨 申请人:新加坡科技研究局
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1