首页> 中国专利> 矢量量化方法和语音编码方法及其装置

矢量量化方法和语音编码方法及其装置

摘要

本发明目的在于减少矢量量化操作中代码簿搜索的处理量。在将表示一个正弦分析编码器114的频谱估算单元148的谐波的频谱分量的包络线的数据传送到一个用于矢量量化的矢量量化器116时,近似地确定输入矢量与存储在代码簿中的所有代码矢量之间的相似度,以选择较少的一组代码矢量。从这些预先选择的代码矢量中,最终选择使其与输入矢量的误差最小的一个代码矢量。按照这种方式,通过包含简单处理的预先选择步骤预先选择较少数量的候选代码矢量,接着进行高精度的最终选择。

著录项

  • 公开/公告号CN1188957A

    专利类型发明专利

  • 公开/公告日1998-07-29

    原文格式PDF

  • 申请/专利权人 索尼公司;

    申请/专利号CN97126078.8

  • 发明设计人 西门正之;饭岛和幸;松本淳;

    申请日1997-09-24

  • 分类号G10L9/14;

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人陈景峻;张志醒

  • 地址 日本东京都

  • 入库时间 2023-12-17 13:13:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-11-12

    未缴年费专利权终止 IPC(主分类):G10L19/02 授权公告日:20040407 终止日期:20130924 申请日:19970924

    专利权的终止

  • 2004-04-07

    授权

    授权

  • 1999-12-22

    实质审查请求的生效

    实质审查请求的生效

  • 1998-07-29

    公开

    公开

说明书

本发明涉及一种矢量量化方法,按照这种方法,将一个输入矢量与存储在一个代码簿中的代码矢量比较,以输出这些代码矢量中的一个最佳矢量的索引。本发明还涉及一种语音编码方法及其装置,其中将输入语音信号划分成预定的编码单位,诸如块或帧,并以该编码单位为基础执行包括矢量量化的编码处理程序。

迄今为止所知的矢量量化方法,为了对声频和视频信号进行数字化和压缩编码处理,将许多输入信号合成为一个矢量,并用一个唯一的代码(索引)表示。

在这种矢量量化过程中,各种输入矢量的典型模式是通过例如学习预先确定的,并且给定代码或索引,然后将这些代码或索引存储在一个代码簿中。之后通过代码匹配的方式将输入矢量与各自的典型模式(代码矢量)比较,以输出具有最大相似性或相关性的模式的代码。这种相似性或相关性是通过计算输入矢量与各自的代码矢量之间的失真度或误差能量而确定的,失真或误差越小,相似性或相关性越强。

迄今为止所知的各种编码方法在信号压缩处理中利用了人类语音的时域和频域特性以及心理声学特性。这种编码方法粗略地分为时域编码,频域编码和分析合成编码。

高效率语音信号编码方法的实例包括正弦波分析编码,诸如谐波编码,分频带编码(SBC),线性预测编码(LPC),离散余弦变换(DCT),改进的DCT(MDCT)或快速富立叶变换(FFT)。

在高效率语音信号编码方法中,上面提及的矢量量化用于处理一些参数,例如谐波的频谱分量。

同时,如果存储在代码簿中的模式数目,即代码矢量的数目较大,或者说,如果矢量量化器是由多个代码薄组合在一起形成的多级结构,则会增加为模式匹配进行的代码矢量搜索操作的次数,进而增大处理量。具体地说,如果将多个代码簿组合在一起,则有必要进行相应的处理,以确定在这些代码簿中成倍数量的代码矢量的相似性,从而明显地增大了代码簿搜索处理工作量。

所以,本发明的目的是提供能够减少代码簿搜索处理工作量的一种矢量量化方法,一种语音编码方法和一种语音编码装置。

为了实现上述目的,本发明提供了一种矢量量化方法,该方法包括以下步骤:通过近似方法确定被执行矢量量化处理的一个输入矢量与存储在一个代码簿中的所有代码矢量之间的相似程度,用以预先选择多个具有较高相似程度的代码矢量,最后从预先选择的多个代码矢量中选择与所说输入矢量相比误差最小的一个代码矢量。

通过在预先选择之后进行最后的选择,首先以包含较简单处理过程的预先选择程序选定较少数目的候选代码矢量,然后对这些候选代码矢量进行高精确度的最后选择,从而减少了代码簿搜索的处理工作量。

该代码簿由多个代码簿构成,从这些代码簿中的每一个可以选择表示一种最佳组合的多个代码矢量。相似程度可以是该输入矢量与该代码矢量的内积,所说代码矢量任意地用每个代码矢量的一个范数或者加权范数划分。

本发明还提供一种语音编码方法,利用正弦分析对一个输入信号或者其短期预测余值进行分析,以确定谐波的频谱分量,并且将从以编码单位为基础的谐波频谱分量中得出的各个参数作为该输入矢量进行矢量量化,以进行编码处理。在所说的矢量量化过程中,通过近似方法确定输入矢量与存储在一个代码簿中的所有代码矢量之间的相似程度,以便预先选择较少数目的具有较高相似程度的代码矢量,最后从这些预先选择的多个代码矢量中选定与该输入矢量误差最小的一个代码矢量。

相似程度可以是该输入矢量与代码矢量之间的一个任意加权的内积,该代码矢量任意地用每个代码矢量的一个范数或者加权范数划分。为了对该范数加权,可以使用趋向于低频范围具有收缩能量而趋向于高频范围具有降低能量的一个加权值。因此,可以通过采用加权的代码矢量范数划分代码矢量的加权内积而确定相似程度。

本发明还涉及用于实施所说语音编码方法的一种语音编码装置。

图1为表示用于实施本发明的语音编码方法的一种语音信号编码装置(编码器)的基本结构一个方块图。

图2为表示用于实施本发明的语音解码方法的一种语音信号解码装置(解码器)的基本结构一个方块图。

图3为表示图1所示语音信号编码器的更详细结构的方块图。

图4为表示图2所示语音信号解码器的更详细结构的方块图。

图5为表示语音信号解码器的比特速率的一个数据表。

图6为表示LSP量化器的更详细结构的一个方块图。

图7为表示LSP量化器的基本结构的一个方块图。

图8为表示矢量量化器的更详细结构的一个方块图。

图9为表示矢量量化器的更详细结构的一个方块图。

图10为表示用于加权处理的W[i]加权值的一个具体实例的曲线图。

图11为表示量化值、维数和比特数之间关系的一个数据表。

图12为一方块电路图,表示用于可变维数代码簿检索的一种矢量量化器的示例结构。

图13为一方块电路图,表示用于可变维数代码簿检索的另一种矢量量化器的示例结构。

图14为一方块电路图,表示应用可变维数的一个代码簿和固定维数的一个代码簿的一种矢量量化器的第一种示例结构。

图15为一方块电路图,表示应用可变维数的一个代码簿和固定维数的一个代码簿的一种矢量量化器的第二种示例结构。

图16为一方块电路图,表示应用可变维数的一个代码簿和固定维数的一个代码簿的一种矢量量化器的第三种示例结构。

图17为一方块电路图,表示应用可变维数的一个代码簿和固定维数的一个代码簿的一种矢量量化器的第四种示例结构。

图18为一方块电路图,表示本发明的语音编码装置中的CULP编码部分(第二编码器)的具体结构。

图19为表示图16所示装置中所执行的程序的流程图。

图20表示高斯噪声和在不同阈值处经过限幅的噪声的状态。

图21为表示在时间O通过学习生成一个形状代码簿的程序的流程图。

图22为表示根据U/UV变换进行的LSP转换状态的图表。

图23表示在通过10级LPC分析所得到的α-参数的基础上确定的10级线性频谱对(LSPs)。

图24表示从清音(UV)数据帧到浊音(V)数据帧的增益变化状态。

图25表示对于逐帧合成的波形或频谱分量所作的内插运算。

图26表示在浊音(V)与清音(UV)数据帧之间的结合部分的重叠。

图27表示在合成语音中浊音部分时的噪声添加处理。

图28表示对于在合成语音中浊音部分时所添加噪声的幅值计算的一个实例。

图29表示一个后置滤波器的示例结构。

图30表示滤波器系数的更新周期和后置滤波器的增益更新周期。

图31表示在后置滤波器的增益和滤波器系数的帧边界部分所进行的合并处理。

图32为表示应用本发明的语音信号编码器的一个移动电话的发射端结构的方块图。

图33为表示应用本发明的语音信号编码器的一个移动电话的接收端结构的方块图。

下文参照附图详细介绍本发明的优选实施例。

图1表示用于实施本发明的语音编码方法的一种编码装置(编码器)的基本结构。

图1所示语音信号编码器的基本特征是该编码器具有一个用于确定输入语音信号的短期预测余值,例如线性预测编码(LPC)余值,以应用于正弦分析,例如谐波编码的第一编码单元110,和用于利用具有相位再现性的波形编码对输入语音信号进行编码的一个第二编码单元120,所说第一编码单元110和所说第二编码单元120分别用于对输入语音信号中的浊音(V)和清音(UV)部分进行编码。

第一编码单元110应用例如LPC余值与正弦分析编码,如谐波编码或多频带激励(MBE)编码的编码规则。第二编码单元120应用执行代码激励线性预测(CELP)的规则,即通过闭环搜索方式闭环搜索一个最佳矢量进行矢量量化,并且利用例如合成方法进行分析。

在图1所示的一个实施例中,施加到一个输入端101的语音信号被输送到第一编码单元110的一个LPC反向滤波器111和一个LPC分析与量化单元113中。由LPC分析量化单元113得到的LPC系数或所谓的α参数被传输到第一编码单元110的LPC反向滤波器111中。从LPC反向滤波器111取得输入语音信号的线性预测余值(LPC余值)。从LPC分析量化单元113取得线性频谱对(LPCs)的量化输出,并传输到一个输出端102,如在下文中所解释的。从LPC反向滤波器111取得的LPC余值被传输到一个正弦分析编码单元114中。该正弦分析编码单元114进行音调检测并计算频谱包络线的幅值,同时由一个V/UV鉴别单元115进行V/UV鉴别。从正弦分析编码单元114得到的频谱包络线幅值数据被传送到一个矢量量化单元116中。从矢量量化单元116得到的代码簿索引,作为频谱包络线的矢量量化输出,通过一个开关117传输到一个输出端103,而正弦分析编码单元114的输出通过一个开关118传送到一个输出端104。V/UV鉴别单元115的一个V/UV鉴别输出传输到一个输出端105,并且作为一个控制信号,传输到开关117、118。如果输入语音信号是一个浊音(V),则选定索引和音调,并分别在输出端103、104输出。

在本实施例中,图1所示的第二编码单元120具有代码激励线性预测编码(CELP编码)结构,并使用应用合成方法分析的闭环搜索对时域波形进行矢量量化,在所说的合成方法中利用一个加权合成滤波器对一个噪声代码簿121的输出进行合成,所得到的经过加权的语音传输到一个减法器123,进而通过一个依感觉加权滤波器125获得加权语音与施加到输入端101的语音信号之间的误差,将如此获得的误差传输到一个距离计算单元124以进行距离计算,由该噪声代码簿121搜索使该误差最小的一个矢量。如上所述,这种CELP编码用于对清音部分进行编码。在输出端107通过一个开关127获得代码簿索引,亦即来自噪声代码簿121的UV数据,所说开关127当V/UV鉴别结果为清音(UV)时打开。

图2为表示作为图1所示语音信号编码器的对应装置、用于执行本发明的语音解码方法的一种语音信号解码器的基本结构的方块图。

参见图2,作为来自图1所示输出端102的线性频谱对(LSPs)的量化输出的代码簿索引传输到一个输入端202。图1所示输出端103、104和105的输出,即音调、V/UV鉴别输出和索引数据,作为包络线量化输出数据,分别传输到输入端203至205。作为从图1所示的输出端107输出的清音数据的数据的索引数据被传输到一个输入端207。

作为传输到输入端203的包络线量化输出的索引被传输到用于进行反向矢量量化的一个反向矢量量化单元212中以确定所说LPC余值的频谱包络线,并将该包络线传送到一个浊音语音合成器211中。浊音语音合成器211通过正弦分析合成浊音语音部分的线性预测编码(LPC)余值。来自输入端204、205的音调和V/UV鉴别输出也输入到合成器211中。来自浊音语音合成器211的浊音的LPC余值传送到一个LPC合成滤波器214中。来自输入端207的UV数据的索引数据传输到一个清音合成单元220,在合成单元220中必须参考噪声代码簿以获得清音部分的LPC余值。这些LPC余值还传送到LPC合成滤波器214中。在LPC合成滤波器214中,利用LPC分析处理浊音部分的LPC余值和清音部分的LPC余值。或者,利用LPC分析处理合在一起的浊音部分的LPC余值和清音部分的LPC余值。来自输入端202的LSP索引数据传送到LPC参数再现单元213,在这里取得LPC的α参数,并传送到LPC合成滤波器214中。由LPC合成滤波器214合成的语音信号从输出端201输出。

现在参照图3介绍图1所示的语音信号编码器的更详细的结构。在图3中,与图1所示的部分或器件相似者用相同的参照标号表示。

在图3所示的语音信号编码器中,传送到输入端101的语音信号由一个高通滤波器HPF109进行滤波以消除不需要的信号部分,并由此输入到LPC分析/量化单元113的一个LPC(线性预测编码)分析电路132和反向LPC滤波器111中。

LPC分析/量化单元113的LPC分析电路132采用具有256采样值量级的输入信号波形长度的汉明窗(Hamming windows)作为一个数据块,并利用自相关方法确定线性预测系数,即所谓的α参数。作为数据输出单位的帧间隔设置为约160采样值。如果,例如,采样频率fs为8kHz,则一个帧间隔的长度为20毫秒或160采样值。

从LPC分析电路132获得的α参数传输到一个α-LSP转换电路133以转换成线性频谱对(LSP)参数。这样就将α参数,如利用直接型滤波器系数所获得的,转换成例如10个,就是5对LSP参数。这种转换是采用例如牛顿-瑞普森方法进行的。将α参数转换成LSP参数的原因是LSP参数在内插特性方面优于α参数。

从α-LSP转换电路133输出的LSP参数由LSP量化器134进行矩阵或矢量量化。在矢量量化之前求得帧与帧之间的差值,或者积累多帧数据以进行矩阵量化是可能的。在本实施例的情况下,对每隔20毫秒计算出的两帧LSP参数,每帧长度为20毫秒,放在一起进行处理和进行矩阵量化及矢量量化。

量化器134的量化输出,就是LSP量化的索引数据,从端口102输出,而经过量化的LSP矢量传送到一个LSP内插电路136中。

LSP内插电路136将每隔20毫秒或40毫秒量化的LSP矢量进行内插处理以达到八倍速率。就是说,LSP矢量每隔2.5毫秒更新一次。其原因是,如果利用谐波编码/解码方法对余值波形进行分析/合成处理,则合成后波形的包络线具有非常平滑的波形,所以,如果LPC系数每隔20毫秒就发生急剧变化,则很可能产生不相干的噪声。就是说,如果LPC系数每隔2.5毫秒逐渐变化,就能够防止产生这种不相干噪声。

为了使用每隔2.5毫秒产生的内插LSP矢量对输入语音进行反向滤波,利用一个LSP-α转换电路137将所说LSP参数转换成α参数,它们皆为例如十级直接型滤波器的滤波器系数。LSP-α转换电路137的输出传输到LPC反向滤波器111,然后该反向滤波器使用每隔2.5毫秒更新的α参数对其进行反向滤波以产生平滑的输出。反向滤波器111的输出传送到正弦分析编码单元114,如谐波编码电路的一个正交变换电路145,如一个DCT电路中。

从LPC分析/量化单元113的LPC分析电路132得到的α参数传送到一个依感觉加权滤波器计算电路139,在此确定用于依感觉加权的数据。这些加权数据被传输到依感觉加权矢量量化器116、第二编码单元120中的依感觉加权滤波器125和依感觉加权合成滤波器122。

谐波编码电路中的正弦分析编码单元114利用谐波编码方法分析反向LPC滤波器111的输出。即进行音调检测、各个谐波的幅值Am计算以及浊音(V)/清音(UV)鉴别,并且通过维数变换使得随音调变化的各次谐波的幅值Am或包络线的数目保持不变。

在图3所示的正弦分析编码单元114的一个示例中,采用了普通的谐波编码技术。具体地说,按照多频带激励(MBE)编码方法,在建立模型时假定在同一时间点(在同一数据块或帧中)在各个频率区域或频带都包含浊音部分和清音部分。按照其它谐波编码技术,则是唯一地判断在一个数据块或在一个数据帧中的语音是否是浊音或是清音。在以下的说明中,如果所有频带都是UV,则判定给定数据帧为UV,在这种情况下只涉及到MBE编码技术。有关上述的MBE分析合成方法的技术实例可以在以本申请的受让人名义申请的日本专利申请No.4-91442中找到。

