可变速率语音编码的制作方法

文档序号:7504950阅读:416来源:国知局
专利名称:可变速率语音编码的制作方法
技术领域
本发明涉及对语音信号的编码。具体来说,本发明涉及对语音信号进行归类并根据此归类而利用多种编码模式中的一种。
背景技术
当今的许多通信系统,特别是远距与数字无线电话应用中,都把话音当作数字信号发射。这类系统的性能部分取决于以最少的位数精确地代表话音信号。简单地通过采样与数字化来发送语音,为了达到普通模拟电话的语音质量,要求数据速率为每秒64kb(kbps)。然而,现有的编码技术可明显减少正常语音再现所需的数据速率。
术语“声码器”一般指根据人类语音发生模型通过提取诸参数来压缩发出的语音的装置。声码器包括编码器与解码器,编码器分析送入的语音并提取相关的参数,解码器用经传输信道接收自编码器的诸参数合成语音。通常把语音信号分成几帧数据与字块供声码器处理。
围绕基于线性预测的时域编码方案建立的编码器,在数量上远远超过了其它各类编码器。这类技术从语音信号里提取诸相关的单元,只编码不相关的单元。基本的线性预测滤波器预测的当前样本作为过去样本的一种线性组合。Thomas E.Tremain等人撰写的论文“一种4.8kbps码受激线性预测编码器”(移动卫星会议录,1998),描术了一例这类特定的编码算法。
这类编码方案除去语音中固有的所有自然冗余度(即相关单元),把数字化语音信号压缩成低位速率信号。语音一般呈现出唇与舌的机械动作造成的短期冗余度和声带振动造成的长期冗余度。线性预测方案把这些动作模拟成滤波器,除去冗余度,再将得到的剩余(residual)信号模拟成白高斯噪声。因此,线性预测编码器通过发送滤波器系数和量化噪声而不是发送全带宽的语音信号,可以减小位速率。
然而,即使是这些减小的位速率,也往往超过了有效带宽,其中语音信号必须远距离传播(如地面到卫星),或在拥挤的信道中与许多其它信号共存。因此,要求有一种改进的编码方案,以实现比线性预测方案更低的位速率。

发明内容
本发明是一种对语音信号进行可变速率编码的改进的新方法和设备。本发明对输入语音信号进行归类并根据此归类选择适当的编码模式。对于每个归类,本发明选择以可接受的语音再现质量实现最低位速率的编码模式。本发明通过仅利用高保真模式(即,广泛适用于不同类型的语音的高的位速率),在可接受的输出需要此保真度的语音部分中实现低的平均位速率。本发明在这些模式产生可接受的输出的语音部分中切换到较低的位速率。
本发明的一个优点在于,以低的位速率对语音进行编码。低的位速率转化成较高的容量、较大的范围以及较低的功率需求。
本发明的一个特征在于,把输入语音信号归类为有效(active)和无效(inactive)区。有效区被进一步归类为话音(voiced)、非话音(unvoiced)和过渡(transient)区。因此,本发明可依据所需的保真水平把各种编码模式应用于不同类型的有效语音。
本发明的另一个特征在于,可依据每个特定模式的强弱来利用编码模式。在语音信号的性质随时间而变化时,本发明在这些模式之间的动态切换。
本发明的又一个特征在于,在适当时,把语音的区域模拟成伪随机噪声,从而获得明显较低的位速率。本发明以动态的方式使用此编码,而无论检测到非话音语音还是背景噪声。
从以下结合附图的详细描述,将使本发明的特征、目的和优点变得更加明显起来,图中类似的标号指示相同或在功能上相似的元件。此外,标号最左边的数字识别最早出现该标号的图。
附图概述

