矢量量化器方法

文档序号:2820269阅读:691来源:国知局
专利名称:矢量量化器方法
技术领域
本发明一般地涉及使用代码激励的线性预测编码(CELP),使用随机编码或矢量激励的语音编码方法,以及更具体地讲,涉及用于矢量相加激励的线性预测编码(VSELP)的矢量量化器方法。
代码激励的线性预测(CELP)是一用于产生高质量合成语音的语音编码技术。这种语音编码也称为矢量激励的线性预测,被用于许多的语音通信和语音合成应用中。CELP特别是应用于数字语音加密和数字无线电话通信系统,这里语音质量,数据速率,大小和费用都是重要的问题。
在CELP语音编码器中,模拟输入语音信号特性的长期(音调(pitch))和短期(峰段(formant))预测器包含在一套时变滤波器内。具体地,可使用一个长期和一个短期滤波器。用于滤波器的激励信号从已存贮的改进序列的代码簿或码矢(codevectors)中选择。
对于每一帧语音,选择一最佳的激励信号。语音编码器施加一单独码矢到滤波器以产生一重建的语音信号,该重建的语音信号和原始输入的语音信号相比较,产生一误差信号。该误差信号通过一谱噪声加权滤波器被加权。谱噪声加权滤波器有一以人体听力感觉为基础的响应。最佳激励信号是一选出的码矢,对当时的语音帧它以最小能量产生加权的误差信号。
典型地,线性预测编码(LPC)是用来模拟采样区段内的短期信号相关,也称为短期滤波器。短期信号相关表示声道的谐振频率。LPC系数是一组语音模型参量。其它的参量组可用来表示加于短期预测滤波器的激励信号的特性。这些其它的语音模型参量包括线谱频率(LSF),逆谱(cepstral)系数,反射系数,对数面积比和反正弦。
语音编码器通常对激励信号进行矢量量化以减少为表示信号特性所必需的比特数。LPC系数可在量化前被转换为其它的上述的参量组。这些系数可被单独地量化(标量量化)或被一组地量化(矢量量化)。标量量化不如矢量量化那样有效。然而标量量化在计算和存贮要求上比矢量量化费便宜。LPC参量的矢量量化是应用于主要考虑编码效率的地方。
多段矢量量化可被用来均衡编码效率,矢量量化器搜索复杂性,和矢量量化器存贮要求等。第一类多段矢量量化是将一Np元素的LPC参量矢量划分为n段,n段的每一段是单独地被矢量量化。第二类多段矢量量化是在n个矢量的代码簿中划分LPC参量,这里每个矢量代码簿复盖所有Np矢量元素。为了说明矢量量化,假设Np=10个元素,每个元素以2比特代表。传统的矢量量化每10个元素将要求220个码矢来表示所有可能码矢的可能性。第一类带有两段的多段矢量量化每5个元素将要求210+210个码矢。第二类带有2段的多段矢量量化每5个元素将要求210+210个码矢。这些矢量量化的每一种方法对于编码效率,搜索复杂性和存贮要求等方面都提供不同的利益。这样,现代技术的语音编码器将会从矢量量化方法和设备(这些设备和方法增加了编码效率,或减少了搜索复杂性或存贮要求而无需改变相应的要求)中得益。