来自输入端101的输入语音信号和来自高通滤波器(HPF)119的信号分别输入到图3所示的正弦分析编码单元114的开环音调搜索单元141和零交叉计数器142中。反向LPC滤波器111输出的LPC余值或线性预测余值输入到正弦分析编码单元114的正交变换电路145中。开环音调搜索单元141利用输入信号的LPC余值通过开环搜索进行相对粗略的音调搜索。所提取的粗略音调数据传输到一个细微音调搜索单元146,以进行如下所述的闭环搜索。从开环音调搜索单元141中将通过对LPC余值的自相关系数的最大值与粗略音调数据一同归一化得到的归一化的自相关系数的最大值r(p)和粗略音调数据一起获取,以便传送到V/UV鉴别单元115。

正交变换电路145进行正交变换,例如离散富立叶变换(DFT),以将时间轴上的LPC余值转换成频率轴上的频谱幅值。正交变换电路145的输出传送到细微音调搜索单元146和用于估算频谱幅值或包络线的频谱估算单元148中。

从开环音调搜索单元141中提取的相对粗略音调数据和从正交变换单元145通过DFT得到的频域数据输入到细微音调搜索单元146中。细微音调搜索单元146按照0.2到0.5的比率使音调数据以粗略音调数据为中心波动±几个采样值,从而最终达到具有最佳小数点(浮点)的细微音调数据值。采用合成方法分析作为细微搜索技术以选定一个音调,从而使功率谱能够最接近原始声音的功率谱。从闭环细微音调搜索单元146中输出的音调数据通过一个开关118传送到一个输出端104。

在频谱估算单元148中,以作为LPC余值的正交变换输出的频谱幅值和音调为基础估算各次谐波的幅值以及作为谐波总体的频谱包络线,并将估算值传送到细微音调搜索单元146、V/UV鉴别单元115和依感觉加权矢量量化单元116中。

V/UV鉴别单元115根据正交变换电路145的输出、细微音调搜索单元146确定的最佳音调、频谱估算单元148所得的频谱幅值数据、从开环音调搜索单元141输出的归一化自相关系数r(p)的最大值以及零交叉计数器142的零交叉计数值鉴别一个数据帧的V/UV特性。此外,MBE技术中以频带为基础的V/UV鉴别的边界位置还可以用作V/UV鉴别的一个条件。V/UV鉴别单元115的鉴别输出从一个输出端105输出。

频谱估算单元148的一个输出单元或矢量量化单元116的一个输入单元中包括一组数据转换单元(执行一种采样速率转换的一种单元)。考虑到在频率轴上划分的频带的数目和与所说音调不同的数据的数目,利用数据转换单元的数目将包络线的幅值数据|Am|设定为一个常数值。就是说,如果有效频带提高到3400kHz,则该有效频带可以根据音调划分成8到63个频带。在各个频带中得到的幅值数据|Am|的数目mMX+1在8到63的范围内变化。于是,数据数目转换单元将可变数目mMx+1个幅值数据转换成预定数目M个数据,例如44个数据。

来自数据数目变换单元的预定数目M例如44个幅值数据或包络线数据,从频谱估算单元148的一个输出单元或者矢量量化单元116的一个输入端输入,并由矢量量化单元116以预定数目的数据,例如44个数据为单位,采用加权矢量量化方法一起进行处理。这个加权值是由依感觉加权滤波器计算电路139的一个输出端提供的。来自矢量量化器116的包络线索引经由开关117从一个输出端103输出。在加权矢量量化之前,利用一个适合的泄漏系数对由预定数目的数据构成的一个矢量求取帧间差值是可取的。

下面解释第二编码单元120。第二编码单元120具有所谓的CELP编码结构,主要用于对输入语音信号中的清音部分进行编码。根据对输入语音信号的清音部分编码的CELP编码结构,与该清音清音的LPC余值对应的噪声输出,作为所说噪声代码簿,或所谓的随机代码簿121的典型输出值,通过一个增益控制电路126传输到一个依感觉加权合成滤波器122中。该加权合成滤波器122利用LPC合成方法对输入噪声进行LPC合成,并将所产生的加权清音信号传送到减法器123。经由一个高通滤波器(HPF)109从输入端101输入并由依感觉加权滤波器125依感觉加权的一个信号输入到减法器123中。该减法器确定在该信号与来自合成滤波器122的信号之间的差值或误差。与此同时,先将所说依感觉加权合成滤波器的零输入响应从依感觉加权滤波器125的输出中减去。将所得误差送入一个距离计算电路124中以计算距离。在噪声代码簿121中搜索使该误差最小的一个典型矢量值。以上内容就是对应用合成方法分析进行闭环搜索所得时域波形进行矢量量化技术的概述。

从噪声代码簿121取得的代码簿形状索引和从增益电路126取得的代码簿增益索引作为从采用CELP编码结构的第二编码单元120输出的有关清音(UV)部分的数据。形状索引经由开关127s传输到输入端107s,而增益索引经由开关127g传输到输出端107g,其中所说形状索引为来自噪声代码簿121的UV数据,所说增益索引为来自增益电路126的UV数据。

这些开关127s、127g和开关117、118根据V/UV鉴别单元115的V/UV鉴别结果打开和关闭。具体地说,如果对于当前传输的语音信号数据帧的V/UV鉴别结果指明是浊音(V),则开关117、118打开,而如果当前传输的语音信号数据帧为清音(UV),则开关127s、127g打开。

图4更详细地表示了图2所示的语音信号解码器的结构。在图4中,用相同的标号表示图2中所示的对应物。

在图4中,与图1和图3中所示的输出端102对应的LSP的矢量量化输出,也就是代码簿索引,输入到一个输入端202中。

LSP索引传输到LPC参数再现单元213中的反向LSP矢量量化器231中,以反向矢量量化为线性频谱对(LSP)数据,然后将这些数据输入到LSP内插电路232、233中用于内插计算。所得的内插数据由LSP-α转换电路234、235转换为α参数,并传送到LPC合成滤波器214中。LSP内插电路232和LSP-α转换电路234是用于浊音(V)的,而LSP内插电路233和LSP-α转换电路235则是用于清音(UV)的。LPC合成滤波器214由用于浊音部分的LPC合成滤波器236和用于清音部分的LPC合成滤波器237构成。就是说,LPC系数内插计算对于浊音部分和清音部分是独立进行的,以抑制不良效果,否则会由于完全不同性质的LSP的插入造成在从浊音部分到清音部分的过渡部分或者从清音部分到浊音部分的过渡部分产生不良影响。

与图1和图3中所示编码器的输出端103的输出对应的相应于加权矢量量化的频谱包络线Am的代码索引数据输入到在图4中的一个输入端203。来自图1和图3所示输出端104的音调数据输入到输入端204,来自图1和图3所示输出端105的V/UV鉴别数据输入到一个输入端205中。

来自输入端203的频谱包络线Am的矢量量化索引数据传输到一个用于反向矢量量化的反向矢量量化器212中,在这里进行与数据数目转换相反的转换。所得的频谱包络线数据传送到一个正弦合成电路215中。

如果在编码过程中是在频谱矢量量化之前确定帧间差值,则在为生成频谱包络线数据而进行的反向矢量量化之后对帧间差值解码。

音调从输入端204输入正弦合成电路215,V/UV鉴别数据从输入端205输入正弦合成电路215。从正弦合成电路215输出与图1和图3中所示的LPC反向滤波器111的输出对应的LPC余值数据,并传输到一个加法器218。正弦合成的具体技术记载在例如由本受让人申请的日本专利申请Nos.4-91442和6-198451中。 

从反向矢量量化器212输出的包络线数据和从输入端204、205输出的音调和V/UV鉴别数据传输到一个用于在浊音(V)部分添加噪声的噪声合成电路216。噪声合成电路216的输出经由一个加权重叠相加电路217传输到一个加法器218。具体地说,考虑到下述情况将噪声加入LPC余值信号的浊音部分,即如果通过正弦波合成产生作为浊音LPC合成滤波器的输入的激励信号,则在低音调声音,例如男性语音中会产生沉闷的感觉,浊音与清音之间的音质发生急剧的变化,因此听起来感觉不自然。这种噪声兼顾考虑了与语音编码数据有关的参数,诸如音调、频谱包络线幅值、一个数据帧中的最大值或者余值信号电平以及浊音部分的LPC合成滤波器输入,即激励信号。

加法器218的加合输出传输到LPC合成滤波器214中用于浊音的合成滤波器236,在那里进行LPC合成以构成时间波形数据,然后由一个用于浊音的后置滤波器238v对其滤波,并传输到加法器239中。

作为从图3所示的输出端107s和107g输出的UV数据,形状索引和增益索引分别传输到图4所示的输入端207s和207g,并由此传输到清音语音合成单元220中。从输入端207s输入的形状索引传送到清音合成单元220的噪声代码簿221,而从输入端207g输入的增益索引传送到增益电路222。从噪声代码簿221读出的典型输出值为对应于清音的LPC余值的噪声信号分量。这在增益电路222中变成一个预设的增益幅值,并传输到一个开窗电路223中,以做开窗处理,从而使之与浊音部分的衔接平滑。

开窗电路223的输出传送到LPC合成滤波器214的清音(UV)合成滤波器237中。利用LPC合成技术处理传送到合成滤波器237中的数据以使之变为清音部分的时间波形数据。在将清音部分的时间波形数据传送到一个加法器239之前利用一个后置滤波器对其进行滤波。

在加法器239中,从用于浊音的后置滤波器238v输出的浊音时间波形信号和从用于清音的后置滤波器238u输出的清音时间波形信号彼此叠加在一起,所得的加合数据从输出端201输出。

上述的语音信号编码器可以根据所需的音质输出不同比特速率的数据。就是说,输出数据可以以变化的比特速率输出。

具体地说,输出数据的比特速率可以在一个低比特速率和一个高比特速率之间转换。例如,如果低比特速率为2kbps,高比特速率为6kbps,则输出数据为具有在表1中所示的比特速率的数据。

从输出端104输出的音调数据对于浊音总是以8比特/20毫秒的比特速率输出,而从输出端105输出的V/UV鉴别输出总是以1比特/20毫秒的比特速率输出。从输出端102输出的LSP量化索引的输出速率在32比特/40毫秒与48比特/40毫秒之间转换。另一方面,从输出端103输出的有关浊音(V)的索引的输出速率在15比特/20毫秒与87比特/20毫秒之间转换。从输出端107s和107g输出的有关清音(UV)的索引的输出速率在11比特/10毫秒与23比特/5毫秒之间转换。对于浊音(UV)的输出数据在2kbps时为40比特/20毫秒,在6kbps时为120kbps/20毫秒。另一方面,对于清音(UV)的输出数据在2kbps时为39比特/20毫秒,在6kbps为117kbps/20毫秒。

下文中结合相关部分的装置解释LSP索引、浊音(V)索引和清音(UV)索引。

现在参照图6和图7详细解释在LSP量化器134中进行的矩阵量化和矢量量化。

从LPC分析电路132输出的α参数传送到一个α-LSP转换电路133以转换为LSP参数。如果在LPC分析电路132中进行P级LPC分析,则计算P个α参数。这P个α参数被转换成LSP参数,并保存在一个缓存器610中。

缓存器610输出2帧LSP参数。利用由第一矩阵量化器6201和第二矩阵量化器6202构成的一个矩阵量化器620对这2帧LSP参数进行矩阵量化。2帧LSP参数在第一矩阵量化器6201中被矩阵量化,所得量化误差在第二矩阵量化器6202中进一步矩阵量化。所说矩阵量化涉及时间轴和频率轴两方面的相关性。

从矩阵量化器6202输出的2帧LSP参数的量化误差输入到由第一矢量量化器6401和第二矢量量化器6402构成的一个矢量量化单元640中。第一矢量量化器6401由两个矢量量化部分650、660构成,而第二矢量量化器6402由两个矢量量化部分670、680构成。从矩阵量化器620输出的量化误差由第一矢量量化器6401的矢量量化部分650、660以帧为基础量化。所得的量化误差矢量由第二矢量量化器6402的矢量量化部分670、680进一步量化。上述的矢量量化涉及频率轴的相关性。

执行如上所述的矩阵量化处理的矩阵量化单元620至少包括用于执行第一矩阵量化步骤的第一矩阵量化器6201和用于执行第二矩阵量化步骤的第二矩阵量化器6202,所说的第二量化步骤用于对由第一矩阵量化步骤产生的量化误差进行矩阵量化。执行如上所述的矢量量化的矢量量化单元640至少包括用于执行第一矢量量化步骤的第一矢量量化器6401和用于执行第二矩阵量化步骤的第二矢量量化器6402,所说第二矢量量化步骤用于对由第一矢量量化步骤产生的量化误差进行矩阵量化。

现在将详细解释矩阵量化和矢量量化。

将存储在缓存器600中的2帧LSP参数,即一个10×2矩阵传送到第一矩阵量化器6201中。第一矩阵量化器6201通过LSP参数加法器621将2帧LSP参数传送到一个加权距离计算单元623中,以确定最小值的加权距离。

在第一矩阵量化器6201所进行的代码簿搜索过程中的失真度dMQ1由以下方程(1)给出: >>>d>>MQ>1>>>>(>>X>1>>,sup>>X>1>′sup>>)>>=>>Σ>>t>->1>>l>>>Σ>>i>->1>>p>>w>>(>t>,>i>)>>>>(>>x>1>>>(>t>,>i>)>>->>x>1>>>(>t>,>i>)>>)>>2>>->->->>(>1>)>>>s>

其中X1为LSP参数,X1’为量化值,t和l为P维的维数。

加权w由方程(2)给出,其中没有考虑频率轴和时间轴中的加权限制: >>w>>(>t>,>i>)>>=>>1>>x>>(>t>,>i>+>1>)>>->x>>(>t>,>i>)>>>>+>>1>>x>>(>t>,>i>)>>->x>>(>t>,>i>->1>)>>>>->->->>(>2>)>>>s>

其中×(t,0)=0,×(t,p+1)=π与t无关。

方程(2)中的加权w还用于出口侧矩阵量化和矢量量化。

计算出的加权距离传输到用于矩阵量化的一个矩阵量化器MQ1 622中。通过矩阵量化产生的一个8比特索引输出被传输到一个信号转换器690中。在加法器621中将通过矩阵量化产生的量化值从来自缓存器610的2帧LSP参数中减去。一个加权距离计算单元623计算每2帧的加权距离,从而在矩阵量化单元622中执行矩阵量化。并且选择使加权距离最小的一个量化值。该加法器621的输出传送到第二矩阵量化器6202中的一个加法器631中。

与第一矩阵量化器6201相似,第二矩阵量化器6202也执行矩阵量化操作。加法器621的输出经由加法器631传输到一个加权距离计算单元633,在其中计算最小加权距离。

在第二矩阵量化器6202所进行的代码簿搜索过程中的失真度dMQ2由以下方程(3)给出: >>>d>>MQ>2>>>>(>>X>2>>,sup>>X>2>′sup>>)>>=>>Σ>>t>=>1>>l>>>Σ>>i>=>1>>p>>w>>(>t>,>i>)>>>>(>>x>2>>>(>t>,>i>)>>-sup>>x>2>′sup>>>(>t>,>i>)>>)>>2>>->->->>(>3>)>>>s>

该加权距离输入到矩阵量化单元(MQ2)632中以进行矩阵量化。通过矩阵量化产生的一个8比特索引被传送到一个信号转换器690中。加权距离计算单元633接着利用加法器631的输出计算该加权距离。选择使该加权距离最小的量化值。加法器631的输出逐帧传送到第一矢量量化器6401中的加法器651、661中。

第一矢量量化器6401逐帧进行矢量量化。加法器631的输出经由加法器651、661逐帧传输到各个加权距离计算单元653、663以计算最小加权距离。

量化误差X2与量化误差X2’之间的差值为一个(10×2)矩阵。如果将该差值表示为X2-X2’=[x3-1X3-2],则由第一矢量量化器6401的矢量量化单元652、662所进行的代码簿搜索过程中的失真度dVQ1、dVQ2由方程(4)和(5)给出: >>>d>>VQ>1>>>>(>>>x>‾>>>3>->1>>>,sup>>>x>‾>>>3>->1>>′sup>>)>>=>>Σ>>i>=>1>>p>>w>>(>0>,>i>)>>>>(>>x>>3>->1>>>>(>0>,>i>)>>-sup>>x>>3>->1>>′sup>>>(>0>,>i>)>>)>>2>>->->->>(>4>)>>>s> >>>d>>VQ>2>>>>(>>>x>‾>>>3>->2>>>,sup>>>x>‾>>>3>->2>>′sup>>)>>=>>Σ>>i>=>1>>p>>w>>(>1>,>i>)>>>>(>>x>>3>->2>>>>(>1>,>i>)>>-sup>>x>>3>->2>>′sup>>>(>1>,>i>)>>)>>2>>->->->->>(>5>)>>>s>

