信号编码方法及设备 本发明涉及对输入信号进行时间轴/频率轴变换以进行量化的信号编码方法及设备,尤其涉及能够高效地编码音频信号的信号编码方法及设备。
已有许多信号编码方法通过利用音频信号(包括语音信号和声频信号)的时域和频域统计特性以及人类听觉特性进行信号压缩。这些方法可分成时域编码、频域编码、分析-综合编码等。
在对音频信号、尤其在对声频信号或音乐信号进行编码时,更多地关注声音质量而不是量化效率。为此,一般采用例如标量量化这样的量化技术,于是符号位速率的下限是比较高的。
但是,在通信媒体迅速迈向多媒体系统时,需要能够抑制声音质量恶化的缩域速率编码。
为了满足这种需要,出现了矢量量化,但在矢量量化中,所谓独立频谱的再现性、即出现在音频信号频谱中的某些尖峰部分不够理想,需要对其进行改善。
因此,本发明的目的是提供能够提高作为尖峰部分的独立频谱的再现性和能够利用例如矢量量化选择的缩域速率来提高声音质量的信号编码方法及设备。
为了实现上述目的,本发明的特征在于:对输入信号进行时间轴/频率轴变换来获得频率轴上的系数,根据系数的位分配,控制标量量化和矢量量化的执行以满足上述系数。
作为标量量化和矢量量化的一种控制方法,可举例出一种选择方法,它对频率轴上的系数进行标量量化,这些系数地位分配等于或大于预定阈值。
对于已被进行了标量量化的系数,以权重0执行矢量量化,以便忽略矢量量化输出中的那些相应于利用上述标量量化进行了量化的系数的输出,上述标量量化的输出代替这些输出而作为输出。
此外,对于已被用标量量化进行了量化的系数,该系数的量化误差被作为矢量量化的输入,矢量量化的输出与上述标量量化的输出相加作为输出。
上述矢量量化的执行是把输入矢量分成多个子矢量,以便根据相应于每一个子矢量的位分配在多个码本之间进行切换。
此外,最好在进行上述时间轴/频率轴变换之前利用特征提取来归一化时间轴信号,并利用这种归一化的参数来计算上述位分配。
此外,能够通过对输入矢量进行交错来对多个子矢量进行上述矢量量化。
用矢量量化具有低再现性的频率轴上的系数可用标量量化来量化。
图1是表示本发明一实施例的基本结构的方框图。
图2是说明本发明一实施例的操作的流程图。
图3是表示执行标量量化(SQ)和矢量量化(VQ)的具体结构的方框图。
图4是表示本发明一实施例的音频信号编码设备的结构实例的方框图。
现在参看附图对本发明最佳实施例进行描述。
在图1中,输入端100被输入时间轴的波形信号、例如音频信号。具体来说,例如可以是约从0至8KHz、取样频率Fs为16KHz的所谓宽带音频信号。但是,本发明不受这种信号限制。
来自输入端100的输入信号被提供给归一化电路101。该归一化电路101还被称为白化电路,该加白电路通过提取被提供的时间波形信号的特征来进行白化,以便取出预测余数。可利用线性预测或非线性预测来进行时间波形的白化。例如,可利用线性预测编码(LPC)和音调分析来白化输入时间波形信号。
被白化的时间波形信号从该归一化电路101传送给时间轴/频率轴变换(T/F变换)电路102,信号在该电路中被变换成为频率轴信号。经常用正交变换、例如离散余弦变换(DCT)、改进DCT(MDCT)、快速付里叶变换(FFT)等来实现这种T/F变换。在T/F变换电路中得到的例如MDCT系数或FFT数这样的系数被馈送给超量化装置作用的量化电路103,在该电路中既执行标量量化(SQ)又执行矢量量化(VQ)。如果假设在T/F变换中得到的每帧的系数是一N维矢量y,则为了有效地量化该系数矢量y=(y(0),y(1),…y(N-1))t,就需要确定各系数的量化位分配。这种位分配可根据听觉掩蔽模型、或更简单地根据在上述归一化电路101的白化期间获得的诸如LPC系数这样的参数和利用上述系数y计算出的值p(i)来得到。以下将把p(i)称为位分配确定指数。以下将详细给出位分配确定指数p(i)的一具体例子。
位分配电路104根据在归一化电路101中获得的上述参数和来自T/F变换电路102的系数y计算分配位。一般来说,可利用上述位分配确定指数如下地表示第i个系数的一分配位ba(i)、即位分配:
ba(i)=log2(P(i))+q其中q代表广义化的校正量。一个帧内的系数量化可用的总位数B应当是一恒定值或接近该恒定值的值,于是上述校正量q可被如下地确定:[公式1]q=B-Σi=0N-1log2(p(i))N]]>
根据得到的每一系数的分配位ba(i)来控制标量量化(SQ)和矢量量化(VQ)的执行。具体来说,例如预先确定分配位阈值,以便根据以下条件选择标量量化和矢量量化:
如果ba(i)≥bSQ,则标量量化(SQ)。
如果ba(i)<bSQ,则矢量量化(VQ)。
因为上述分配位ba(i)不是整数,所以不能直接将其用于通常的标量量化。用ba(i)的整数值f(ba(i))作为量化位来执行标量量化。以下是f(x)的一个例子,其中的rint(x)是给出最接近x的整数值的函数。[公式2]
在该公式中,bSQ和bhigh的值例如可以是bSQ=2和bhigh=4。但是,可以不限于这些值。
如果如此地使分配位的数目成为整数,则在利用上述校正量q调整的最后帧中的所需位数将造成大的差值。因此,在q的附近搜索使以下公式接近B的q’。[公式3]Σi=0N-1ba′(i)=Σi=0N-1f(log2(p(i))+q′)]]>利用q’来确定每一系数的最后分配位ba’(i)。
位分配电路104确定被传送给量化(SQ和VQ)电路103的这种ba’(i)。在量化(SQ和VQ)电路103中,根据这一分配位ba’(i),对标量量化(SQ)和矢量量化(VQ)进行控制。具体来说,如以上所述,当系数等于或大于预定阈值时,执行标量量化(SQ),而对于其它系数执行矢量量化。在这种情况下,如果对于除被进行了标量量化的系数外的其余系数执行矢量量化,则要被进行标量量化的系数的个数会因帧的不同而发生变化,于是矢量量化的维数会因帧的不同而发生变化。因此,最好把矢量量化的维数固定为全部系数的总数N。例如,如果在所有要被量化的系数中有一个系数已被进行了SQ量化,则以权重O对该系数进行矢量量化,在VQ输出中忽略该系数的结果,以便用SQ输出来代替。在此最好把待量化矢量分成多个子矢量,以便对每一个子矢量执行矢量量化,并根据各个子矢量的分配位的个数有选择地使用多个码本。
此外,位分配电路104计算在量化(SQ和VQ)电路103中执行的矢量量化的听觉加权的权重w(i),计算出的w(i)提供给量化(SQ和VQ)电路103。以下将详述该权重w(i)。
从输出端105取出来自量化(SQ和VQ)电路的输出指数,从输出端106取出诸如上述LPC系数这样的参数和来自归一化电路101的音调。
虽然以硬件结构的形式描述了图1的信号编码设备,但它也可以利用数字信号处理器(DSP)等以软件的形式来实现。图2是表示在这种情况下的信号编码过程的流程图。以下参看图2和图1详细地描述本发明的一实施例。
在图2中,在步骤S1,执行归一化处理以便完成上述白化,它相应于上述归一化电路101。在此将描述利用线性预测编码(LPC)和音频分析的白化。
利用合适的时间窗口功能、例如汉明窗口对作为输入信号的时间波形信号x(n)开窗口,提取LPC系数。把LPC系数变换为LSP参数,然后对其进行量化和内插。再把已被量化的LSP参数变换为LPC系数,组成LPC逆滤波器。利用该LPC逆滤波器归一化或白化输入的时间波形信号x(n),以获得LPC(余数r1(n)。如果假设有N个帧,就用前一帧、即过去的一个帧的LPC余数r1(n)来扩展从0≤n<N至-N≤n<N的r1(n)的定义区域。在n<0的区域中,定义如下
r1(n)=r11(n+N)用r1(n)来计算音调。音调增益可以是单点音调的分析,但在这一例子中,为了提高音调的精度(周期性,即所谓的音频滞后)和音调增益,对于音调中心P和在该中心之前及之后的两个点P±1计算三个音调增益g0、g1和g1。[公式4]φ(k)=Σn=0N-1(r1(n)-g-1r1(n-k-1)-g0r1(n-k)-g1r1(n-k+1))2]]>
假设使上述公式最小的k为音调P,包括中心P的三个点处的三个音调增益构成了音调增益矢量g=(g1,g0,g1)。
量化该音调P和音调增益矢量g来获得被用来构成音调逆滤波器的量化音调增益矢量Q(g),用该音调逆滤波回归一化LPC余数r1(n)来获得r2(n)。已被归一化的该LPC余数r2(n)被提供给上述T/F变换电路102。
在步骤S2中,对是时间轴波形的LPC余数r2(n)进行T/F(时间轴/频率轴)变换。例如可用MDCT来进行这种T/F变换。
在步骤S3中,计算位分配,这相应于图1中的位分配电路104。如上所述,可例如根据听觉掩蔽模型或在上述归一化(白化)中获得的诸如LPC系数这样的参数和利用上述系数y计算的位分配确定指数p(i)计算这种位分配。此外,在该步骤S3中,还计算权重w(i),以便在后级的矢量量化(VQ)期间进行听觉加权。
首先对上述位分配确定指数p(i)进行说明。
在上述归一化(白化)中获得的量化LPC系数Q(di)(在此假设i假如是1≤i≤10)、音调P和量化音调增益矢量Q(g)被用来构成LPC综合滤波器和音调综合滤波器。这些滤波器具有可如下地表示的传输函数。[公式5]H(z)=11+Σi=110Q(αi)t-i]]>p(z)=11-Σi=-11Q(gi)t-p+i]]>
此外,还得到了函数H(g)和P(z)的频率响应h(i)和pch(i)。此处的i代表频率轴上的各个点。还有,对于每一临界带宽,处理在上述T/F变换后的系数,或进一步把临界带宽分成一些块。取出并量化第j个块的峰值Pb(i),以便把该量化值Q(Pb(j))作为该块量化因数。这样就可把上述位分配确定指数p(i)—它是频率轴上的通用归一化因数—表示如下:
p(i)=h(i)pch(i)Q(Pb(i)) (i∈块j)
然后,对于加权,首先构成LPC和音调听觉加权滤波器。这些滤波器具有例如可如下地表示的传输函数W1(z)和W2(z):[公式6]W1(z)=1+Σi=110γ11Q(αi)t-i1+Σi=110γ21Q(αi)t-i]]>W2(z)=11-Σi=-11λQ(gi)t-p+i]]>此处的常数r1、r3和λ可以例如是r1=0.8、r2=0.5和λ=0.7。但是,这些常数不受这些值的限制。
可利用上述函数W1(z)和W2(z)的频率响应W1(z)和W2(z)以及从Q(Pb(i))导出的Q(Pb1(j))计算上述权重W(i)。
w(i)W1(i)W2(i)Q(Pb1(j)) (i∈块j)对于上述Q(Pb1(j)),例如有以下等式,但不受此限制。
A(P’b(j))=(Q(Pb(j)))r (0<r<1)
以下将参看图3对在图2的步骤S4或在图1的量化(SQ和VQ)电路103中执行的标量量化和矢量量化进行描述。
在图3中,向输入端21提供了由已被进行了上述T/F变换的N个系数组成的系数矢量y=(0),y(1),……y(N-1))t。在此假设ISQ是要被进行标量量化(SQ)的系数的一组索引,IVQ是要被进行矢量量化(VQ)的系数的一组索引。即要被量化的全部系数的索引被分成ISQ和IVQ。
[0…N-1]=ISQ∪IVQ,ISQ∩IVQ=0如上所述,利用SQ/VQ选择器22根据上述位分配ba1(i)选择SQ和VQ。
首先,对于i∈ISQ执行标量量化。可以有一个或多个标量量化码本。本发明使用分别具有量化位数2、3和4的码本S2、S3和S4。SQ码本选择器24根据上述位分配ba1(i)选择使用这些码本中的哪一个。利用如下地在0≤j<2ba’(j)范围内使|y(i)-Sba’(i)(j)|2最小的j=SQ指数来获得已被SQ(标量量化)方框25进行了量化的输出Q(y(i)):
y(i)=Sba’(i)(SQ指数)把标量量化(SQ)的结果集中起来以产生N维矢量ySQ。该矢量的第i个元素(0≤i≤N)如下:[公式7]
以下对矢量量化(VQ)进行说明。上述索引集合的元素个数随帧的不同而不同。如果集中这些元素来进行矢量量化,则维数的调整将是复杂的,并且所需的码本随所需的维数的不同而不同。在本实施例中,全部N个系数都以固定的维数进行量化。但是,对于那些已被进行了标量量化的系数,把矢量量化加权设定为0。
具体来说,首先把N个系数分成M维的子矢量。例如,从低频带开始,对于M个维的每一个简单地划分系数。当得到N/M个子矢量时,对于第k个子矢量
yk=(y(kM),y(kM+1),……y(kM+M-1))t还划分先前获得的权重矢量来产生Wk。应当指出,Wk的第j个元素Wk(j)定义如下:[公式8]
与上述SQ的情形相同,可以采用一个VQ码本或在彼此之间进行切换的多个VQ码本。首先利用图3中的VQ位分配计算器23计算子矢量yk的全部位分配Byk。例如,可采用如下的平均位分配,但位分配不受此限制:[公式9]Byk=Σ0≤j<M,kM+jϵlveba′(kM+j)Σ0≤j<M,kM+jϵlve1]]>
一旦确定了上述Byk,就预先确定了使用L个码本(C0C1……CL-1)的哪一个码本的变换规则。根据这一变换规则,选择供子矢量yk使用的码本Cr。这种码本选择由图3中的VQ码本选择器26来完成。
对于选定的码本Cr,如果假设了位分配是Br,就在0<m<2Br的范围内搜索使||Wk(yk-Cr(m)||2最小的m=VQ指数。于是可把通过乘法器28从矢量量化(VQ)方框27得到的量化输出Q(yk)表示如下:[公式10]
Q(yk)=ACr(VQ指数)其中WK=diag(wk)
Cr(1)是Cr的第一个元素矢量。乘法28将VQ方框27的输出的这一表达式乘以矩阵A。
矢量量化得出的M维量化输出Q(yk)彼此连接,这与上述的相除相反,产生-N维矢量Q(y)VQ,它在加法器29中与上述标量量化输出Q(y)SQ相加,如下地得出N个系数的量化块的最后输出:
Q(y)=Q(y)SQ+Q(y)VQ
在此应指出,通过传送确定量化的权重的参数,就能够恢复与编码器相同的操作。就是说,只根据上述位分配ba1(i),就能够确定要被进行SQ的系数索引(位置信息)和将要在SQ和VQ中使用的码本。于是,译码器就能够作出解释并求编码器输出的量化的逆运算,不需要任何附加信息。
以下参看图4描述作为上述实施例的一更具体的结构实例的音频信号编码没备。
在图4中,输入端10被输入以取样频率Fs=16MHz对例如从0至8KHz的所谓宽带音频信号进行A/D变换而得到的数字音频信号。该输入信号被提供给LPC分析-量化方框30,在该方框内以例如1帧512个取样值的分析长度对该输入信号进行开窗口,以便计算约10维的LPC系数,即α参数,该α参数被提供给LPC逆滤波器11,以获得LPC余数。对于这一LPC分析,作为一个分析单位的一帧约512个取样值的一些与下一块重叠。在该LPC分析一量化方框30中,是LPC系数的A参数被变换成为LSP(线性频谱对)参数,以便被量化和传送。
来自LPC分析电路32的α参数被传送给α/LSP变换电路33,被变换成为线性频谱对(LSP)参数。这意味着作为直接类型滤波系数得到的α参数被变换成为例如10个、即5对LSP参数。该变换可例如用Newton-Raphson方法等来实现。变换为LSP参数是因为能够获得比α参数优的内插特性的缘故。
来自α/LSP变换电路33的LSP参数在LSP量化器34中被进行矢量量化或矩阵量化。能够在执行矢量量化之前确定帧之间的差别或能够汇集多个帧来进行矩阵量化。
从端子引取出该LSP量化器34的量化输出、即LSP矢量量化指数,量化LSP矢量或逆量化输出被传送给LSP内插电路36和LSP/α变换电路38。
LSP内插电路36内插在LSP量化器34中对每一上述帧进行矢量量化而得到的LSP矢量的一对当前帧和一先前帧。执行这种内插来获得以后将需要的速率。在本例子中,执行内插来获得8倍的更高速率。
为了利用如此内插的LSP矢量来对输入的声音进行逆滤波,把LSP参数提供给LSP/α变换电路37,LSP参数在该电路内被变换成为α参数,该α参数是约10维的直接类型滤波器的系数。该LSP/A变电路37的输出被提供LPC逆滤波器电路11,以便获得上述LPC余数。在该LPC逆滤波器11中,以按照8倍速率被更新的α参数执行逆滤波,以便获得平滑的输出。
以外,来自LSP量化电路34的1倍速率LSP系数被提供给LSP/α变换电路38,在该电路中被变换成为α参数,然后被提供给分配位计算电路18,以便执行上述位分配。除上述分配位ba1(i)外,该分配位计算电路18还如上所述地计算供MDCT系数量化使用的权重w(i)。
LPC逆滤波器11的输出被提供给音调逆滤波器12和音调分析电路15,这两个电路被用来进行是长期预测的音调预测。
以下描述长期预测。通过从原始波形中减去在时间轴上移位了音调周期或利用音调分析获得的音调滞后的波形来进行长期预测,以便获得音调预测余数。在本例子中,这是利用3点预测来实现的。注意音调滞后是相应于被取样的时间轴数据的音调周期性的取样值个数。
就是说,在音调分析电路15中,对每一个帧执行一次音调分析,即分析长度是一个帧。在音调分析结果中,音调滞后被提供给音调逆滤波器12和输出端42,音调增益被提供给音调增益VQ电路16。在音调增益VW电路16中,对相应于上述3点预测的三个点处的音调增益进行矢量量化,并从输出端43取出码本索引,以便把代表值矢量或逆量化输出传送给音调逆滤波器12。该音调逆滤波器12根据上述音调分析结果,输出3点音调预测的音调预测余数。该音调预测余数被提供给正交变换装置,例如MDCT电路13,在被上述量化(SQ和VQ)电路20进行标量量化和听觉加权矢量量化之前被进行MDCT处理。如上所述,对于已被进行了MDCT处理(T/F变换)的系数,临界频带峰值提取一量化电路17进行每一临界带宽的划分或进一步把临界带宽划分成为一些块,取出每块的峰值来进行量化。该量化值被作为该块的归一化因数提供给分配位计算电路18,从输出端44被输出。
在量化(SQ和VQ)电路20中,如上所述,按照来自分配位计算电路18的位分配ba1(i)执行控制来选择SQ或VQ,以便对一部分MDCT系数进行标量量化,和根据上述VQ权重w(i)用听觉加权来对剩余的系数进行矢量量化。
例如在上述具体例子中,对除那些已被进行了标量量化(SQ)的系数外的系数进行矢量量化(实际上,对于已被进行了SQ的系数,把权重定为0)。还可以对于已被执行了SQ的系数和将要被执行VQ的系数的量化误差立即执行VQ。
例如,如果假设已被进行了标量量化(SQ)的系数为q(y)SQ,就产生矢量u来满足下式:
u=y-q(y)SQ这一矢量u被分成子矢量uk(=uk(1),uk(0),……,uk(M-1))。即
uk(i)=(kM+j)-Q(y(kM-j))SQ
在进行这种划分之后,按照上述VQ过程进行量化。在这一VQ中,可简单地把权重Wk(j)定义为:
Wk(j)=W(kK+j)利用该权重来进行矢量量化,根据这一量化结果Q(u),可如下地获得最后结果Q(y):
Q(y)=Q(u)+Q(y)VQ
在以上描述中,在执行矢量量化之前执行标量量化。但是,也可对频率轴上的所有系数首先执行矢量量化,然后对具有大的量化误差的那些系数执行标量量化。
就是说,例如首先对通过划分已被进行了上述T/F变换的频率轴上的系数得到的全部子矢量Yk执行矢量量化。在此利用如下定义的权重wk(j)执行矢量量化:
wk(j)=w(kM+j)这一量化的结果被连接起来以产生Q(y)VQ,由此可如下地得出量化误差矢量:
e=y-Q(y)VQ根据该元素e,就可利用某种方法,例如通过分类误差值来选择具有较大误差的预定数目的元素。或者根据权重W来选择相应于具有较大值的预定数值的误差。在标量量化中对选定的误差本身进行量化。
但是,在这一方法中,需要单独地传送关于已被进行了标量量化的系数的附加信息。
应当指出本发明不限于上述实施例。例如,还能够在对要被量化成为多个子矢量的一已知矢量进行了交错和划分之后执行上述矢量量化。即顺序地把要被进行矢量量化的频率轴上的系数逐个地划分成为多个子矢量,从低频段开始,一个子矢量内的系数不会集中在预定频带的附近。
由上述描述可见,根据本发明,对输入信号进行时间轴/频率轴变换来获得频率轴上的系数,以便对这些系数进行标量量化和矢量量化,根据频率轴上的系数的位分配对标量量化和矢量量化进行控制。这就能够利用矢量量化获得了缩减速率,同时对容易由矢量量化造成量化误差的那些系数执行标量量化,由此防止了这些系数的恶化。此外,根据位分配对标量量化和矢量量化进行控制,因此,不需要单独传送附加信息。
在此对具有等于或大于预定阈值的分配位的频率轴上的系数进行标量量化。通过对矢量量化造成了信息恶化的独立频谱部分进行标量量化,就能够减小量化误差和增强信号质量。
在这一过程中,对于利用标量量化进行了量化的系数,权重被定为0,以便对所有系数进行矢量量化。与通过取出除那些已被进行了标量量化的系数外的系数来执行矢量量化的情况相比,本发明实现了固定矢量量化维数,这就不必调整矢量量化的维数或根据该维数来选择码本,由此简化了处理和系统结构。这一点也可以通过把已被进行了标量量化的系数的量化误差作为矢量量化的输入来实现。
此外,通过在进行矢量量化之前把输入矢量划分成为多个子矢量,就能够减小矢量量化的码本尺寸,由此减小了负载。
还有,对预先被利用特征提取进行了归一化的时间轴信号进行上述时间轴/频率轴变换,并用归一化的参数来计算上述分配位,所以可用这种归一化参数唯一地确定标量量化(SQ)和矢量量化(VQ)之间的选择控制。于是不需要传送专门用于SQ/VQ控制的附加信息,由此防止了传输位速率的增大。