图1是表示信号传输环境的图;图2是详细示出编码器102和解码器104的图;图3是表示本发明可变速率语音编码的流程图;图4A是表示一帧话音语音分割为若干子帧的图;图4B是表示一帧非话音语音分割为若干子帧的图;图4C是表示一帧过渡语音分为若干子帧的图;
图5是描绘原始参数计算的流程图;图6是描绘语音分类为有效或无效的流程图;图7A是表示CELP编码器的图;图7B是表示CELP解码器的图;图8是表示音调滤波器模块的图;图9A是表示PPP编码器的图;图9B是表示PPP解码器的图;图10是表示PPP编码法(包括编解码)步骤的流程图;图11是措述原型剩余周期提取流程图;图12是示出从当前帧剩余信号提取的原型剩余周期和从前一帧提取的原型剩余周期的图;图13是计算旋转参数的流程图;图14是表明编码代码簿工作的流程图;图15A是表示第一滤波器更新模块实施例的图;图15B是表示第一周期内插器模块实施例的图;图16A是表示第二滤波器更新模块实施例的图;图16B是表示第二周期内插器模块实施例的图;图17是描述第一滤波器更新模块实施例的工作的流程图;图18是描述第二滤波器更模块实施例的工作的流程图;图19是描述原型剩余周期对准与内插的流程图;图20是描述第一实施例根据原型剩余周期重建语音信号的流程图;图21是描述第二实施例根据原型剩余周期重建语音信号的流程图;图22A是表示NELP编码器的图;图22B是表示NELP解码器的图;和图23是描述NELP编码法的流程图。
本发明的较佳实施方式I.环境概述II.发明概述III.原始参数确定A.计算LPC系数
B.LSI计算C.NACF计算D.音调轨迹与滞后计算E.计算带能与零交叉率F.计算元音共振峰(formant)余量IV.有效/无效语音分类A.拖尾(hangover)帧V.有效语音帧分类VI.编码器/解码器模式选择VII.代码受激的线性预测(CELP)编码模式A.音调编码模块B.编码代码簿C.CELP解码器D.滤波器更新模块VIII.原型音调周期(PPP)编码模式A.提取模式B.旋转相关器C.编码代码簿D.滤波器更新模块E.PPP解码器F.周期内插器IX.噪声激励的线性预测(NELP)编码模式X.结论。
I.环境概述要发明针对可变速率语音编码的新颖改进的方法和设备。图1示出信号传输环境100,它包括编码器102、解码器104和信号传输媒体106。编码器102对语音信号s(n)编码,形成的编码语音信号senc(n)通过传输媒体106传输给解码器104,后者对senc(n)解码而生成合成的语音信号(n)。
这里的“编码”一般指包括编码二者的方法。一般而言,编码方法和设备试图将通过传输媒体106发送的位数减至最少(即将senc(n)的带宽减至最少),同时保持可接受的语音再现(即(n)≈s(n))。编码语音信号的成分随具体的语音编码方法而不同。下面描述根据它们工作的各种编码器102、解码器104和编码方法。
下述编码器102和解码器104的元件,可用电子硬件,计算机软件或二者的组合构成,下面按其功能描述这些元件。功能用硬件实施还是用软件实施,将取决于具体应用和对整个系统的设计限制性。熟练的技术人员应该知道硬软件在这些场合中的互换性以及如何最佳地实施对每个具体应用描述的功能。
本领域的技术人员应明白,传输媒体106可以代表许多不同的传输媒体,包括(但不限于)陆基通信线路、基站与卫星间的链路、蜂窝电话与基站或蜂窝电话与卫星间的无线通信。
本领域的技术人员还将明白,通信的每一方通常都作发射与接收,因此每一方都要求有编码器102和解码器104。然而,下面将把信号传输环境100描述成在传输媒体106的一端包括编码器102,另一端包括解码器104。技术人员将容易明白如何将这些设想扩展到双向通信。
为了进行描述,假定s(n)是在一般交谈中得到的数字语音信号,交谈包括不同的语音发声与静寂周期。语音信号s(n)最好分成若干帧,每个帧又分成若干子帧(最好为4个)。在作字快处理时,如在本文情况下,一般应用这些任意选择的帧/子帧边界,对帧叙述的操作也适用于子帧,在这方面帧与子帧在这里可互换使用。然而,若是连续处理而不是字块处理,s(n)就根本无须分为帧/子帧。技术人员很容易明白如何将下述的字块技术扩展到连续处理。
在一较佳实施例中,s(n)以8kHz作数字采样。每帧最好含20ms数据,即在8kHz速率下为160个样本,所以各子帧含40个数据样本。要着重指出,下面的许多公式都假设了这些值。然而,技术人员将明白,虽然这些参数适合语音编码,但是仅仅为了示例,可以应用其它合适的替代参数。
II.发明概述本发明的方法和设备涉及到编码与语音信号s(n)。图2详细示出了编码器102和解码器104。根据本发明,编码器102包括原始参数计算模块202,分类模块208和一种或多种编码器模式204。解码器104包括一种或多种解码器模式206。解码器模式数Nd一般等于编码器模式数Ne。如技术人员所知,编码器模式,与解码器模式1相联系,其它依次类推。如图所示,编码的语音信号senc(n)通过传输媒体106发送。
在一较佳实施例中,根据哪一模式最适合当前帧规定的s(n)特性,编码器102在各帧的多个编码器模式之间作动态切换,解码器104也在各帧的相应解码器模式之间作动态切换。对每一帧选择一具体模式,以获得最低位速率并保持解码器可接受的信号再现。这一过程称为可变速率语音编码,因为编码器的位速率随时间而变化(作为信号变化的特点)。
图3是流程图300,描述了本发明的可变速率语音编码法。在步骤302,原始参数计算模块202根据当前帧的数据计算各种参数。在一较佳实施例中,这些参数包括下列参数之一或几个线性预测编码(LPC)滤波器系数、线路谱信息(LSI)系数、归一化自相关函数(MACF)、开环滞后、带能、零交叉速率和元音共振峰分剩余信号。
在步骤304、分类模块208把当前帧分为含“有效”或“无效”的语音。如上所述,s(n)假定对普通谈话包括语音周期与静寂周期。有效语音包括说出的单词,而无效语音包括其它任何内容,如背景噪声、静寂、间歇。下面详细描述本发明把语音分为有效/无效的方法。
如图3所示,步骤306研究当前帧在步骤304是否被分为有效或无效,若有效,控制流程进到步骤308;若无效,控制流程进到步骤310。
被分为有效的帧在步骤308再分为话音帧、非话音帧或过渡帧。技术人员应明白,人类语音可用多种不同的方法分类。两种常用的语音分类是话音声与非话音声。根据本发明,把非话音语音都归为过渡语音。
图4A示出一例含话音语音402的s(n)部分。产生话音声时,迫使空气通过喉门并调节声带的紧度,以松驰振荡方式振动,由此产生激发发音系统的准周期空气脉冲。话音语音测出的一个共同特性是图4A所示的音调周期。
图4B示出一例含非话音语音404的s(n)部分。产生非话音时,在发音系统的某一点形成收缩部(通常朝向嘴端),迫使空气以足够高的速度通过该收缩部而产生扰动,得到的非话音语音信号类似于有色噪声。
图4C示出一例含过渡语音406(即既不是话音也不是非话音的语音)的s(n)部分。图4c列举的过渡语音406可以代表s(n)在非话音语音与话音语音音的转变。技术人员将明白,可根据这里描述的技术应用多种不同的语音分类获得到可比的结果。
在步骤310,根据步骤306和308作出的帧分类,选择编码器/解码器模式。各种编/解码器模式平行连接,如图2所示,一种或多种此类模式可在规定时间工作。但如下所述,最好在规定时间只有一种模式工作,并按当前帧分类选择。
以下几段描述几种编/解码器模式。不同的编/解码器模式按不同的编码方案工作。有些模式在语音信号s(n)呈现某些特点的编码部分更为有效。
在一较佳实施例中,对分类为过渡语音的代码帧选用“代码受激线性预测”(CELP)模式,该模式用量化型线性预测剩余信号激发线性预测发音系统模型。这里描述的所有编/解码器模式中,CELP通常产生最准确的语音再现,但要求最高的位速率。在一实施例中,CELP模式实行每秒8500位的编码。
对分类为话音语音的代码帧,最好选用“原型音调周期”(PPP)模式。话音语音包含可被PPP模式利用的慢时变周期分量。PPP模式只对每帧内音调周期的子组编码。语音信号的其余周期通过这些原型周期间的内插而重建。利用话音语音的周期性,PPP能实现比CELP更低的位速率。且仍能以感性的精确方式再现该语音信号。在一实施例中,PPP模式实行每秒3900位的编码。
对分类为非话音语音的代码帧,可选用“噪声受激线性预测”(CELP)模式,它用经滤波的伪随机噪声信号模拟非话音语音。NELP对编码语音应用最简单的模型,所以位速率最低。在一实施例中,NELP模式实行每秒1500位的编码。
同一种编码技术能以不同的位速率频繁地工作,性能级别不同。因此,图2中不同的编码器/解码器模式可代表不同的编码技术的相同编码技术,或上述情况相组合。技术人员应明白,增加编/解码器模式数量,选择模式更灵活,且能导致更低的平均位速率,不过整个系统会更复杂。在指定系统中应用的具体组合,将决定于现有的系统资源与特定的信号环境。
在步骤312,选用的编码器模式204对当前帧编码,最好将编码的数据装入数据包传输。在步骤314,对应的解码器模式206打开数据包,对收到的数据解码并重建该语音信号。下面针对合适的编/解码器模式详细描述这些操作。
III.原始参数确定图5是更详细说明步骤302的流程图。各种原始参数按本发明计算。这些参数最好包括如LPC系数、线路谱信息(LSI)系数、归一化自相关函数(NACF)、开环滞后、带能、零交叉速率和元音共振峰剩余信号,这些参数在整个系统内按各种方式使用,如下所述。
在一较佳实施例中,原始参数计算模块202应用“超前(look ahead)”的160+40个样本,这有几个原因。首先,160样本超前可用下一帧的信息计算音调频率轨迹,明显增强了下述话音编码与音调周期估算技术的耐用性。其次,160样本超前可对将来一帧计算LPC系数、帧能和话音活性,这能有效地多帧量化帧能与LPC系数。再次,附加的40样本超前可对下述的汉明窗语音计算LPC系数。因此,处理当前帧之前缓冲的样本数是160+160+40,包括当前帧和160+40样本超前。
A.计算LPC系数本发明用LPC预测误差滤波器消除语音信号中的短期冗余度。LPC滤波器的传递函为A(z)=1-Σi=110aiz-i]]>本发明最好构制一种十阶滤波器,如前述公式所示。解码器中的LPC合成滤波器重新插入冗余度,并由A(z)的倒数规定1A(z)=11-Σi=110aiz-i]]>在步骤502,LPC系数ai由s(n)计算如下。在对当前帧编码期间,最好对下一帧计算LPC参数。
对中心位于第119与第120样本之间的当前帧应用汉明窗(假定较佳的160样本帧有一“超前”)。窗示语音信号sw(n)为sw(n)=s(n+40)(0.5+0.46*cos(πn-79.580)),0≤n<160]]>40样本的偏移导致该语音窗的中心位于较佳语音160样本帧的第119与120样本之间。
最好将11个自相关值计算成R(k)=Σm=0159-ksw(m)sw(m+k),0≤k≤10]]>对自相关值开窗可减少丢失线路谱对(LSP)的根的可能性,LSP对由LPC系数得出R(k)=h(k)R(k),0≤k≤10导致带宽略有扩展,如25Hz。值h(k)最好取自255点汉明窗的中心。
接着用Durbin递归从开窗的自相关值获取LPC系数,Durbin递归是众所周知的高效运算方法,在Rabiner & Schafer提出的文本“语音信号数字处理法”中作了讨论。
B.LSI计算在步骤504,把LPC系数变换成线路谱信息(LSI)系数作量化和内插。LSI系数按本发明以下述方式计算如前一样,A(z)为A(z)=1-a1z-1-…-a10z-10,式中ai是LPC系数,且1<i<10PA(z)与QA(z)定义如下PA(z)=A(z)+z-11A(z-1)=p0+p1z-1+…+p11z-11,QA(z)=A(z)-z-11A(z-1)=q0+q1z-1+…+q11z-11,其中pi=-ai-a11-i,1≤i≤10qi=-ai+a11-i,1≤i≤10和p0=1 p11=1q0=1 q11=-1线路谱余弦(LSC)是下述两函数中-0.1<X<1.0的10个根P′(x)=p′0cos(5cos-1(x))p′1(4cos-1(x))+…+p′4+p′5/2Q′(x)=q′0cos(5cos-1(x))+q′1(4cos-1(x))+…+q′4x+q′5/2式中p′0=1q′0=1p′i=pi-p′i-11≤i≤5q′i=qi+q′i-11≤i≤5
然而以下式计算LSI系数 LSC可按下式从LSI系数里取回 LPC滤波器的稳定性确保这两个函数的根交替,即最小根lsc1就是P’(x)的最小根,下一最小根lsc2就是Q(X)的最小根,等等。因此,lsc1、lsc3、lsc5、lsc7、lsc9都是p’(x)的根,而lsc2、lsc4、lsc6、lsc8与lsc0都是Q’(x)的根。
技术人员将明白,最好应用某种计算LSI系数灵敏度的方法来量化。量化处理中可用“灵敏度加权”对每个LSI中的量化误差合理地加权。
LSI系数用多级矢量量化器(VQ)量化,级数最好取决于所用的具体位速率与代码簿,而代码簿的选用以当前帧是否为话音为依据。
矢量量化将如下定义的加权均方误差(WMSE)减至最小E(x→,y→)=Σi=0P-1wi(xi-yi)2]]>式中 是量化的矢量, 是与其有关的加权, 是代码矢量。在一较佳实施例中, 是灵敏度权和,p=10。
LSI矢量由LSI码重建,而LSI码是量化成 得到的,其中CBi是话音或非话音帧的第i级VQ代码簿(基于指明选择代码簿的代码),codei是第i级的LSI代码。
在LSI系灵敏变换成LPC系数之前,要作稳定性检查,确保得到的LPC滤波器不因量化噪声或将噪声注入LSI系数的语道误差而不稳定。若LSI系数保持有序的,则要确保稳定性。
计算原始LPC系数时,使用中心位于帧的第119与120样本之间的语音窗。该帧其它各点的LPC系数可在前一帧的LSC与当前帧的LSC之间内插近似,得到的内插LSC再到变换回LPC系数。各子帧使用的正确内插为jLscj=(1-ai)lscprevj+ailsccurrp1≤j≤10
式中ai是40个样本中各四个子帧的内插系数0.375、0.625、0.875、1.000,ilsc是内插的LSC。用内插的LSC计算 和 为Q^A(z)=(1-z-1)Πj=151-2ilsc2jz-1+z-2]]>所有四个子帧内插的LPC系数作为下式的系数来计算A^(z)=P^A(z)+Q^A(z)2]]>因此 C.NACF计算在步骤506,归一化自相关函数(WACF)按本发明计算。
下一帧的元音共振峰余量对40个样本子帧计算成r(n)=s(n)-Σi=110a~is(n-i)]]>式中 是相应子帧第i次内插的LPC系数,内插在当前帧的非量化LSC与下一帧的LSC之间进行。下一帧的能量也计算成EN=0.5log2(Σi=0159r2(n)160)]]>上述计算的余量经低通滤波和抽取,最好使用一种零相FIR滤波器实施,其长度为15,其系数dfi(-7<i<7)为{0.0800,0.1256,0.2532,0.4376,0.6424,0.8268,0.9544,1.000,0.9544,0.8268,0.6424,0.4376,0.2532,0.1256,0.0800}。低通滤波、抽取的余量计算为rd(n)=Σi=-77dfir(Fn+i),0≤n<160/F]]>式中f=2为抽取系数,r(Fn+i),-7≤Fn+i≤6根据非量化LPC系数从当前帧的余量的最后14个值得到。如上所述,这些LPC系数在前一帧计算和存贮。
下一帧两子帧(40样本抽取)的WACF的计算如下Exxk=Σi=039rd(40k+i)rd(40k+i),k=0,1]]>Exyk,j=Σi=039rd(40k+i)rd(40k+i-j),]]>12/2≤j<128/2,k=0,1Eyxk,j=Σi=039rd(40k+i-j)rd(40k+i-j),]]>12/2≤j<128/2,k=0,1n_corrk,j-12/2=(Exyk-j)2ExxEyyk,j,]]>12/2≤j<128/2,k=0,1对n为负的rd(n),一般使用当前帧的低通滤波和抽取的余量(前一帧存贮的)。当前子帧c_corr的NACF也在前一帧计算和存贮。
D.音调轨迹与滞后计算在步骤508,按本发明计算音调轨迹音调滞后。最好按下列公式用有反向轨迹的Viterbi类搜索法计算音调滞后R1i=n_corr0,j+max{n_corr1,j+FAN1,0},]]>0≤i<116/2,0≤j<FAN1,2R2i=c_corr1,j+max{R1j+FAN1,0),]]>0≤i<116/2,0≤j<FAN1,2RM2i=R2i+max{c_corr0,j+FAN1,0),]]>0≤i<116/2,0≤j<FANi,1.
其中FANij是2×58矩阵,{{0,2},{0,3},{2,2},{2,3},{2,4},{3,4},{4,4},{5,4},
{5,5},{6,5},{7,5},{8,6},{9,6},{10,6},{11,6},{11,7},{12,7},{13,7},{14,8},{15,8},{16,8},{16,9},{17,9},{18,9},{19,9},{20,10},{21,10},{22,10},{22,11},{23,11},{24,11},{25,12},{26,12},{27,12},{28,12},{28,13},{29,13},{30,13},{31,14},{32,14},{33,14},{33,15},{34,15},{35,15},{36,15},{37,16},{38,16},{39,16},{39,17},{40,17},{41,16},{42,16},{43,15},{44,14},{45,13},{45,13},{46,12},{47,11}}矢量RM2j经内插得R2i+1值为RMiF+1=Σj=04cfjRM(i-1+j)F,1≤i≤112/2]]>RM1=(RM0+RM2)/2RM2*56+1=(RM2*56+RM2*57)/2RM2*57+1=RM2*57其中cfj是内插滤波器,系数为{-0.0625,0.5625,0.5625,-0.0625}。然后选择滞后Lc,使RLc-12=max{Ri},4≤i<116,将当前帧的NACF置成RLc-12/4。再搜索对应于大于0.9RLc-12的最大相关的滞后,消除滞后倍数,其中Rmax{[Lc/M]-14.16}…R[Lc/M]-10for all1≤M≤[Lc/16]]]>E.计算带能与零交叉速率在步骤510,按本发明计算0-2kHz带与2kHz-4Khz带内的能量EL=Σi=0159sL2(n)]]>EH=Σi=0159sH2(n)]]>其中SL(z)=S(z)bl0+Σi=115bliz-ial0+Σi=115aliz-i]]>SH(z)=S(z)bh0+Σi=115bhiz-iah0+Σi=115ahiz-i]]>S(z),SL(z)和SH(z)分别是输入语音信号s(n),低通信号SL(n)和高通信号Sh(n)的z变换,bl={0.0003,0.0048,0.0333,0.1443,0.4329,
0.9524,1.5873,2.0409,2.0409,1.5873,0.9524,0.4329,0.1443,0.0333,0.0048,0.0003},al={1.0,0.9155,2.4074,1.6511,2.0597,1.05854,0.7976,0.3020,0.1465,0.0394,0.0122,0.0021,0.0004,0.0,0.0,0.0},bh={0.0013,-0.0189,0.1324,-0.5737,1.7212,-3.7867,6.3112,-8.1144,8.1144,-6.3112,3.7867,-1.7212,0.5737,-0.1324,0.0189,-0.0013}andah={1.0,-2.8818,5.7550,-7.7730,8.2419,-6.8372,4.6171,-2.5257,1.1296,-0.4084,0.1183.-0.0268,0.0046,-0.0006,0.0,0.0}语音信号能量本身为 。零交叉速率ECR计算为if(s(n)s(n+1)<0)ZCR=ZCR+1,0≤n<159F.计算元音振峰余量在步骤512,对四个子帧计算当前帧的元音共振峰余量rcurr(n)=s(n)-Σi=110a^is(n-i)]]>其中ai,是相应子帧的第i个LPC系数。
IV.有效/无效语音分类再参照图3,在步骤304,把当前帧分类为有效语音(如讲出的单词)或无效语音(如背景噪声,静寂)。图6的流程图600详细列出了步骤304。在一较佳实施例中,用基于双能带的取域值方法确定有无有效语音。下带(带0)跨越频率为0.1-2.0kHz,上带(带1)为2.0-4.0kHz。在当前帧编码时,最好以下述方法确定下一帧的话音有效性检测。
在步骤602,对各带i=0,1计算带能Eb[i]用下列递归公式将III、A节中的自相关序列扩展到19R(k)=Σi=110aiR(k-i),11≤k≤19]]>利用该公式,从R(1)到R(10)中算出R(11),从R(2)-R(11)中算出R(12),依次类推。再用下式从扩展的自相关序列中算出带能Eb(i)=log2(R(0)Rh(0)(0)+2Σk=119R(k)Rh(i)(k)),i=0,1]]>式中R(K)是当前帧扩展的自相关序列,Rh(i)(k)是表1中带i的带滤波器自相关序列。
表1计算带能的滤波器自相关序列