加权距离传送到矢量量化单元VQ1 652和矢量量化单元VQ2 662中以进行矢量量化。通过这种矢量量化输出的每个8比特索引都传输到信号转换器690中。加法器651、661将该量化值从输入的2帧量化误差矢量中减去。加权距离计算单元653、663接着利用加法器651、661的输出计算加权距离,以选择使加权距离最小的量化值。加法器651、661的输出传输到第二矢量量化器6402中的加法器671、681中。

在由第二矢量量化器6402的矢量量化器672、682所进行的代码簿搜索过程中的失真度dVQ3、dVQ4,对于

   X4-1=X3-1-X3-1

   X4-2=X3-2-X3-2’由方程(6)和(7)给出: >>>d>>VQ>3>>>>(>>>x>‾>>>4>->1>>>,sup>>>x>‾>>>4>->1>>′sup>>)>>=>>Σ>>i>=>1>>p>>w>>(>0>,>i>)>>>>(>>x>>4>->1>>>>(>0>,>i>)>>-sup>>x>>4>->1>>′sup>>>(>0>,>i>)>>)>>2>>->->->>(>6>)>>>s> >>>d>>VQ>4>>>>(>>>x>‾>>>4>->2>>>,sup>>>x>‾>>>4>->2>>′sup>>)>>=>>Σ>>i>=>1>>p>>w>>(>1>,>i>)>>>>(>>x>>4>->2>>>>(>1>,>i>)>>-sup>>x>>4>->2>>′sup>>>(>1>,>i>)>>)>>2>>->->->>(>7>)>>>s>

这些加权距离传送到矢量量化单元(VQ3)672和矢量量化器(VQ4)682中以进行矢量量化。加法器671、681将通过矢量量化产生的8比特输出索引数据从输入的2帧量化误差矢量中减去。加权距离计算单元673、683接着利用加法器671、681的输出计算加权距离,以选择使加权距离最小的量化值。

在代码簿学习过程中,根据各个失真度按照一般的Lloyd算法进行学习。

在代码簿搜索和学习过程中的失真度可以是不同值。

从矩阵量化单元622、632和矢量量化单元652、662、672和682中输出的8比特索引数据由信号转换器690转换,并从一个输出端691输出。

具体地说,对于低比特速率,取执行第一矩阵量化步骤的第一矩阵量化器6201的输出、执行第二矩阵量化步骤的第二矩阵量化器6202的输出、和执行第一矢量量化步骤的第一矢量量化器6401的输出,相反,对于高比特速率,将低比特速率的输出与执行第二矢量量化步骤的第二矢量量化器6402的输出相加,并取所得的加合。

这样对于2kbps和6kbps分别输出32比特/40毫秒的索引和48比特/40毫秒的索引。

矩阵量化单元620和矢量量化单元640进行限制在频率轴和/或时间轴上的与表示LPC系数的参数的特性一致的加权运算。

首先解释限制在频率轴上与LSP参数特性一致的加权运算。如果级数P=10,则对应于低、中、高三个范围,LSP参数X(i)分组为

L1={X(i)|1≤i≤2}

L2={X(i)|3≤i≤6}

L3={X(i)|7≤i≤10}

如果组L1、L2和L3的加权分别为1/4、1/2和1/4,则仅仅限制在频率轴上的加权由方程(8)、(9)和(10)给出: >>>w>′>>>(>i>)>>=>>>w>>(>i>)>>>>>Σ>>j>=>1>>2>>w>>(>j>)>>>>×>>1>4>>->->->>(>8>)>>>s> >>>w>′>>>(>i>)>>=>>>w>>(>i>)>>>>>Σ>>j>=>3>>6>>w>>(>j>)>>>>×>>1>2>>->->->>(>9>)>>>s> >>>w>′>>>(>i>)>>=>>>w>>(>i>)>>>>>Σ>>j>=>7>>10>>w>>(>j>)>>>>×>>1>4>>->->->>(>10>)>>>s>

各个LSP参数的加权仅仅在各个组中进行,这样的加权值是由对各个组的加权运算所限制的。

观察时间轴方向,各帧的总和必须为1,从而沿时间轴方向的限制是以帧为基础的。仅仅限制在时间轴方向的加权由方程(11)给出: >>>w>′>>>(>i>,>t>)>>=>>>w>>(>i>,>t>)>>>>>Σ>>j>=>1>>10>>>Σ>>s>=>0>>1>>w>>(>j>,>s>)>>>>->->->>(>11>)>>>s>

其中1≤i≤10和0≤t≤1。

按照这个方程(11),不限制在频率轴方向的加权是在帧序数为t=0和t=1的两帧之间进行的。仅仅限制在时间轴方向的加权是在采用矩阵量化处理的两帧之间进行的。

在学习过程中,按照方程(12)对用作学习数据的、总数为T的所有数据帧进行加权: >>>w>′>>>(>i>,>t>)>>=>>>w>>(>i>,>t>)>>>>>Σ>>j>=>1>>10>>>Σ>>s>=>0>>T>>w>>(>j>,>s>)>>>>->->->>(>12>)>>>s>

其中1≤i≤10和0≤t≤T。

现在解释限制在频率轴方向和时间轴方向的加权运算。如果级数P=10,则对应于低、中、高三个范围,LSP参数x(i,t)分组成

    L1={X(i,t)|1≤i≤2,0≤t≤1}

    L2={X(i,t)|3≤i≤6,0≤t≤1}

    L3={X(i,t)|7≤i≤10,0≤t≤1}

如果组L1、L2和L3的加权分别为1/4、1/2和1/4,则仅仅限制在频率轴上的加权由方程(13)、(14)和(15)给出: >>>w>′>>>(>i>,>t>)>>=>>>w>>(>i>,>t>)>>>>>Σ>>j>=>1>>2>>>Σ>>s>=>0>>1>>w>>(>j>,>s>)>>>>×>>1>4>>->->->>(>13>)>>>s> >>>w>′>>>(>i>,>t>)>>=>>>w>>(>i>,>t>)>>>>>Σ>>j>=>3>>6>>>Σ>>s>=>0>>1>>w>>(>j>,>s>)>>>>×>>1>2>>->->->>(>14>)>>>s> >>>w>′>>>(>i>,>t>)>>=>>>w>>(>i>,>t>)>>>>>Σ>>j>=>7>>10>>>Σ>>s>=>0>>1>>w>>(>j>,>s>)>>>>×>>1>4>>->->->>(>15>)>>>s>

按照(13)至(15)这些方程,加权限制在频率轴方向每三个数据帧中进行,并且在时间轴方向与经过矩阵量化的两帧交叉。这种处理在代码簿搜索和学习过程中都是有效的。

在学习过程中,对全部数据帧进行加权。对应于低、中、高三个范围,LSP参数x(i,t)分组成

    L1={X(i,t)|1≤i≤2,0≤t≤T}

    L2={X(i,t)|3≤i≤6,0≤t≤T}

    L3={X(i,t)|7≤i≤10,0≤t≤T}

如果组L1、L2和L3的加权分别为1/4、1/2和1/4,则各组L1、L2和L3的限制在频率轴和频率方向的加权由方程(16)、(17)和(18)给出: >>>w>′>>>(>i>,>t>)>>=>>>w>>(>i>,>t>)>>>>>Σ>>j>=>1>>2>>>Σ>>s>=>0>>T>>w>>(>j>,>s>)>>>>×>>1>4>>->->->>(>16>)>>>s> >>>w>′>>>(>i>,>t>)>>=>>>w>>(>i>,>t>)>>>>>Σ>>j>=>3>>6>>>Σ>>s>=>0>>T>>w>>(>j>,>s>)>>>>×>>1>2>>->->->>(>17>)>>>s> >>>w>′>>>(>i>,>t>)>>=>>>w>>(>i>,>t>)>>>>>Σ>>j>=>7>>10>>>Σ>>s>=>0>>T>>w>>(>j>,>s>)>>>>×>>1>4>>->->->>(>18>)>>>s>

按照方程(16)到(18),可以在频率轴方向对三个范围进行加权,并且在时间轴方向贯穿全部数据帧。

此外,矩阵量化单元620和矢量量化单元640根据LSP的变化幅度进行加权。在V到UV或者UV到V的过渡区域,它们只表示全部数据帧中的少数数据帧,由于辅音与元音之间的频率响应不同,LSP参数发生显著的变化。所以,方程(19)所示的加权可以与加权值W’(i,t)相乘,以加强过渡区域的加权。 >>wd>>(>t>)>>=>>Σ>>i>=>1>>10>>>>|>>x>1>>>(>i>,>t>)>>->>x>1>>>(>i>,>t>->1>)>>|>>2>>->->->>(>19>)>>>s>可以用下面的方程(20): >>wd>>(>t>)>>=>>Σ>>i>=>1>>10>>>|>>x>1>>>(>i>,>t>)>>->>x>1>>>(>i>,>t>->1>)>>|>>->->->>(>20>)>>>s>

代替方程(19)。

这样LSP量化单元134执行两级矩阵量化和两级矢量量化以使输出索引的比特数变为可变的。

矢量量化单元116的基本结构表示在图8中,而图8所示矢量量化单元116的更详细的结构表示在图9中。现在解释矢量量化单元116中用于频谱包络线Am的加权矢量量化单元的示例结构。

首先,根据图3所示的语音信号编码装置,解释用于数据数目转换以在频谱估算单元148的输出侧或者矢量量化单元116的输入侧提供恒定数目的频谱包络线幅值数据的一种实例装置。

有许多种方法可以用于这种数据数目转换。在本实施例中,将一个数据块中最后一个数据值插入该数据块中的第一个数据构成的伪数据或者预设数据,诸如重复数据块中最后一个数据或第一个数据构成的数据添加到频率轴上一个有效频带的一个数据块的幅值数据中,以将数据数目增大到NF,通过○倍,例如8倍限制带宽型过密采样使幅值数据数目增大○倍,例如8倍。将((mMx+1)×○)个幅值数据线性内插以扩展到较大的数目NM,例如2048。对这NM个数据进行分采样以转换为上述的预设数目M个数据,例如44个数据。事实上,通过过密采样和线性内插,只需要计算最终构成M个数据所需的数据,而无需确定所有的上述NM个数据。

图8中用于执行加权矢量量化的矢量量化单元116至少包括用于执行第一矢量量化步骤的一个第一矢量量化单元500和用于执行第二矢量量化步骤的一个第二矢量量化单元510,所说第二步骤对由所说第一矢量量化单元500在第一矢量量化步骤中产生的量化误差矢量进行量化。这个第一矢量量化单元500是一个所谓的一阶矢量量化单元,而第二矢量量化单元510是一个所谓的二阶矢量量化单元。

频谱估算单元148的一个输出矢量x,就是具有预设数目M的包络线数据,从所说第一矢量量化单元500的一个输入端501输入。矢量量化单元502对这个输出矢量x进行加权矢量量化。于是,由矢量量化单元502输出的一个形状索引从一个输出端503输出,而经过量化的值x0’从一个输出端504输出,并且传输到加法器505、513。加法器505将经过量化的值x0’从源矢量x中减去以给出一个多级量化误差矢量y。

量化误差矢量y被传输到第二矢量量化单元510中的矢量量化单元511中。该第二矢量量化单元511是由多个矢量量化器,或者图8中所示的两个矢量量化器5111、5112构成的。将量化误差矢量y在维数上进行划分,从而由所说的两个矢量量化器5111、5112进行加权矢量量化。从这些矢量量化器5111、5112输出的形状索引从输出端5121、5122输出,而量化值y1’、y2’在维度上相互连接并传输到一个加法器513中。加法器513将量化值y1’、y2’与量化值x0’相加,以产生一个量化值x1’,并将其从输出端514输出。

于是,对于低比特速率,取由第一矢量量化单元500所执行的第一矢量量化步骤的输出,相反,对于高比特速率,取第一矢量量化步骤的输出和由第二量化单元510所执行的第二量化步骤的输出。

具体地说,矢量量化部分116中的矢量量化单元500中的矢量量化器502具有L级,例如44维两阶结构,如图9所示。

就是说,将44维矢量量化代码簿的输出矢量与一个32维的代码簿之和,乘以增益gi,用作该44维频谱包络线矢量x的一个量化值x0’。由此,如图8所示,这两个代码簿为CB0和CB1,而输出矢量为s1i、s1j,其中0≤i和j≤31。另一方面,增益代码簿CBg的输出为gl,其中0≤l≤31,gl为一个标量。最终的输出值x0’为gl(s1i+s1j)。

通过上述对LPC余值进行MBE分析得到并转换成预设维数的频谱包络线幅值Am为x。如何有效地对x进行量化是十分重要的。