图1是一无线电通信系统的方框图,它包括依据本发明的语音编码器。
图2是依据本发明的语音编码器的方框图。
图3是依据本发明所使用的反正弦函数的曲线图。
这里描述代码激励线性预测编码(CELP)的一种变形,被称为矢量相加激励的线性预测编码(VSELP)是本发明的优选实施例。VSELP使用一具有预先定义的结构的激励代码簿,这样,代码簿搜索过程所要求的计算就大大减少。这个VSELP语音编码器使用基于定点点阵技术(FLAT)的反射系数的单一或多段矢量量化器。此外,这个语音编码器使用了预量化器以减少矢量代码簿搜索复杂性,和使用高分辨率标量量化器以减少为存贮反射系数矢量代码簿所需要的存贮器总量。这就得到一反射系数的高性能的矢量量化器,它在计算上是有效的并已减少了存贮要求。
图1是无线电通信系统100的方框图。无线电通信系统100包括两个收发机101,113,他们互相发送和接收语音数据。这两个收发机101,113可以是中继无线电系统,或无线电话通信系统或任何其它发送和接收语音数据的无线电通信系统的一部分。在发射机中,语音信号被输入到话筒108,语音编码器选择被量化的语音模型参量。被量化的参量的代码被发送到另一收发信机113。在另一收发信机113,所发送的被量化参量的代码被接收机121接收,并用来在语音译码器123中再生语音。再生的语音输出到扬声器124。
图2是一VSELP语音编码器200的方框图。VSELP语音编码器200使用所接收的代码来决定使用代码簿中的激励矢量。VSELP编码器使用有2M个码矢(它由M个基本矢量构成)的激励代码簿。字度Vm(n)为第m个基本矢量,定义ui(n)为代码簿中的第i个码矢。于是ui(n)=Σm=1Mθimvm(n)---(1.10)]]>这里0≤i-≤2M-1;0≤n≤N-1。换句话说,代码簿中的每一个码矢被构成为M个基本矢量的线性组合。线性组合由Q参量定义。θim被定义为θim=+1如果码字i的比特m=1
θim=-1如果码字i的比特m=0码矢i被构成为M个基本矢量之和,这里每一基本矢量的符号(正号或负号)由码字i中相应的比特状态来决定。注意如果我们求补码字i中全部比特数,相应的码矢就是码矢i的负数。所以,对于每个码矢,它的负数也是代码簿中的一个码矢。由于为相应的码字彼此互补,这些码矢对被称为互补码矢。
适宜的矢量被选择后,增益单元205对所选择的矢量乘以增益项γ换算。增益单元205的输出加到一组线性滤波器207和209以获得重建语音的N个样值。滤波器包括一“长期”(或“音调”)滤波器207,它将音调周期性插入激励中。“长期”滤波器207的输出又加到“短期”(或“峰段”)滤波器209。短期滤波器209给信号加上谱包络。
长期滤波器207包括长期预测器系数(LTP)。长期滤波器207试图从一个或多个很远以前的样值中预测下一个输出样值。如果仅有一个过去的样值被应用于预测器中,那么,预测器就是一单抽头预测器。典型地使用一到三个抽头。含有一个单抽头长期预测器的长期(“音调”)滤波器207,其传递函数由(1.1)给出B(z)=11-βz-L---(1.1)]]>B(z)的特性由两个量L和β表示。L称为“滞后”。对于声频的语音,L典型地应是音调周期或是它的倍数。L也可能是一非整数值。如果L是一非整数,一个内插的有限脉冲响应(FIR)滤波器被用来产生部分延迟的样值。β是长期(或“音调”)预测器系数。
短期滤波器209包括短期预测器系数αi,它试图从前面的Np个输出样值中预测下一个输出样值。Np典型的范围是从8到12。在本优选的实施例中,Np等于10。短期滤波器209相当于传统的Lpc合成滤波器。短期滤波器209的传递函数由(1.2)给出A(z)=11-Σi=1Npαiz-i---(1.2)]]>短期滤波器209的特性由αi参量表示。对于全极点“合成”滤波器,它是直接形式滤波器系数。关于αi参量的详情可在下面见到。
各种参量(代码,增益,滤波器参量)并不以相同的速率发送到合成器(语音译码器)。典型地,短期参量的更新通常比代码少。我们将定义短期参量更新率为“帧频”,更新之间的间隔为一“帧”。代码更新率由矢量长度N决定。我们将定义代码更新率为“子帧频”,代码更新间隔为“子帧”。一帧通常由整数个子帧组成。增益和长期参量可以子帧频,帧频或根据语音编码器设计的两者之间的某些速率更新。
代码簿搜索过程包括尝试每一个码矢作为可能激励CELP合成器的码矢。合成语音S′(n)在比较器211和输入语音S(n)相比较,而产生一差值信号ei。这个差值信号ei(n)由一谱加权滤波器W(z)213(也可能由第二加权滤波器C(z)加以滤波以产生一加权的误差信号e′(n)。e′(n)中的功率在能量计算器215上计算。产生最小加权误差功率的码矢被选为该子帧的码矢。谱加权滤波器213用来对基于感官考虑的误差谱进行加权。这个加权滤波器213是语音谱的一个函数,并能以短期(谱)滤波器209的α参量来表示。W(z)=1-Σi=1Npαiz-i1-Σi=1Npα~iz-i---(1.3)]]>有两种方法能用来计算增益γ。可以在根据残余能量的代码簿搜索之前决定增益。这个增益然后可被固定用于代码簿搜索。另一个方法是当代码簿搜索时优化每个码矢的增益。产生最小加权误差的码矢将被选择,并且它相应的最佳增益将被用于γ。由于增益是对每个码矢的优化,所以后一方法一般地能产生更好的效果。这个方法也意味着增益项必须以子帧频更新。此技术的最佳代码和增益可计算如下1.对于子帧计算已加权的输入信号y(n)。2.计算d(n),子帧的B(z)和W(z)(和(C(z),如果使C(z)的情况下)滤波器的零输入响应。(零输入响应是滤波器没有输入时的响应;滤波器状态的衰减)。3.在整个子帧计算 p(n)=y(n)-d(n) (0≤n≤N-1)4.对于每个代码i。
a.计算g(n),即码矢i的B(z)和W(z)(和C(z),如果使用的情况下)的零状态响应。(零状态响应是将起始滤波状态置为零的滤波器输出)。
b.计算Ci=Σn=0N-1gi(n)p(n)---(1.5)]]>即,已滤波的码矢i和p(n)之间的互相关c.计算Gi=Σn=0N-1|gi(n)|2---(1.6)]]>即,已滤波的码矢i中的功率。5.选择i,它使
达到最大。6.使用所选择的码字和它相应的量化增益,更新B(z)和W(z)(和C(z),如使用的情况下)滤波器的滤波状态,以得到合成器在步骤2的下一子帧起始的同样滤波状态。码矢i的最佳增益由(1.8)式给出γi=CiGi---(1.8)]]>使用最佳增益γi的码矢i的总加权误差由(1.9)给出Ei=(Σn=0N-1p2(n))-|Ci|2Gi---(1.9)]]>短期预测器参量是图2短期滤波器209的αi′。这些是标准的LPC直接形式滤波器系数,许多LPC分析技术可被用来决定这些系数。在本优选实施例中,使用了一个快速定点协方差点阵算法(FLAT)。FLAT具有点阵算法的全部优点,包括有保证的滤波器稳定性,非窗口分析和在循环内量化反射系数的能力。此外,FLAT在数值上是健全的,并能在一定点处理器上很容易实现。
短期预测器参量是从输入语音计算的,没有使用预加重。用于参量计算的分析长度是170个样值(NA=170)。预测器的阶数是10(Np=10)。
这部分将详细描述FLAT算法。令落入分析间隔内输入语音的样值用S(n)表示;0≤n≤NA-1。因为FLAT是一点阵算法,可以认为该技术是试图逐级地建立一最佳(它使残余能量最小)的逆点阵滤波器。定义bj(n)为来自逆点阵滤波器第j级的反向余项,fj(n)为来自逆点阵滤波器第j级的正向余项,我们可定义Fj(i,k)=Σn=NpNA-1fj(n-i)fj(n-k)---(2.1)]]>为fj(n)的自相关;Bj(i,k)=Σn=NpNA-1bj(n-i-1)bj(n-k-1)---(2.2)]]>为bj(n-1)的自相关;以及Cj(i,k)=Σn=NpNA-1fj(n-i)bj(n-k-1)---(2.3)]]>为fj(n)和bj(n-1)之间的互相关。令rj表示逆点阵第j级的反射系数。于是Fj(i,k)=Fj-1(i,k)+rj(Cj-1(i,k)+Cj-1(k,i))+rj2Bj-1(i,k)---(2.4)]]>和Bj(i,k)=Bj-1(i+1,k+1)+rj(Cj-1(i+1,k+1)+Cj-1(k+1,i+1))+rj2Fj-1(i+1,k+1)---(2.5)]]>和Cj(i,k)=Cj-1(i,k+1)+rj(Bj-1(i,k+1)+Fj-1(i,k+1))+rj2Cj-1(k+1,i)---(2.6)]]>我们已选择的用来决定rj的公式可表示为Tj=-2Cj-1(0,0)+Cj-1(Np-j,Np-j)Fj-1(0,0)+Bj-1(0,0)+Fj-1(Np-j,Np-j)+Bj-1(Np-j,Np-j)]]>FLAT算法现可描述如下1.首先从输入语音中计算协方差(自相关)矩阵φ(i,k)=ΣNPNA-1s(n-i)s(n-k)---(2.8)]]>0≤i,k≤NP.2.
F0(i,k)=f(i,k)0≤i,k≤NP-1(2.9)B0(i,k)=f(i+1,k+1)0≤i,k≤NP-1(2.10)C0(i,k)=f(i,k+1)0≤i,k≤NP-1(2.11)3.设j=14.用(2.7)式计算rj5.如j=Np,于是结束6.用(2.4)计算Fj(i,k)0≤i,k≤Np-j-1用(2.5)计算B(i,k) 0≤i,k≤Np-j-1用(2.6)计算Cj(i,k)0≤i,k≤Np-j-17.j=j+1;转到4在解出反射系数之前,用给自相关函数开窗的方法修正φ数值φ′(i,k)=φ(i,k)w(|i-k|)(2.12)在计算反射系数之前,给自相关函数开窗通称为谱平滑(SST)。
从反射系数rj,可计算短期LPC预测系数αi。
使用反射系数的28比特三段矢量量化器。矢量量化器的段分别复盖反射系数r1-r3,r4-r6,和r7-r10。矢量量化器段的比特分配是Q111比特Q29比特Q38比特为避免穷举的矢量量化器搜索的计算复杂性,在每一段使用了反射系数矢量的预量化器。每段预量化器的大小是P16比特P25比特
P34比特在一给定段,来自预量化器的每个矢量的残余误差被计算并存入暂时存贮器中。搜索这个表以识别最低失真的4个预量化器矢量。每个选出的预量化器矢量的指数是用来计算进入矢量量化器表中的偏移,与预量化器矢量相连系的量化器矢量邻接的子集从这里开始。在第k段每个矢量量化器子集的大小由下式给出Sk=2Qk2Pk---(2.13)]]>与选出的预量化器矢量相连系的量化器矢量的4个子集被检索用来寻找产生最低残余误差的量化器矢量。这样,在第一段估算64个预量化器矢量和128个量化器矢量,在第二段估算32个预量化器矢量和64个量化器矢量,在第三段估算16个预量化器矢量和64个量化器矢量。通过上述具有频带扩展的FLAT技术所计算的最佳反射系数在矢量量化之前被转换为一自相关矢量。
FLAT算法的自相关方案AFLAT是被用来计算正在被估算的反射系数矢量的残余误差能量。象FLAT一样,当计算最佳反射系数或从当前段的矢量量化器中选择反射系数时,这个算法具有部分地补偿来自以前点阵级中反射系数量化误差的能力。这个改善对于具有高反射系数量化失真的帧是很重要的。现在描述AFLAT算法(在带有预量化器的多段矢量量化器的范围内)
在0≤i≤Np范围内,根据最佳反射系数计算自相关序列R(i)。或者,可根据其它的LPC参量表示(如直接形式LPC预测器系数αi′)来计算自相关序列,或直接根据输入语音来计算。定义AFLAT循环的起始条件P0(i)=R(i),0 ≤i≤Np-1(2.14)V0(i)=R(|i+1|),1-Np≤i≤Np-1(2.15)初始化矢量量化器段指数kk=1 (2.16)令I1(k)是第k段中第一点阵级的指数,Ih(k)是第k段的最后点阵级的指数。在第k段估算来自点阵级Ih(k)的残余误差的循环,已知r,来自预量化器的反射系数矢量或来自量化器的反射系数矢量表示如下。初始化点阵级的指数j,以指向第k段的开始j=I1(k)(2.17)设置Pj-1和Vj-1的起始条件为Pj-1(i)=Pj-1(i),0≤i≤Ib(k)-I1(k)+1 (2.18)Vj-1(i)=Vj-1(i),-Ib(k)+I1(k)-1≤i≤Ih(k)-I1(k)+1(2.19)
用下式计算Vj和Pj数值,Pj(i)=(1+r^j2)Pj-1(i)+r^j[Vj-1(i)+Vj-1(-i)],0≤i≤Ib(k)-j---(2.20)]]>Vj(i)=Vj-1(i+1)+r^j2Vj-1(-i-1)+2r^iPj-1(|i+1|),j-Ib(k)≤i≤Ib(k)-j---(2.21)]]>j增加j=j+1(2.22)如j≤Ih(k)转到(2.20)式。已知反射系数矢量
,来自点阵级Ih(k)的残余误差由下式给出Er=PIh(k)(0)---(2.23)]]>使用概述的AFLAT循环,估算来自第k段预量化器的每个矢量引起的残余误差,识别要搜索的量化器矢量的4个子集,并计算来自所选出的4个子集的每个量化器矢量引起的残余误差。在4个子集中所有量化器矢量范围内使Er为最小的量化器矢量
的指数,被用Qk比特编码。如k<3,于是在k+1段进行循环的起始条件需要计算。设点阵级指数j等于j=I1(k)(2.24)计算P‾j(i)=(1+r~j2)P‾j-1(i)+r~j[V‾j-1(i)+V‾j-1(-i)],0≤i≤Np-j-1---(2.25)]]>V‾J(i)=V‾j-1(i+1)+r~j2V‾j-1(-i-1)+2r~jP‾j-1(|i+1|),j-Np+1≤i≤Np-j-1---(2.26)]]>j增加,j=j+1(2.27)如j≤Ih(k),转到式(2.25)增加矢量量化器分段指数kk=k+1(2.28)如k≤3,转到(2.17)。否则,选择三段的反射系数矢量的指数,并终止反射系数矢量量化器的搜索。
为了使反射系数矢量量化器的存贮要求为最小,单个反射系数的八位代码而不是实际的反射系数值被存贮于矢量量化器表中,该代码被用来从有256项的标量量化表中查寻反射系数值。八位代码表示通过均匀采样图3所示的反正弦函数所得到的反射系数值。反射系数值从-1到+1变化。当值是接近于+/-1的极限时,在反射系数域(X轴)中的非线性间隔提供更精确的反射系数。而当值是近于0时,提供稍差的精确度。假设为256量化级时,和在反射系数域中均匀采样相比较,这减少了由于反射系数的标量量化引起的谱失真。
权利要求
1.存贮反射系数矢量的方法包含以下步骤提供具有2N个反射系数值的表,每个反射系数值以N位代码寻址;和存贮一个N位代码以表示表中的反射系数值中的一个值。
2.依照权利要求1存贮的方法,其中,反射系数值是非线性范围的。
3.依照权利要求1存贮的方法,其中,反射系数值是范围在-1和+1之间的反正弦。
全文摘要
矢量相加激励的线性预测编码(VSELP)语音编码器提供了改进的质量,减少了通常语音编码器的复杂性。VSELP使用代码簿,它有一预先定义的结构使得代码簿搜索过程所要求的计算大为减少。这个VSELP语音编码器运用基于定点阵技术(FLAT)的反射系数的单一或多段矢量量化器。此外,这个语音编码器使用预量化器来减小搜索的复杂性,使用高分辨标量量化器来减小所需要的存贮总量。以减少计算量和存贮要求。
文档编号G10L19/08GK1166019SQ9710345
公开日1997年11月26日 申请日期1997年3月12日 优先权日1993年3月26日
发明者艾瑞·A·格森, 马克·A·杰休科, 马休·A·哈特曼 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1