在步骤604,平滑带能估值,并用下式对各帧更新平滑的带能估值Esm(i)Esm(i)=0.6Esm(i)+0.4Eb(i),i=0,1在步骤606,更新信号能与噪声能的估值。信号能估值Es(i)最好用下式更新。
Es(i)=max(Esm(i),Es(i)),i=0,1噪声能估值En(i)最好用下式更新En(i)=min(Esm(i),En(i)),i=0,1在步骤608,两带的长期信噪比SNR(i)计算为SNR(i)=Es(i)-En(i),j=0,1在步骤610,这些SNR值最好分成8个区RegSNR(i),定义为

在步骤612,以下述方式按本发明判断话音有效性。若Eb(0)-En(0)>THRESH(RegSNR(O)),或Eb(1)-En(1)>THRESH(RegSNR(1)),则判定该语音帧有效,反之为无效。THRESH值由表2规定。
表2阈值系数与SNR区的函数关系

信号能估值Es(i)最好用下式更新Es(i)=Es(i)-0.014499,i=0,1.
噪声能估值En(i)最好用下式更新

A.拖尾帧信噪比很低时,最好加“拖尾”帧提高重建语音的质量。若三个前帧分为有效而当前帧为无效,则包括当前帧在内的后M帧分类为有效语音。拖尾帧数M确定时与表3中规定的SNR(0)成函数关系。
表3拖尾帧与SNR(0)的函数关系