量化误差能量E定义为: >>E>=>>>|>|>W>{>H>>x>‾>>->H>>g>l>>(>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>}>|>|>>2>>>s> >>=>>>|>|>WH>{>>x>‾>>->>g>l>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>}>|>|>>2>>->->->>(>21>)>>>s>

其中H表示LPC合成滤波器在频率轴上的特性,W为一个加权矩阵,用于表示在频率轴上依感觉加权的特性。

如果将对当前数据帧进行LPC分析所得的α参数标记为αi(1≤i≤P),则按照方程(22)的频率响应对L维,例如44维对应点的值进行采样: >>H>>(>z>)>>=>>1>>1>+>>Σ>>i>=>1>>p>>>α>1>>>z>>->i>>>>>->->->>(>22>)>>>s>

为了便于计算,在一串1,α1,α2,……αP之后增添多个零,以构成数据串1,α1,α2,……αP,0,0,……0,从而得到256点的数据。接着,通过256点FFT,计算出与0至π范围内相关的各个点的(re2+im2)1/2,并确定所得结果的倒数。这些倒数为对L个点,例如44个点的分采样,并以这L个点作为对角阵元构成一个矩阵:依感觉加权矩阵W由方程(23)给出: >>W>>(>z>)>>=>>>1>+>>Σ>>i>=>1>>p>>>α>i>sup>>λ>b>isup>>>z>>->1>>>>>1>+>>Σ>>i>=>1>>p>>>α>i>sup>>λ>a>isup>>>z>>->1>>>>>->->->>(>23>)>>>s>

其中αi是LPC分析的结果,λa,λb为常数,例如λa=0.4,λb=0.9。

矩阵W可以根据上述方程(23)的频率响应计算出来。例如,对256点数据1,α1λb,α2λ1b2,……αpλbP,0,0……0进行快速富立叶变换,以确定0至π频域内的(r3[i]2+im2[i])1/2,其中1≤i≤128。通过对0至π频域内的128个点 1,α1λa,α2λ1a2,……αpλaP,0,0……0进行256点快速富立叶变换确定分母的频率响应,以求得(re2[i]+im’2[i])1/2,其中1≤i≤128。方程(23)的频率响应可以利用下式得出: >>>w>0>>[>i>]>=>>>>re>2>>[>i>]>+>>im>2>>[>i>]>>>>re>>′>2>>>[>i>]>+>>im>>′>2>>>[>i>]>>>>s>

其中1≤i≤128。

这是利用以下方法对例如44维矢量的各个相关点确定的。更准确地说,应当采用线性内插方法。但是,在下述实例中,用最接近的点代替。

就是,

ω[i]=ω0[nint(128i/L)],其中1≤i≤L。

在该方程中,nint(X)为使一个值最接近X的函数。

例如对于H,用相似的方法求出h(1),h(2),……h(L)。就是,

在另一个实例中,首先确定H(z)W(z),然后确定频率响应,以减少快速富立叶变换的次数。即,方程(25)的分母: >>H>>(>z>)>>W>>(>z>)>>=>>1>>1>+>>Σ>>i>=>1>>p>>>α>i>>>z>>->i>>>>>·>>>1>->>Σ>>i>=>1>>p>>>α>i>sup>>λ>b>isup>>>z>>->i>>>>>1>+>>Σ>>i>=>1>>p>>>α>i>sup>>λ>a>isup>>>z>>->i>>>>>->->->>(>25>)>>>s>被扩展为 >>>(>1>+>>Σ>>i>=>1>>p>>>α>i>>>z>>->i>>>)>>>(>1>+>>Σ>>i>=>1>>p>sup>>α>a>isup>sup>>λ>a>isup>>>z>>->i>>>)>>=>1>+>>Σ>>i>=>1>>>2>p>>>>β>1>>>z>>->i>>>>s>

256点数据,例如利用一串数据1,β1,β2,……β2p,0,0,……,0构成。然后进行256点快速富立叶变换,该幅值的频率响应为 >>rms>[>i>]>=>>>re>>′>′>2>>>[>i>]>+>>im>>′>′>2>>>[>i>]>>>s>其中1≤i≤128。由此得到, >>>wh>0>>[>i>]>=>>>>re>2>>[>i>]>+>>im>2>>[>i>]>>>>re>>′>′>2>>>[>i>]>+>>im>>′>′>2>>>[>i>]>>>>s>

其中1≤i≤128。这是对于L维矢量的各个相应点求得的。如果FFT的点数少,应当使用线性内插方法。但是,最接近的值由下式得出: >>wh>[>i>]>=>>wh>0>>[>nim>>(>>128>L>>·>i>)>>]>>s>

其中1≤i≤L。如果以这些值作为对角阵元的矩阵为W’,则 >>>W>′>>=> >>>wh>>(>1>)>>>>>>0>>>>>>>wh>>(>2>)>>>>>>>>0>>>>>wh>>(>L>)>>> >>->->->>(>26>)>>>s>

方程(26)是与上述方程(24)相同的矩阵。或者,还可以利用方程(25),相对于ω≡iπ直接计算出|H(exp(jω))W(exp(jω))|其中1≤i≤L,这样即可用于wh[i]。

此外,可以确定方程(25)的适合长度的冲击响应,例如40个点,并进行快速富立叶变换,以求得所用幅值的频率响应。

           E=‖Wk′(x-gk(s0c+s1k))‖2

利用这个矩阵重写方程(21),该矩阵表示加权合成滤波器的频率特性,我们得到:

       E=‖W’(x-gl(s0i+s1j))‖         (27)

现在解释学习形状代码簿和增益代码簿的方法。

对于所有为CB0选择一个代码矢量s0c的数据帧k使失真度的期望值最小。如果存在M个这样的数据帧,则当 >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|sup>>W>k>′sup>>>(>>x>‾>>->>g>k>>>(>>>s>‾>>>0>c>>>+>>>s>‾>>>1>k>>>)>>)>>|>|>>2>>->->->>(>28>)>>>s>

最小化时满足上述要求。在方程(28)中,Wk’,Xk,gk和sik分别表示对于第k’个数据帧的加权、第k’数据帧的输入、第k’数据帧的增益和对应于第k’数据帧的代码簿CB1的输出。

为了使方程(28)的值最小, >>J>=>>1>M>>>Σ>>k>=>1>>M>>{>>(sup>>>x>‾>>k>Tsup>>->>g>k>>>(sup>>>s>‾>>>0>c>>Tsup>>-sup>>>s>‾>>>1>k>>Tsup>>)>>)>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>>x>‾>>k>>->>g>k>>>(>>>s>‾>>>0>c>>>+>>>s>‾>>>1>k>>>)>>)>>}>>s> >>=>>1>M>>>Σ>>k>=>1>>M>>{sup>>>x>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>->>>2>g>>k>>>(sup>>>s>‾>>>0>c>>Tsup>>+sup>>>s>‾>>>1>k>>Tsup>>)>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>>s> >>+sup>>g>k>2sup>>>(sup>>s>>0>c>>Tsup>>+sup>>s>>1>k>>Tsup>>)>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>s>>0>c>>>+>>s>>1>k>>>)>>}>>s> >>=>>1>M>>>Σ>>k>=>1>>M>>{sup>>>x>‾>>k>Tsup>sup>>W>k>>T>′>sup>sup>>W>k>′sup>>>>x>‾>>k>>->>>2>g>>k>>>(sup>>>s>‾>>>0>c>>Tsup>>+sup>>>s>‾>>>1>k>>Tsup>>)>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>>s> >>+sup>>g>k>2sup>sup>>>s>‾>>>0>c>>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>0>c>>>+sup>>>2>g>>k>2sup>sup>>>s>‾>>>0>c>>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>1>k>>>+sup>>g>k>2sup>sup>>>s>‾>>>1>k>>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>1>k>>>}>->->->>(>29>)>>>s> >>>>>∂>J>>>∂>>>s>‾>>>0>c>>>>>=>>1>M>>>Σ>>k>=>1>>M>>{>>->>>2>g>>k>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>+sup>>>2>g>>k>2sup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>0>c>>>+sup>>>2>g>>k>2sup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>1>k>>>}>=>0>->->>(>30>)>>>s>于是 >>>Σ>>k>=>1>>M>>>(>>g>k>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>-sup>>g>k>2sup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>1>k>>>)>>=>>Σ>>k>=>1>>M>sup>>g>k>2sup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>0>c>>>>s>从而 >>>s>>0>c>>>=>>>{>>Σ>>k>=>1>>M>sup>>g>k>2sup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>}>>>->1>>>·>{>>Σ>>k>=>1>>M>>>g>k>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>x>‾>>->>g>k>>>>s>‾>>>1>k>>>)>>}>->->->>(>31>)>>>s>其中()表示一个逆矩阵,WkT表示矩阵Wk’的一个转置矩阵。下面考虑增益最佳化问题。与选择增益的代码字gc的第k’数据帧相关的失真度的期望值由下式给出: >>>J>g>>=>>1>M>>>Σ>>k>=>1>>N>>>>|>|sup>>W>k>′sup>>>(>>>x>‾>>k>>->>g>c>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>)>>|>|>>2>>>s> >>=>>1>M>>>Σ>>k>=>1>>M>>{sup>>>x>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>->>>2>g>>c>sup>>>x>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>>s> >>+sup>>g>c>2sup>>>(sup>>>s>‾>>>0>k>>Tsup>>+sup>>>s>‾>>>1>k>>Tsup>>)>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>}>>s>求解 >>>>∂>>J>g>>>>∂>>g>c>>>>=>>1>M>>>Σ>>k>=>1>>M>>{>->2sup>>>x>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>>s> >>->2>>g>c>>>(sup>>>s>‾>>>0>k>>Tsup>>+sup>>>s>‾>>>1>k>>Tsup>>)>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>}>=>0>>s>得到 >>>Σ>>k>=>1>>M>sup>>>x>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>>s>‾>>>0>k>>>->>>s>‾>>>1>k>>>)>>=>>Σ>>k>=>1>>M>>>g>c>>>(sup>>>s>‾>>>0>k>>Tsup>>+sup>>>s>‾>>>1>k>>Tsup>>)>sup>>W>k>>′>T>sup>>>W>′>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>>s>及 >>>g>c>>=>>>>Σ>>k>=>1>>M>sup>>>x>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>>>>Σ>>k>=>1>>M>>>(sup>>>s>‾>>>0>k>>Tsup>>+sup>>>s>‾>>>1>k>>Tsup>>)>sup>>W>k>>′>T>sup>>>W>′>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>>>->->->>(>32>)>>>s>

上述方程(31)和(32)对于形状s0iS1i给出最佳矩心条件,对于0≤i≤31,0≤j≤31,和0≤l≤31给出增益gl,这是一个最佳解码输出。同时,可以按照与确定s0i相同的方式求得s1i

下面考虑最佳编码条件,即最接近的相邻条件。

每次求出输入x和加权矩阵W’时,在逐帧的基础上求解用于确定失真度,即使方程E=‖W’(x-gl(s1i+s1j)‖2的值最小的S0is1i的上述方程(27)。

实质上,是在gl(0≤l≤31)、s0i(0≤i≤31)、和s0j(0≤j≤31)的所有组合,即32×32×32=32768种组合的基础上以循环算法求解E的,以求得这一组s0is1i,它们给出E的最小值。但是,由于这需要大量的计算,在本实施例中是顺序搜索形状和增益的。同时,对于s0is1i的组合采用循环搜索。对于s0is1i有32×32=1024种组合。在以下的说明中为了简便将s1i+s1j表示为sm

上述方程(27)变为E=‖W’(x-glsm)‖2。为了进一步简化,如果令xw=W’×sw=W’sm,我们得到

               E=‖xw-glsw2             (33) >>E>=>>>|>|>>>x>‾>>w>>|>|>>2>>+>>>|>|>>>s>‾>>w>>|>|>>2>>>>(>>g>l>>->>sup>>>x>‾>>w>Tsup>>·>>>s>‾>>w>>>>>|>|>>>s>‾>>w>>|>|>>2>>>)>>2>>->>>>(sup>>>x>‾>>W>Tsup>>·>>>s>‾>>w>>)>>2>>>>|>|>>>s>‾>>w>>|>|>>2>>>->->->>(>34>)>>>s>

所以,如果能够使gl足够准确,可以分两步进行搜索:

(1)搜索使下式最小的sw >>>>(sup>>>x>‾>>w>Tsup>>·>>>s>‾>>w>>)>>2>>>>|>|>>>s>‾>>w>>|>|>>2>>>s>

以及

(2)搜索最接近下式的gl >>sup>>>x>‾>>w>Tsup>>·>>>s>‾>>w>>>>>|>|>>>s>‾>>w>>|>|>>2>>>s>

如果使用原来的标记重新写上述方程,则

(1)’搜索使下式的值最大的一组s0is1i >>>>(>>>x>‾>>T>>>W>>′>T>>>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>)>>2>>>>|>|>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>2>>>s>

(2)’搜索最接近下式值的gl >>>>>(>>>x>‾>>T>>>W>>′>T>>>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>)>>2>>>>|>|>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>2>>>->->->>(>35>)>>>s>

上述方程(35)表示一种最佳编码条件(最接近相邻条件)。

现在考虑在为进行矢量量化而执行代码簿搜索的情况下的处理工作量。

s0is1i的维数为K,代码簿CB0,CB1的大小为L0和L1,即0≤i≤L0,0≤j≤L1

令分子相加、和积和平方的处理量分别为1,并令分母的积、和和积的处理量分别为1,则方程(35)的计算(1)’的处理量大约为:

分子:L0·L1·(K·(1+1)+1)

分母:L0·L1·(K·(1+1))

量值比较:L0·L1

以得到和值L0·L1(4K+2)。如果L0=L1=32,K=44,则处理量的量级为182272。

因此,不执行方程(35)的计算(1)’的全部处理,但是预先选择每个矢量s0is1i的P数值。由于不考虑(或允许)负增益输入,因此搜索方程(35)的第(1)’部分,使得方程(35)的第(2)’部分分子的值总是一个正值。就是说,使包括xiWiW(s0i+s1i)的极性在内的方程(35)的第(1)’部分的值最大。

作为预先选择方法的一种示例,所述方法包括:(步骤1)选择s0i的P0数值,从高量级侧计数,其使xtWtWs0i的值最大;(步骤2)选择s1i的P1数值、从高量级侧计数,其使xtWtWs1i的值最大;(步骤3)对于s0i的P0数值和s1i的P1数值的所有组合估算方程(35)的第(1)’部分。

这是有效的,如果在对方程(35)的(1)’部分的平方根 >>>>>>x>‾>>t>>>W>>′>t>>>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>>>|>|>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>>->->->>(>a>1>)>>>s>的估算中,假定分母,即s0i+s1j的加权范数基本保持为常数,而与i或j无关。实际上,方程(a1)中分母的数值不是常数。下面接着讨论将此因素考虑在内的预先选择方法。

现在解释在假定方程(a1)的分母为常数的情况下减少处理量的效果。由于(步骤1)的搜索需要L0·K的处理量,而数值比较需要

           (L0-1)+(L0-2)+...+(L0-P0)

           =P0·L0-P0(1+P0)/2的处理量,处理量之和为L0(K+P0)-P0(1+P0)/2。步骤2也需要相同的处理量。将它们相加,得到预先选择的处理量为

L0(K+P0)+L1(K+P1)-P0(1+P0)/2-P1(1+P1)/2

步骤3的最终选择的处理,在涉及方程(35)的第(1)’部分时为,

分子:P0·P1·(1+K+1)

分母:P0·P1·K·(1+1)

数值比较:P0·P1

总值为P0·P1·(3K+3)。

    例如,如果P0=P1+6,L0=L1=32及K=44,则最终选择的处理量以及预先选择的处理量分别为4860和3158,总和为8018的量级。如果预先选择的数值增大到10,这样使P0=P1=10,则最终选择的处理量为13500,而预先选择的处理量为3346,总和为16846。

如果对于各个代码簿预先选择的矢量设置为10,则处理量与不予忽略的计算量182272之比为

16846/182272这大约是前者处理量的十分之一。

同时,方程(35)的(1)’部分的分母的量值不是常数,而是根据所选择的代码矢量变化。现在解释近似量值的预先选择方法,该量值在一定程度上考虑了这个范数。

为了求得方程(a1)的最大值,它是方程(35)的(1)’部分的平方根,由于 >>>>>>x>‾>>t>>>W>>′>t>>>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>>>|>|>>W>′>>>>s>‾>>>0>i>>>|>|>+>|>|>>W>′>>>>s>‾>>>1>j>>>|>|>>>≤>>>>>x>‾>>t>>>W>>′>t>>>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>>>|>|>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>>->->->>(>a>2>)>>>s>它满足使方程(a2)的左边量值最大的条件。因此,其左边扩展为 >>>>>>x>‾>>t>>>W>>′>t>>>>W>′>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>>>|>|>>W>′>>>>s>‾>>>0>i>>>|>|>+>|>|>>W>′>>>>s>‾>>>1>j>>>|>|>>>=>>>>>x>‾>>t>>>W>>′>t>>>>W>′>>>>s>‾>>>0>i>>>>>|>|>>W>′>>>>s>‾>>>0>i>>>|>|>+>|>|>>W>′>>>>s>‾>>>1>j>>>|>|>>>+>>>>>x>‾>>t>>>W>>′>t>>>>W>′>>>>s>‾>>>1>j>>>>>|>|>>W>′>>>>s>‾>>>0>i>>>|>|>+>|>|>>W>′>>>>s>‾>>>1>j>>>|>|>>>->->>(>a>3>)>>>s>然后使其第一项和第二项趋于最大值

由于方程(a3)的第一项的分子只是s0i的函数,第一项相对于s0i最大化。另一方面,由于方程(a3)的第二项的分子只是s1j的函数、第二项相对于s1j最大化。就是,在计算 >>>>>>x>‾>>t>>>W>>′>t>>>>W>′>>>>s>‾>>>0>i>>>>>|>|>>W>′>>>>s>‾>>>0>i>>>|>|>>>->->->>(>a>4>)>>>s> >>>>>>x>‾>>t>>>W>>′>t>>>>W>′>>>>s>‾>>>1>j>>>>>|>|>>W>′>>>>s>‾>>>1>j>>>|>|>>>->->->>(>a>5>)>>>s>时采用这样一种方法,该方法包括以下步骤:(步骤1):从使方程(a4)量值最大的矢量的较高量级中选择s0i的数值Q0;(步骤2):从使方程(a5)量值最大的矢量的较高量级中选择s1j的数值Q1;(步骤3):对于所选择的s0i的数值Q0和s1j数值Q1的所有组合估算方程(35)的(1)’部分。

与此同时,W’=WH/‖x‖,其中W和H都是输入矢量x的函数,W’自然也是输入矢量×的函数。

所以,应当从一个输入矢量到另一个输入矢量的顺序来计算W,以计算出方程(a4)和(a5)的分母。但是对于预先选择不需要使用过多的计算量。所以,对于s0is1j,已经利用W’的典型值或代表值预先计算出这些分母,并与s0is1j一起存储在表中。同时,由于相除在实际的搜索处理中意味着增大处理量,所以存储了方程(a6)和(a7)的值: >>>1>>|>|>>W>*>>>>s>‾>>>0>i>>>|>|>>>->->->0>≤>i><>>L>0>>.>.>.>>(>a>6>)>>>s> >>>1>>|>|>>>>W>*>>>s>‾>>>>1>j>>>|>|>>>->->->0>≤>j><>>L>1>>.>.>.>>(>a>7>)>>>s>在上述方程中,W*是由下式(a8)给出的: >>>W>*>>=>>1>N>>>Σ>>k>=>1>>N>>>>W>′>>k>>->->->>(>a>8>)>>>s>其中Wk’为经V/UV鉴别已经判断是浊音的数据帧的W’,因此 >>>W>′>>=>>WH>>|>|>>x>‾>>|>|>>>->->->>(>a>9>)>>>s>图10表示了在W*由下述方程(a10)描述时从W[0]到W[43]的一个具体实例:

对于方程(a4)和(a5)的分子,按照从一个输入矢量x到另一个输入矢量的顺序确定和使用W’。原因是,由于在任何速率下都需要计算s0i和s1jx的内积,如果计算xtWtW’,只略微增加处理量。

在近似估算预先选择方法所需处理量时,对于步骤1的搜索需要L0(K+1)的处理量,而对于量值比较需要

Q0·L0-Q0(1+Q0)/2的处理量。上述步骤2也需要相似的处理。将这些处理量相加在一起,得到预先选择的处理量为

L0(K+Q0+1)+L1(K+Q1+1)-Q0(1+Q0)/2-Q1(1+Q1)/2

对于步骤3的最终选择,处理量为

分子:Q0·Q1·(1+K+1)

分母:Q0·Q1·K·(1+1)

量值比较:Q0·Q1总数为Q0·Q1(3K+3)。

例如,如果Q0=Q1=6,L0=L1=32和K=44,则最终选择和预先选择的处理量分别为4860和3222,总量为8082(8量级)。如果预先选择的矢量数目增加到10,这样使Q0=Q1=10,则最终选择和预先选择的处理量分别为13500和3410,总量则为16910(8量级)。

在没有归一化的情况下(即没有用加权范数相除),由于对P0=P1=6的处理量大约为8018或者对于P0=P1=10的处理量大约为16846,这些计算结果是相同量级的。例如,如果设置各个代码簿的矢量数目为10,则处理量减少

16910/182272其中182272是未加省略的处理量。这样,处理量减少到不大于初始处理量的十分之一。

以在进行预先选择的情况下的信噪比为具体实例,以不进行预先选择的情况下使用语音分析和合成的20毫秒时段的段信噪比为参照值,在进行归一化但不进行加权处理的情况下信噪比为16.8dB,段信噪比为18.7Db;而在同时进行加权和归一化处理的情况下信噪比为17.8dB,段信噪比为19.6dB,其中用于预先选择的矢量数目相同,与之相比的是,在不进行归一化处理和P0=P1=6的情况下信噪比为14.8dB,段信噪比为17.5dB。就是说,通过以同时加权和归一化处理的操作代替不进行归一化处理的操作,使信噪比和段信噪比提高了2到3个分贝。

利用方程(31)和(32)以及方程(35)的条件(矩心条件),可以使用所谓的普通Lloyd算法(GLA)同时培训代码簿(CB0,CB1和CBg)。

在本实施例中,将用一个输入x的范数相除的W’用作W’。即在方程(31)、(32)和(35)中以W’/‖x‖代替W’。

或者,按照上述方程(26)定义矢量量化器116在矢量量化时用作依感觉加权的加权值W’。但是,也可以通过确定当前的加权W’确定考虑了时序掩模的加权W’,其中考虑了过去的W’。

在方程(26)中的wh(1),wh(2)……,wh(L)在时刻n,即第n数据帧时刻所确定的值,分别表示为whn(1),whn(2),……,whn(L)。

如果将考虑了过去值的、在时刻n的加权定义为An(i),其中1≤i≤L,

      An(i)=λAn-1(i)+(1-λ)whn(i),(whn(i)≤An-1(i))

           =whn(i),(whn(i)>An-1(i))其中λ可以设置为,例如λ=0.2。于是发现,在An(i)中,1≤i≤L,可以使用以这样的An(i)作为对角阵元的一个矩阵作为上述的加权值。

按照这种方式通过加权矢量量化得到的形状索引值s0i,s1j分别从输出端520、522输出,而增益索引gl从输出端521输出。而且,经过量化的值x0’从输出端504输出,并且被送至加法器505。

加法器505将该量化值从频谱包络线矢量x中减去以产生一个量化误差矢量y。具体地说,将这个量化误差矢量y送至矢量量化单元511中,以便由矢量量化器5111至5118通过加权矢量量化进行维数分割和量化。第二矢量量化单元510使用了比第一矢量量化单元500更大的比特数。所以,明显地增大了代码簿的存储能力和代码簿搜索的处理量(复杂性)。因此,不可能对44维的矢量进行矢量量化,这个维数与第一矢量量化单元500所量化的矢量维数相同。所以,第二矢量量化单元510中的矢量量化单元511是由多个矢量量化器构成的,并且将输入的量化值按维数划分为多个低维矢量,以进行加权矢量量化。

在矢量量化器5111至5118中使用的量化值y0到y7与维数和比特数之间的相关性表示在下面的表2中。

从矢量量化器5111至5118输出的索引值Idvq0到Idvq7从输出端5231到5238输出。这些索引数据的比特数之和为72。

如果将矢量量化器5111至5118的输出量化值y0’到y7’在维度方向连接起来所得值为y’,则由加法器513将该量化值y’x0’相加得到一个量化值x1’。所以,量化值x1’表示为

                 x1’=x0’+y’

                     =x-y+y’即最终的量化误差矢量为y’-y

如果将从第二矢量量化器510输出的量化值X1’解码,语音信号解码装置不需要从第一量化单元500输出的量化值x1’。但是,需要从第一量化单元500和第二量化单元510输出的索引数据。

下面解释在量化部分511中使用的学习方法和代码簿搜索。

按照这种学习方法,利用加权W’,将量化误差矢量y划分成8个低维矢量y0到y7,如表2所示。如果这8个W’是以44点分采样值作为对角阵元的矩阵:则将加权W’分割成下面8个矩阵:分割成低维的y和W’分别标记为Yi和Wi’,其中1≤i≤8。

失真度E定义为

            E=‖Wi’(yi-s))‖2         (37)

代码簿矢量s是对yi量化的结果。搜索使失真度E最小的这种代码簿矢量。

在代码簿学习过程中,利用普通Lioyd算法(GLA)进行进一步加权。首先解释学习的最佳矩心条件。如果有M个已经选择了代码矢量s作为最佳量化结果的输入矢量y,并且培训数据为yk,则失真度J的期望值由方程(38)给出,其在对所有数据帧k加权时使失真中心最小: >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|sup>>W>k>′sup>>>(>>>y>‾>>k>>->>s>‾>>)>>|>|>>2>>>s> >>=>>1>M>>>Σ>>k>=>1>>M>>>>(>>>y>‾>>k>>->>s>‾>>)>>T>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>(>>>y>‾>>k>>->>s>‾>>)>>>s> >>=>>1>M>>>Σ>>k>=>1>>M>sup>>>y>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>y>‾>>k>>->2sup>>>y>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>s>‾>>->->->>(>38>)>>>s>

                     +sTWk′TWk′s求解 >>>>∂>J>>>∂>>s>‾>>>>=>>1>M>>>Σ>>k>=>1>>M>>>(>->2sup>>>y>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>+>2>>>s>‾>>T>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>)>>=>0>>s>我们得到 >>>Σ>>k>=>1>>M>sup>>>y>‾>>k>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>=>>Σ>>k>=>1>>M>>>>s>‾>>T>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>s>取两边的置换值,得到 >>>Σ>>k>=>1>>M>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>y>‾>>k>>=>>Σ>>k>=>1>>M>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>s>‾>>>s>所以 >>>s>‾>>=>>>(>>Σ>>k>=>1>>M>sup>>W>k>>′>T>sup>sup>>W>>->k>>′sup>>)>>>->1>>>>Σ>>k>=>1>>M>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>y>‾>>k>>->->->>(>39>)>>>s>

在上述方程(39)中,s是一个最佳典型矢量,并且表示一种最佳矩心条件。

在最佳编码条件下,足以搜索使‖Wi’(yi-s)‖2最小的s。搜索过程中的W’不需要与学习过程中的W’相同,而且可以是不经过加权的矩阵:

用两阶矢量量化单元代替语音信号编码器中的矢量量化单元116,就有可能使输出索引的比特数可变。

同时,从一个频谱包络线估算单元148得到的谐波频谱分量的数据量随音调变化,从而,如果,有效频带为3400kHz,则数据量从8到63排列。由这些数据组合在一起构成的矢量v是一个可变的多维矢量。在上述具体实例中,在进行矢量量化之前将矢量按维数转换为预设数目的数据,例如44维输入矢量x。这种可变/固定维数转换即是上述的数据数目转换,可以使用上述的过密采样和线性内插来实现。

如果误差处理是对转换成固定维数的矢量x实施的,以进行使该误差最小的代码簿搜索,则无需选择使所说误差相对于原来的可变维数矢量v最小的代码矢量。

因此,根据本实施例,在选择固定维数的代码矢量时临时选择多个代码矢量,最后从这些临时选择的多个代码矢量中选择最终的最佳可变维数矢量。同时,在不执行固定维数临时选择的情况下,只能执行可变维数选择处理。

图12表示了用于初始可变维数最佳矢量选择的示例结构。由频谱包络线估算单元148得到的可变数目的频谱包络线数据,即可变维数矢量v从一个输入端541输入。这个可变维数输入矢量v由一个可变/固定维数转换单元542,如上述的数据数目转换电路,转换成固定维数矢量(诸如由44个数据构成的44维矢量),并传送到一个端口501。该固定维数的输入矢量x和从一个固定维数代码簿530中读出的固定维数代码矢量被传送到一个固定维数选择电路535,在其中执行选择操作或代码簿搜索,该搜索从代码簿530中选择减小所说加权误差或使它们之间的失真度最小的代码矢量。

在图12所示的实施例中,利用一个固定/可变维数转换电路554将从固定维数代码簿530得到的固定两维代码矢量进行转换,其具有与初始维数相同的可变维数。经过维数转换的代码矢量被传送到一个可变维数转换电路545以计算该代码矢量和输入矢量v之间的加权失真,然后执行选择处理或者代码簿搜索以便从代码簿530中选择出使失真度减到最小的代码矢量。

就是说,固定维数选择电路535通过临时选择的方法选择若干代码矢量作为使加权失真最小的候选代码矢量,并在可变维数转换电路545中对这些候选代码矢量进行加权失真计算以最终选择出使失真降低到最小值的代码矢量。

现在简单介绍采用临时选择和最终选择的矢量量化的应用范围。这种矢量量化不仅可以应用于可变维数谐波的加权矢量量化,利用在谐波编码、LPC余值谐波编码、多频带激励编码(MBE),如在本受让人的日本待公开专利申请4-91422中所公开的,或者LPC余值的MBE编码时对谐波的频谱分量的维数转换,而且可以应用于使用固定代码簿的可变维数输入矢量的矢量量化。

为了进行临时选择,如果一个代码簿是由形状代码簿和一个增益代码簿构成,则选择一部分多阶量化器结构或者只搜索用于临时选择的形状代码簿,以及通过可变维数失真度计算确定增益是可能的。或者,可以应用上述的预先选择进行临时选择。具体地说,固定维数矢量×与存储在这个代码簿中的所有代码矢量之间的相似性可以通过近似法(加权失真的近似)确定,以选择多个具有高度相似性的矢量。在这种情况下,有可能通过上述的预先选择进行临时固定维数选择和对使可变维数的加权失真最小的这些预先选择的候选代码矢量进行最终选择。另外,在执行最终选择之前,不仅能进行预先选择,而且还可以进行高精度的失真度计算以实施精确选择。

参照附图,下面详细介绍采用临时选择和最终选择的矢量量化的实例。

在图12中,代码簿530是由一个形状代码簿531和一个增益代码簿532构成的。形状代码簿531由两个代码簿CB0和CB1构成。这些形状代码簿CB0和CB1输出的代码矢量标记为s0s1,而由增益代码簿532确定的增益电路533的增益g标记为g。从一个输入端541输入的可变维数输入矢量v由一个可变/固定维数转换电路542进行维数转换处理,并由此通过端口501作为一个固定维数矢量x传输到选择电路535的一个减法器536中,在其中确定该矢量x与从代码簿530读出的固定维数代码矢量之间的偏差,并由一个加权电路537进行加权,从而传输到一个误差最小化电路538中。该加权电路537应用加权值W’。从代码簿530读出的固定维数代码矢量由可变/固定维数转换电路544进行维数转换处理(这里称为D2),并由此传输到一个可变维数选择电路545的选择器546中,确定该代码矢量与可变维数输入矢量v之间的偏差,并由一个加权电路547进行加权处理,从而传输到一个误差最小化电路548。该加权电路537应用加权值Wv

误差最小化电路538、548的误差指的是上述的失真或者失真度。误差或失真度变小等价于相似性或相关性提高。

选择电路535执行固定维数临时选择,以搜索使失真度E1最小的s0s1,g,E1由方程(b1)表示:

          E1=‖W’(x-g(s0+s1))‖2      (b1)基本如参照方程(27)所解释的。

应当指出加权电路537中所使用的加权值W由下式给出:

          W’=WH/‖x‖                  (b2)其中H表示一个以LPC合成滤波器的频率响应特性作为对角阵元的矩阵,W表示一个以依感觉加权滤波器的频率响应特性为对角阵元的矩阵。

首先,搜索使方程(b1)中的失真度E1最小的s0s1,g。应当指出,从高量级侧开始,取L组s0,s1,g,以降低失真度E1,通过固定维数的临时选择方式。然后,对这L组s0,s1,g进行最终选择,以使下式值最小的矢量作为最佳代码矢量:

          E2=‖Wv(v-D2g(s0+s1))‖2         (b3)

下面参照方程(27)和以下的方程解释对于方程(b1)的搜索和学习。

现在解释根据方程(b3)进行代码簿学习的矩心条件。

对于代码簿CB0,作为代码簿530中的形状代码簿之一,使涉及从中选择代码矢量s0的所有数据帧k的失真度的期望值最小。如果存在M个这样的数据帧,就满足使下式最小的条件: >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|>>W>vk>>>(>>>v>‾>>k>>->>g>k>>>D>>2>k>>>>(>>>s>‾>>>0>c>>>+>>>s>‾>>>1>k>>>)>>)>>|>|>>2>>->->>(>b>4>)>>>s>

为了使方程(b4)最小,求解方程(b5): >>>>∂>J>>>∂>>>s>‾>>>0>c>>>>>=>>1>M>>>Σ>>k>=>1>>M>>{>->2>>g>k>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>>y>‾>>k>>+>2sup>>g>k>2sup>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>0>c>>>+>2sup>>g>k>2sup>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>1>k>>>}>=>0>->->>(>b>5>)>>>s>得到 >>>>s>‾>>>0>c>>>=>>>{>>Σ>>k>=>1>>M>sup>>g>k>2sup>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>}>>>->1>>>×>>Σ>>k>=>1>>M>>{>>g>k>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>(>>>v>‾>>k>>->>g>k>>>D>>2>k>>>>>s>‾>>>1>k>>>)>>}>->->>(>b>6>)>>>s>

在方程(b6)中,0-1表示一个逆矩阵,WvkT表示矩阵Wvk的一个转置矩阵。这个方程(b6)代表对于形状矢量s0的一种最佳矩心条件。