V.有效语音帧的分类再参照照图3,在步骤308,在步骤304分为有效的当前帧再按语音信号s(n)呈现的特性分类。在一较佳实施例中,有效语音分为话音,非话音或过渡。有效语音信号呈现的周期性程度确定了它的分类。话音语音呈现最高度的周期性(准周期特性)。非话音语音很少或不呈现周期性,过渡语音的周期性程度在上述二者之间。
然而,这里描述的一般框架不限于该较佳分类方式,下面描述特定的编/解码器模式。有效语音可以不同方式分类,编码则有不同的编/解码器模式。技术人员应明白,分类与编/解码器模式可以有许多组合方式。许多这样的组合可以按这里描述的一般框架降低平均位速率即一般框架即是把语音分成无效或有效,再对有效语音作分类,然后用特别适合于每一类范围内语音的编/解码器模式编码语音信号。
虽然有效语音分类基于周期性程度,但是分类判断最好不以某种周期性的直接测量为基础,而是从步骤302计算的各种参数为基础,如上下带中的信噪比和NACF。较佳的分类可用下列伪码描述。
<pre listing-type="program-listing"><![CDATA[if not(previousN ACF<0.5 and currentN ACF>0.6) if(currentN ACF<0.75 and ZCR>60)UNVOICED else if(previousN ACF<0.5 and currentN ACF<0.55 and ZCR>50)UNVOICED else if(currentN ACF<0.4 and ZCR>40)UNVOICEDif(UNVOICED and currentSNR>28dB and EL>aEH)TRANSIENT if(previousN ACF<0.5 and currentN ACF<0.5 and E<5e4+N)UNVOICED if(VOICED and low-bandSNR>high-bandSNR and previousN ACF<0.8 and 0.6<currentNACF<0.75)TRANSIENT]]></pre>其中 Nnoise是背景噪声估值,Eprev是前一帧输入能。
用该伪码描述的方法可按实施的特定环境提炼。技术人员应明白,上面给出的各种阈值仅作为示例,实践中可根据实施情况要求调节。该方法还可通过增加附加的分类目录予以精炼,如将TRASIENT分成两类一类用于从高能转为低能的信号,另一类用于从低能转为高能的信号。
技术人员应明白,其它方法也可以区分话音、非话音与过渡有效语音,还可能有其它有效语音的分类方法。
VI.编/解码器模式选择在步骤310,根据步骤304与308分类的当前帧选择编/解码器模式。根据一较佳实施例,模式选成如下选择用NELP模式对无效帧和有效非话音帧编码,用PPP模式对有效话音帧编码,用CELP模式对有效过渡帧编码。下面描述各编/译码器模式。
在一替代实施例中,无效帧用零速率模式编码。技术人员应明白,有许多要求很低位速率的其它零速率模式。研究过去的模式选择,可改良零速率模式的选择。例如,若前一帧分为有效,就可不对当前帧选择零速率模式。同样地,若下一帧有效,可不对当前帧选择零速率模式。另一方法是不对过多的连续帧(如9个连续帧)选用零速率模式。技术人员应明白,可对基本的选模判断作其它许多更改,以改善其在某些环境中的操作。
如上所述,在相同一框架内,可交替地应用许多其它分类的组合和编/解码器模式。下面详述本发明的几种编/解码器模式,先介绍CELP模式,然后叙述PPP与NELP模式。
VII.代码受激的线性预测(CELP)编码模式如上所述,当当前帧分为有效过渡语音时,可应用CELP编/解码模式。该模式能最精确地再现信号(与这里描述的其它模式相比),但是位速率最高。
图7详细示出了CELP编码器模式204和CELP解码器模式206。如图7A图所示,CELP编码器模式204包括音调编码模块702,编码代码簿704和滤波器更新模块706。模式204输出编码的语音信号senc(n),最好包括传输给CELP编码器模式206的代码簿参数与音调滤波器参数。如图7B所示,模式206包括解码代码簿模块708,音调滤波器710和LPC合成滤波器712。CELP模式206接收编码的语音信号而输出合成的语音信号(n)。
A.音调编码模块音调编码模块702接收语音信号s(n)和前一帧量化的余量Pc(n)(下述)。根据该输入,音调解码模块702产生目标信号x(n)与一组音调滤波器参数。在一实施例中,这类参数包括最佳音调滞后L*与最佳音调增益b*。这类参数按“分析加合成”法选择,其中解码处理选择的音调滤波器参数,可将输入语音与用这些参数合成的语音之间的加权误差减至最小。
图8示出了音调编码模块702,这包括感性加权滤波器803,加法器804与816,加权的LPC合成滤波器806与808,延迟与增益810及最小平方和812。
感性加权滤波器802用于对原始语音与以感性有意义的方式合成的语音之间的误差加权。
感性加权滤波器的形式为W(z)=A(z)A(z/&gamma;)]]>式中A(z)是LPC预测误差滤波器,γ最好等于0.8。加权的LPC分析滤波器806接收原始参数计算模块202算出的LPC系数。滤波器806输出的azir(n)是给出LPC系数的零输入响应。加法器804将负输入azir(n)与滤波的输入信号相加以形成目标信号x(n)。
延迟与增益810对给定的音调滞后L与音调增益B输出估算的间调滤波器输出bpL(n),延迟与增益810接收前一帧量化的剩余样本Pc(n)和估算的音调滤波器将来的输出P0(n),按下式形成P(n)。 然后延迟L个样本,用b标定,形成bpL(n)。Lp是子帧长度(最好为40样本)。在一较佳实施例中,音调滞后L用8位代表,可以取值20.0,20.5,21.0,21.5….126.0,126.5,127.0,127.5。
加权的LPC分析滤波器808用当前LPC系数滤波bpL(n)而得出bY2(n)。加法器816将负输入byL(n)与x(n)相加,其输出被最小平方和812接收,后者选择标为L*的最佳L和标为b*的最佳b,而L和b的值按下式将Epitch(L)减至最小Epitch(L)=&Sigma;n=0Lp-1{x(n)-byL(n)}2]]>若 ,且 ,则对规定的L值将Epiteh减至最小的b值为b*=Exy(L)Eyy(L)]]>因此Epitch(L)=K-Exy(L)2Eyy(L)]]>式中K是可以忽略的常数首先确定使Epitch(L)最小的L值,再计算b*,求出L与b的最佳值(L*与b*)最好对各子帧算出这些音调滤波器参数,量化后作有效传输。在一实施例中,第j个子帧的传输代码PLAGj与PGAINj计算成PGAINj=[min{b*,2}82+0.5]-1]]> 若PLAGj置0,则将PGAINj调至-1。这些传输代码发送给CELP解码器模式206作为音调滤波器参数,成为编码的语音信号senc(n)的组成部分。
B.编码代码簿编码代码簿704接收目标信号x(n),并确定一组供CELP解码器模式206使用的代码簿激励参数,与音调滤波器参数一起,以重建量化的剩余信号。
编码代码簿704首先将x(n)更新如下x(n)=x(n)-ypzir(n)、0≤n<40式中ypzir(n)是加权的LPC合成滤波器(带有从前一帧结尾保留数据的存储器)对某一输入的输出,而该输入是带参数L*与b*(和前一子帧处理的存储器)的音调滤波器的零输入响应。
由于 用而建立一反滤波目标 0<n<40,其中 是脉冲响应矩阵,由脉冲响应{hn}和 0≤n<40形成,同样产生了两个以上矢量 和 s&RightArrow;=sign(d&RightArrow;)]]> 其中 编码代码簿704将值Exy*与Eyy*初始化为零,并按以下公式最好用四个N值(0,1,2,3)搜索最佳激励参数。p-=(N+{0,1,2,3,4})%5]]>A={p0,p0+5,…,i′<40}B={p1,p1+5,…,k′<40}Deni,k=2φ0+siskφ|k-i|, i∈A k∈B {S0,S1}={SI0,SI1}]]>Eyy0=EyyI0,I1]]>A={p2,p2+5,…,i′<40}B={p3,p3+5,…,k′<40}Deni,k=Eyy0+2&phi;0+si(S0&phi;|I0-i|+S1&phi;|I1-i|)]]>+sk(S0&phi;|I0-k|+S1&phi;|I1-k|)+sisk&phi;|k-i|]]>i∈Ak∈B {S2,S3}={sI2,sI3}]]>Exy1=Exy0+|dI2|+|dI3|]]>Eyy1=DenI2,I3]]>A={p4,p4+5,…i′<40}Deni=Eyy1+&phi;0+si(S0&phi;|I0-i|+S1&phi;|I1-i|+S2&phi;|I2-i|+S3&phi;|I3-i|),i&Element;A]]>I4=argmaxi&Element;A{Exy1+|di|Deni}]]>S4=sI4]]>Exy2=Exy1+|dI4|]]>Eyy2=DenI4]]>若<pre listing-type="program-listing"><![CDATA[Exy22Eyy*>Exy*2Eyy2{ Exy*=Exy2 Eyy*=Eyy2 {indp0,indp1,indp2,indp3,indp4}={I0,I1,I2,I3,I4} {sgnp0,sgnp1,sgnp2,sgnp3,sgnp4}={S0,S1,S2,S3,S4}}]]></pre>编码代码簿704把代码簿增益G*计算成Exy*/Eyy*,然后对第j个子帧将该组激励参数量化成下列传输码CBIjk=[indk5],0&le;k&lt;5]]> CBGj=[min{log2(max{l,G*}),11.2636}3111.2636+0.5]]]>量化的增益 *为 除去音调解码模块702,只作代码簿搜索以对四个子帧都确定指数I与增益G,就可实现CELP编/解码器模式的较低位速率实施例。技术人员应明白如何扩充上述想法来实现该较低的位速率实施例。
C.CELP解码器CELP解码器模式206从CELP解码器模式204接收解码的语音信号,最好包括代码簿激励参数与音调滤波器参数,并根据该数据输出合成的语音(n)。解码代码簿模块708接收代码簿激励参数,产生增益为G的激励信号Cb(n)。j个子帧的激励信号Cb(n)包含大多数零,但五个位置例外Ik=5CBIjk+k,0≤k<5它相应地具有脉冲值Sk=1-2SIGNjk,0≤k<5所有值均用计算为 的增益G标定,以提供Gcb(n)。
音调滤波器710按下列公式对接收传输代码的音调滤波器参数解码L^*=PLAGj2]]> 音调滤波器710接着滤波Gcb(n),滤波器的传递函数为1P(z)=11-b*z-L*]]>在一实施例中,在音调滤波器710之后,CELP解码器模式706还加接了额外的滤波操作的音调前置滤波器(未示出)。音调前置滤波器的滞后与音调滤波器710的滞后相同,但其增益最好是最高达0.5的音调增益的一半。LPC合成滤波器712接收重建的量化剩余信号 ,输出合成的语音信号(n)。
D.滤波器更新模块滤波器更新模块706像前一节描述的那样合成语音,以便更新滤波器存储器。滤波器更新模块706接收代码簿激励参数与音调滤波器参数,产生激励信号cb(n),对Gcb(n)作音调滤波,再合成(n)。在解码器作这一合成,就更新了音调滤波器与LPC合成滤波器中的存储器,供处理后面的子帧使用。
VIII.原型音调周期(PPP)编码模式原型音调周期(PPP)编码法利用语音信号的周期性实现比CELP编码法可得到的更低的位速率。一般而言,PPP编码法涉及提取一代表性的剩余个周期,这里称为原型余量,然后用该原型通过在当前帧的原型余量与前一帧的类似音调周期(如果最后帧是PPP,即为原型余量)之间作内插,在该帧内建立早期音调周期,PPP编码法的有效性(降低位速率)部分取决于如何使当前与前一原型余量精密地类似于介入的音调周期。为此,最好将PPP编码法应用于呈现出相对高度周期性的语音信号(如话音语音),这里指准周期语音信号。
图9详细示出了PPP编码器模式204和PPP解码器模式206,前者包括提取模块904,旋转相关器906,编码代码簿908和滤波器更新模块910。PPP编码器模式204接收剩余信号r(n),输出编码的语音信号senc(n),最好包括代码簿参数和旋转参数。PPP解码器模式206包括代码簿解码器912、旋转器914,加法器916,周期内插器920和弯曲滤波器918。
图10的流程图1000示出PPP编码的步骤,包括编码与解码。这些步骤与PPP编码器模式204和PPP解码器模式206一起讨论。
A.提取模块在步骤1002,提取模块904从剩余信号r(n)中提取原型余量rp(n)。如III、F、节所述,初始参数计算模块202用LPC分析滤波器计算各帧的rp(n)。在一实施例中,如VII、A节所述,该滤波器的LPC系数作感性加权。rp(n)的长度等于原始参数计算模块202在当前帧最后一个子帧中算出的音调滞后L。
图11是详细示出步骤1002的流程图。PPP提取模块904最好尽量接近帧结束时选择音调周期,并加下述的某些限制。图12示出一例基于准周期语音计算的剩余信号,包括当前帧与前一帧的最后一个子帧。
在步骤1102,确定“无切割区”。无切割区限定一组余量中不能是原型余量终点的样本。无切割区保证余量的高能区不出现在原型的开始或结束(会造成输出中允许出现的断续性)。计算r(n)最后L个样本每一样本的绝对值。变量Ps置成等于最大绝对值(这里称为“音调尖峰”)样本的时间指数。例如,若音调尖峰出现在最后L个样本的最后一个样本中,Ps=L-1。在一实施例中,无切割区的最小样本CFmin置成Ps-6或Ps-0.25L,无论哪个更小。无切割区的最大值CFmax置成Ps+6或Ps+0.25L,无论哪个更大。
在步骤1104,从余量中切割L个样本,选择原型余量,在区域终点不能在无切割区内的约束下,选择的区域尽量接近帧的结束处。用以下列伪码描述的算法确定原型余量的L个样本
<pre listing-type="program-listing"><![CDATA[(CFmin<0){for(i=0toL+CFmin-1)rp(i)=r(i+160-L)for(i=CFmin to L-1)rp=r(i+160-2L)}else if (CFmin≤L{ for(i=0 to CFmin-1)rp(i)=r(i+160-L) for(i=CFmin to L-1)rp(i)=r(i+160-2L)else{for(i=0toL-1)rp(i)=r(i+160-L)]]></pre>B.旋转相关器再参照图10,在步骤1004,旋转相关器906根据当前原型余量rp(n)和前一帧的原型余量rprev(n)计算一组旋转参数。这些参数描述怎样最佳地旋转和标定rprev以用作rp(n)的预测器。在一实施例中,这组旋转参数包括最佳旋转R*与最佳增益b*。图13是详细示出步骤1004的流程图。
在步骤1302,对原型音调余量周期rp(n)作循环滤波,算出感性加权的目标信号x(n)。这是按如下方式实现的。由rp(n)产生临时信号tmp1(n)tmp1(n)={0,L&le;n&lt;2Lrp(n),0&le;n&lt;L]]>将其用零存储器的加权LPC合成滤波器滤波,以提供输出tmp2(n)。在一实施例中,使用的LPC系数是对应于当前帧最后一个子帧的感性加权系数。于是,目标信号x(n)为x(n)=tmp2(n)+tmp2(n+L),0≤n<L在步骤1304,从前一帧量化的元音共振峰余量(也存在音调滤波器的存储器中)中提取前一帧的原型余量γprev(n)。该前一原型余量最好定义为前一帧元音共振峰余量的最后LP值,若前一帧不是PPP帧,Lp等于L,否则置成前一音调滞后。
在步骤1306,把γprev(n)的长度改为与x(n)一样长,从而正确地计算相关性。这里把改变采样信号长度的这种技术称为弯曲。弯曲的音调激励信号γwprev(n)可以描述成rwprev(n)=rprev(n*TWF),0≤n<L
式中TWF是时间弯曲系数Lp/L。最好用一套sinc函数表计算非整数点n*TWF的样本值。选择的sinc序列是sinc(-3-F4-F),F是n*TWF的小数部分,含入最接近的1/8倍数。该序列的开头对准rprev(N-3)%Lp),N是n*TWF在含入最接近第八位后的整数部分。
在步骤1308,循环滤波弯曲的音调激励信号rwprev(n),得出y(n)。该操作与上述对步骤1302作的操作一样,但应用于rwprev(n)。
在步骤1310,计算音调旋转搜索范围,首先计算期望的旋转ErotErot=L-round(Lfrac((160-L)(Lp+L)2LpL))]]>frac(x)给出X的小数部分。若L<80,则音调旋转搜索范围定义为{Erot-8,Erot-7.5,…Erot+7.5}和{Erott-16,Erot-15…Erot+15},其中L>80。
在步骤1312,计算旋转参数,最佳旋转R*与最佳增益b*。在x(n)和y(n)之间导致最佳预测的音调旋转与相应的增益b一起选择。这些参数最好选成将误差信号e(n)=x(n)-y(n)减至最小。最佳旋转R*与最佳增益b*是导致ExyR2/Eyy最大值的那些旋转R与增益b值,其中 和 ,在旋转R*时的最佳增益b*为ExyR*/Eyy。对于旋转的小数值,通过对在整数旋转值时算出的ExYR值作内插,求出ExyR的近似值。应用了一种简单的四带内插滤波器,如ExyR=0.54((ExyR′+ExyR′+1)-0.04*(ExyR-1+EryR′+2)R是非整数的旋转(精度0.5),R’=|R|。
在一实施例中,旋转参数作量化以有效地传输。最佳增益 最好在0.0625和4.0之间均匀地量化成PGAIN=max{min([63(b*-0.06254-0.0625)+0.5],63),0}]]>式中PGAIN为传输码,量化增益b*由max{0.0625+(PGAIN(4-0.0625)/63),0.0625}给出。将最佳旋转R*量化成传输码PROT,若L<80。将其置成2(R*-Erot+8),L≥80,则R*-Erot+16。
C.编码代码簿再参照图10,在步骤1006,编码代码簿908根据接收的目标信号x(n)产生一组代码簿参数。代码簿908设法求出一个或多个代码矢量,经标定,相加和滤波后,加成接近x(n)的信号。在一实施例中,编码代码簿908构成多级代码簿,最好是三级,每级产生一种标定的代码矢量。因此,该组代码簿参数包括了对应于三种代码矢量的标引和增益。图14是详细示出步骤1006的流程图。
在步骤1402,搜索代码簿之前,将目标信号x(n)更新成x(n)=x(n)-by((n-R*)%L),0≤n<L若在上述减法中旋转R*不是整数(即有小数0.5),则y(i-0.5)=-0.0073(y(i-4)+y(i+3))+0.0322(y(i-3)+y(i+2))-0.1363(y(i-2)+y(i+1))+0.6076(y(i-1)+y(i))式中i=n-|R*|在步骤1404,将代码簿值分成多个区域。根据一实旋例,把代码簿确定为 式中CBP是随机或训练的代码簿值。技术人员应知道这些代码簿值是如何产生的。把代码簿划分成多个区域,长度各为L。第一区是单脉冲,其余各区由随机或训练的代码簿值组成。区数N将为[128/L]。
在步骤1406,代码簿的多个区都作循环滤波而产生滤波的代码簿,yreg(n),其串联是信号y(n)。对每一区,按上述步骤1302作循环滤波。
在步骤1408,计算各区滤波的代码簿能量Eyy(reg)并存贮起来Eyy(reg)=&Sigma;i=0L-1yreg(i),0&le;reg&lt;N]]>在步骤1410,计算多级代码簿各级的代码簿参数(即代码矢量标引与增益)。根据一实施例,使Region(I)=reg,定义为其中有样本I的区即, 并假定将Exy(I)定义为Exy(I)=&Sigma;i=0L-1x(i)yRegton(I)((i+I)%L)]]>第j代码簿级的代码簿参数I*与G*用下列伪码计算Exy*=0,Eyy*=0for(I=Oto127){compute Exy(I) Exy*=Exy(I)Eyy*=Eyy(Region(I))I*=I}}而且G*=Exy*/Eyy*。
根据一实施例,代码簿参数量化后作有效传输。传输代码CBIj(j=级数-0,1或2)最好置成I*,而传输代码CBGj与SIGNj通过量化增益G*而设置 CBGj=[min{max{0,log2(|G*|)},11.25}43+0.5]]]>量化的增益 为 然后减量当前级代码簿矢量的贡献,更新目标信号x(n)x(n)=x(n)-G^*yRegion(I*)((n+I*)%L),0&le;n&lt;L]]>上述从伪码开始的步骤重复进行,对第二和第三级计算I*,G*和相应的传输代码。
D.滤波器更新模块再参照图10,在步骤1008,滤波器更新模块910更新PPP解码器模式204所使用的滤波器。图15A与16A示出两个替代的滤波器更新模块910的实施例。如图15A的第一替代实施例,滤波器更新模块910包括解码代码簿1502,旋转器1504,弯曲滤波器1506,加法器1510,对准与内插模块1508,更新音调滤波器模块1512,和LPC合成滤波器1514。图16A的第二实施例包括解码代码簿1602,旋转器1604,弯曲滤波器1606,加法器1608,更新音调滤波器模块1610,循环LPC合成滤波器1612和更新LPC滤波器模块1614,图17与18是详细示出这两个实施例中步骤1008的流程图。
在步骤1702(和1802,两实施例的第一步骤),由代码簿参数与旋转参数重建当前重建的原型余量rcurr(n),长度为L样本,。在一实施例中,旋转器1504(和1604)按下式旋转弯曲型的前一原型余量rcurr((n+R*)%L)=brwprsv(n),0≤n<L式中rcurr是要建立的当前原型,rwprev是由音调滤波器存储器中最新L个样本获得的弯曲型前一周期(如VIIIA节所述,TWF=Lp/L),由包传输码获得的音调增益b和旋转R为b=max{0.0625(PGAIN(4-0.0625)63),0.0625}]]> 其中Erot是上述VIIIB节算出的期望的旋转。解码代码簿1502(和1602)将三个代码簿级的每级的贡献加到rcurr(n) 式中I=CBIj,G如上节所述由CBGj和SIGj获得,j为级数。
在这方面,滤波器更新模块910的这两个替代实施例有所不同。先参照图15A的实施例,在步骤1704,从当前帧开头到当前原型余量开头,对准与内插模块1508填入剩余样本的其余部分(如图12所示)。这里对剩余信号对准和内插。然而,如下所述,还对语音信号作同样的操作。图19是详细描述步骤1704的流程图。
在步骤1902,确定前一滞后LP是否相对于当前滞后L为两倍或是一半。在一实施例中,其它倍数不太可能,故不予考虑。若Lp>1.85L,LP为一半,只使用前一周期rprev(n)的前一半。若Lp>0.54L,当前滞后L可能加倍,因而LP也加倍,前一周期Rprev(n)反复扩展。
在步骤1904,如步骤1306所述,rprev(n)弯成rwprev(n),TWF-LP/L,因而两原型余量的的长度现在相同。注意,该操作在步骤1702执行,如上所述,做法是弯曲滤波器1506。技术人员应明白,若弯曲滤波器1506对对准与内插模块1508有输出,就不需要步骤1904。
在步骤1906,计算允许的对准旋转范围。期望的对准旋转EA的计算与VIIIB节所述的Erot的计算相同。对准旋转搜索范围定义为{EA-δA,EA-δA+0.5,EA-δA+1…EA-δA-1.5,EA-δA-1},δA=max{6,0.15L}。
在步骤1908,把整数对准旋转R前一与当前原型周期之间的交叉相关性计算成C(A)=&Sigma;i=0L-1rcurr((i+A)%L)rwprev(i)]]>通过在整数旋转处内插相关值,近似算出非整数旋转A的交叉相关性C(A)=0.54(C(A′)+C(A′+1))-0.04(C(A′-1)+C(A′+2))式中A’=A-0.5。
在步骤1910,将导致C(A)最大值的A值(在允许旋转范围内)选为最佳对准,A*。
在步骤1912,按下述方法算出中间样本的平均滞后或音调周期Lav。周期数估值Nper算为Nper=round(A*L+(160-L)(Lp+L)2LpL)]]>中间样本的平均滞后为Lav=(160-L)LNperL-A*]]>在步骤1914,根据下述在前一与当前原型余量之间的内插,算出当前帧中其余的剩余样本
式中x=L/Lav。非整数点 的样本值(等于nα或nα+A*)用一套sinc函数表计算。选择的sinc序列为sinc(-3-F4-F),其中F是n舍入最接近1/8倍数的小数部分,序列开头对准rprev((N-3)%LP),N是 舍入最接近1/8后的整数部分。
注意,该操作与上述步骤1306的弯曲基本上相同。因此,在一替代实施例中,步骤1914的内插值用弯曲滤波器计算。技术人员应明白,对于这里描述的各种目的,重复使用单个弯曲滤波器更经济。
参照图17,在步骤1706,更新音调滤波器模块1512从重建的余量 将值复制到音调滤波器存储器。同样地,也要更新音调滤波器的存储器。
在步骤1708,LPC合成滤波器1514对重建的余量 滤波,作用是更新LPC合成滤波器的存储器。
现在描述图16A的第二个滤波器更新模块910实施例。如步骤1702所述,在步骤1802,由代码簿与旋转参数重建原型余量,导致rcurr(n)。
在步骤1804,按下式从rcurr(n)复制L样本复制件,更新音调滤波器模块1610更新音调滤波器存储器。
pitch_mem(i))=rcurr((L-(131%L)+i)%L),0≤i<13l或者pitch_mem(131-1-i)=rcurr(L-l-i%L),O≤i<131其中131最好是最大滞后为127.5的音调滤波器阶数。在一实施例中,音调前置滤波器的存储器同样用当前周期rcurr(n)的复制件替换pitch_prefilt_mem(i)=pitch_mem(i),0≤i<131在步骤1806,rcurr(n)最好应用感性加权的LPC系数循环滤波,如VIIIB节所述,导致sc(n)。
在步骤1808,用sc(n)的值,最好是后10个值(对第10阶LPC滤波器)更新LPC合成滤波器的存储器。
E.PPP解码器参照图9和10,在步骤1010,PPP解码器模式206根据收到的代码簿与旋转参数重建原型余量rcurr(n)。解码代码簿912,旋转器914和弯曲滤波器918的工作方式如上节所述。周期内插器920接收重建的原型余量rcurr(n)和前一重建的原型余量rcurr(n),在两个原型之间内插样本,并输出合成的语音信号 下节描述周期内插器920。
F.周期内插器在步骤1012,周期内插器920接收rcurr(n),输出合成的语音信号(n)。图15A与16b是两个周期内插器920的替代实施例。在图15B的第一例中,周期内插器920包括对准与内插模块1516,LPC合成滤波器1518和更新音调滤波器模块1520。图16B的第二例包括循环LPC合成滤波器1616,对准与内插模块1618,更新音调滤波器模块1622和更新LPC滤波器模块1620。图20和21表示两实施例的步骤1012的流程图。
参照图15B,在步骤2002,对准与内插模块1516对当前剩余原型rcurr(n)与前一剩余原型rprev(n)之间的样本重建剩余信号,形成 ,模块1516以步骤1704所述的方式(图19)操作。
在步骤2004,更新音调滤波器模块1520根据重建的剩余信号 更新音调滤波器存储器,如步骤1706所述。
在步骤2006,LPC合成滤波器1518根据重建的剩余信号 合成输出语音信号 操作时,LPC滤波器存储器自动更新。
参照图16B和21,在步骤2102,更新音高调滤波器模块1622根据重建的当前剩余原型rcurr(n)更新音调滤波器存储器,如步骤1804所示。
在步骤2104,循环LPC合成滤波器1616接收rcurr(n),合成当前语音原型sc(n)(长为L样本),如VIIIB节所述。
在步骤2106更新LPC滤波器模块1620更新LPC滤波器存储器,如步骤1808所述。
在步骤2108,对准与内插模块1618在前一与当前原型周期之间重建语音样本。前一原型余量rprev(n)循环滤波(在LPC合成结构中),仅内插可以语音域进行。对准与内插模块1618以步骤1704的方式操作(见图19),只是对语音原型而不是对剩余原型操作。对准与内插的结果就是合成的语音信号s(n)。
IX.噪声激励的线性预测(NELP)编码模式噪声激励的线性预测(NELP)编码法将语音信号模拟成一个伪随机噪声序列,由此实现比CELP或PPP编码法更低的位速率。用信号再现来衡量,NELP解码的操作最有效,此时语音信号很少有或没有音调结构,如非话音或背景噪声。
图22详细示出了NELP编码器模式204和NELP解码器模式206,前者包括能量估算器2202和编码代码簿2204,后者包括解码代码簿2206,随机数发生器2210,乘法器2212和LPC合成滤波器2208。
图23是示明NELP编码步骤的流程图2300,包括编码和解码。这些步骤与NELP编/解码器模式的各种元件一起讨论。
在步骤2302,能量估算器2202将四个子帧的剩余信号能量都算成Esfi=0.5log2(&Sigma;n=40i40i+39s2(n)40),0&le;i&lt;4]]>在步骤2304,编码代码簿2204计算一组代码簿参数,形成编码的语音信号senc(n)。在一实施例中,该组代码簿参数包括单个参数,即标引I0,它被置成等于j值,并将 其中0≤j<128减至最小。代码簿矢量SFEQ用于量化子帧能量Esfi,并包括等于帧内子帧数的元数(在实施例中为4)。这些代码簿矢量最好按技术人员已知的普通技术产生,用于建立随机或训练的代码簿。
在步骤2306,解码代码簿2206对收到的代码簿参数解码。在一实施例中,按下式解码该组子帧增益GiG1=2SFEQ(10,1),或G1=20.2SFEQ(10,1)+0.2log Gprsv-2(用零速率编码方案对前一帧编码)其中0≤i<4,Gprev是代码簿激励增益,对应于前一帧的最后一个子帧。
在步骤2308,随机数发生器2210产生一单位变化随机矢量nz(n),该矢量在步骤2310按各子帧内合适的增益Gi标定,建立激励信号Ginz(n)。
在步骤2312,LPC合成滤波器2208对激励信号Ginz(n)滤波,形成输出语音信号 在一实施例中,也应用了零速率模式,其中对当前帧的各子帧使用了从最近非零速率NWLP子帧获得的增益G,与LPC参数。技术人员应明白,在连续出现多个NELP帧时,可有效地应用这种零速率模式。
X.结论虽然以上描述了本发明的各种实施例,但应明白,这些都是示例,不用来作限制,因此,本发明的范围不受上述任一示例性实施例限制,仅由所附的权项及其等效物限定。
上述诸较佳实施例的说明可供任何技术人员用于制作或应用本发明。尽管参照诸较佳实施例具体示出并描述了本发明,但是技术人员应明白,在不违背本发明的精神与范围的情况下,可在形式上和细节上作出各种变化。
权利要求
1.一种用于语音信号的可变速率编码的方法,其特征在于,包括以下步骤(a)把语音信号归类为有效或无效;(b)把所述有效语音归类为多个有效语音类型中的一个;(c)根据语音信号是有效还是无效,如果有效,则进一步根据所述有效语音类型来选择编码模式;(d)依据所述编码模式对语音信号进行编码,从而形成经编码的语音信号。
2.如权利要求1所述的方法,其特征在于还包括依据所述编码模式对所述经编码的语音信号进行解码从而形成合成语音信号的步骤。
3.如权利要求1所述的方法,其特征在于所述编码模式包括CELP编码模式、PPP编码模式或NELP编码模式。
4.如权利要求3所述的方法,其特征在于所述编码步骤依据所述编码模式以与所述编码模式有关的预定位速率进行编码。
5.如权利要求4所述的方法,其特征在于所述CELP编码模式与每秒8500位的位速率有关,所述PPP编码模式与每秒3900位的位速率有关,所述NELP编码模式与每秒1550位的位速率有关。
6.如权利要求3所述的方法,其特征在于所述编码模式还包括零速率模式。
7.如权利要求1所述的方法,其特征在于所述多个有效语音类型包括话音、非话音和过渡有效语音。
8.如权利要求7所述的方法,其特征在于选择编码模式的所述步骤包括以下步骤(a)如果所述语音被归类为有效过渡语音,则选择CELP模式;(b)如果所述语音被归类为有效话音语音,则选择PPP模式;以及(c)如果所述语音被归类为无效语音或有效非话音语音,则选择NELP模式。
9.如权利要求8所述的方法,其特征在于如果选中所述CELP模式,则所述经编码的语音信号包括代码簿参数和音调滤波器参数,如果选中所述PPP模式,则所述经编码的语音信号包括代码簿参数和旋转参数,或者如果选中所述NELP模式,则所述经编码的语音信号包括代码簿参数。
10.如权利要求1所述的方法,其特征在于所述把语音归类为有效或无效的所述步骤包括基于两个能带的阈值处理方案。
11.如权利要求1所述的方法,其特征在于所述把语音归类为有效或无效的所述步骤包括在前Nho个帧被归类为有效时,把后M个帧归类为有效的步骤。
12.如权利要求1所述的方法,其特征在于还包括使用“超前”来计算初始参数的步骤。
13.如权利要求12所述的方法,其特征在于所述初始参数包括LPC系数。
14.如权利要求1所述的方法,其特征在于所述编码模式包括NELP编码模式,以线性预测编码(LPC)分析滤波器对语音信号进行滤波而产生的剩余信号来表示该语音信号,所述编码步骤包括以下步骤(i)估计剩余信号的能量,以及(ii)从第一代码簿中选择一代码矢量,其中所述代码矢量近似于所述估计的能量;所述解码步骤包括以下步骤(i)产生一随机矢量,(ii)从第二编码簿中检索所述代码矢量,(iii)根据所述代码矢量对所述随机矢量进行定标,从而所述经定标的随机矢量的能量近似于所述估计的能量,以及(iv)以LPC合成滤波器对所述经定标的随机矢量进行滤波,其中所述经滤波的定标随机矢量形成所述合成语音信号。
15.如权利要求14所述的方法,其特征在于语音信号被分成帧,每个所述帧包括两个或更多的子帧,所述估计能量的步骤包括估计每个所述子帧的剩余信号的能量,所述代码矢量包括近似于每个所述子帧的估计能量的值。
16.如权利要求14所述的方法,其特征在于所述第一代码簿和所述第二代码簿是随机代码簿。
17.如权利要求14所述的方法,其特征在于所述第一代码簿和所述第二代码簿是训练代码簿。
18.如权利要求14所述的方法,其特征在于所述随机矢量包括单位变量随机矢量。
19.一种用于对语音信号进行编码的可变速率编码系统,包括归类装置,用于把语音信号归类为有效或无效,如果有效,则把所述有效语音归类为多个有效语音类型中的一个;多个编码装置,用于把语音信号编码成为经编码的语音信号,其中根据语音信号有效还是无效,如果有效,则进一步根据所述有效语音类型而动态选择所述编码装置对语音信号进行编码。
20.如权利要求19所述的系统,其特征在于还包括对所述经编码的语音信号进行解码的多个解码装置。
21.如权利要求19所述的系统,其特征在于所述多个编码装置包括CELP编码装置、PPP编码装置和NELP编码装置。
22.如权利要求20所述的系统,其特征在于所述多个解码装置包括CELP解码装置、PPP解码装置和NELP解码装置。
23.如权利要求21所述的系统,其特征在于每个所述编码装置以一预定位速率进行编码。
24.如权利要求23所述的系统,其特征在于所述CELP编码装置以每秒8500位的速率进行编码,所述PPP编码装置以每秒3900位的速率进行编码,所述NELP编码装置以每秒1550位的速率进行编码。
25.如权利要求21所述的系统,其特征在于所述多个编码装置还包括零速率编码装置,所述多个解码装置还包括零速率解码装置。
26.如权利要求19所述的系统,其特征在于所述多个有效语音类型包括话音、非话音和过渡有效语音。
27.如权利要求26所述的系统,其特征在于如果所述语音被归类为有效过渡语音,则选择所述CELP编码器,如果所述语音被归类为有效话音语音,则选择所述PPP编码器;以及如果所述语音被归类为无效语音或有效非话音语音,则选择所述NELP编码器。
28.如权利要求27所述的系统,其特征在于如果选中所述CELP编码器,则所述经编码的语音信号包括代码簿参数和音调滤波器参数,如果选中所述PPP编码器,则所述经编码的语音信号包括代码簿参数和旋转参数,或者如果选中所述NELP编码器,则所述经编码的语音信号包括代码簿参数。
29.如权利要求19所述的系统,其特征在于所述归类装置根据两个能带的阈值处理方案把语音归类为有效或无效。
30.如权利要求19所述的系统,其特征在于如果前Nho个帧被归类为有效,所述归类装置把后M个帧归类为有效。
31.如权利要求19所述的系统,其特征在于以线性预测编码(LPC)分析滤波器对语音信号进行滤波而产生的剩余信号来表示该语音信号,所述多个编码装置包括NELP编码装置,所述NELP编码装置包括能量估计器,用于计算剩余信号的能量的估计,以及编码代码簿装置,用于从第一代码簿中选择一代码矢量,其中所述代码矢量近似于所述估计的能量;所述多个解码装置包括NELP解码装置,所述NELP解码装置包括随机数发生器,用于产生一随机矢量,解码代码簿装置,用于从第二编码簿中检索所述代码矢量,乘法装置,用于根据所述代码矢量对所述随机矢量进行定标,从而所述经定标的随机矢量的能量近似于所述估计的能量,以及用于以LPC合成滤波器对所述经定标的随机矢量进行滤波的装置,其中所述经滤波的定标随机矢量形成所述合成语音信号。
32.如权利要求19所述的系统,其特征在于语音信号被分成帧,每个所述帧包括两个或更多的子帧,所述能量估计器装置计算每个所述子帧的剩余信号的能量的估计,所述代码矢量包括近似于每个所述子帧的估计能量的值。
33.如权利要求19所述的系统,其特征在于所述第一代码簿和所述第二代码簿是随机代码簿。
34.如权利要求19所述的系统,其特征在于所述第一代码簿和所述第二代码簿是训练代码簿。
35.如权利要求19所述的系统,其特征在于所述随机矢量包括单位变量随机矢量。
全文摘要
一种用于对语音信号进行可变速率编码的方法和设备。对输入语音信号进行归类,根据此归类选择适当的编码模式。对于每个归类,选择以可接受的语音再现质量实现最低位速率的编码模式。通过仅利用高保真模式(即,广泛适用于不同类型的语音的高的位速率),在可接受的输出需要此保真度的语音部分中实现低的平均位速率。在这些模式产生可接受的输出的语音部分中使用较低的位速率。把输入语音信号归类为有效和无效区。有效区被进一步归类为话音、非话音和过渡区。可依据所需的保真水平把各种编码模式应用于不同类型的有效语音。可依据每个特定模式的强弱来利用编码模式。在语音信号的性质随时间而变化时,本设备在这些模式之间的动态切换。在适当时,把语音的区域模拟成伪随机噪声,从而获得明显较低的位速率。本发明以动态的方式使用此编码,而无论检测到非话音语音还是背景噪声。
文档编号H03M7/30GK1331826SQ99814819
公开日2002年1月16日 申请日期1999年12月21日 优先权日1998年12月21日
发明者S·曼朱那什, W·加德纳 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1