从另一个形状代码簿531的代码簿CB1中选择代码矢量s1与如上所述方式相同,所以为了简单起见省略了对其的说明。现在讨论有关从代码簿530中的增益代码簿532得到的增益g的矩心条件。从中选择代码字gc的第k个数据帧的失真期望值由方程(b7)给出: >>>J>g>>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|>>W>vk>>>(>>>v>‾>>k>>->>g>c>>>D>>2>k>>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>)>>|>|>>2>>->->>(>b>7>)>>>s>为了使方程(b7)的值最小,求解以下方程(b8): >>>>∂>>J>g>>>>∂>>g>c>>>>=>>1>M>>>Σ>>k>=>1>>M>>{>->2sup>>>v>‾>>vk>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>->2>>g>c>>>>(>>D>>2>k>>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>)>>T>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>}>=>0>->->>(>b>8>)>>>s>得到 >>>g>c>>=>>>>Σ>>k>=>1>>M>sup>>>v>‾>>vk>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>>>>Σ>>k>=>1>>M>>>>(>>D>>2>k>>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>)>>T>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>(>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>>>->->>(>b>9>)>>>s>

该方程(b9)表示增益的矩心条件。

下面,根据方程(b3)讨论最接近相邻条件。

由于方程(b3)搜索的s0s1,g的组数被固定维数的临时选择限定为L,为了选择出使失真E2最小的一组s0s1,g作为最佳代码矢量,相对于这L组s0s1,g直接计算方程(b3)。

现在介绍当用于临时选择的组数L非常大时,或者当在可变维数中直接选择s0s1,g而不执行临时选择时,被认为是有效的顺序搜索形状和增益的方法。

如果将下标添加到方程(b3)中的s0s1,g,并重新写方程(b3),我们得到:

        E2=‖Wv(v-D2g1(s0i+s1j)‖2        (b10)虽然可以以循环方式搜索使方程(b10)最小的s0i,s1j,g,如果0≤l≤32,0≤i≤32,和0≤j≤32,但是需要对于323=32768种模式计算上述方程(b10),因此导致大量的处理量。现在解释顺序搜索形状和增益的方法。

增益gl是在确定了形状代码矢量s0is1j之后确定的。设s0i+s1jsm,可以将方程(b10)表示为:

    E2=‖Wv(v-D2glsm)‖2       (b11)如果我们设vw=WvVsw=WvD2sm,则方程(b11)变为 >>>E>2>>=>>>|>|>>>v>‾>>w>>->>g>l>>>>s>‾>>w>>|>|>>2>>=>>>|>|>>>v>‾>>w>>|>|>>2>>+>>>|>|>>>s>‾>>w>>|>|>>2>>>>(>>g>l>>->>>>>>v>‾>>w>>T>>>>s>‾>>w>>>>>|>|>>>s>‾>>w>>|>|>>2>>>)>>2>>->>>(>>>>>>v>‾>>w>>T>>>>s>‾>>w>>>>>|>|>>>s>‾>>w>>|>|>>2>>>)>>2>>->->>(>b>12>)>>>s>所以,如果能够使g1足够精确,就可以搜索使 >>->>>>(>>>>v>‾>>w>>T>>>>s>‾>>w>>)>>2>>>>|>|>>>s>‾>>w>>|>|>>2>>>->->>(>b>13>)>>>s>最大的sw和最接近 >>>>>>>v>‾>>w>>T>>>>s>‾>>w>>>>>|>|>>>s>‾>>w>>|>|>>2>>>->->->>(>b>14>)>>>s>的gl

用初始变量代入,重写方程(b13)和(b14),我们得到下面的方程(b15)和(b16)。

搜索使 >>>>>(>>>v>‾>>T>sup>>W>v>Tsup>>>W>v>>>D>2>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>)>>2>>>>|>|>>W>v>>>D>2>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>2>>>->->->>(>b>15>)>>>s>最大的几组s0is1j和最接近 >>>>>>v>‾>>T>sup>>W>v>Tsup>>>W>v>>>D>2>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>>>>|>|>>W>v>>>D>2>>>(>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>2>>>->->>(>16>)>>>s>的gl

利用方程(b6)和(b9)的形状与增益矩心条件以及方程(b15)和(b16)的最佳编码条件(最接近的相邻条件),可以利用普通Lloyd算法(GLA)同时学习代码簿(CB0,CB1,CBg)。

与应用如上所述的方程(27)等方程,特别是方程(31)、(32)和(35)的方法比较,应用上述方程(b6)、(b9)、和(b16)的学习方法在将初始输入矢量v转换成可变维数矢量之后使失真最小方面更为优越。

但是,由于方程(b6)和(b9)的处理,特别是方程(b6)的处理比较复杂,可以使用从使方程(b27)最佳化,即(b1),仅仅使用方程(b15)和(b16)的最接近相邻条件得到的矩心条件。

在代码簿学习过程中使用参照方程(27)等介绍的方法和在搜索过程中仅仅使用应用方程(b15)和(b16)的方法也是可取的。利用参照方程(27)等方程说明的方法执行固定维数的临时选择和仅仅对于用于搜索的选定组(L)矢量直接计算方程(b3)也是可能的。

在任何情况下,通过在临时选择之后利用方程(b3)进行失真估算或者以循环方式进行搜索,最终可以以较小的失真实施学习或代码矢量搜索。

现在简单说明需要在与初始输入矢量v维数相同的维数下进行失真计算的理由。

如果固定维数的失真的最小值与在可变维数的失真一致,则不需要在可变维数下进行失真最小化处理。但是,由于固定/可变维数转换电路544所用的维数转换矩阵D2不是一个正交矩阵,两种最小化彼此是不相同的。因此,如果失真在固定维数被最小化,则对可变维数不需要这种最小化处理,从而,如果所得的可变维数矢量是最佳的,就需要使可变维数的失真最佳。

图13表示了一个实例,其中增益为将代码簿分成一个形状代码簿和一个增益代码簿时的可变维数增益,失真在可变维数时达到最佳。

具体地说,将从该形状代码簿531读出的固定维数的代码矢量送至固定/可变维数转换电路544以转换成可变维数的矢量,然后将其送至增益控制电路533。如果选择电路545选择增益电路533中的最佳增益,足以在从增益控制电路533和输入矢量v的基础上对代码矢量进行固定/可变维数转换。或者,可以根据增益电路533的输入矢量与输入矢量v的内积选择最佳增益。其它操作和结构与图12所示相同。

现在说明形状代码簿531,选择电路535在可变维数的选择过程中可以选择唯一的代码矢量,而可变维数的选择可以只针对增益进行。

通过将由固定/可变维数转换电路544转换的代码矢量与增益相乘,可以有效地选择最佳增益,其效果与利用将代码矢量与增益相乘的固定/可变转换方法的固定/可变维数转换相同,如图12所示。

现在说明结合固定维数的临时选择和可变维数的最终选择的矢量量化的另一个具体实例。

在下述实例中,将从第一代码簿读出的固定维数的第一代码矢量转换成一个可变维数的输入矢量,并将从第二代码簿读出的固定维数的第二代码矢量与按照如上所述的固定/可变维数转换处理的可变维数的第一代码矢量相加。从相加所得的和代码矢量,可以至少从第二代码簿中选择出使输入矢量的误差最小的最佳代码矢量。

在图14所示的实例中,将从第一代码簿CB0读出的固定维数的第一代码矢量s0传送到固定/可变维数转换电路544,从而转换成与输入到端口541的矢量相同的可变维数。将从第二代码簿CB1读出的固定维数的第二代码矢量传送到一个加法器549中,以便与从固定/可变维数转换电路545得到的可变维数的代码矢量相加。将加法器549相加所得代码矢量传送到选择电路545,在这里选择从加法器549输入的和矢量或使输入矢量v的误差最小的最佳代码矢量。将第二代码簿CB1的代码矢量应用于从输入矢量的谐波低侧到代码簿CB1的维数的范围。增益电路533的增益g仅仅提供在第一代码簿CB0与固定/可变维数转换电路544之间。由于其它结构与图12所示相同,使用相同的标号表示相似的部分,为简单起见,省略了相应的说明。

因此,通过将从代码簿CB1得到的固定维数代码矢量与从代码簿CB0读出并转换成可变维数的代码矢量相加在一起,以减少由从代码簿CB1读出的固定维数代码矢量的固定/可变维数转换产生的失真。

由图14所示的选择电路545计算出的失真E3由下式给出:

      E3=‖Wv(v-(D2gs0+s1))‖2                 (b17)

在图15所示的实例中,增益电路533设置在加法器549的输出端。因此,从第一代码簿CB0读出并由固定/可变维数转换电路544转换的代码矢量与从第二代码簿CB1读出的代码矢量相加的结果与增益g相乘。因为增益与从代码簿CB0读出的代码矢量相乘,与增益与相应部分(量化误差的量化)的代码簿CB1中的代码矢量相乘非常相似,所以使用共用增益。由图15所示的选择电路545计算的失真E4由下式给出:

          E4=‖Wv(v-g(D2gs0+s1))‖2       (b18)

这个实例的其它部分与图14所示的相应部分相同,所以为了简单起见,省略了这些说明。

在图16所示的实例中,不仅在图14所示实例中的第一代码簿CB0的输出端提供了具有一个增益g的一个增益电路535A,而且在第二代码簿CB1的输出端提供了具有一个增益g的一个增益电路533B。由图16所示选择电路545计算的失真等于在方程(b18)中所示的失真E4。图16所示实例的结构在其它方面与图14所示相同,所以为了简单扼要,省略了相应的说明。

图17表示了一个实例,在这个实例中图14所示第一代码簿由两个代码簿CB0、CB1构成。从这些形状代码簿读出的代码矢量s0s1相加,所得的和值在传送到固定/可变维数转换电路544之前由增益电路533将其与增益g相乘。从固定/可变维数转换电路544得到的可变维数代码矢量和从第二代码簿CB2读出的代码矢量s2在被传送到选择电路545之前相加在一起。由图17所示选择电路545计算的失真E5由下式给出:

       E5=‖Wv(v-(gD2(s0+s1)+ s2))‖2      (b19)图16所示实例的结构在其它方面与图14所示相同,所以为了简单扼要,省略了相应的说明。

现在说明方程(b18)中应用的搜索方法。

作为一个例子,第一搜索方法包括搜索使

        E4’=‖W’(x-gls0i))‖2        (b20)最小的s0i,gl,然后搜索使

        E4=‖Wv(v-gl(D2s0i+s0i))‖2    (b21)最小的s0i

作为另一个例子,搜索使 >>>>>(>>>>s>‾>>>0>i>>>T>>>W>>′>T>>>>W>′>>>x>‾>>)>>2>>>>|>|>>W>′>>>>s>‾>>>0>i>>>|>|>>2>>>->->->>(>b>22>)>>>s>最大的s0i,并搜索使 >>>>>(>>>v>‾>>T>sup>>W>v>Tsup>>>W>v>>>(>>D>2>>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>)>>2>>>>|>|>>W>v>>>(>>D>2>>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>2>>>->->->>(>b>23>)>>>s>最大的s1j,和最接近 >>>>>>v>‾>>T>sup>>W>v>Tsup>>>W>v>>>(>>D>2>>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>>>>|>|sup>>W>v>Tsup>>>(>>D>2>>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>2>>>->->->>(>b>24>)>>>s>的增益gl

作为第三种搜索方法,搜索使

      E4’=‖W(x-g1s0i)‖2             (b25)最小的s0i和gl,然后搜索使 >>>>>(>>>v>‾>>T>sup>>W>v>Tsup>>>W>v>>>(>>D>2>>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>)>>2>>>>|>|>>W>v>>>(>>D>2>>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>2>>>->->->>(>b>26>)>>>s>最大的s1j,最后选择最接近 >>>>>>v>‾>>T>sup>>W>v>Tsup>>>W>v>>>(>>D>2>>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>>>>|>|sup>>W>v>Tsup>>>(>>D>2>>>>s>‾>>>0>i>>>+>>>s>‾>>>1>j>>>)>>|>|>>2>>>->->->>(>b>27>)>>>s>的增益gl

下面说明第一种搜索方法的方程(b20)的矩心条件。利用代码矢量s0i的矩心s0c,使 >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|sup>>W>k>′sup>>>(>>>x>‾>>k>>->>g>k>>>>s>‾>>>0>c>>>)>>|>|>>2>>->->->>(>b>28>)>>>s>最小。对于这种最小化处理,求解 >>>>∂>J>>>∂>>>S>‾>>>0>C>>>>>=>>1>M>>>Σ>>k>=>1>>N>>>(>->2>>g>k>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>+>2sup>>g>k>2sup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>0>c>>>)>>=>0>->->->>(>b>29>)>>>s>得到 >>>>s>‾>>>0>C>>>=>>>{>>Σ>>k>=>1>>M>sup>>g>k>2sup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>}>>>->1>>>>Σ>>k>=>1>>M>>>g>k>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>->->->>(>b>30>)>>>s>类似地,对于增益g的矩心gc,求解从上述方程所得的 >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|sup>>W>k>′sup>>>(>>>x>‾>>k>>->>g>k>>>>s>‾>>>0>k>>>)>>|>|>>2>>->->->>(>b>31>)>>>s>和 >>>>∂>J>>>∂>>g>c>>>>=>>1>M>>>Σ>>k>=>1>>M>>>(>->2>>>s>‾>>>0>k>>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>+>2>>g>c>sup>>>s>‾>>>0>k>>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>0>k>>>)>>=>0>->->->>(>b>32>)>>>s>得到 >>>g>c>>=>>>>Σ>>k>=>1>>M>sup>>>s>‾>>>0>k>>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>>>>Σ>>k>=>1>>M>sup>>>s>‾>>>0>k>>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>s>‾>>>0>k>>>>>->->->>(>b>33>)>>>s>

另一方面,作为第一种搜索方法的方程(b21)的矩心条件,对于矢量s1j的矩心s1c,求解 >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|>>W>vk>>>(>>>v>‾>>k>>->>g>k>>>(>>D>2>>>>s>‾>>>0>k>>>+>>>s>‾>>>1>c>>>)>>)>>|>|>>2>>->->->>(>b>34>)>>>s>和 >>>>∂>J>>>∂>>>S>‾>>>1>C>>>>>=>>1>M>>>Σ>>k>=>1>>M>>{>->2>>g>k>sup>>W>k>Tsup>>>W>vk>>>>v>‾>>k>>+>2sup>>g>k>2sup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>0>k>>>+>2sup>>g>k>2sup>sup>>W>vk>Tsup>>>W>vk>>>>s>‾>>>1>c>>>}>=>0>->->->>(>b>35>)>>>s>得到 >>>>s>‾>>>1>C>>>=>>>{>>Σ>>k>=>1>>M>sup>>g>k>2sup>sup>>W>vk>Tsup>>>W>vk>>}>>>->1>>>>Σ>>k>=>1>>M>>>g>k>sup>>W>vk>Tsup>>>W>vk>>>(>>>v>‾>>k>>->>g>k>>>D>>2>k>>>>>s>‾>>>0>k>>>)>>->->->>(>b>36>)>>>s>

根据方程(b21),计算矢量s0i的矩心s0c,得到 >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|>>W>vk>>>(>>>v>‾>>k>>->>g>k>>>(>>D>>2>k>>>>>s>‾>>>0>c>>>+>>>s>‾>>>1>k>>>)>>)>>|>|>>2>>->->->>(>b>37>)>>>s> >>>>∂>J>>>∂>>>s>‾>>>0>c>>>>>=>>1>M>>>Σ>>k>=>1>>M>>{>->2>>g>k>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>>v>‾>>k>>+>2sup>>g>k>2sup>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>0>c>>>+>2sup>>g>k>2sup>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>>s>‾>>>1>k>>>}>=>0>->->>(>b>38>)>>>s>和 >>>>s>‾>>>0>c>>>=>>>{>>Σ>>k>=>1>>M>sup>>g>k>2sup>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>}>>>->1>>>>Σ>>k>=>1>>M>>>g>k>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>(>>>v>‾>>k>>->>g>k>>>>s>‾>>>1>k>>>)>>->->->>(>b>39>)>>>s>

类似地,可以由下式求得增益g的矩心gc >>>g>c>>=>>>>Σ>>k>=>1>>M>sup>>v>k>Tsup>sup>>W>vk>Tsup>>>W>vk>>>(>>D>>2>k>>>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>>>>Σ>>k>=>1>>M>>>>(>>D>>2>k>>>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>T>sup>>W>vk>Tsup>>>W>vk>>>(>>D>>2>k>>>>>s>‾>>>0>k>>>+>>>s>‾>>>1>k>>>)>>>>->->->>(>b>40>)>>>s>

方程(b33)表示了利用上述方程(b20)计算代码矢量s0i的矩心的方法和计算增益g的矩心gc的方法。作为由方程(b21)计算矩心的方法,方程(b36)、(b39)和(b40)分别表示了矢量s1j的矩心s1c、矢量s1j的矩心s1c和增益g的矩心gc

在利用实际的GLA算法学习过程中,可以引用利用方程(b30)、(b36)和(b40)同时学习s0s1,g的一种方法。应当指出上述方程(b22),(b23)和(b24)可以用于搜索方法(最接近相邻条件)。此外,各种矩心条件的组合,如方程(b30),(b33),(b36),(b39)所示的,也可以任选(b36)或(b40)。

现在说明对应于图14所示的方程(b17)的失真值的搜索方法。在这种情况下,足以搜索使

             E3’=‖W’(x-gls0i))‖2            (b41)最小的s0i,gl,并继续搜索使

             E3=‖Wv(x-g1(D2s0i+s1j))‖2        (b42)最小的s1j

在上述方程(b41)中,求出所有的gls0i是不现实的,所以搜索使 >>>>>(>>>x>‾>>T>>>W>>′>T>>>>W>′>>>>s>‾>>>0>i>>>)>>2>>>>|>|>>W>′>>>>s>‾>>>0>i>>>|>|>>2>>>->->->>(>b>43>)>>>s>最大的矢量s0i的上限L数值,和与上述方程(b43)相关的最接近 >>>>>>x>‾>>T>>>W>>′>T>>>>W>′>>>>s>‾>>>0>i>>>>>>|>|>>W>′>>>>s>‾>>>0>i>>>|>|>>2>>>->->->>(>b>44>)>>>s>的增益的L数值,和使

           E3=‖Wv(v-(D2gs0i+s1j))‖2         (b45)最小的s1j

接着,从方程(b41)和(b42)得出矩心条件。在这种情况下,过程根据使用哪一个方程而变化。

首先,如果使用方程(b41),并且代码矢量s0i的矩心是s0i,则使 >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|sup>>W>k>′sup>>>(>>>x>‾>>k>>->>g>k>>>>s>‾>>>0>c>>>)>>|>|>>2>>->->->>(>b>46>)>>>s>最小,得到 >>>>s>‾>>>0>c>>>=>>>{>>Σ>>k>=>1>>M>sup>>g>k>2sup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>}>>>->1>>>>Σ>>k>=>1>>M>>{>>g>k>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>}>->->->>(>b>47>)>>>s>

类似地,对于矩心gc,由上述方程(b41)得到以下方程: >>>g>c>>=>>>>Σ>>k>=>1>>M>sup>>>s>‾>>>0>k>>Tsup>sup>>W>k>>′>T>sup>sup>>W>k>′sup>>>>x>‾>>k>>>>>Σ>>k>=>1>>M>sup>>>s>‾>>>0>k>>Tsup>sup>>W>k>>′>T>sup>>>W>k>>>>s>‾>>>0>k>>>>>->->->>(>b>48>)>>>s>如同在方程(b43)的情况一样。

如果矢量s1j的矩心s1c是利用方程(b42)计算出的,则求解 >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>|>|>>W>vk>>>(>>>v>‾>>k>>->>D>>2>k>>>>g>k>>>>s>‾>>>0>k>>>->>>s>‾>>>1>c>>>)>>|>|>>2>>->->->>(>b>49>)>>>s>和 >>>>∂>J>>>∂>>>S>‾>>>1>C>>>>>=>>1>M>>>Σ>>k>=>1>>M>>{>2sup>>W>vk>Tsup>>>W>vk>>>>s>‾>>>1>c>>>->2sup>>W>vk>Tsup>>>W>vk>>>>v>‾>>k>>+>2>>g>k>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>0>k>>>}>=>0>->->->>(>b>50>)>>>s>得到 >>>>s>‾>>>1>C>>>=>>>{>>Σ>>k>=>1>>M>sup>>W>vk>Tsup>>>W>vk>>}>>>->1>>>>Σ>>k>=>1>>M>sup>>W>vk>Tsup>>>W>vk>>>(>>>v>‾>>k>>->>g>K>>>D>>2>k>>>>>s>‾>>>0>k>>>)>>->->->>(>b>51>)>>>s>

类似地,可以利用方程(b42)计算代码矢量s0i的矩心s0c和增益g的矩心gc >>>>s>‾>>>0>C>>>=>>>{>>Σ>>k>=>1>>M>sup>>g>k>2sup>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>}>>>->1>>>>Σ>>k>=>1>>M>>>g>k>sup>>D>>2>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>(>>>v>‾>>k>>->>g>k>>>>s>‾>>>1>k>>>)>>->->->>(>b>52>)>>>s> >>J>=>>1>M>>>Σ>>k>=>1>>M>>>>{sup>>>v>‾>>k>Tsup>sup>>W>vk>Tsup>>>W>vk>>>>v>‾>>k>>+sup>>g>c>2sup>>>(>>D>>2>k>>>>>s>‾>>>0>k>>>)>>>T>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>0>k>>>>s> >>+sup>>>s>‾>>>1>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>>s>‾>>>1>k>>>->2>>g>c>>>>(>>D>>2>k>>>>>s>‾>>>0>k>>>)>>T>sup>>W>vk>Tsup>>>W>vk>>>>v>‾>>>1>k>>>>s> >>->2sup>>>s>‾>>>1>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>>v>‾>>k>>+>2sup>>>s>‾>>>1>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>0>k>>>>g>c>>}>->->->>(>b>53>)>>>s> >>>>∂>J>>>∂>>g>c>>>>=>>1>M>>>Σ>>k>=>1>>M>>{>2>>g>c>>>>(>>D>>2>k>>>>>s>‾>>>0>k>>>)>>T>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>0>k>>>->2>>>(>>D>>2>k>>>>>s>‾>>>0>k>>>)>>T>sup>>W>vk>Tsup>>>W>vk>>>>v>‾>>k>>+>2sup>>>s>‾>>>1>k>>Tsup>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>0>k>>>}>=>0>->->>(>b>54>)>>>s> >>>g>c>>=>>>>Σ>>k>=>1>>M>>{>>>(>>D>>2>k>>>>>s>‾>>>0>k>>>)>>T>sup>>W>vk>Tsup>>>W>vk>>>(>>>v>‾>>k>>->>>s>‾>>>1>k>>>)>>}>>>>Σ>>k>=>1>>M>>{>>>(>>D>>2>k>>>>>s>‾>>>0>k>>>)>>T>sup>>W>vk>Tsup>>>W>vk>>>D>>2>k>>>>>s>‾>>>0>k>>>}>>>->->->>(>b>55>)>>>s>

与此同时,可以使用上述方程(b47),(b48)或(b51)或者使用上述方程(b51),(b52)或(b55)采用GLA算法进行代码簿学习。

应用本发明的CELP编码结构的第二编码单元120具有一个多级矢量量化处理部分(在图18中为一个两级编码部分1201和1202)。图18所示结构设计用于在传输比特速率可以在例如2kbps与6kbps之间转换的情况下适应6kbps的传输比特速率,和在23比特/5毫秒与15比特/5毫秒之间转换形状和增益索引输出。图18所示结构的程序流程图表示在图19中。

参见图18,图18所示第一编码单元300与图3所示第一编码单元113等价,图18中所示的一个LPC分析电路302对应于图3中所示的LPC分析电路132,而LSP参数量化电路303相应于图3所示的α-LSP转换电路133至LSP-α转换电路137的部分,图18中所示依感觉加权滤波器304相应于图3中的依感觉加权滤波器计算电路139和依感觉加权滤波器125。所以,在图18中,与图3中所示的第一编码单元113的LSP-α转换电路137输出相同的输出量传输到一个端口305,而与图3中所示依感觉加权滤波器计算电路139的输出相同的一个输出量传输到一个端口307,与图3中所示依感觉加权滤波器125的输出相同的一个输出传输到一个端口306。但是,与依感觉加权滤波器125不同的是,图18中所示的依感觉加权滤波器304利用输入语音数据和预量化α参数,而不是利用LSP-α转换电路137的输出产生依感觉加权信号,这个信号与图3所示的依感觉加权滤波器125的输出信号相同。

在图18所示的两级第二编码单元1201和1202中,减法器313和323对应于图3中的减法器123,而距离计算电路314、324对应于图3中的距离计算电路124。此外,增益电路311、321对应于图3中的增益电路126,而随机代码簿310、320和增益代码簿315、325对应于图3所示的噪声代码簿121。

在图18所示结构中,LPC分析电路302在图19所示步骤S1将从端口301输入的输入语音信号x划分成如上所述进行LPC分析的多帧数据以确定α-参数。LSP参数量化电路303将从LPC分析电路302输出的α-参数转换成LSP参数以量化这些LSP参数。量化的LSP参数经过内插处理,并转换成α-参数。LSP参数量化电路303根据从量化的LSP参数转换的α-参数产生一个LPC合成滤波器函数1/H(z),就是经量化的LSP参数并通过端口305将所产生的LPC合成滤波器函数1/H(z)传输到第一级第二编码单元1201中的一个依感觉加权滤波器312。

依感觉加权滤波器304根据从LPC分析电路302输出的α-参数,即预量化α-参数确定用于依感觉加权的数据,这些数据与由图3所示的依感觉加权滤波器计算电路139所产生的数据相同。这些加权数据通过端口307传输到第一级第二编码单元1201中的依感觉加权合成滤波器312。如图19中步骤S2所示,该依感觉加权滤波器304根据输入语音数据和预量化α-参数产生依感觉加权信号,其与图3所示依感觉加权滤波器125输出信号相同。即,首先根据预量化α-参数生成LPC合成滤波器函数W(z)。然后将所产生的滤波器函数W(z)应用于输入语音数据x,以产生xw,其作为依感觉加权信号通过端口306输至第一级第二编码单元1201中的减法器313。

在第一级第二编码单元1201中,将9比特形状索引输出的随机代码簿310的典型值输出传送到增益电路311,然后该电路将从所说随机代码簿310输出的典型输出值与从6比特增益索引输出的增益代码簿315产生的增益(标量)相乘。将与由增益电路311产生的增益相乘的典型值输出传送到所说的依感觉加权合成滤波器312,其中1/A(z)=(1/H(Z)*W(Z)。加权合成滤波器312将1/A(z)零输入响应输出传送到减法器313,如图19中步骤S3所示。减法器313将依感觉加权合成滤波器312的零输入响应输出与由依感觉加权滤波器304产生的依感觉加权信号xw相减,所得的差值或误差取出作为基准矢量r。在第一级第二编码单元1201的搜索过程中,这个基准矢量r被传送到距离计算电路314中,在其中计算距离,并且搜索使量化误差能量E最小的形状矢量s和增益g,如图19中步骤S4所示。这里,1/A(z)处于零状态。就是说,如果代码簿中利用处于零状态的1/A(z)合成的形状矢量sssyn,则搜索使方程(40)值最小的形状矢量s和增益g: >>E>=>>Σ>>n>=>0>>>N>->1>>>>>(>r>>(>n>)>>·>>gs>syn>>>(>n>)>>)>>2>>->->->>(>40>)>>>s>

尽管可以完全搜索使量化误差能量E最小的s和g,但是利用下述方法可以减少计算量。

第一种方法是搜索使由下式(41)定义的Es最小的形状矢量s >>>E>s>>=>>>>Σ>>n>=>0>>>N>->1>>>r>>(>n>)>>>s>syn>>>(>n>)>>>>>Σ>>n>=>0>>>N>->1>>>>s>syn>>>>(>n>)>>2>>>>->->->>(>41>)>>>s>根据按照第一种方法得到的s,理想的增益如方程(42)所表示: >>>g>ref>>=>>>>Σ>>n>=>0>>>N>->1>>>r>>(>n>)>>>s>syn>>>(>n>)>>>>>Σ>>n>=>0>>>N>->1>>>>s>syn>>>>(>n>)>>2>>>>->->->>(>42>)>>>s>所以,作为第二种方法,搜索使方程(43)

         Eg=(gref-g)2           (43)最小的这个g。

由于E是g的二次函数,所以使Eg最小的g也使E最小。

利用由第一种和第二种方法获得的s和g,可以根据下列方程(44)计算量化误差矢量e

                e=r-gssyn           (44)如在第一级中一样,该矢量是作为第二级第二编码单元1202的一个基准值量化的。

就是说,传输到端口305和307的信号直接从第一级第二编码单元1201中的依感觉加权合成滤波器312传输到第二级第二编码单元1202中的依感觉加权合成滤波器322。由第一级第二编码单元1201确定的量化误差矢量e传输到第二级第二编码单元1202的一个减法器323中。

在图19所示的步骤S5,在第二级第二编码单元1202中执行与在第一级中所执行的一样的程序。就是说,将从5比特形状索引输出的随机代码簿320输出的典型值传送到增益电路321,在增益电路321中将代码簿320输出的典型值与从3比特增益索引输出的增益代码簿325输出的增益相乘。加权合成滤波器322的输出被传送到减法器323中,在减法器中求出依感觉加权合成滤波器322的输出与第一级量化误差矢量e之间的差值。将这个差值传送到一个用于计算距离的距离计算电路324中以搜索使该量化误差能量E最小的形状矢量s和增益g。

第一级第二编码单元1201的随机代码簿310的形状索引输出和增益代码簿315的增益索引输出以及第二级第二编码单元1202的随机代码簿320的索引输出和增益代码簿325的索引输出被传送到一个索引输出转换电路330。如果从第二编码单元120输出为23比特,则将第一级和第二级第二编码单元1201、1202的随机代码簿310、320的索引数据和增益代码簿315、325的索引数据相加并输出。如果输出为15比特,则输出第一级第二编码单元1201的随机代码簿310和增益代码簿315的索引数据。

然后如步骤S6所示,更新滤波器状态以计算零输入响应输出。

在本实施例中,第二级第二编码单元1202的索引比特数对于形状矢量小到5,而增益的比特数小到3。如果在这种情况下在代码簿中不存在适合的形状和增益,则可能增大量化误差,而不是减小。

尽管可以使增益为零,以防止这个问题发生,但是对于增益只有3比特。如果将其中之一设为零,则会使量化器品质明显下降。基于这种考虑,形状矢量设置为全零矢量,这些矢量都分配了大比特数。进行上述的搜索,除了全零矢量,如果最终增大了量化误差,则选择全零矢量。增益是任意的。这使得有可能防止第二级第二编码单元1202中量化误差的增大。

虽然上面已经参照图18介绍了这种两级装置,但是级数可以大于2。在这种情况下,如果由第一级闭环搜索所进行的矢量量化结束,则利用第N-1级的量化误差作为基准输入进行第N级的量化,其中2≤N,而用第N级的量化误差作为第N+1级的基准输入。

从图18和图19可以看出,利用第二编码单元的多级矢量量化器,与利用具有相同比特数的直线型矢量量化器或者利用共轭代码簿相比减少了计算量。特别是,在CELP编码方法中,其中应用分析合成方法的闭环搜索进行时间轴波形的矢量量化,搜索操作的次数较少是十分关键的。此外,通过在同时使用两级第二编码单元1201、1202的索引输出与仅仅使用第一级第二编码单元1201的索引输出而不使用第二级第二编码单元1202的索引输出之间转换可以很容易地转换比特数。如果将第一级和第二级第二编码单元1201、1202的索引输出相结合并输出,通过选择其中一个索引输出可以很容易地使解码器适应这种结构。就是说,通过使用在2kbps速率工作的一个解码器对以6kbps编码的参数解码可以很容易地使该解码器与该结构相适应。此外,如果在第二级第二编码单元1202的形状代码簿中包含零矢量,就有可能防止量化误差增大,并且与使增益为零相比,品质的下降较少。

随机代码簿的代码矢量(形状矢量)可以利用,例如,下述方法产生。

例如,可以通过限制所谓的高斯噪声来产生随机代码簿的代码矢量。具体地说,可以通过产生高斯噪声,用一个适合的阈值限制该高斯噪声和将经限幅高斯噪声归一化来产生代码簿。

但是,语音有许多种类型。例如,高斯噪声可以适合与噪声接近的辅音,如“sa,shi,su,se和so”,而高斯噪声无法适合急剧升调的辅音,如“pa,pi,pu,pe和po”。

根据本发明,将高斯噪声应用于某些代码矢量,而其余代码矢量则通过学习的方式来处理,从而能够适合升调辅音和与噪声接近的辅音。如果,例如,增大阈值,则得到具有若干较高峰值的矢量,相反,如果阈值下降,则代码矢量接近高斯噪声。因此,通过增加限幅阈值的变化,有可能适合具有急剧升调部分的辅音,如“pa,pi,pu,pe和po”或者接近噪声的辅音,如“sa,shi,su,se和so”,从而增强清晰度。图20表示分别用实线和虚线表示的高斯噪声和限幅噪声。图20A和20B表示应用等于1.0的限幅阈值,即较大阈值的噪声,和应用等于0.4的限幅阈值,即较小阈值的噪声。从图20A和20B可以看出,如果将阈值选择得较大,则得到具有若干较大峰值的矢量,而相反,如果将阈值选择得较小,则噪声趋于高斯噪声本身。

为了认识这一点,通过对高斯噪声限幅准备一个初始代码簿,并设置适当数目的非学习代码矢量。按照增加变化值以与接近噪声的辅音,如“sa,si,su,se和so”相适合的顺序选择非学习代码矢量。通过采用LBG算法学习来确定矢量。在最接近相邻条件下进行的编码使用固定代码矢量和通过学习得到的代码矢量。在矩心条件下,只更新学习的代码矢量。于是,学习的代码矢量可以与急剧升调的辅音,如“pa,pi,pu,pe和po”相适合。

通过一般的学习过程可以使这些代码矢量学习到最佳增益。

图21表示通过对高斯噪声限幅以构成代码簿的流程图。

在图21中,在初始化步骤S10中,学习的次数n设定为n=0。利用误差D0=∞,设定最大学习次数nmax和设定学习端点条件的一个阈值∈。

在接下来的步骤S11中,通过限幅高斯噪声产生初始代码簿。在步骤S12,将一部分代码矢量固定为非学习代码矢量。

在接下来的步骤S13中,对上述代码簿进行编码。在步骤S14,计算误差。在步骤S15,判断是否(Dn-1Dn)/Dn<∈,或者n=nmax。如果结果为“是”,则终止程序。如果结果为“否”,则程序转移到步骤S16。

在步骤S16,处理不用于编码的代码矢量。在接下来的步骤S17,更新代码簿。在步骤S18,于返回步骤S13之前增加学习的次数n。

现在根据图3所示的语音编码器,介绍一个浊音/清音(V/UV)鉴别单元115的具体实例。

该V/UV鉴别单元115根据正交变换电路145的输出、高精确度音调搜索单元146的最佳音调、频谱估算单元148的频谱幅值数据、开环音调搜索单元141的最大归一化自相关值r(p)以及零交叉计数器412的零交叉计数值对所处理的数据帧进行V/UV鉴别。V/UV判断的基于频带的结果的边界位置,与用于MBE的结果类似,也是用作所处理的数据帧的条件之一。

现在介绍MBE方法中V/UV鉴别的条件,其中应用了基于频带的V/UV鉴别结果。

在采用MBE的情况下,表示第m个谐波的量值的参数或幅值|Am|可以表示为:在这个方程中,|S(j)|是对LPC余值进行DFT处理得到的频谱,而|E(j)|为基本信号的频谱,具体地说就是一个256点汉明窗口,而am,bm为对应于第m个频带,亦即对应于第m个谐波的上限值和下限值,用一个指标j表示。对于基于频带的V/UV鉴别,使用了信噪比(NSR)。第m个频带的NSR表示为 >>NSR>=>>>>Σ>>j>=>>a>m>>>>b>m>>>>>(>|>s>>(>j>)>>->|>>A>m>>|>|>E>>(>j>)>>|>)>>2>>>>>Σ>>j>=>>a>m>>>>b>m>>>>>|>s>>(>j>)>>|>>2>>>>>s>如果NSR大于预设的阈值,例如0.3,即如果误差较大,可以判定在所处理的频带中|Am‖E(j)|对|s(j)|的近似不佳,就是说激励信号|E(j)|不适合作为基频信号。因此所处理的频带被判断为清音(UV)。如果相反,可以判断近似程度相当好,所以判断为浊音(V)。

应当指出,各个频带的NSR表示谐波彼此之间的相似性。NSR的增益加权谐波之和通过:

         NSRall=(∑m|Am|NSRm)/(Σm|Am|)

定义为NSRall

用于V/UV鉴别的标准基频是根据这个频谱相似性NSRall是否大于或者小于某一阈值确定的。在这里这个阈值设定为ThNSR=0.3。这个标准基频与LPC余值的最大自相关值、帧功率和零交叉有关。在标准基频用于NSRall<ThNSR的情况下,如果应用该标准和如果没有可应用的标准两种情形下,所处理的数据帧分别变为V和UV。

具体的标准如下:对于NSall<ThNSR

如果numZero XP<24,frmPow>340以及r0>0.32,则所处理的数据帧为V;对于NSRall≥ThNSR

如果numZero XP>30,frmPow<900以及r0>0.23,则所处理的数据帧为UV;

其中各个变量定义如下:

numZero XP:每帧的零交叉数目

frmPow:帧功率

r0:最大自相关值

在进行V/UV鉴别时考虑了表示一组特定规则如上面所述规则的标准。

现在更加详细地介绍图4所示的语音信号解码器的基本部分和操作的结构。

在频谱包络线的反向矢量量化器212中,使用了与语音编码器相应的反向矢量量化器结构。

例如,如果图12所示结构应用了矢量量化,解码器端从形状代码簿CB0和CB1及增益代码簿DBg读出代码矢量s0s1,和增益g,并且取出作为g(s0+s1)的固定维数,如44维矢量,从而转换成相应于初始谐波频谱的矢量维数的可变维数矢量(固定/可变维数转换)。

如果编码器具有可将固定维数代码矢量与可变维数代码矢量相加的矢量量化器结构,如图14到17所示,则相应于谐波低范围的维数,将从可变维数代码簿(图14中的代码簿CB0)读出的代码矢量进行固定/可变维数转换,并与从固定维数代码簿(图14中的代码簿CB1)读出的一些固定维数代码矢量相加。将所得和值取出。

如上文中所解释的,LPC合成滤波器214区分为用于浊音(V)的合成滤波器236和用于清音(UV)的合成滤波器237。如果将LPS参数每隔20个采样值,即每隔2.5毫秒连续地插入,不区分没有进行V/UV鉴别的合成滤波器,则所有不同特性的LSP参数都内插在V到UV或UV到V的过渡区域。结果是UV和V的LPC都被分别用作V和UV的余值,从而导致产生异样的声音。为了防止这种效果出现,LPC合成滤波器被分成用于V和用于UV的,并且LPC系数内插对于V和UV独立进行。

现在介绍在这种情况下LPC滤波器236、237的系数内插方法。具体地说,LSP内插根据V/UV状态转换,如图22所示。

以10级LPC分析为例,图22所示的等间距LSP就是相应于平顶滤波器特性的α参数,增益等于一,即α0=1,α1=α2=…=α10=0,其中0≤α≤10。

这种10级LPC分析,即10级LSP,为对应于一个完整的平直频谱的LSP,其中LSP以相等的间隔在0到π之间的11个等间距位置排列,如图23所示。在这种情况下,合成滤波器的整个频带增益在此时具有最小的通频特性。

图24示意性表示了增益改变的方式。具体地说,图15表示在从清音(UV)部分到浊音部分(V)的转换过程中1/Huv(z)的增益和1/Hv(z)之间的增益如何变化。

关于内插的单位,对于1/Hv(z)的系数为2.5毫秒(20个采样值),而对于1/Huv(z)的系数,对于2kbps和5kbps的比特速率分别为10毫秒(80个采样值)和5毫秒(40个采样值)。对于UV,由于第二编码单元120应用一种分析合成方法进行波形匹配,可以无需利用等间隔LSP进行内插,而利用邻近V部分的LSP进行内插。应当指出,在由第二编码单元120对UV部分进行编码时,通过在从V到UV过渡部分清除1/A(z)加权合成滤波器122的内部状态将零输入响应设置为零。

这些LPC合成滤波器236、237的输出被传送到各自独立的后置滤波器238u,238v。将后置滤波器的强度和频率响应设置成对于V和UV不同的值,以将后置滤波器的强度和频率响应设置为对于V和UV不同的值。

现在介绍LPC余值信号中V和UV区域之间的接合部的开窗,即作为LPC合成滤波器输入的激励。这种开窗是由图4所示浊音合成单元211的正弦合成电路215和清音合成单元220的开窗电路223进行的。在由本受让人提出的日本专利申请No.4-91422中详细解释了激励中V部分的合成方法,而在同样由本受让人提出的日本专利申请No.6-198451中详细介绍了激励中V部分的快速合成方法。在本实施例中,这种快速合成方法用于产生V部分激励。

在浊音部分(V),其中利用相邻帧的频谱通过内插进行正弦合成,可以产生所有在第n与第n+1帧之间的波形,如图25所示。但是,对于横跨V和UV两部分的信号部分,例如图25所示的第n+1帧和第n+2帧,或者横跨在UV部分与V部分的部分,UV部分仅仅编码和解码±80个数据(总数为160个采样值等于一个帧间距)。其结果是在一个中心点CN之后在V侧的相邻帧之间进行开窗处理,而对于接合部的重叠,就在UV侧的中心点CN进行开窗,如图26所示。相反的程序用于UV到V的过渡部分。对于V侧的开窗也可以如图26中折线所示。

现在介绍在浊音部分(V)的噪声合成和噪声添加。这些操作由图4所示的噪声合成电路216、加权叠加电路217和加法器218通过将噪声加入到LPC余值信号的浊音部分来执行,所说噪声中考虑了与浊音部分的激励如LPC合成滤波器输入相结合的下列参数。

即,上述参数可以列举音调迟滞Pch、浊音的频谱幅值Am[i]、一个数据帧中的最大频谱幅值Amax和余值信号量值Lev。音调迟滞Pch为在一个音调周期中相对于一个预定的采样频率fs,例如fs=8kHz的采样数量,而频谱幅值Am[i]中的i是一个整数,从而对于fs/2等于I=Pch/2的频带中的谐波数0<i<1。

噪声合成电路216以与采用例如多频带编码(MBE)合成清音几乎完全相同的方式执行该程序。图27表示了这种噪声合成电路216的具体实例。

即,参照图27,一个白噪声发生器401输出高斯噪声,然后由一个STFT处理器402通过短期富里叶变换(STFT)进行处理,以在频率轴上生成噪声的功率谱。所说高斯噪声为由一个具有预定长度如256个采样值的适合窗函数,如汉明窗开窗的时域白噪声信号波形。从该STFT处理器402输出的功率谱为进行幅值处理传送到一个乘法器403,从而与噪声幅值控制电路410的一个输出值相乘。乘法器403的输出传送到一个反向STFT(ISTFT)处理器404中,在这里利用初始白噪声的相位作为转换成时域信号的相位对其进行反向STFT处理。该ISTFT处理器404的输出值传送到一个加权叠加电路217中。

在图27所示的实施例中,从白噪声发生器401产生时域噪声,并通过正交变换,例如STFT进行处理,以产生频域噪声。或者,还可以由噪声发生器产生频域噪声。通过直接产生频域噪声,可以省略正交变换处理操作,例如STFT或ISTFT。

具体地说,可以采用一种在±x的范围内产生随机数,并且将所产生的随机数作为FFT频谱的实部和虚部进行处理的方法,或者在从0到仰射最大数值(max)的范围内产生一个正随机数,并且将它们作为FFT频谱的幅值进行处理的方法,以及在从-π到+π的范围内产生一个随机数,并且将这些随机数作为FFT频谱的相位进行处理的方法。

这使得有可能消除图27所示的STFT处理器402,以简化结构或者减少处理量。

噪声幅值控制电路410具有如图28所示的基本结构,并且通过根据从图4所示频谱包络线的量化器212经过端口411输出的浊音(V)的频谱幅值Am[i]控制乘法器403的乘法系数来确定合成噪声幅值Am_noise[i]。即,在图28中,最佳noise_mix值计算电路416的输出由一个噪声加权电路417进行加权处理,频谱幅值Am[i]和音调迟滞Pch都输入到该计算电路中,所得输出传送到一个乘法器418中,以便与一个频谱幅值Am[i]相乘,以产生一个噪声幅值Am_noise[i]。

作为噪声合成和添加的一个具体实施例,现在介绍噪声幅值Am_noise[i]变成上述四个参数中的两个参数的函数的情况,这两个参数是音调迟滞Pch和频谱幅值Am[i]。

其中函数f1(Pch,Am[i])为:

f1(Pch,Am[i])=0,其中0<i<Noise_b×I,

f1(Pch,Am[i])=Am[i]×noise_mix,其中noise_b×I≤i<I,和

noise_mix=K×Pch/2.0

应当指出,noise_max的最大值为noise_mix_max,在这个值处,噪声被限幅。作为一个例子,K=0.02,noise_mix_max=0.3以及Noise_b=0.7,其中Noise_b是一个常数,其决定噪声添加到整个频带的哪一个部分。在本实施例中,噪声添加在高于70%位置的频率范围中,即如果fs=8kHz,则噪声添加在从4000×0.7=2800kHz至4000kHz的范围中。

现在介绍噪声合成和添加的第二个具体实例,其中噪声幅值Am_noise[i]是四个参数中的三个的一个函数f2(Pch,Am[i],Amax)这三个参数是音调迟滞Pch、频谱幅值Am[i]和最大频谱幅值Amax的一个函数f2(Pch,Am[l])。

其中函数f2(Pch,Am[i],Amax)为:

f2(Pch,Am[i],Amax))=0,其中0<<Noise_b×

f1(Pch,Am[i],Amax)=Am[i]×noise_mix,其中Noise_b×I≤i<I,以及

noise_mix=K×Pch/2.0。应当指出noise_mix的最大值是noise_mix_max,作为一个例子,K=0.02,noise_mix_max=0.3,及Noise_b=0.7。

如果Am[i]×noise_mix>Amax×C×noise-mix,则f2(Pch,Am[i],Amax)=Amax×C×noise-mix,其中常数C设定为0.3(C=0.3)。由于可以利用这个条件方程抑制该量值过大,上述K和noise_mix_max的值可以进一步增大,如果高范围区域值较大,噪声量值可以进一步增大。

作为噪声合成和添加的第三个具体实例,上述噪声幅值Am_noise[i]可以是上述四个参数的函数,即为f3(Pch,Am[i]Amax,Lev)。

函数f3(Pch,Am[i],Am[max],Lev)的具体实例基本类似于上述函数f2(Pch,Am[i],Amax)。余值信号量值Lev为频谱幅值Am[i]的均方根(RMS)或者如在时间轴上测量的信号量值。与第二实施例的差别是K值和noise_mix_max值设置为Lev的函数。即,如果Lev较小或者较大,则K值和noise_mix_max值分别设置为较大或较小值。或者,可以设置Lev值,使其反比于K值和noise_mix_max值。

现在介绍后置滤波器238v,238u。

图29表示了在图4的实施例中可以用作后置滤波器238u,238v的一个后置滤波器。作为后置滤波器的基本部分的一个频谱成形滤波器440由一个主峰段增强滤波器441和一个高范围增强滤波器442组成。频谱成形滤波器440的输出传送到一个用于校正由频谱成形引起的增益改变的增益调整电路443。增益调整电路443具有增益G,该增益由一个增益控制电路445通过将一个输入值x与频谱成形滤波器440的输出值y比较来确定,以计算用于计算校正值的增益变化值。

如果LPC合成滤波器的分母Hv(z)和Huv(z)的系数,即‖-参数,表示为αi,频谱成形滤波器440的特征函数PF(z)可以表示为: >>PF>>(>z>)>>=>>>>Σ>>i>=>0>>p>>>α>i>>>β>i>>>z>>->i>>>>>>Σ>>i>=>0>>p>>>α>i>>>γ>i>>>z>i>>>>>(>1>->>kz>>->1>>>)>>>s>

这个方程的分数部分表示主峰段增强滤波器的特性,而(1-kz-1)表示高范围增强滤波器的特性。β,γ和k为常数,例如,β=0.6,γ=0.8和k=0.3。增益调整电路443的增益由以下方程给出: >>G>=>>>>>Σ>>i>=>0>>159>>>x>2>>>(>i>)>>>>>Σ>>i>=>0>>159>>>y>2>>>(>i>)>>>>>>s>在上述方程中,x(i)和y(i)分别表示频谱成形电路440的输入和输出。

应当指出,如图30所示,当频谱成形滤波器440的系数更新周期为20采样值或者2.5毫秒时,与作为LPC合成滤波器的系数的α参数的更新周期一样,增益调整电路443的增益G更新周期为160采样值或20毫秒。

通过设定频谱成形滤波器443的系数更新周期长于作为后置滤波器的频谱成形滤波器440的系数更新周期,有可能防止在其它情况下由于增益调整浮动引起的不良效果。

即,在一个一般的后置滤波器中,频谱成形滤波器的系数更新周期设定成等于增益更新周期,并且如果将增益更新周期选择为20采样值或者2.5毫秒,即使在一个音调周期内也会引起增益值变化,因此产生咯哒咯哒的噪声,如图30所示。在本实施例中,通过将增益转换周期设置得长,例如等于一帧或160采样值长度或20毫秒,则可以防止出现急剧变化的增益值。相反,如果频谱成形滤波器系数的更新周期为160采样值或者20毫秒,则不可能产生滤波器特性的平滑变化,因此在合成的波形中出现不良效果。但是,通过将滤波器系数更新周期设置为较短值,如20采样值或2.5毫秒,则有可能实现更有效的后置滤波。

通过相邻帧直接的增益结合处理,可以借助三角窗将前一帧的滤波器系数和增益与当前帧的滤波器系数和增益相乘,所说三角窗为

  W(i)=i/20(0≤i≤20))和

1-W(i),其中0≤i≤20,用于渐强和渐弱转换,所得乘积相加在一起。图31表示了前一帧的增益G1如何与当前帧的增益G1合并。具体而言,使用前一帧的增益和滤波器系数的比例是逐渐下降的,而使用当前帧的增益和滤波器系数的比例是逐渐提高的。处理当前帧的滤波器的内部状态和在图31所示的同一时间点T的处理前一帧的滤波器内部状态从相同的状态开始,即从前一帧的最后状态开始。

上述信号编码和信号解码装置可以用作应用于,如图32和图33所示的移动通讯终端或者移动电话的语音代码簿。

图32表示了应用按照图1和图3构成的编码装置160的一个移动终端的发射端结构。由一个麦克风161拾取的语音信号经过一个放大器162放大,由一个模拟/数字(A/D)转换器163转换成数字信号,而后传送到如图1和图3所示构成的语音编码装置160中。从所说A/D转换器163输出的数字信号传输到输入端101。语音编码装置160如参照图1和图3所解释的,进行编码操作。图1和图2的输出端的输出信号作为语音编码装置160的输出信号传送到一个发射信道编码单元164中,然后该单元对所输入的信号进行信道编码。该发射信道编码单元164的输出信号被传送到用于调制的一个调制电路165中,然后由此经过一个数字/模拟(D/A)转换器166和RF放大器167传输到一个天线168。

图33表示应用如图2和图4所构成的一个语音解码装置260的移动终端的接收端结构。图33中的天线261接收的语音信号由一个RF放大器262放大,并通过一个模拟/数字(A/D)转换器263传送到一个解调制电路264,由此经过解调制的信号被传送到一个发射信道解码单元265。该解码单元265的输出信号传输到如图2和图4所示的一个语音解码装置260。语音解码装置260按照结合图2和图4所述方式对信号进行解码。图2和图4中输出端201的输出信号作为语音解码装置260的信号传送到一个数字/模拟(D/A)转换器266中。从D/A转换器266输出的一个模拟语音信号传送到一个扬声器268。

本发明不限于上述的实施例。例如,图1和图3所示的语音分析(编码器)或者图2和图4所示的语音合成端(解码器),在上文中作为硬件描述,可以利用使用例如数字信号处理器(DSP)的软件程序来实现。解码端的合成滤波器236、237或者后置滤波器238v,238u可以设计为一个唯一的LPC合成滤波器或者唯一的后置滤波器,而不将它们区分为浊音语音或者清音语音。本发明也不局限于传输或记录/再现,而是可以应用于各种用途,例如音调转换、语速转换、计算机语音合成或者噪声抑制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号