可变速率声码器的制作方法

文档序号:2837153阅读:295来源:国知局
专利名称:可变速率声码器的制作方法
技术领域
本发明涉及语音处理。具体讲,本发明涉及一种用于压缩语音的新颖且已改进的方法和系统,其中,压缩量动态地变化,但对再生语音的质量影响最小。此外,由于压缩后的语音数据要通过一个有可能引入错误的信道传送,故而本发明的方法和系统还会将信道传输错误对声音的影响减至最小。
(2)背景技术利用数字技术传送声音已经得到广泛的应用,在远距离和数字式无线电话设备中尤其如此。这转而使人们有兴趣确定在保持再生语音听觉质量的信道上能够传送的最低信息量。如果语音是在简单取样并数字化后传送的,那么,为了达到普通模拟式电话机的语音质量,就需要64千比特/每秒(Kbps)数量级的数据速率。但是,通过采用语音分析,再进行适当的编码、传送,在接收器中进行再合成,就能显著地降低数据速率。
采用人类语言信号产生模型所提取的参数来完成语声压缩技术的装置通常称为声码器。这类装置由一个分析传入的语音以提取相关参数的编码器和一个利用在传输信道中接收到的参数重新合成语音的译码器组成。为了精确些,模型必须不时地变化。这样,语音被划分成时间段或分析帧,每一帧内进行参数的计算。然后对每一新的帧更新参数。
在不同类别的语音编码器中,编码激励线性预测编码(CELP)、随机编码或矢量激励语音编码是属于一类的。在汤姆斯E.特莱门等人所著,发表于1988年移动卫星研讨会论文集上的论文“一种4.8Kbps编码激励线性预测编码器”中描述了这一特定类别的一个编码算法例子。
声码器的功能是消除语音中固有的自然冗余,从而将数字化语音信号压缩成低比特率信号。通常,语音中含有主要是因声道的滤波动作而产生的短期冗余,和因发声区域声带的激励而产生的长期冗余。在CELP编码器中,这些发声区域的动作用两个滤波器来模拟,一个是短期共振峰滤波器,另一个是长期音调滤波器(pitch filter)。一旦除去这些冗余,得到的剩余信号就能模拟成白色高斯噪声,这也必须编码。这种技术的基础是计算一个称为LPC滤波器的参数,该滤波器利用人的声道模型来进行语音波形的短期预测。另外,与语音的音调有关的长期作用则通过计算一个主要模拟人的声带的音调滤波器的参数而得到模拟。最后,这些滤波器还必须被激励,这是通过从码书的大量随机激励波形中确定一个在激励上述两个滤波器的时候产生最接近原始语音的效果的波形而完成的。这样,被传送的参数涉及到三项(1)LPC滤波器,(2)音调滤波器,(3)码书激励。
声码技术的应用在尝试减少信道中传送的信息量而仍旧保持再生语音的质量这一点上离目标更进了一步,虽然如此,但还需要采用其它技术,来实现进一步的缩减。以前用来缩减信息传送量的一种技术是声音动作选通。在这种技术中,语音停顿时不传送信息。这种技术实现了预期的数据缩减效果,但存在着几个缺陷。
在许多情况下,由于削去了字语的初始部分,语音质量降低了。在不动作时切断信道的另一问题是系统用户感觉到缺少了通常伴随着语音的背景噪声,因此认为信道的质量低于普通电话。动作选通的再一个问题是,在没有语音时背景中偶然的突发噪声会引发发送器,在接收器中产生恼人的噪声群。
改进声音动作选通系统中合成语音的质量的一个尝试是在译码过程中加入合成的令人舒适的噪声。虽然通过加入舒适的噪声达到了质量上的某些提高,但是,由于舒适的噪声并不模拟编码器中的实际背景噪声,所以它并不能显著地改进总体质量。
进行数据压缩以实现需要传送的信息的缩减的一种更好的技术是进行可变速率声音编码。因为语音本身含有静默期间,例如停顿,所以,代表这些期间所需的数据量可以缩减。可变速率声音编码通过降低这些静默期间的数据速率而最有效地利用了这一事实。在静默期间数据速率的降低,与数据传送完全停止相反,克服了与声音动作选通相关的难题,同时实现了传送信息的缩减。
因而,本发明的一个目的是提供一种利用可变速率声音编码技术来压缩语音的新颖和改进的方法和系统。
(3)

发明内容
本发明采用了上述类别语音编码器的声音编码算法,即编码激励线性预测编码(CELP)、随机编码或矢量激励语音编码。CELP技术本身就能使表示语音所必需的数据量显著减少,并在重新合成时给出高质量的语音。如前所述,声码器参数就每一帧进行更新。本发明的声码器藉助于改变模型参数的频率和精度,形成可变的输出数据速率。
本发明极显著地不同于基本的CELP技术,在语音动作的基础上产生可变的输出数据速率。其结构被定义后,使得参数在语音停顿过程中较少或以较低精度进行更新。该技术使得要传送的信息量更加减少。被利用来降低数据速率的关键是声音动作因子,它是某一指定说话者在交谈过程中实际说话的平均时间百分比,就通常的双向电话交谈而言,该平均数据速率可降到1/2或更多。在语音停顿过程中,声码器只对背景噪声进行编码。在这些时候,与人的声道模型有关的某些参数勿需传送。
如前所述,先前在静默过程中限制信息传送量的途径称为声音动作选通,这是一种在静默的期间不传送信息的技术。在接收侧,该期间中加入合成的“舒适噪声”。与此相反,可变速率声码器持续不断地进行数据传送,在较佳实施例中是以大约介于8Kbps和1Kbps之间的速率进行的。进行连续数据传送的声码器消除了对“舒适噪声”的需求,而以背景噪声的编码给重新合成的语音提供更真实的质量。因而,本发明在语音和背景音之间进行平滑的转变,藉此,在重新合成的语音质量上,比声音动作选通有了更显著的改善。
本发明还结合了一种掩盖发生的错误的新颖技术。因为数据要通过一个可能有噪音的信道传送,如在无线电线路中传送,所以,它必须在数据中能容错。利用信道编码来减少所遇到的出错总数的先有技术在减少错误方面能够有某些成功之处。但是,仅有信道编码还不能完全达到保证高质量再生语言所必需的错误警戒水平。在声音编码持续进行的可变速率声码器中,一个错误可能会破坏涉及到某个重要的语音内容的数据,例如与一个单词或一个音节开头部分有关的数据。基于线性预测编码的声码器所带来的一个典型难题是,与声道模型有关的参数中的错误会产生类似人声的声音,还会将原始单词的发音改变到足以使听者迷惑的程度。在本发明中,错误被掩盖住,以降低其可觉察程度。这样,本发明所采用的错误掩盖技术使得错误对语音清晰度的影响急剧减少。
因为任何参数能够改变的最大数量在低速率下被限制在较小范围中,所以,在这些速率下所传送的参数中的错误会较少地影响语音质量。由于在不同速率下的错误对语音质量有不同的可觉察的影响,所以,传送系统可以最优化,以对较高速率的数据提供更多保护。因而,作为一个附加特征,本发明容忍信道错误能力较强(具有鲁棒性)。
本发明通过采用可变速率输出形式的CELP算法,使得语音压缩率根据声音大小不同在8∶1到64∶1范围内动态地变动。刚才的压缩因子是对μ律输入而言的,对于线性输入,该压缩因子将增大一倍。速率的确定是对各个帧分别进行的,以便充分地得益于声音动作因子。即使由于语音停顿而产生较少的数据,重新合成的背景噪声让人察觉到的质量降低也是最小的。利用本发明的技术,在最大数据速率8Kbps下可以实现质量近似于长途电话的语音,在普通对话中的平均数据速率处于3.5Kb-ps的量级。
本发明能够检测出语音中的短暂停顿,因而实现了有效声音动作因子的降低。速率确定是逐帧进行的,没有遗漏,因而,在短到一个帧周期的语音停顿间隙内数据速率可放慢,对较佳实施例,帧周期的典型值为20msec。因而,可以捕捉诸如在音节之间的那些停顿。因为不仅词组之间的长间歇停顿可以编码成较低速率,而且短暂停顿也可以,所以,这一技术降低了声音动作因子,在程度上超过了通常所考虑到。
因为速率确定是逐帧进行的,所以不会象声音动作选通系统那样,削去单词的初始部分。在声音动作选通系统中发生的这种性质的削去归因于语音检测和数据传送再开始之间的延迟。在每一帧基础上进行的速率确定使得语音中所有的变化都有自然的声调。
在声码器正常传送的情况下,在接收端一直能听到讲话者周围的背景噪声,因而在语音停顿时有更自然的声音。这样,本发明实现了向背景噪声的平稳转换。听者在语音中听到的背景音不会象声音动作选通系统中那样,在停顿时突然转变成一种合成的舒适噪声。
因为背景噪声持续地被编码后进行传送,所以,背景中的重要事件可以完整清晰地得到传送。在某些情况下,重要的背景噪声甚至可以以最高速率进行编码。例如,当背景中有一个人大声说话,或者有一辆救护车从站在街角处的一个用户身旁开过的时候,可能进行最高速率编码。但是,一成不变或者缓慢变化的背景噪声会以低速率进行编码。
利用可变速率声音编码能够确保基于码分多路访问(CDMA)的数字蜂窝式电话系统的容量增加一倍以上。因为在CDMA中,信道间的干扰随着任一信道中数据传送速率的降低而自动地减少,所以,CDMA和可变速率声音编码是完全匹配的。与此相反,看一下指定传送时隙的系统,如TDMA或FDMA等。为了使这种系统得益于数据传送速率的降低,需要进行外部干预,以协调将不用的时隙转让给其它用户。这种系统中固有的延迟意味着只有在长时的语音停顿过程中才可能转让信道。因而,不能充分地得益于声音动作因子。但是,出于上述其它原因,在外部协调下,可变速率声音编码在CDMA之外的系统中有用。
在CDMA系统中,当需要附加的系统容量时可以略微降低语音质量。简而言之,该声码器可以看作是多个声码器以不同的速率工作,产生不同的语音质量。因而,语音质量可以混合起来,以进一步降低平均数据传送速率。初步的实验显示出,将全速和半速声音编码语音混合起来,亦即最大允许数据速率在8Kbps与4Kbps之间逐帧变化,藉此,得到的语音比半速可变,即最大值为4Kbps情况下质量要好,而差于全速可变,即8Kbps最大值的情况。
众所周知,在绝大多数电话交谈中,每次只有一个人说话。全双工电话线路可以增加一个速率联锁的附加功能。如果线路的一个方向上以最高传送速率进行传送,那么,另一方向就被迫以最低速率传送。链路两个方向上的联锁保证对链路每一方向的平均使用不超过50%。但是,当信道切断时,例如在动作选通中速率联锁情况下,收听者在对话中无法打断对方的谈话,成为说话者。本发明容易地提供了藉助于设定声音编码速率的控制信号进行速率联锁的能力。
最后应该注意到,利用可变速率声音编码系统,通信信息可以和对语音质量影响极小的语音数据分享信道。例如,一个高速率帧可以分割成两半,一半用于传送较低速率声音数据,另一半用于通信数据。在较佳实施例的声码器中实现了声音传送在全速率和半速率声音编码语音之间仅有轻微的语音质量降低。因而,为了与其它数据分享传送而以较低速率进行语音的声音编码在语音质量上只给用户带来几乎不能察觉的差异。
(4)


从下文中与附图相结合的详细说明中,本发明的特征、目的和优点将更为显而易见,在所有附图中,类似的标号标志相应的对象,其中图1a-1e以图线形式示出声码器在各种速率下的分析帧和子帧;图2a-2d是一系列表示声码器在不同速率下输出位分布的图表;图3是一例示编码器的大致框图;
图4是编码器的流程图;图5是例示译码器的大致框图;图6是译码器流程图;图7是编码器更详细的功能性框图;图8是一例示汉明窗口和自相关子系统的框图;图9是一例示速率确定子系统的框图;图10是一例示LPC分析子系统的框图;图11是一例示LPC至LSP转换子系统的框图;图12是一例示LPC量化子系统的框图;图13是例示LSP插值及LSP至LPC转换子系统的框图;图14是用于音调检索的自适应码书的框图;图15是编码器的译码器的框图;图16是音调检索子系统的框图;图17是码书检索子系统的框图;图18是数据压缩子系统的框图;图19是译码器更详尽的功能性框图;图20a-20d是显示译码器在不同速率下接收到的参数和子帧译码数据的图表;图21a-21c是进一步显示译码器在特定场合下接收到的参数及子帧译码数据的图表;图22是LSP反量化子系统的框图;图23是带有后置滤波及自动增益控制的译码器更详细的框图;图24是自适应亮度滤波器特性的图线。
(5)具体实施方式
根据本发明,利用众所周知的技术对诸如语音和/或背景噪声之类声音进行取样并数字化。例如,模拟信号可以用标准的8位/μ律格式转换成数字格式,然后进行μ律/标准编码转换。在另一方式下,模拟信号可以直接转换成标准脉冲编码调制(PCM)格式的数字形式。这样,在该较佳实施例中,每一取样由一16位的数据字表示。众多取样被组织成输入数据的帧,每一帧由预定量的取样组成。在现在揭示的实施例中,就8KHz的取样频率进行考虑。对于8KHz取样频率,每帧由160个取样或20msec的语音组成。应该理解,其它取样频率和帧尺寸也可以采用。
声音编码领域包括许多不同的语音编码技术,其中之一是CELP编码技术。在前文提到论文“一种4.8Kbps的编码激励线性预测编码器”中描述了这种CELP编码技术的概要。本发明采用一种形式的CELP编码技术,以提供编码语音数据的可变速率,其中,LPC分析是对一定量的取样进行的,而音调和码书检索则是根据传送速率对变量的取样进行的。在原理上,参照图3和5讨论应用于本发明中的CELP编码技术。
在本发明的该较佳实施例中,语音分析帧为20ms长,意味着所提取的参数以每秒50次的脉冲进行传送。此外,数据传送速率大致从8Kbps变化至4Kbps、2Kbps和1Kbps。在全速率(亦称为速率1)下,数据传送处于8.55Kbps的速率下,为每一帧而编码的参数用了171位,其中包括一个11位的内部CRC(循环冗余检验)。除去CRC位,速率将是8Kbps。在半速率(亦称为速率1/2)下,数据传送以4Kbps的速率进行,每一帧的编码参数用了80位。在四分之一速率(亦称为速率1/4)下,数据传送为2Kbps的速率,每帧的编码数据用了40位。在八分之一速率(亦称为速率1/8)下,数据传送速率略低于1Kbps,各帧的编码参数使用16位。
图1例示出语音数据的一个分析帧10,以及它与在LPC分析中采用的汉明窗口12的关系。不同速率下的LPC分析帧、音调和码书子帧以图表形式在图2a-2d中示出。应该理解,LPC分析帧在所有速率下是大小相同的。
现在参见附图,具体讲是图1a,LPC分析是采用帧10的160个语音数据取样完成的,它们由汉明窗口12窗口化。如图1a所示,各个帧中的取样s(n)记数为0-159。汉明窗口12是这样定位的,偏离帧10中的60个取样。该汉明窗口12从当前的数据帧10的第60个取样s(59)开始,延续进入下一数据帧14,包括其第59个取样s(58)。因而,为当前帧帧10产生的加权数据也含有以下一帧帧14的数据为依据的数据。
根据数据传送速率,对于图1b-1e中示出的数据帧10的不同子帧进行多次检索,以计算出音调滤波器和码书激励参数。应该理解成,在本实施例中,给帧10只选择一个速率,因而音调和码书检索在不同大小的子帧中对应于下面说明的选择速率进行。然而为了示意,在图1b-1e中示出在本较佳实施例的各种允许速率下对帧10的音调和码书检索的子帧结构。
如图1a所示,在所有速率下,对每一帧10都有一次LPC计算。如图1b所示,在全速率下,对应每一音调子帧16有两个码书子帧18。在全速率下有四次音调更新,四个音调子帧16各一次,每次长为40个取样(5ms)。此外,在全速率下,有八次码书更新,八个码书子帧18各一次,每次长为20个取样(2.5ms)。
在半速率下,如图1C所示,对应每一音调子帧20,有两个码书子帧22。音调更新两次,两个音调子帧20各一次,而码书更新四次,四个码书子帧22各一次。在四分之一速率下,如图1d所示,对单个音调子帧20有两个码书子帧26。对音调子帧24进行一次音调更新,而码书则为两次,两个码书子帧26各一次。如图1e所示,在八分之一速率下,不确定音调,在对应于帧10的帧28中码书只更新一次。
另外,虽然LPC系数每帧只计算一次,但是,在线频谱对(LSP)表示式中,利用从前一帧得到的LSP频率对它们线性内插达四次,以逼近汉明窗口位于每一帧中心时的LPC分析的结果。其例外情况是在全速率下对码书子帧LPC系数不被内插。 LSP频率计算的细节在此后说明。
在较低速率下音调和码书检索较少地进行,此外,给LPC系数的传送也分配少量位数。在不同速率下配置的位的数量示出在图2a-2d中。图2a-2d中的每一个表示出分配给语音的每一160取样帧的声码器编码数据位的数量。在图2a-2d中,各个LPC块30a-30d中的数量是在相应速率下用于短期LPC系数编码的位数。在本较佳实施例中,用于LPC系数编码的位数在全、半、四分之一和八分之一速率下分别是40、20、10和10。
为了采用可变速率编码,LPC首先变换成线频谱对(LSP),得到的LSP频率用DPCM编码器单独进行编码。LPC的阶数为10,因而有10个LSP频率和10个独立的DPCM编码器。对DPCM编码器的位分配按照表I进行。
表I


在编码器和译码器中,LSP频率都在用于音调和码书检索之前转换回LPC滤波器系数。
关于音调检索,图2a示出在全速率下,音调更新计算四次,对语音帧的每四分之一长度各一次。对于全速率下的每次音调更新,新的音调参数编码用了10位。如图2b-2d所示,在其它速率下,音调更新的次数不相同。当速率降低时,更新的次数也减少。图2b示出在半速率下的音调更新,它计算两次,对语音帧的每一半各进行一次。与此类似,图2c示出在四分之一速率下的音调更新,对每个语音帧计算一次。同全速率一样,每次半速率和四分之一速率音调更新也用了10位来将新的音调参数编码。但在八分之一速率下,如图2d所示,不计算音调更新,因为在没有或很少语音以及音调冗余不存在的时候,就采用该速率来对各个帧编码。
在每10位音调更新值中,7位表示音调滞后,而3位表示音调增益。音调滞后限制在17和143之间。音调增益线性是量化至0和2之间,以便用3位的值来表示。
关于码书检索,图2a示出,在全速率下码书更新计算八次,语音帧的每八分之一各一次。全速率下的每次码书更新用10位来进行新的码书参数编码。图2b-2d中示出,在其它速率下进行不同次数的码书更新。然而,随着速率降低,码书更新次数也减少。图2b示出半速率下的码书更新,它计算四次,对语音帧的每四分之一各一次。图2c示出四分之一速率下的码书更新,计算两次,对语音帧的每一半各一次。同全速率下一样,每个半速率和四分之一速率音调更新用10位来将新码书参数编码。最后,图2d示出八分之一速率下的码书更新,对每一语音帧进行一次计算。要注意到,在八分之一速率下,传送了6位,其中两位代表码书增益,其余四位是随机位。后文将进一步讨论码书更新的位分配。
为码书更新而分配的位数表示将音调预测余量矢量量化所需的数据位。在全、半和四分之一速率下,每次码书更新由7位码书索引加3位码书增益总共10位数据组成。码书增益是用工作在对数区域的差分脉码调制(DPCM)编码器进行编码的。对于八分之一速率,虽然也可以采用类似的位分布,但最好用一不同的方案。在八分之一速率下,码书增益用两位表示,而四个随机产生的位则与接收到的数据一起使用,作为替代码书的伪随机数发生器的种子。
参见图3所示的编码器框图,LPC分析是以开环方式进行的。从输入语音取样s(n)的各个帧中计算出LPC系数(α1-α10),如后文中说明,由LPC分析/量化器50来完成,已供共振峰合成滤波器60使用。
然而,音调检索的计算是以闭环方式进行的,通常这称作分析-合成方法。但是,在实际应用中,采用一种新颖的闭环/开环混合技术来进行音调检索。在音调检索中,通过选取使输入语音与合成语音的均方之差为最小的参数而进行编码。为了简化这部分的讨论,速率的问题不作考虑。但在下文中将更详细地讨论选出的速率对音调和码书检索的影响。
在图3所示的初步实施例中,感知加权滤波器52由下列等式特征化W(z)=A(z)A(z/μ)----(1)]]>其中A(z)=1-Σi=110αiZ-i----(2)]]>它是共振峰预测滤波器,μ是感知加权参数,在本实施例中,μ=0.8。音调合成滤波器58由下列等式特征化1P(z)=11-bz-L----(3)]]>下文讨论共振峰合成滤波器60,它是加权滤波器,由下列等式特征化H(z)=(1A(z))W(z)=1A(z/μ)----(4)]]>输入语音取样S(n)由感知加权滤波器52加权,所产生的加权语音取样X(n)作为和输入提供给加法器62。感知加权用于给低信号功率频率中的错误加权。在这些低信号功率频率中,噪声更易察觉。合成的语音取样X(n)从共振峰合成滤波器60输出作为差输入加到加法器62与X(n)作减法运算。加法器62输出的取样值之差输入至均方差(MSE)单元64,它们被平方后累加。WSE单元64的结果提供给最小化单元66,它产生音调滞后L、音调增益b、码书索引I和码书增益G的数值。
在最小化单化66中P(z)中的音调滞后参数L的所有可能值与来自乘法器56的数值c(n)一起输入音调合成滤波器58。在音调检索过程中,码书没有任何贡献,即c(n)=0。由最小化单元66选出使输入语音与合成语音的加权差最小的L和b的数值。音调合成滤波器58产生并输出P(n)值给共振峰合成滤波器60,一旦找到音调滤波器的音调滞后L和音调增益b,就以类似方式进行码书检索。
应该理解,图3是本发明所采取的分析-合成方法的原理表示。在本发明的例示应用中,这些滤波器不应用在典型的闭环反馈结构中。在本发明中,在检索过程中反馈联系被切断,而代之以开环共振峰余量,其细节在下文中提供。
最小化单元66然后产生码书索引I和码书增益G的值。码书54的输出值是按照码书索引I从许多随机高斯矢量值中选出的,在乘法器56中乘以码书增益G,产生音调合成滤波器58中所用的c(n)值序列。选取使均方差为最小的码书索引I和码书增益G用于传送。
应注意到,感知加权W(z)既通过感知加权滤波器52加在输入语音上,也通过共振峰合成滤波器60中包含的加权功能加在合成语音上。因而,共振峰合成滤波器60实际上是加权后的共振峰合成滤波器,它把等式1的加权功能与典型的共振峰预测滤波器特性 组合起来,产生等式3的加权共振峰合成功能。
应该理解的是,换种方式,感知加权滤波器52可以放在加法器62和MSE单元64之间。在这种情况下,共振峰合成滤波器60具有通常的滤波器特性 图4示出用图3的编码器对语音编码时所需步骤的流程。为了说明,涉及速率判定的步骤包含在图4的流程中。在步骤80,从取样电路获取数字化语音取样,在步骤82中计算出LPC系数。在LPC系数计算中用到了汉明窗口和自相关技术。在步骤84,在本实施例中依据帧能量对重要的帧作出初步的速率确定。
为了有效地以少量位数将LPC系数编码,在步骤86,LPC系数转成线频谱对(LSP)频率,然后在步骤88量化,以便传送。一种选择方案是,在步骤90可以进行附加的速率确定,在步骤92,如果认为对初始速率作的LSP量化不充分,则可增加速率。
在步骤94,对于处在分析中的语音帧的第1个音调子帧,LSP频率经内插后转换成LPC系数,用于进行音调检索。在音调检索中,码书激励设置为零。在步骤96和98的作为由先前讨论的合成方法所进行的一种分析的音调检索中,就每一可能的音调滞后L,将合成语音与原始语音比较。对于每一L值,确定一个取整数值的最佳音调增益b。在L和b值的组合中,最佳的L和b值组合给出合成语音与原始语音之间的最小感知加权均方误差。在所确定的音调子帧的L、b最佳值中,在步骤100将b值量化,以便与对应的L值一起传送。在音调检索的另一种实现方法中,b值可以作为音调检索一部分进行量化,这些量化值用于进行音调检索。因而,在这种实现方式中消除了在音调检索之后选中的b值在步骤100的量化要求。
对于处在分析中的语音帧的第1码书子帧,在步骤102,LSP频率经内插后转换成LPC系数,以用于进行码书检索。然而,在本实施例中,在全速率下,LSP频率仅仅内插至音调子帧水平。由于在各个频率下音调和码书子帧的大小有差异,在音调检索之外,对码书检索也进行这种内插和转换步骤。只有速率1/8是例外,因为不计算音调数据,所以这一问题悬而未决。在步骤104和106的码书检索中,在音调合成滤波器中用到音调滞后L和音调增益b的最佳值,使得就每一个可能的码书索引I,将会成语音与原始语音作比较。对于每个I值,确定一个取整数值的最佳码书增益G。I和G值组合中,最佳的I和G值组合给出合成语音与原始语音之间最小的误差。在给码书子帧确定的最佳值I和G中,G值在步骤108被量化,以便与对应I值一起传送。在码书检索的另一种变换应用中,G值可以量化成码书检索的一部分,这些量化值用于进行码书检索。在这种变换应用中,省除了码书检索之后在步骤108将选中的G值量化的要求。
在码书检索之后,编码器中的一个译码器在I、G、L和b的最佳值下运行。编码中的译码器的运行使得编码滤波存储器重组,以用于以后的子帧。
然后在步骤110进行验证,以确定刚完成分析的该码书子帧是否对应于已进行音调检索的音调子帧的码书子帧组中的最后一个码书子帧。换句话说,确认是否还有其他对应于该音调子帧的码书子帧。在本实施例中,对应每一音调子帧有两个码书子帧。如果确认有另一个对应于该音调帧的码书子帧,则对该码书子帧重复步骤102-108 。
如果不再有对应于该音调帧的码书子帧,则在步骤112进行验证,以确定处于分析中的语音帧中是否有其他任何音调子帧存在。如果在当前处于分析中的语音帧中有另一个音调子帧存在,则对每个音调子帧和对应的码书子帧重复步骤94-110。当目前处于分析中的语音帧的计算都已完成之后,在步骤114,将代表语音帧的LPC系数的数值,即各音调子帧的音调滞后L和增益b和各码书子帧的码书索引I和增益G进行压缩,以便传送。
参见图5,其中示出一个译码器框图,按收到的LPC系数(αi),音调滞后和增益(L&b)、码书索引和增益(I&G)用来合成语音。同图3一样,为了简化讨论,在图5中也不考虑速率信息。数据速率信息可以作为辅助信息传送,在某些情况下,可以在信道解调级导出。
译码器由码书130组成,得到所接收到的码书索引,或者在八分之一速率下得到随机种子。码书130的输出提供给乘法器132的一个输入端,而乘法器132的另一输出端接收码书增益G。乘法器132的输出与音调滞后L和增益b一起供给音调合成滤波器134。音调合成滤波器134的输出与LPC系数αi一起供给共振峰合成滤波器136。共振峰合成滤波器136的输出供给自适应后置滤波器138,其中滤波和输出的是再生语音。后文中将讨论,有一种形式译码器是在编码器中实现的。编码器的译码器不包括自适应后置滤波器138,但是包括一个感知加权滤波器。
图6是与图5译码器的动作相对应的流程。在步骤150译码器中,根据接收到的参数重建语音。具体来讲,在步骤152,接收到的码书索引值输入进码书,产生码矢量或码书输出值。在步骤154,乘法器接收该码矢量和码书增益G,并将这些值相乘,得出的信号提供给音调滤波器。应该注意到,码书增益G是通过将收到的DPCM参数译码和反量化而得以重建的。在步骤156,音调合成滤波器得到所接收到的音调滞后L和增益b,以及乘法器输出信号,以对乘法器输出进行滤波。
音调合成滤波器对码书矢量滤波后得到的数值输入共振峰合成滤波器。在步骤158,LPC系数αi与供给共振峰合成滤波器,用于对音调合成滤波器的输出信号滤波。在译码器中,将收到的参数译码成量化LSP频率,将LSP频率反量化并转换成LPC系数αi,藉此重建LPC系数,以进行内插。在步骤160,共振峰合成滤波器的输出提供给自适应后置滤波器,量化噪声在其中被掩盖,重建后的语音得到增益控制。在步骤162,重建后的语音输出,以转换成模拟形式。
现在参见图7a和7b的框图,说明本发明的语音编码技术的进一步细节。在图7a中,各个数字化语音取样的帧提供给一个汉明窗口系统200,在该子系统中,输入语音在自相关子系统202进行自相关系数计算之前被窗口化。
图8的例示应用中示出了汉明窗口子系统200和自相关子系统202。汉明窗口子系统200由通常是80×16位的ROM的查算表250和乘法器252组成。在每一速率下,语音的窗口中心处于160个取样长的分析帧的第139和140个取样之间。这样,用于计算自相关系数的窗口偏移分析帧60个取样。
因为汉明窗口是中心对称的,所以窗口化是利用包含有160个WH(n)值中的80个值的ROM表进行的。汉明窗口的偏移是通过将ROM的地址指针相对于分析帧的第一个取样偏移60个位置而实现的。这些值由乘法器以单精度与对应的输入语音取样相乘。在分析窗口中,将s(n)作为输入语音信号,因而窗口化的语音信号Sw(n)被定义为Sw(n)=s(n+60)WH(n)0<=n<=79 (5)和Sw(n)=s(n+60)WH(159-n)80<=n<=159(6)查算表250内容的16进制例示值在表II中给出。这些数值解释成具有14个小数位的二进制补码,表格要从左到右、从上到下阅读。
表II0×051f0×05250×05360×05540×057d0×05b10×05f20×063d0×06940×06f60×07640×07dc0×085e0×08ec0×09830×0a240×0ad00×0b840×0c420×0d090×0dd90×0eb00×0f900×10770×11660×125b0×13570×14590×15600×166d0×177f0×18950×19af0×1acd0×1bee0×1d110×1e370×1f5e0×20870×21b00×22da0×24030×252d0×26550×277b0×28a00×29c20×ae10×2bfd0×2d150×2e290×2f390×30430×31480×32470×333f0×34310×351c0×36000×36db0×37af0×387a0×393d0×39f60×3aa60×3b4c0×3be90×ec7b0×3d030×3d800×df3 0×3e5b0×3eb70×3f090×3f4f0×3f890×3fb80×3fdb0×3ff30×3fff自相关子系统202由寄存器254、多路转换器256、移位寄存器258、乘法器260、加法器262、循环移位寄存器264和缓存器266组成。窗口化的语音取样Sw(n)每隔20ms运算一次并锁存在寄存器254中。在LPC分析帧的第一个取样Sw(o)上,移位寄存器258和264中复位到0。在每一个新的取样Sw(n)上,多路转换器256接收一个新的取样选择信号。该信号使取样能够从寄存器254进入多路转换器。新的取样Sw(n)也提供给乘法器260。与取样Sw(n-10)相乘,取样Sw(n-10)处在移位寄存器258的未位SR10上。得到的数值在加法器262中与循环移位寄存器264的未位CSR11上的数值相加。
移位寄存器258和260每收到一次时钟脉冲,就在移位寄存器258的首位SR1中用Sw(n)替换Sw(n-1),并替换先前在位置CSR10中的数值。在移位寄存器258有时钟脉冲时,新脉冲选择信号从多路转换器256的输入端中去除,使得当前处在移位寄存器260位SR10中的取样Sw(n-9)被允许进入多路转换器256。在循环移位寄存器264中,先前在位CSR11上的数值移入首位CSR1中。新取样选择信号从多路转换器中去除后,移位寄存器258置位,以和循环移位寄存器264一样,进行数据的循环移位。
对每个取样,移位寄存器258和264总共都得到11次时钟脉冲,因而执行11次乘积/累加动作。在对160个取样进行时钟输入后包含在循环移位寄存器264中的自相关结果作为R(0)-R(10)值时钟输入缓存器266。所有移位寄存器复位到零,对窗口化语音取样的下一个帧重复此过程。
回头再参见图7a,对语音帧计算好自相关系数后,速率确定子系统204和LPC分析子系统206就利用该数据来分别计算帧数据速率和LPC系数。由于这些运算是彼此独立的,所以,它们可以以任何顺序甚至同时计算。这里为了说明,而首先讨论速率确定。
速率确定子系统204有两个功能;(1)确定当前帧的速率,(2)重新估算背景噪声水平。当前分析帧的速率最初是依据当前帧的能量、背景噪声水平的先前估值、先前速率和来自一控制微机的速率指令确定的。而新的背景噪声水平是利用背景噪声水平的先前估值和当前帧能量估算出的。
本发明将自适应阈值技术用于速率确定。当背景噪声变化时,用于选择速率的阈值也变化。在本实施例中,计算三个阈值,以确定初始的速率选择RTP。这些阈值是背景噪声先前估值的二次函数,示出如下T1(B)=-5.544613(10-6)B2+4.047152B+363.1293(7)T2(B)=-1.529733(10-5)B2+8.750045B+1136.214(8)和T3(B)=-3.957050(10-5)B2+18.89962B+3346.789(9)其中,B是背景噪声的先前估值。
帧能量与三个阈值T1(B)、T2(B)和T3(B)作比较。如果帧能量低于所有三个阈值,则选择最低的传送速率(1Kbps),即RTp=4速率1/8。如果帧能量低于两个阈值,则选择第二个传送速率(2Kbps),即RTP=3,速率1/4。如果帧能量仅低于一个阈值,就选择第三个传送速率(4Kbps),即RTP=2,速率1/2。如果帧能量高于所有阈值,则选取最高传送速率(8Kbps),即RTp=1,速率1。
此后,可以依据前一帧的最终速率RTr来修改初始速率RTp。如果初始速率RTp低于前一帧的最终速率减1,即(RTr-1),则设定一个中间速率RTm=(RTr-1)。在发生高能量信号向低能量信号的转换时,这种修改过程使得速率缓慢地降低。然而,如果初始速率选择等于或大于前一速率减1,即(RTr-1),则中间速率RTm设置成与初始速率RTp相同,即RTm=RTp。在这种场合,当发生低能量信号向高能量信号的转换时,速率会立即提高。
最后,中间速率RTm由来自微机的速率约束指令作进一步修改。如果速率RTm大于微机所允许的最高速率,则设定初始速率RTi为最高允许值。与此类似,如果中间速率RTm小于微机允许的最低速率,则初始速率RTi设为最低允许值。
在某些情况下,可能会要求以微机决定的速率对所有语音编码。速率约束指令通过将最高和最低允许速率设为期望速率,而将帧速率设置成期望速率。速率约束指令可用于特殊的速率控制场合,如用于速率联锁和模糊及突发传送,这些都在后文说明。
图9给出速率确定算法的例示执行过程。要起动运算,寄存器270要预先装入提供给加法器272的数值1。循环移位寄存器274、276和278分别装载二次阈值等式(7)-(9)的第1、2和3系数。例如,循环移位寄存器274的末位、中位和首位分别装载计算T1、T2和T3的等式的第1系数。与此类似,循环移位寄存器276的末位、中位和首位分别装入计算T1、T2和T3的等式的第2系数。最后,循环移位寄存器278的末位、中位和首位分别装入计算T1、T2和T3的等式的常数项。在各个循环移位寄存器274、276和278中,数值从末位输出。
在计算第1阈值T1时,先前帧的背景噪声估值B在乘法器280中自乘。得到的B2值乘以第1系数-5.544613(10-6),该系数从循环移位寄存器274的末位输出。得到的结果在加法器286中加上来自乘法器284的背景噪声B与循环移位寄存器276末位输出的第2系数4.047152的乘积。然后,加法器286的输出值在加法器288中加上循环移位寄存器278的末位输出的常数项363.1293。加法器288的输出即为T1的计算值。
加法器288输出的T1计算值在加法器290中减去帧能量值Ef,在本实施例中,Ef是线性区域中的数值R(0),由自相关子系统提供。
换种方式,帧能量Ef也可以以分贝数在对数域中表示,它近似为由有效窗口长度归一化后的第一自相关系数R(0)的对数值Ef=10log10R(0)LA/2----(10)]]>其中,LA是自相关窗口长度。应该理解到,声音动作也可以从包括音调预测增益或共振峰预测增益Ga在内的其它各种参数中测得Ga=10log10E(10)E(10)----(11)]]>其中,E(10)是第10次叠代后的预测残留能量,而E(0)是初始LPC预测残留能量,后文中说明,在LPC分析中与R(0)相等。
利用比较器或限幅器292,从加法器290的输出中提取二进制补码差值符号位的补码,并提供给加法器272,与寄存器270的输出相加。这样,如果R(0)与T1之差为正,则寄存器270增量1。如果差值为负,寄存器270保持原样。
然后,循环寄存器274、276和278进行循环,因而,T2的等式(8)的系数出现在其输出端。同讨论阈值T1的过程一样,重复计算阈值T2和将它与帧能量比较的过程。然后,循环寄存器264、276和278再次循环,使T3的等式(9)的系数出现在其输出端。阈值T3的计算和与帧能量的比较与上文中说明的相同。在完成所有三个阈值的计算和比较后,寄存器270包含有初始速率估算值RTi。初始速率估算值RTp提供给速率缓降逻辑294。存储在寄存器298中来自LSP频率量化子系统的先前帧最终速率RTr也供给逻辑294。逻辑296计算数值(RTr-1),并提供初始速率估算值RTp和数值(RTr-1)中的较大者作为输出。数值RTm给到速率限制逻辑296。
前面说到,微机提供速率限制指令给声码器,具体讲是给逻辑296。在用到数字信号处理器时,该指令在编码过程的LPC分析部分结束之前送入逻辑296中。逻辑296确认该速率不超过速率限制值,并在RTm值超出限制值时修改它。如果RTm值在允许速率范围内,它就作为初始速率值RTi从逻辑296中输出。初始速率值RTi从逻辑296输出到图7a的LSP量化子系统210中。
前面提到的背景噪声估算值用于计算自适应速率阈值。先前帧的背景噪声估算值B用于建立当前帧的速率阈值。然而,对于每一个帧,背景噪声估算值被更新后用于为下一个帧确定速率阈值。新的背景噪声估算值B′是根据先前帧的背景噪声估算值B和当前帧能量Ef在当前帧中确定的。
在确定用于下一帧的新的背景噪声估算值B′(作为先前帧背景噪声值B)时,要计算两个数值。第1个值V1仅仅是当前帧能量Ef。第2个值V2是B+1和KB中的较大者,K=1.00547。为了防止第2个值变得太大,将其限制在一个很大的常数M=160,000之下。选择两个值V1和V2中小的一方作为新的背景噪声估算值B′。
数学表示为V1=R(0) (12)V2=min(160000,max(KB,B+1))(13)新的背景噪声估算值B′是B′=min(V1,V2)(14)其中,min(x,y)是x,y中的最小值,而max(x,y)是x,y中的最大值。
图9进一步示出了背景噪声估算算法的例示执行过程。第一个值V1仅仅是直接提供给多路转换器300一个输入端的当前帧能量Ef。
第二个值V2从首先算出的数值KB和B+1中计算得到。在计算数值KB和B+1时,存储在寄存器302中的先前帧背景噪声估算值B输出到加法器304和乘法器306中。应该注意到,存储在寄存器302中的用于当前帧的先前帧背景噪声估算值B与在先前帧中计算出的新的背景噪声估算值B′相等。加法器304还得到一个输入值1与数值B相加,从而产生B+1。乘法器304还得到一个输入值K与数值B相乘,从而产生KB。B+1和KB分别从加法器304和乘法器306输出到多路转换器308和加法器310的各个输入端。
加法器310和比较器或限幅器312用于选择B+1和KB中较大的一方。加法器310从KB中减去B+1并将结果提供给比较器或限幅器312。限幅器312提供一个控制信号给多路转换器308,选择B+1和KB较大的一方作为输出。选出的B+1或KB(选中项)从多路转换器308输出到限幅器314,限幅器314是饱和型限幅器,当选中项低于常数值M时,输出选中项或者在选中项超出数值M时输出数值M。限幅器314的输出作为第二输入供给多路转换器300并作为加法器316的一个输入。
加法器316在另一个输入端还接收到帧能量值Ef。加法器316和比较器或限幅器318用于选择数值Ef和限幅器314的输出中较小的一方。加法器316从限幅器314的输出值中减去帧能量值,并将结果提供给比较器或限幅器318。限幅器318向多路转换器300提供一个控制信号。用于选择Ef值和限幅器314的输出值中较小的一方。多路转换器300输出的选中数值作为新的背景噪声估算值B′提供给寄存器302,存储后作为当前帧背景噪声估算值B用在下一帧中。
再参见图7,各自相关系数R(0)-R(10)从自相关子系统202输出到LPC分析子系统206中。在LPC分析子系统206中计算出的LPC系数用在感知加权滤波器52和共振峰合成滤波器60中。
LPC系数可以通过采用德宾(Durbin)递推式的自相关方法获得,该方法在“语音信号数字化处理”(赖宾纳和谢弗,普蓝蒂斯-豪公司1978年出版)一书中讨论过。这种技术是用于获得LPC系数的高效计算方法。该算法可以用下列等式表示E(0)=R(0),i=1; (15)ki={R(i)-Σj=1i-1αj(i-1)R(i-j)}/Ei-1;----(16)]]>αi(i)=ki;----(17)]]>αj(i)=-αj(i-1)-kiαi-j(i-1)---1<=j<=i-1;----(18)]]>E(i)=(1-ki2)E(i-1)----(19)]]>如果i<10,则进到等式(16),并取i=i+1 (20)十个LPC系数标为 ,1<=j<=10。
在将LPC系数编码之前必须确保滤波器的稳定性。滤波器的稳定性是这样实现的,将滤波器的极点沿径向向内微量移动,这一变化减小峰值频率响应的幅值而扩展峰值的带宽。这种技术作为带宽扩展是众所周知的,在拖苦拉等人所著的“PARCOR语音分析-合成中的频谱平滑”一文(ASSP学报)中有进一步说明。在现情况下通过按比例改变各LPC系数,可以迅速地完成带宽扩展。因而如表III中所得到的LPC都乘以对应的十六进制数值以产生LPC分析子系统206的最终输出LPC系数α1-α10。应该注意到,表III中列出的数值是十六进制形式的。用二进制补码标记时有十五位。在这种形式下数值0×8000表示-1.0,向数值0×7333(或29491)表示0.899994等于29491/32768。
表IIIα1=α1(10)·0×7333]]>α2=α2(10)·0×67ae]]>α3=α3(10)·0×5d4f]]>α4=α4(10)·0×53fb]]>α5=α5(10)·0×4b95]]>α6=α6(10)·0×4406]]>α7=α7(10)·0×3d38]]>α8=α8(10)·0×3719]]>α9=α9(10)·0×3196]]>α10=α10(10)·0×2ca1]]>这些运算最好以双精度进行,即进行32位的除法、乘法和加法。最好有双精度的准确度,以保持自相关函数和滤波器系数的动态范围。
在图10中示出了LPC子系统206的一个例示实施例的方框图,它用到上述等式(15)-(20)。LPC子系统206由三个电路部分组成,一个计算电路330和两个用于更新主计算电路330的寄存器的缓存更新电路332和334。计算首先是从数值R(1)到R(10)装入缓存器340中开始的。为了启动计算寄存器346,通过多路转换器344预先装入数值R(1)。寄存器由多路转换器354用R(0)初始化,缓存器352(它保存十个 数值)由多路转换器354初始化为全零,缓存器356(它保持十个 数值)由多数转换器358初始化为全零,对于计算循环i设定为1。为了明了起见,计数器i和j以及其它运算循环控制在图中未画出,但是这种类型的逻辑电路的设计和综合是处在数字逻辑设计领域中普通熟练者的能力范围之内的。
数值从缓存器356输出,以计算等式(14)中的KiE(1-1)项。各个数值R(i-j)从缓存器340输出,在乘法器360中与 相乘。得到的数值与来自寄存器346的数值在加法器362中作减法,每次相减的结果存储在寄存器346中以供作下一项减法。在第i个循环中,如等式(14)的求和项中所示,有i-1次乘法和累加运算。在该循环的最后,寄存器346中的数值在除法器364中除以来自寄存器348的数值E(i-1),产生数值ki。
然后,该数值ki用在缓存更新电路332中,计算等式(19)中的E(i),数值E(i)在ki的下一个计算循环中用作为数值E(i-1)。当前循环的数值ki在乘法器366中自乘以获得数值ki2。然后,数值ki2在加法器368中被减去1。这一加法器运算的结果在乘法器370中乘以来自寄存348的数值E(i)。其结果E(i)通过多路转换器350输入寄存器348存储起来作为下一周期的数值E(i-1)。
然后,数值ki用来以等式(15)计算数值 。在这种情况下,数值ki通过多路转换器358输出缓存器356。数值ki还用在缓存更新电路334中,以等式(18)从数值 计算出数值 。缓存器352中现存的数值用于计算 。如等式(18)所示,在第i个循环中有i-1次运算。在i=1的迭代中,不需要这些运算。对于第i次循环的各个j值,计算出一个 值。在计算各 值时,各 值在乘法器372中乘以数值ki,以输出到加法器374。在加法器374中,从另外输入加法器374的数值 中减去数值 。各个乘法和加法的结果作为 值通过多路转换器358供给缓存器356。
对当前循环计算出 和 值后,就将刚算出并存储于缓存器356中的这些数值通过多路转换器354输出给缓存器352。存在缓存器356中的数值存储于缓存器352的相应位置中。这样,缓存器352得到更新,以计算i+1循环的数值ki。
在前一循环的最后产生的数据 在当前循环中用于为下一循环产生更新数据 ,注意到这一点是很重要的。必须保留该前一循环的数据,以便为下一循环完整地产生更新数据。这样,两个缓存器356和352用于将前一循环的数据保存到更新数据完全产生为止。
上述说明是针对在完成更新数值的计算时数据从缓存器356向缓存器352并行转送作出的。这种执行方式确保旧的数据在计算新数据的整个过程中得以保留,而不会象在设置单个缓存器情况下,旧的数据在完全利用之前就丢失了。上述方式是实现相同结果的现有几个方式之一。例如,缓存器352和356可以经过多路转换,以使得在当前循环中依据存储在一个第一缓存器中的数值计算数值ki时,更新数据存在第二缓存器中,用在下一计算循环中。在下一循环中,数值ki依据存在第二缓存器中的数值算出。第二缓存器中的数值和数值ki用于为下一循环产生更新数据,这些更新数据存在第一缓存器中。缓存器的这种替换使得前一计算循环的数据得以保存,以此产生更新数据,并在不重写需要用来产生更新数据的先前数据的情况下存储更新数据。使用这种技术能够将与下一循环ki值的计算相关的延迟减至最小。因而,在计算ki时乘积/累加的更新可以在计算下一 值的同时进行。
在完成最后一个计算循环(i=10)后存在缓存器356中的10个LPC系数 换算到相应的最后LPC系数αj。向多路转换器344、376和378提供一个换算选择信号,因而,存在系数查算表342中的换算数值,即表III的十六进制数值,被选中,通过多路转换器344输出。存在表342中的数值按顺序在时钟脉冲控制下输出,并输入乘法器360。乘法器360还通过多路转换器370接收从寄存器356顺序输出的数值 。换算后的数值通过多路转换器378从乘法器360输出到LPC至LSP转换子系统208(图7)。
为了迅速有效地以少量位数将10个换算后的LPC系数编码,各系数转换成线频谱对频率,在宋和江发表于ICASSP′84中的文章“线频谱对(LSP)和语音数据压缩”中对此有说明。在下列等式(21)和(22)及表IV中示出了LSP参数的计算。
LSP频率是处在0和π之间的下列等式的十个根P(ω)=cos5ω+P1cos4ω+…+P4cosω+P5/2 (21)Q(ω)=cos5ω+q1cos4ω+…+q4cosω+q5/2 (22)其中,Pn和qn对n=1、2、3、4分别取值,并在表IV中递归定义表IVP1=-(α1+α10)-1 q1=-(α1-α10)+1P2=-(α2+α9)-P1q2=-(α2-α9)+q1P3=-(α3+α8)-P2q3=-(α3-α8)+q2P4=-(α4+α7)-P3q4=-(α4-α7)+q3P5=-(α5+α6)-P4q5=-(α5-α6)+q4表IV中,α1,……,α10是从LPC分析得到的换算系数。为了简化,等式(21)和(22)的10个根换算成0到0.5之间的值。LSP频率的特性是,当LPC滤波器稳定时,两个等式的根变动;即,最低的根ω1是P(ω)的最低的根,次最低的根ω2是Q(ω)的最低的根,以此类推。在10个频率中,奇频率是P(ω)的根,而偶频率是Q(ω)的根。
根的查找方法如下。首先,如上面所示那样将LPC系数加入,从而以双精度计算出P和q系数。然后,每隔π/256弧度计算一次P(ω),再观察这些值的符号变化,辨别在该子区域中的一个根。如果找到一个根,则在该区域两端之间进行一次线性内插,以迫近根的真实位置。由于频率的定序特性,在每对P根之间保证存在一个Q根(第5个Q根处于第5个P根与π之间)。在每对P根之间进行对分查找,确定Q根的位置。为了简便,每个P根近似取最近的π/256数值,在这些近似值之间进行对分查找。如果未找到根,则使用先前找到根的最近的帧的LSP频率的非量化值。
现在参见图11,其中示出一个用于产生LSP频率的例示电路。上述操作需要总共257个在0和π之间的可能的余弦值,它们在双精度下存储在余弦表400中,该表格由模256计数器402寻址。对于输入表400的各个j值,给出cosω、cos2ω、cos3ω、cos4ω和cos5ω输出,其中ω=jπ/256 (23)j是计数值。
余弦表400输出的数值cosω、cos2ω、cos3ω和cos4ω输入到相应的各个乘法器404、406、408和410,而数值cos5ω则直接输入加法器412中。这些值在各乘法器404、406、408和410中分别乘以通过多路转换器414、416、418和420输入其中的数值P4、P3、P2和P1。
相乘结果也输入累加器412。此外,数值P5通过多路转换器422送到乘法器424,同时,常数0.5,即1/2也送到乘法器424。乘法器424的输出结果也作为另一个输入给加法器412。为了利用同一电路计算P(ω)和Q(ω)值,根据P/q系数选通信号,多路转换器414-422在P1-P5或q1-q5之间作出选择。图中未示出产生P1-P5或q1-q5的电路,但是,利用一系列将LPC系数和P1-P5或q1-q5进行加减运算的加法器,以及存储P1-P5或q1-q5值的寄存器,很容易实现该电路。
加法器412将输入值相加,依情况而定,输出P(ω)或Q(ω)。为了简便,在以后的讨论中将考虑P(ω)值的情况,Q(ω)值以类似方式利用q1-q5数值算出。加法器412输出P(ω)的当前值,存储在寄存器426中。先前存在寄存器426中的前一P(ω)值移位至寄位器428中。当前和先前的P(ω)值的符号位在异或门430中异或,以传给线性内插器434的起动信号的形式显示零交叉或符号变换。P(ω)的当前和先前数值也从寄存器426和428输出到线性内插器434,该内插器响应起动信号,在P(ω)发生零交叉的两个值之间进行内插。该线性内插小数值结果,即与数值j-1的距离,与来自计数器256的数值j一起提供给缓存器436。门430还将起动信号提供给缓存器436,缓存器436允许数值j和对应的小数值FVj存入。
在加法器438中,数值j中减去该小数值,作为缓存器436的输出,或者换种方式,减去后输入缓存器436。在替换方式下,在输入缓存器436的j线中用一个寄存器,使得数值j-1与小数值输入一起输入缓存器436。小数值可以在存入寄存器436之前或从中输出时加到数值j-1上。在任何情况下,混合值j+FVj或(j-1)+FVj输出到除法器440,除以输入的常数512。只需改变二进制字中的二进制小数点位置,就可以简单地完成除法操作。这一除法操作为达到处于0和0.5之间的LSP频率而提供必需的换算。
P(ω)或Q(ω)的函数计算需要5次余弦值查表,4次双精度乘法运算和4次加法运算。算出的根通常只精确到大约13位,并在单精度下存放。 LSP频率提供给LSP量化子系统210(图7),用于量化。
LSP频率算出之后,就必须量化,以便传送。十个LSP频率中的每一个都大致以一偏置数为中心。应该注意到,当输入语音具有平坦的LSP频谱特性曲线并且不能做任何短期预测时LSP频率接近偏置数。偏置数从编码器中取出,并且用到一个简单的DPCM量化器。在译码器中,偏置数又加回去。由LPC至LSP转换子系统所提供的各LSP频率ω1-ω10的偏置数的非,以十六进制形式给出在表V中。表V中给出的数值也是二进制补码,有15个小数位。十六进制数值0×8000(或-32768)表示-1.0。这样,表V的第一个值0×fa2f(或-1489)表示-0.045441=-1489/32768。
表V


子系统中用的预测器等于子系统一个缓存器中存储的来自先前帧的量化LSP频率的0.9倍。加入衰减常数0.9,因而信道错误最终将消除掉。
用到的量化器是线性的,但动态范围和步长随速率而变。在高速率帧中,每一LSP频率有更多位数要传送,因而,量化级数依赖于速率。在表VI中,示出了每速率下对各频率的量化的位分配和动态范围。例如,在速率1,ω1统一量化成4位(即16级),最高量化级为0.025,而最低的是-0.025。
表 VI


如果由速率确定算法选中的速率的量化范围不够大,或者发生斜率溢出,则速率提高到下一个较高的速率上。速率持续提升,一直到动态范围得到调节或达到全速率为止。在图12中,给出了运用选择速率提高技术的装置的一个例示框图。
图12以框图形式示出了LSP量化子系统210的一个例示设备,它包括速率提升电路。图12中,当前帧LSP频率从除法器440(图11)输出到寄存器442,存储起来,以在下一帧中进行速率提升限定时输出。先前帧LSP频率和当前帧LSP频率分别从寄存器442和除法器440输出到速率提升逻辑444,进行当前帧的速率提升限定。速率提升逻辑442还接收到初始速率决定,以及来自速率限定子系统204的速率限制指令。在确定是否必须增大速率时,逻辑444根据当前和先前帧LSP频率差值的平方之和,将先前帧LSP频率与当前帧LSP频率比较。其结果再与一个阈值比较,阈值如被超出,则显示有必要提升速率来确保高质量的语音编码。在超出阈值时,逻辑444将初始速率增加一个速率级别,从而给出整个编码器通用的最终速率。
图12中,各LSP频率值ω1-ω10逐个与对应的偏置数一起输入加法器450。从输入的LSP值中减去偏置数,其结果输出给加法器452。加法器452还收到一个输入—预测值,即乘以衰减常数后的先前帧对应的LSP值。加法器452从加法器450的输出中减去预测值。加法器452的输出作为量化器454的一个输入。
量化器454由限幅器456、最小动态范围查算表458、逆步长查算表460、加法器462、乘法器464和位屏蔽466组成。在量化器454中进行量化,首先确定输入值是否处在量化器454的动态范围内。输入值提供给限幅器456,如果该输入超出了表458提供的限定值,限幅器456就将它限制在动态范围的上界和下界内。查算表458按照表VI,响应输入其中的速率和LSP频率索引i,向限幅器456提供存储的限定值。限幅器456的输出值输入加法器462,从中减去表458提供的动态范围的最小值。按照表VI中所列的最小动态范围值,先不管其符号,依据速率和LSP频率索引i再次确定表格458的输出值。例如,对于(全速率,ω1),查算表458的值为0.025 。
加法器462的输出在乘法器464中乘以一个选自查算表460的数值。查算表460包含有与表VI中所列数值一致的、各个速率下的各LSP值的步长之逆相对应的数值。依据速率和LSP频率索引i来选择查算表460的输出值。对于各个速率和LSP频率索引i,存在查表460中的数值是((2n-1)/动态范围),其中,n是代表量化值的位数。例如,对于(速率1,ω1),查算表460的数值是(15/0.05)或300。
乘法器464的输出是介于0和2n-1之间的一个数值,它供给位屏蔽466。位屏蔽466响应速率和LSP频率索引,根据表VI,从输入值中提取适当的位数。提出的是输入值中的n个整数位,从而形成位限制输出Δωi。数值Δωi是量化未偏置差分编码LSP频率,从代表LPC系数的信道中传送。
数值Δωi也通过一个由逆量化器468、加法器470、缓存器472和乘法器474组成的预测器反馈。逆量化器468由步长查算表476、最小动态范围查算表478、乘法器480和加法器482组成。
数值Δωi与选自查算表476的一个数值一起输入乘法器480。查算表476含有在各个速率下依据于表VI中所列数值的各LSP数值的步长所对应的数值。依据速率和LSP频率索引i,从查算表476中选择输出值。对于各个速率和LSP频率索引i,存在查算表460中的数值是(动态范围/2n-1),其中,n是代表量化值的位数。乘法器480将输入值相乘,提供输出给加法器482。
加法器482从另一输入接收表478的一个数值。表478的输出数值根据表VI中所列最小动态范围数值,无视其符号,由速率和LSP频率索引i来确定。加法器482将表478提供的最小动态范围值与乘法器480的输出值相加,结果输出给加法器470。
加法器470在另一输入端接收到乘法器474的预测值输出。这些值在加法器470中相加,并存储在十个字容量的缓存器472中。在当前帧中缓冲器472的每个先前帧输出值在乘法器474中乘以常数0.9。乘法器474输出的预测值如前面讨论过的那样,供给加法器452和470。
在当前帧中,缓存器472中存储的数值是先前帧重建LSP值减去偏置值。相类似,在当前帧中,加法器470的输出值是不带偏置的当前帧重建的LSP值。在当前帧中,缓存器472和加法器470的输出分别提供给加法器484和486,加上偏置数。加法器484和486的输出值分别是先前帧重建LSP频率和当前帧重建LSP频率值。依照下列等式在更低速率下进行LSP平滑化平滑后LSP=a(当前LSP)+(1-a)(先前LSP) (24)其中a=0全速率下a=0.1 半速度下a=0.5 四分之一速率下a=0.85 八分之一速率下先前帧(f-1)重建LSP频率值ω′i,f-1和当前帧(f)重建频率值ω′i,f从量化子系统210输出到音调子帧LSP内插子系统216和码书子帧LSP内插子系统226。量化后的LSP频率值Δωj从LSP量化子系统210输出到数据汇编子系统236,用于传送。
以后说明的加权滤波器和共振峰合成滤波器所用到的LPC系数对于正在编码的音调子帧是合适的。对各个音调子帧,LPC系数的内插对每个音调子帧进行一次,如表VII表VII束率1ωi=0.75ω′i,f-1+0.25ω′i,f音调子帧1ωi=0.5ω′i,f-1+0.5ω′i,f音调子帧2ωi=0.25ω′i,f-1+0.75ω′i,f音调子帧3ωi=ω′i,f音调子帧4速率1/2ωi=0.625ω′i,f-1+0.375ω′i,f音调子帧1ωi=0.125ω′i,f-1+0.875ω′i,f音调子帧2速率1/4ωi=0.625ω′i,f-1+0.375ω′i,f音调子帧1速率1/8不进行音调检索音调子帧计数器224用于跟踪计算音调参数的音调子帧,计数器的输出提供给音调子帧LSP内插子系统216,用于音调子帧LSP内插。音调子帧计数器224还提供一个输出给数据压缩子系统236,指示在选中速率下音调子帧的结束。
图13示出音调子帧LSP内插子系统216的一个例示装置,它用于对相关音调子帧的LSP频率进行内插。在图13中,先前和当前LSP频率ω′i,f-1和ω′i,f分别从LSP量化子系统输出到乘法器500和502,再分别乘以存储器504提供的常数。存储器504存储一组常数,并且,根据来自音调子帧计数器的音调子帧数输入(这在后文讨论),提供一个表VII中所列的常数输出,与先前和当前帧LSP数值相乘。乘法器500和502的输出按照表VII中的等式在加法器506中相加,形成该音调子帧的LSP频率值。对于各音调子帧,LSP频率的内插一旦完成,就执行LSP至LPC的反向转换,以获得感知加权滤波器和A(z)的当前系数值。这样,内插后的LSP频率提供给图7的LSP至LPC转换子系统218。
LSP至LPC转换子系统218将内插LSP频率逆转换成LPC系数,用于语音的再合成。先前的参考文章,宋和江所著的“线频谱对(LSP)和语音数据压缩”中对本发明在转换过程中用的算法有全面的讨论和推导。计算特征是这样的,P(z)和Q(z)可以利用LSP频率由下列等式表示P(z)=(1+Z-1)πi=15(1-2cos(ω2i-1)Z-1+Z-2)----(25)]]>其中,ωi是P′多项式的根(奇频率),Q(z)=(1-Z-1)πi=15(1-2cos(ω2i)Z-1+Z-2)----(26)]]>其中,ωi是Q′多项式的根(偶频率),A(z)=Pz+Qz2----(27)]]>这一运算首先是对所有奇频率i算出数值2cos(ωi)。利用零附近的余弦的5阶单精度泰勒级数展开式完成该计算。在余弦表中最接近点处的泰勒展开式可能更准确,但是,零附近的展开式有足够精度,并且,不会带来多余的计算。
接下去,计数P多项式的系数。多项式之积的系数是单个多项式的系数序列的卷积。上述等式(25)中6个z多项式系数序列的卷积{1,-2cos(ω1),1},{1,-2cos(ω3),1}……{1,-2cos(ω9),1}和{1,1}被算出。
P多项式一经算出,就对Q多项式重复相同的程序,上述等式(26)中的6个z多项式系数序列{1,-2cos(ω2),1},{1,-2cos(ω4),1}……{1,-2cos(ω10),1}和{1,1}以及适当的系数被加起来,并除以2,即移动1位,以形成LPC系数。
图13还详细地示出LSP至LPC转换子系统的例示执行过程。电路部分508依据输入值ωi计算出数值-2cos(ωi)。电路部分508由缓存器509、加法器510和515、乘法器511、512、514、517和518、寄存器513和516组成。在计算数值-2cos(ωi)时,寄存器513和516被初始化为零。因为该电路是计算sin(ωi)的,所以,在加法器510中首先先以输入常数值π/2减ωi。该数值由乘法器511取平方,然后,用乘法器512和寄存器513依次计算数值(π/2-ωi)2、(π/2-ωi)4、(π/2-ωi)6和(π/2-ωi)8。
泰勒级数展开式系数C〔1〕-C〔4〕依次和乘法器512的输出值一起输入乘法器514。乘法器514的输出值输入加法器515,与寄存器516的输出相加,这些值累加形成输出C〔1〕(π/2-ωi)2+C〔2〕(π/2-ωi)4+C〔3〕(π/2-ωi)6+C〔4〕(π/2-ωi)8,输给乘法器517。来自寄存器516的乘法器的输入与来自加法器510的输出 在乘法器517中相乘。来自乘法器517的数值cos(ωi)在乘法器518中乘以常数-2,从而形成输出-2cos(ωi),提供给电路部分520。
电路部分520用于计算P多项式的系数,它由存储器512、乘法器522和加法器523组成。存储器单元P(1)…P(11)的阵列除P(1)置为1之外其余初始化为0。已标到的-2cos(ωi)数值送入乘法器524,执行卷积(1,-2cos(ωi),1),其中,1≤i≤5,1≤j≤2i+1,j<1时P(j)=0。电路部分520是双份的(未示出),以便计算Q多项式的系数。得到的P(1)-P(11)和Q(1)-Q(11)新的最终值送给电路部分524。
电路524用来完成i=1至i=10的十个音调子帧LPC系数αi的计算。它由缓存器525和526、加法器527、528和529、除法器或位移位器530组成。最终值P(i)和Q(i)存储在缓存器525和526中。P(i)和P(i+1)数值在加法器527中相加,而相应的Q(i)和Q(i+1)值在加法器528中相减,这里1≤i≤10。加法器527和528的输出,分别为P(z)和Q(z),输入加法器529,相加并输出数值(P(z)+Q(z))。将各个位移动一位,从而将加法器的输出除以2。各移位后的数值(P(z)+Q(z))/2是LPC系数αi输出。音调子帧LPC系数送给图7的音调检索子系统220。
除了全速率之外,对选中速率所确定的各个码书子帧,LSP频率也经过内插。内插的计算方式与音调子帧LSP内插的相同。码书子帧LSP内插在码书子帧LSP内插子系统226中运算,并提供给LSP至LPC转换子系统228,转换是以类似于LSP至LPC转换子系统218的方式进行的。
在参见图3时讨论过,音调检索是一种利用合成技术的分析,通过选择使输入语音和合成语音的误差最小的参数来进行编码。在音调检索中,语音是用等式(2)表示频率特性的音调合成滤波器合成的。每隔20ms,语音帧被划分成一定量的音调子帧,如前所述,它依赖于为该帧所选择的数据速率。对于每一个音调子帧分别计算一次参数b和L,即音调增益和滞后。在这儿例示的执行过程中,音调滞后L介于17和143之间的,在b=0的情况下,为了传送原因L=16。
语音编码器用到了在等式(1)中所列形式的感知噪声加权滤波器。如前所述,感知加权滤波器的目的是给处在低能量的频率中的错误加权,从而减少错误引起的噪声的影响。感知加权滤波器是从以前建立的短期预测滤波器中导出的。在该加权滤波器以及后文将说明的共振峰合成滤波器中用到的LPC系数是为正在编码的子帧适当地内插过的数值。
在进行合成一分析操作时,在编码器中用到语音译码器/合成器的备份。在语音编码器中所用的合成滤波器的形式由等式(3)和(4)给出。等式(3)和(4)对应于一个其后有感知加权滤波器的译码语音合成滤波器,因而称其为加权合成滤波器。
在假设当前帧时码书基值为零,即G=0情况下,进行音调检索。对于每个可能的音调滞后L进行语音合成,并将它与原始语音比较。输入语音和合成语音之间的误差在计算其均方误差(MSE)之前由感知加权滤波器加权。其目的是从所有可能的L和b值中选取使感知加权语音和感知加权合成语音之间的误差最小的L和b数值。误差的最小化可以用下列等式表示MSE=1LPΣn=0Lp-1(x(n)-x′(n))2----(28)]]>其中,Lp是音调子帧中取样的数量,在本实施例中,对全速率音调子帧为40。计算出使MSE最小的音调增益b。对所有允许的L数值重复这些运算,并给音调滤波器选择产生最小MSE的L和b。
最佳音调滞后的计算涉及在n=-Lmax与n=(Lp-Lmin)-1之间所有时间下的共振峰余量(图3中的P(n)),其中Lmax是最大音调滞后值,Lmin是最小音调滞后值,而Lp是选中速率下的音调子帧长度,n=0是音调子帧的起点。在本实施例中,Lmax=143,而Lmax=17。采用图14中给出的编号方案,对于速率1/4,n=-143到n=142,而对于速率1/2,n=-143到n=62,对于速率1,n=-143到n=22。当n<0时,共振峰余量就是来自先前音调子帧的音调滤波器输出,它保存在音调滤波器存储器中,称为闭环共振峰余量。在n>=0的时候,共振峰余量是共振峰分析滤波器的输出,该滤波器具有滤波特性A(z),其输入是当前分析帧语音取样。在n>=0时,共振峰余量称为开环共振峰余量,并且当音调滤波器和码书在该子帧中作了极好的预测时,正好为P(n)。对于从相关的共振峰余量值计算出最佳音调滞后的说明将参照图14-17给出。
音调检索是对143个重建的闭环共振峰余量取样P(n)(n<0)以及Lp-Lmin非量化开环共振峰余量取样Po(n)(n≥0)作出的。该检索有效地从一种基本开环检索,其中L是小的,并且所用到的大部分余量取样为n>0,逐渐转变成一种基本闭环检索,其中L是大的,因而用到的所有余量取样是n<0。例如,在全速率下利用图14中的编号方案,其中,音调子帧由40个语音取样组成,则语音检索从采用号码n=-17到n=22的共振峰余量取样组开始进行。在这一方案中,从n=-17到n=-1,取样为闭环共振峰余量取样,而从n=0到n=22,取样为开环共振峰余量取样。用于确定最佳音调滞后的下一组共振峰余量取样是编号由n=-18到n=21的取样。而从n=-18到n=-1,取样是闭环共振峰余量取样,从n=0到n=21,则是开环共振峰余量取样。对所有取样组进行该过程,直到给最后的共振峰余量取样组n=-143至n=-104计算出音调滞后为止。
前面就等式(28)讨论过,目的是在随机码书给出零基值(G=0)的情况下,对于所有可能的L和b值,使x(n)与x′(n)之间的误差最小,这里x(n)是感知加权语音减去加权共振峰滤波器的零输入特性曲线(ZIR),x′(n)是滤波器中无存储时的感知加权合成语音。等式(28)可以重写成关于b的等式MSE=1LpΣn=0Lp-1(x(n)-by(n))2----(29)]]>其中y(n)=h(n)*P(n-L)0≤n≤Lp-1(30)其中,y(n)当b=1时是带有音调滞后L的加权合成语音,而h(n)是具有等式(3)的滤波特性的加权共振峰合成滤波器的冲激响应。
该最小化过程等同于使EL值最大化,其中EL=(Exy)2Eyy----(31)]]>其中Exy=Σn=0Lp-1x(n)y(n)----(32)]]>及Eyy=Σn=0Lp-1y(n)y(n)----(33)]]>对于给定的L,最佳值b为bL=ExyEyy----(34)]]>这一检索对所有允许的L值重复进行。最佳值b限制为正,因而,对于在检索中导致任何负的Exy值的L值不作考虑。最后,选出使EL值最大的音调滞后L和音调增益b用于传送。
如前所述,x(n)实际是输入语音与加权共振峰滤波器的ZIR之间的感知加权差,这是因为,对于后面的等式(35)-(38)中设定的递归卷积,已假设滤波器A(z)总是从滤波器存储器中的零起始。然而,滤波器从滤波器存储器中的零起始并非实际情况。在合成时,滤波器处在从先前子帧保留下来的状态下。在执行过程中,在起始点,从感知加权语音中除去初始状态的影响。在这种方式下,对每一L值,只需计算稳态滤波器A(z)的特性曲线直到p(n),所有存储器最初为0,并且可以用到递归卷积。x(n)的值只需计算一次,但是,共振峰滤波器对音调滤波器的输出的零状态响应y(n)要就每一滞后L进行计算。各y(n)的计算涉及许多次不必就每一滞后都进行的冗余乘法运算。下文中说明的递归卷积方法用于将所需计算减至最少。
关于递归卷积,数值yL(n)用y(n)值定义成yL(n)=h(n)*P(n-L)17≤L≤143 (35)或yL(n)=∑h(i)p(n-L-i)17≤L≤143 (36)从等式(32)和(33)可看出yL(o)=P(-L)h(o)(37)yL(n)=YL-1(n-1)+p(-L)h(n) 1≤n≤Lp,17≤L≤143(38)
这样,一旦完成y17(n)的初始卷积,余下的卷积就可以递归地进行,大大减少了所需的计算次数。对于速率1的上述特定例子,利用编号为n=-17到n=22的共振峰余量取样组藉助等式(36)计算出数值y17(n)。
参见图15,编码器包括图5译码器的备份,即图7的译码器子系统235,但不带自适应后置滤波器。在图15中,音调合成滤波器550的输入是码书值cI(n)与码书增益G的乘积。输出的共振峰余量取样p(n)输入共振峰合成滤波器552,经过滤波并作为重建语音取样s′(n)输出。在加法器554中,从对应的输入语音取样s(n)中减去重建语音取样s′(n)。取样s′(n)与s(n)之差输入感知加权滤波器556。关于音调合成滤波器550、共振峰合成滤波器552和感知加权滤波器556,每一滤波器含有一个滤波器状态记忆,其中Mp是音调合成滤波器550中的记忆;Ma是共振峰合成滤波器552中的记忆,而Mw是感知加权滤波器556中的记忆。
来自译码器子系统共振峰合成滤波器552的滤波器状态Ma提供给图7的音调检索子系统220。在图16中,滤波器状态Ma用来计算滤波器560的零输入响应(ZIR),滤波器560计算共振峰合成滤波器552的ZIR。在加法器562中从输入语音取样s(n)中减去计算出的ZIR值,其结果由感知加权滤波器564加权。感知加权滤波器564的输出xp(n)用在等式(28)-(34)中作为加权输入语音,其中,x(n)=xp(n)。
再参见图14和15,图14中示出的音调合成滤波器552输出到自适应码书568,后者基本上是一个存储器,用于存储如上文讨论的那样计算出的闭环和开环共振峰余量取样。闭环共振峰余量存在存储器部分570中,而开环共振峰余量存在存储器部分572中。这些取样按照前文讨论过的编号方案存储。如上文中讨论的那样,按照各音调滞后L检索中的使用情况来组织闭环共振峰余量。开环共振峰余量用共振峰分析滤波器574从各音调子帧的输入语音取样中算出,滤波器574在计算po(n)值时用到译码器子系统共振峰滤波器552的记忆Ma。用于各当前音调子帧的Po(n)数值移位通过一系列延迟元件576,提供给自适应码书568的存储器部分572。开环共振峰余量被存储起来,所产生的第一个余量取样编号为0,而最后一个编号为142。
现参见图16,共振峰滤波器的冲激响应h(n)在滤波器566中算出,并输出给移位寄存器580。在滤波器中为每一音调子帧计算这些数值,这在上文中谈到共振峰滤波器h(n)的冲激响应时,即谈到等式(29)-(30)和(35)-(38)时讨论过。为了进一步减少音调滤波器子系统的计算需求,共振峰滤波器h(n)的冲激响应截断为20个取样。
移位寄存器580及乘法器582、加法器584和移位寄存器586组合起来,如上文中讨论的那样,进行来自移位寄存器580的数值h(n)与来自自适应码书568的数值c(m)之间的递归卷积。执行这一卷积操作是为了在假定音调增益设为1的情况下寻找共振峰滤波器对来自音调滤波器存储器的输入的零状态响应(ZSR)。在卷积电路的操作中,对每一m值,n从Lp循环至1,而m从(Lp-17)-1循环至-143。在寄存器586中,当n=1时数据不移动,而当n=Lp时不锁存数据。当m≤-17时,数据提供为卷积电路的输出。
继卷积电路之后的是相关和比较电路,执行检索,以寻找最佳音调滞后L和音调增益b。相关电路亦称为均方误差(MSE)电路,计算ZSR与共振峰滤波器的ZIR和输入语音即x(n)之间的感知加权差的自相关性和互相关性。利用这些数值,相关电路就每一音调滞后数值计算出最佳音调增益b的数值。相关电路由移位寄存器588、乘法器590和592、加法器594和596、寄存器598和600、除法器602组成。在相关电路中,计算是这样进行的,即n从Lp循环至1,而m从(Lp-17)-1循环至-143。
相关电路之后是比较电路,它执行数据比较和存储,以确定音调滞后L和增益b的最佳值。比较电路由乘法器604、比较器606、寄存器608、610和612、量化器614组成。比较电路为每一音调子帧输出使合成语音和输入语音之间的误差最小的L和b值。b的值由量化器614量化到8级,用一3位的数值表示,当L=16时导出一个附加级,b=0级。这些L和b值提供给码书检索子系统230和数据缓存器222。它们通过数据压缩子系统238或数据缓存器222提供给译码器234,用于音调检索。
类似于音调检索,码书检索是一种由合成编码系统进行的分析,在系统中,编码是通过选取使输入语音与用这些参数合成的语音之间的误差最小的参数完成的。对于速率1/8,音调增益b设为零。
如前文中讨论的那样,每20ms分成多个码书子帧,如前所述,它们依赖于为该帧所选取的数据速率。对每一码书子帧分别计算一次参数G和I,即码书增益和索引。在计算这些参数时,除了全速率之外,在码书子帧LSP内插子系统226中以类似于对音调子帧LSP内插子系统216说明过的方式对该子帧进行LSP频率内插。对于每个码书子帧,码书子帧内插LSP频率也由LSP至LPC转换子系统228转换成LPC系数。码书子帧计数器232用于跟踪计算码书参数的码书子帧,计数器输出提供给码书子帧LSP内插子系统226,用于码书子帧LSP内插。码书子帧计数器232也提供一个输出给音调子帧计数器224,显示在选中速率下的码书子帧的结束。
激励码书由2M个码矢量组成,它们是依据一种单元变量白色高斯随机序列而建立的。M=7时,码书中有128个入口。码书以某种递归方式组织,以使各个码矢量与相邻的码矢量相差一个取样,即一个码矢量中的取样移动一位,在一端移入一个新的取样,而在另一端抛掉一个取样。因而,一个递归码书可以作为一个长2M+(Lc-1)的线性阵列存储,其中,Lc是码书子帧长度。然而,为了简化执行过程,和保存存储器空间,采用2M个取样长的循环码书(128个取样)。
为了减少计算量,码书中的高斯数值的中心部分值被消除。这些数值最初选自方差为1的白色高斯过程。然后,将小于1.2的数值设为零。这有效地将大约75%的数值设置成零,产生一个脉冲码书。码书的中心削除将在码书检索中执行递归卷积所需的计算量降低到 ,因为对零无须进行计算。用在当前执行过程中的码书在下面的表VII中给出。
表VII0×0000 0×0000 0×0000 0×0000 0×2afe 0×0000 0×0000 0×00000×41da 0×0000 0×0000 0×0000 0×0000 0×0000 0×0000 0×00000×0000 0×0000 0×0000 0×0000 0×0000 0×3bb3 0×0000 0×363e0×0000 0×0000 0×0000 0×0000 0×0000 0×0000 0×417d 0×00000×0000 0×0000 0×0000 0×0000 0×0000 0×0000 0×0000 0×00000×0000 0×0000 0×0000 0×0000 0×0000 0×9dfe 0×0000 0×00000×0000 0×0000 0×0000 0×0000 0×0000 0×0000 0×0000 0×00000×0000 0×c58a 0×0000 0×0000 0×0000 0×0000 0×0000 0×00000×0000 0×c8db 0×d365 0×0000 0×0000 0×d6a8 0×0000 0×00000×0000 0×3e53 0×0000 0×0000 0×d5ed 0×0000 0×0000 0×00000×d08b 0×0000 0×0000 0×0000 0×0000 0×3d14 0×396a 0×00000×0000 0×0000 0×0000 0×0000 0×0000 0×4ee7 0×d7ca 0×00000×0000 0×438c 0×0000 0×0000 0×ad49 0×30b1 0×0000 0×00000×0000 0×0000 0×0000 0×0000 0×0000 0×0000 0×0000 0×00000×0000 0×0000 0×3fcd 0×0000 0×0000 0×d187 0×2e16 0×d09b0×cd8d 0×0000 0×0000 0×0000 0×0000 0×0000 0×0000 0×32ff又语音编码器采用包括公式(3)给出形式的加权合成滤波器在内的公式(1)给出形式的感知噪声加权滤波器。对于各个码书指数I,合成语音并与原来的语音比较。在计算出其MSE前误差由感知加权滤波器加权。
如前所述,目的是使X(n)和X′(n)之间的误差在I和G的所有可能值上为极小。该误差的极小化可以由下面公式表示MSE=1LcΣn=0Lc-1(X(n)-X′(n))2----(39)]]>这里Lc是码书子帧中的样本数。这里对于G公式(38)可改写MSE=1LcΣn=0Lc-1(X(n)-GY(n))2----(40)]]>这里Y是通过用第1码矢量并假定G=1卷积共振峰主频成分滤波器的冲激响应而得到的。使该MSE极小转而等效于使大EI=(Exy)2Eyy----(41)]]>为极大,这里Exy=Σn=0Lc-1X(n)Y(n)----(42)]]>和Eyy=Σn=0Lc-1y(n)Y(n)----(43)]]>根据下面的公式得到对于所给的I最优的G,GI=ExyEyy]]>对于I的所有允许值重复这检索。与音调检索相反,该最优增益G允许为正值或负值。最后使EI极大的指数I,和码书增益G被选择用于传送。
还应注意加权音调和共振峰主频成分的滤波器的ZIR跟输入语音之间的感知加权差值X(n)仅需计算一次。而对于各个码矢量的音调和共振峰主频成分滤波器的零状态响应需对于各个指数I来计算。由于采用循环码书,用于音调检索的所述递归卷积方法可用来使所需的计算量为最小。
再参见图15,编码器包括与图5中的译码器一样的即图7的译码器子系统在此计算出滤波器状态。其中Mp是在音调合成滤波器550中的记忆,Ma是在共振峰合成滤波器552中的记忆;Mw是在感知加权滤波器中的记忆。
分别来自译码器子系统的音调合成和共振峰滤波器的滤波器状态Mp和Ma送给图7的码书检索子系统230。在图17中滤波器状态Mp和Ma送给零冲激响应(ZIR)滤波器620以计算音调和共振峰合成滤波器550和552的ZIR。在加法器622中从所输入的输入语音样值S(n)减去计算出的音调和共振峰滤波器的ZIR,该结果由感知加权滤波器加权。感知加权滤波器的输出Xc(n)用作上面的MSE公式(39)-(44)中的加权了的输入语音则X(n)=Xc(n)。
图17,在滤波器626中计算共振峰滤波器的冲激响应h(n)并输出至移位寄存器628。对于各个码书子帧计算共振峰滤波器的冲激响应h(n)。为进一步减少所需的计算量,该共振峰滤波器的冲激响应h(n)截取20个样本。
移位寄存器628随同乘法器630、加法器632和移位寄存器634一起进行来自移位寄存器628的值h(n)与来自于如上所述含有码书矢量的码书636的值c(m)间的递归卷积。假定码书增量为1,进行这卷积运算以对各个码矢量寻找共振峰滤波器的零状态响应。该卷积电路的运行,对于每个m,n从Lc到1循环,而m则从1到256循环。在寄存器586中当n=1数据不送出而当n=Lc数据不锁存。当m≤1数据才作为该卷积电路的输出给出。应该注意的是在开始紧接在卷积电路后的相关与比较电路前必须起动卷积电路以通过循环m子帧大小次数进行递归卷积运算。
该相关与比较电路进行实际的码书检索产生码书指数I值和码书增益G值。该相关电路除了被作为均方差(MSE)电路借用以外,还由音调与共振峰滤波器的ZIR跟输入语音X′(n)之间的感知加权差值来计算ZSR的自相关和互相关。换句话说该相关电路对码书指数I的各个值计算码书增益G。该相关电路包括移位寄存器638,乘法器640和642,加法器644和646,寄存器648和650,和除法器652。在相关电路中计算是n从Lc到1循环而m从1到256循环的。
接在相关电路后的比较电路为确定码书指数I和增益G的最优值进行数据的比较和存储。该比较电路包括乘法器654,比较器656,寄存器658、660和662,和量化器664。该比较电路为各个码书子帧提供使合成语音与输入语音之间的误差为极小的I和G的值。该码书增益G在量化器614中量化,DPCM在量化期间以类似于参考图12所述的偏置消除的LSP频率量化和编码对该值编码。这些I和G值然后送给数据缓冲器222。
在量化和该码书的DPCM编码中增益G是按照下面的公式计算的。
量化后的Gi=20logGi-0.45(20logGi-1+20logGi-2)(45)这里20logGi-1和20log Gi-2分别是对前一帧(i-1)和再前一帧(i-2)计算出的值。
该LSP、I、G、L和b值随同速率送到数据压缩子系统236以安排这数据用于传输。在一项实施中该LSP、I、G、L和b值随同速率可经数据压缩子系统236送给译码器234。在另一项实施中这些数据可经数据缓冲器222送给译码器234以用于音调检索。而在较佳实施例中在数据压缩子系统236中所采用的对码书符号位的保护会影响码书指数。所以I和G数据直接从数据缓冲器222送出时必须考虑到该保护。
在数据压缩子系统236中数据可根据各种传输格式压缩。图18示出数据压缩子系统236的功能单元的说明性实施例。数据压缩子系统236包括伪随机数发生器(PN)670,循环冗余校验(CRC),计算单元672,数据保护逻辑674和数据组合器676。PN发生器670接收速率并对八分之一速率产生一4位的随机数送给数据组合器676。CRC单元672接收码书增益和LPS值以及速率,并对全速率产生一11位内部CRC码送到数据组合器676。
数据组合器676接收该随机数,CRC码,以及来自数据缓冲器222(图7b)的速率和LSP、I、G、L和b值将输出送到传输信道数据处理子系统234。在该项实施中数据以最小量直接从数据缓冲器222送到译码器234则PN发生器4位数则从PN发生器670经数据组合器676送到译码器234,在全速率时包括CRC位在内随同帧数据作为从数据组合器674的输出,而在八分之一速率该码书指数丢下并由随机4位数取代。
在该例示实施例中最好向码书增益符号位提供保护。对该位的保护会使声码器的译码器对在该位的单个位的误码不敏感。如果因一个未检出的误码而使该符号位改变,该码书指数就会指向与最优值不相关的矢量。在误码情况下没有保护,就会选取该最优矢量的相反量,实质上为所要采用的可能矢量的最差矢量。这里所采用的保护方案确保增益符号位中的单个位误码不会使该最优矢量的相反量在该误码情况下被选用。数据保护逻辑674接收该码书指数和增益并检查该增益值的符号位。若确定出增益值符号位是相反的对相关联的码书指数加该值89,取模128 。该码书指数不论是否修改都从数据保护逻辑674输出到数据组合器676。
在该例示实施例中最好在全速时例如由一内部CRC(循环冗余校验)保护所压缩的话音包数据在感觉上最敏感的位。11特殊位被用来进行可校正所保护的任何单个误码的这种误码校验功能。所保护的块包括10个LSP频率的最重要位和8个码书增益值的最重要位。若在该块中出现无法校正的误码,该包则被废弃并标明下面述及的消除记录。否则该音调增益设为0而余下的参数仍用收到的值。在例示实施例中让一生成多项式g(X)=1+X3+X5+X6+X8+X9+X10产生一(31,21)循环码来选出循环码。但应注意的是也可用其他生成多项式。附加一总的奇偶校验位使它为-(32,21)码。既然仅有18个信息位,则该码字中的前3位置零并且未被传输。该项技术提供附加的保护,这样若校正子表明在这些位置有误码,这就意味着有无法校正的误码。系统地对循环码的编码涉及当X10μ(X)模g(X)奇偶校验位的计算则μ(X)是信息多项式。
在译码结束时,该校正子是用g(X)除所接收到的矢量计算得出的余数。若该校正子未显示有误码,则不论总的奇偶校验位的状态均接收该包。若该校正子显示有单个误码,若未对总的奇偶校验位的状态检查则该误码被校正若该校正子显示有多于一个的误码,则该包被废弃。关于这些误码防护方案的更详细内容可在林和科斯特罗的“误码控制编码基础及应用”4.5节中校正子计算的详细内容中找到。
在CDMA蜂窝式电话系统实施中为在20秒数据传送帧内传送将数据从数据组合器674送到传输信道数据处理子系统238用于数据压缩。在其中声码器设定为全速率的传输帧中,由于有效位速率为9.6Kbps故传输192位。本例中的传输帧包括1位用以指示混合帧形式(0=仅为话音,1=话音和数据/信号码)的混合方式位;160位声码器数据随同11位内部CRC位;12位外部或帧CRC位;和8位尾部位或嵌入位。在半速率时,由于4.8Kbps的有效位速率故传送80位声码器数据位以及8位帧CRC位和8位尾部位。在四分之一速率时,由于2.4Kbps的有效位速率故传送40位声码器数据位以及8位尾部位。最后在八分之一速率时,由于1.2Kbps的有效位速率故传送16位声码器数据位以及8位尾部位。
要应用本发明声码器的CDMA系统中所采用的调制的更详细细节在1990年6月25日申请的申请号为07/543,496,转让给本发明的受让人的题为“用于产生CDMA蜂窝式电话系统中信号波形的系统和方法”的共同待批专利申请中揭示。在这种系统中在不是全速率的速率时采用了数据位组织成位组而位组伪随机地置于20ms的数据传送帧中的方案。应该理解除了那些用于这里对声码器和CDMA系统实施作说明的还可现成地采用其他帧速率和位表示,这样别的实施例可用于声码器和其他系统的应用。
在CDMA系统与也适用的其他子系统中,以一帧接一帧为基础的处理子系统238可中断声码器数据的传输以传输诸如信号码数据或其他非语音数据之类的其他数据。传输情况的这种特殊形式是指“间隔和突发”。处理器子系统238必须用在该帧所要传输的数据取代该声码器数据。
会出现另一种情况人们希望在同一数据传输帧期间传输声码器数据和其他数据。传输情况的这种特殊形式是指“迟缓和突发”。在“迟缓和突发”传输中,该声码器没有速率约束指令以设定声码器最终速率在所需要的速率上,例如半速率。该半速率编码的声码器数据送给处理器子系统238而为该数据传输帧插入随同声码数据的附加数据。
提供给全双工电话线路的另一个附加功能是速率联锁。若线路的一个方向以最高的传输速率传输,那么上线路的另一个方向则被迫以最低的速率传输。甚至以最低速率,对于主动谈话者有足够的理解以意识到他正被打断和要停止谈话是可行的,藉此允许该线路别的方向估计主动谈话者一方。而且若主动谈话者在企图中断时继续谈话,因为他自己的语音干扰了感觉质量的能力也可能会未感觉出质量的降级。该声码器还能通过采用速率限制指令设定成以低于通常速率的速率对话音进行声音编码。
应该理解当在CDMA系统中需要额外的容量时该速率限制指令可设定该声码器最大速率低于全速率。在其中公共频谱用于传输的CDMA系统中某用户信号会对该系统中的别的用户有干扰。系统用户容量因而由系统用户引起的总干扰所限制。随着干扰水平的上升,通常是由于在该系统中的用户的增长,由于干扰的增加用户体验到质量的降级。
各个用户对CDMA系统的干扰的贡献是用户传输数据速率的函数。通过设定声码器以低于通常的速率对语音编码,该编码数据随后以相应降低的数据速率传输,以降低由该用户所引起的干扰的水平。所以通过以较低速率对语音进行声音编码系统容量会得到实质性的提高。随着系统的需求上升,可由系统管理机或蜂窝基地站指令用户声码器降低编码速率。本发明的声码器具有一种良好的质量,语音以全速和半速编码时虽然两者可感觉有些差异但量很小。因而语音以例如半速率的较低速率进行声音编码对系统用户间的通信质量的后果不及因系统用户数量的上升所引起的干扰水平的上升所带来的后果严重。
因而可采用各种方案为低于通常的声音编码的速率来设定各自的声音编码器速率界限。例如可指令在蜂窝中的所有用户以半速率对语音编码。这种办法实质上以很小的用户间通信质量的损失降低系统的干扰,而为额外客户在容量上提供实质的增长。直到由额外用户引起的系统的总干扰量上升到降级水平故而不会对用户间的通信质量形成冲击。
如前所述,为实现对语音样本帧编码的分析一合成技术该编码器包括一个与译码器相同的复本如图7所示,译码器234接收经过数据压缩子系统238或数据缓冲器222的L,b,I和G值以重建合成的语音来与输入语音比较。译码器的输出如前所述为Mp,Ma和Mw值。用于编码器和在传输信道另一端重建合成语音的译码器234的更详细细节可参见图19-24说明。
图19是本发明译码器例示性实施例的流程图。在编码器中和在接收机中所实施的译码器具有共同的结构,因而这些实施例在一起说明。对图19的说明主要针对在传输信道一端的译码器,因为在那里接收到的数据必须在译码器中预处理正象在编码器的译码器中直接从数据压缩子系统238或数据缓冲器222收到合适数据(速率,I,G,L和b)。不过对于实施编码器和译码器来说译码器的基本功能是相同的。
如前面参见图5所讨论的那样,对各个码书子帧由该码书指数I所规定的码书矢量是从存储的码书中检索出的。该矢量以该码书增益G随后对每音调子帧由音调滤波器滤波产生共振峰余量。该共振峰余量由共振峰滤波器滤波随后通过一自适应共振峰后置滤波器和一清晰度后置滤波器,以及自动增益控制(AGC)以产生输出语音信号。
尽管码书和音调子帧的长度是变化的,为方便实施在40样本块中进行译码。所收到的压缩数据首先被分解成码书增益,码书指数,音调增益,音调滞后和LSP频率。该LSP频率如参见图22所说明的那样必须经他们各自的逆向量化器和DPCM译码器处理。类似地码书增益值除了没有偏置必须以与LSP频率相似的方式处理。音调增益值也被逆向量化。这些参数随后送给各个译码子帧。在各个译码子帧中,2套码书参数(G和I),1套音调参数(b和I)和一套LPC系数需产生40个输出样本。图20和21对于各种速度和其他帧状况示出例示性子帧译码参数。
对于全速率帧,有8套收到的码书参数和4套收到的音调参数。LSP频率被内插4次产生4套LSP频率。所收到的参数和相应的子帧信息列于图20a中。
对于半速率帧,4套收到码书参数的各套重复一次,2套收到的音调参数的各套重复一次。LSP频率被内插3次产生4套LSP频率。所收到的参数和相应的子帧信息列于图20b中。
对于四分之一速率帧,2套收到的码书参数的各套重复4次,该套音调参数也被重复4次。LSP频率被内插一次产生2套LSP频率。所收到的参数和相应的子帧信息列于图20c中。
对于八分之一速率帧,该套收到的码书参数用于整个帧。音调参数对于八分之一速率未给出且该音调增益简单地设为零。该LSP频率内插1次产生1套LSP频率。所收到的参数和相应的子帧信息列于图20d中。
有时,话音包可按序空出让CDMA单元或移动台传输信号码信息。当声码器收到一空白帧,它继续对前一帧参数作较小的改动。码书增益设为零。前一帧的音调滞后和增益用于当前帧的音调滞后和增益,除非该增益被限定成某值或更小。就像没有内插而用前一帧的LSP频率。注意编码端和译码端一直被同步且声码器能很快从一空白帧复原。所收到的参数和相应的子帧信息列于图21a。
在因信道差错而丢失一帧的情况下,该声码器试图通过保持前一帧的能量部分且平滑地过渡到背景噪声来屏蔽该差错。在该例中音调增益设成零;通过用前一帧的码书指数加89选取一随机码书;码书增益则是前一子帧的码书增益的0.7倍。应该注意的是数89没有什么特别的东西,这只是选取伪随机码书矢量的通常方法。该前一帧的LSP频率被迫向他们偏置值衰落为ωi=0.9(前面的ωi-ωi的偏置值)+ωi的偏置值(47)该LSP频率偏置值在表5中示出。所收到的数据和相应的子帧信息列于图21b中。
若在接收机中未能确定出速率,该包被废弃并标上消除记录。然而若接收机确定有很大可能该帧是以全速率传输的,尽管带有差错仍进行下面的过程。如前所述在全速率时该压缩的话音包数据的感觉上最敏感的位由内部CRC保护。在译码端正如接收到的矢量除以来自公式(46)的g(X)而得出余式那样计算出校正子。若校正子显示无误码,则不论总的奇偶校验位而接收该包。若该校正子显示单个误码,若总的奇偶校验位不检查该误码被校正。若该校正子显示多于一个误码。该包则被废弃。若在该块中出现元法校正的误码,该包被废弃且标明消除记录。否则该音调增益被置零而其余的参数如图21c所示随着校码被接收而被采用。
本实施例中所采用的后置滤波器首先在J.H.陈等人的“用自适应后置滤波以4800BPS实时向量APC语言编码”(Proc.ICASSP,1987)中揭示。既然语音共振峰主频成分比起频谱凹谷在感觉上更为重要,该后置滤波器促使该共振峰主频成分稍微提升以改善该编码语音的感性质量。通过相对于原来的径向地对共振峰主频成分的极点定标来进行。然而全极点后置滤波器通常引入频谱倾斜而导致滤波后的语音消音。通过增加具有与极点相同相位角而较小直径的零点来减少该全极点后置滤波器的频率的倾斜,从而后置滤波器具有形式H(z)=A(z/ρ)A(z/σ)---0<ρ<σ<1----(48)]]>这里A(z)是共振峰主频成分预测滤波器,且ρ和σ值为后置滤波器定标因数这里ρ设为0.5,σ设为0.8。
加上一自适应清晰度滤波器就能进一步补偿由该共振峰主频成分后置滤波器引进的频谱倾斜。该清晰度滤波器具有形式B(z)=1-KZ-11-KZ-1----(49)]]>这里K值(分接滤波器的系数)由与A(z)的频谱倾斜中的变化相近似的LSP频率平均值确定。
为避免因后置滤波器引起的任何大的增益漂移,采用AGC环路对语音输出定标使它具有与未后置滤波的语音近乎相同的能量。通过用40个滤波器输出样本的平方和除40个滤波器输入样本的平方和来实现增益控制以获得反向滤波器增益。随后使该增益因数的平方根平滑平滑后的p=0.2当前β+0.98前一个然后滤波器输出乘以该平滑后反向增益以产生输出语音。
在图19中来自信道的数据以及随同数据传输或由其他装置得到的速率被送给数据压缩子系统700。在一个CDMA系统的实施例中当以各种不同速率进行译码时就可从所收到的数据的误码率来得到速度判定。在数据分解子系统700中,在全速率时对差错进行CRC检码因而该检码送到子帧数据分解子系统702。子系统700将诸如空白帧,消除帧或具有可用数据的差错帧之类异常帧状况的标志送到子系统702。子系统700将对于该帧的速率以及I,G,L,和b参数送到子系统702。在提供码书指数I和增益G值时,该增益值的符号位在子系统702中被检码。若符号位相反,从关联的码书指数减去值89,取模(mod)128。而且在子系统中该码书增益被反向量化且DPCM编码,同时音调增益被反向量化。
子系统700还将速率与LSP频率送到LSP反向量化/内插子系统704。子系统700还将空白帧、消除帧或有可用数据的差错帧的标志送到子系统704。编码子帧计数器706将子帧计数值i和j的标志送到子系统702和704。
在子系统704中该LSP频率被反向量化和内插。图22示出子系统704的反向量化部分的实施例,而该内插部分与参见图12说明的那种在实质上是相同的。在图22中,子系统704的反向量化部分包括反向量化器750,它与图12中的反向量化器468结构相同且以相似方式工作。反向量化器750的输出作为输入送到加法器752。加法器752的其他输入则由乘法器754的输出提供。加法器752的输出送给寄存器756存储并输出在乘法器754与常数0.9相乘。加法器752的输出回被送到加法器758将偏置值加回给LSP频率。由逻辑760确保LSP频率的序列使LSP频率具有最小间隔。除非在传输中出现差错一般不会出现强迫分隔的需要。该LSP频率如参见图13和参见图20a-20d和21a-21c说明的那样是内插值。
再参见图19,存储器706与子系统704连接存储前一帧LSPs,ωi,f-1,还可用来存储偏置值bwi。这些前一帧值对于所有速率都用于内插。在空白帧,消除帧或有可用数据的差错帧的情况下,按照图21a-21c中的表应用前一帧的LSPs,ωi,ωi,f-1。响应来自子系统700的空白帧标志,子系统704检取出存于存储器708的前一帧LSP频率用于当前帧。响应消除帧标志,子系统704随同偏置值再从存储器708检取出前一帧LSP频率以如上所述计算当前帧的LSP频率。在进行该计算时,在一加法器中从前一帧LSP频率减去所存储的偏置值,该结果在一乘法器中乘以常数值0.9,其结果在一加法器中加到所存储的偏置值。响应具有可用数据的差错帧标志,对于全速率若CRC通过该LSP频率就被内插。
该LSPs送到LSP至LPC转换子系统710将LSP频率变换回LPC值。子系统710实质上与图7的LSP至LPC转换子系统218和228相同并如参见图13说明的那样。该LPC系数αi随后送给共振峰主频成分滤波器714和共振峰主频成分后置滤波器716。该LSP频率在LSP平均值子系统还在子帧上取平均并作为值K送给自适应清晰度滤波器718。
子系统702随同速率或异常帧状态标志从子系统700接收该帧的参数I、G、L和b。子系统702还从子帧计数器收到对于各个译码子帧1-4中的每个i计数的j计数。子系统702还连接存储器720以存储用于异常帧状态的G,I,L和b的前一帧值。子系统702处于正常帧状态,除去八分之一速率,要将码书指数值Ij送到码书722;将码书增益Gj送到乘法器724,音调滞后L和增益b值按照20a-20d送到音调滤波器726。对于八分之一速率,由于所送的码书指数没有值,对于八分之一速率,由于所送的码书指数没有值,对于八分之一速率是16位参数值的包种籽随同度标志送到码书722。在异常帧状态子系统702按照图21a-21c提供这些数据。而且对于八分之一速率,如参见图23所说明的那样向码书722提供标志。
响应来自子系统700的空白帧标志,子系统702检取出存在存储器中的前一帧音调滞后L值和增益b值除了该增益限制为某值或小些,以用于当前帧的译码子帧。而且未提供码书指数I且码书增益G被设为零。响应消除帧标志,子系统702再从存储器720检取出前一帧子帧码书指数并在加法器加89的值。该前一帧子帧码书增益在乘法器乘以常数0.7以产生各自子帧的G值。未提供音调滞后值并将音调增益置零。响应具有可用数据的差错帧标志,当在全速率帧中假使CRC通过就运用码书指数和增益,而不提供音调滞后值且音调增益置零。
如参考分析-合成技术中的编码器的译码器所说明的那样,该码书指数I用作该码书值的起动地址以向乘法器724输出。该码书增益值在乘法器724乘以来自码书722的输出值该结果送到音调滤波器726。音调滤波器用输入的音调滞后L值和增益b值以产生输出给共振峰主频成分滤波器714的共振峰主频成分余量。在共振峰主频成分滤波器714 LPC系数用来对共振峰主频成分余量滤波以重建语音。在接收端的译码器重建语音进一步由共振峰主频成分后置滤波器716和自适应清晰度滤波器718滤波。在共振峰主频成分滤波器714和共振峰主频成分后置滤波器716的输出采用AGC回路,其输出在乘法器730中乘以自适应清晰度滤波器718的输出。乘法器730输出的重建语音利用熟知技术变换成模拟形式并送给听众。在编码器的译码器中,为更新它的记忆,在输出端设置感知加权滤波器。
参见图22,说明实施译码器本身的更详细节。在图22中码书722包括与参见图17所说明的那种相类似的存储器750。然而为便于说明,对于存储器75。说明稍有差异的方法并在图22中示出其编址。码书722还包括开关752,多路转换器753和伪随机数发生器(PN)754。开关752如参见图17说明的那样响应该码书指数以指向存储器750的指数地址位置。存储器750是有开关752指向起始记忆位置的循环存储器,数值移过存储器而输出。该码书数值经开关752从存储器750输出作为多路转换器753的输入。多路转换器753响应全速率,半速率和四分之一速率以将经开关752提供的数值送到码书增益放大器,乘法器724。多路转换器753还响应八分之一速率标志以选取PN发生器754的输出使码书722的输出送到乘法器724。
为维持在CELP编码的高话音质量,编码器和译码器必须有相同数值存储在他们的内部滤波器存储器中。这可通过传输码书指数进行,使译码器和编码器的滤波器由数值的相同序列激励。而对高话音质量这些序列包括大多数零,并有一些尖峰分布其间。这种激励方式对于对背景噪声编码不是最优的。
在对背景噪声的编码中,以最低速率进行,可实现伪随机序列激励滤波器。为确保该滤波器存储器在编码器和译码器中的相同,这两个伪随机序列必须相同。不管怎样必须传输种籽到接收机译码器。既然没有额外的位可用以送该种籽,所传输包位可用作种籽,似乎它们构成一个数。该技术可进行是因为是以低速率用完全相同CELP分析合成结构来确定码书增益和指数的。差异是该码书指数被扔掉而编码器的滤波器存储器用一伪随机序列来更新。因而分析完后可确定出用于激励的种籽。为确保包本身不在一套位模式周期地循环,在该八分之一速率的包中插入4位随机位来取代该码书指数值。因此该包种籽是如图2所见到的16位数据。
NP发生器754用熟知技术构筑并可由各种算法实施。在例示性实施例中所采用的算法其本质在保罗·门恩的文章“DSP片采用已证明的算法可产生随机数”(EDN,1991,1,21)中说明。所传输的位包用来产生序列的种籽(来自图18中的子系统700)。在一实施例中种籽乘以数值521且加上数值259。从这合成数值的最不重要的位用来作为有符号的16位数。该数值随后用作产生下一码书数值的种籽。由PN发生器产生的序列被归一化而具有1的方差。
从码书722输出的各个数值在乘法器724中乘以如在译码子帧期间所提供的码书增益G。该数值作为输入送给音调滤波器726的加法器756。音调滤波器726还包括乘法器758和存储器760。该音调滞后L确定存储器760分接位置被输出给乘法器758。该存储器760的输出在乘法器758中乘以音调增益值b,结果输出给加法器756。加法器756的输出送到存储器760的输入端,它是诸如移位寄存器的一系列的延时单元。该数值经存储器760移出(沿箭头所指方向)且如L值所确定那样在所选取的分接输出端给出。既然该值经存储器760移出,比143移出值更老的值被废弃。加法器756的输出还作为输入送到共振峰主频成分滤波器714。
加法器756的输出送到共振峰主频成分滤波器714的加法器762的一个输入端。共振峰主频成分滤波器还包括乘法器764a-764j的存储单位和存储器766。该加法器762的输出作为输入送到存储器766,它也构建成一系列分接的延时单元如移位寄存器。该数值经存储器766移出(沿箭头所指方向)且最后清出每个单元有分接口以将存在那里的数据作为输入送给乘法器764a-764j的相应的分接口。每个乘法器764a-764j还接收LPC系数α1-α10的各个值来乘以来自存储器766的输出。来自加法器762的输出送给作为共振峰主频成分滤波器的输出。
共振峰主频成分滤波器714的输出作为输入送到共振峰主频成分后置滤波器716和AGC子系统728。共振峰主频成分滤波器716包括加法器768和770以及存储器772和乘法器774a-774j,776a-776j,和782a-782j。随着该数值经存储器772移出它们在相应的分接口输出用来乘以定标的LPC系数值而在加法器768和770累加。共振峰主要频率成分后置滤波器716的输出作为输入送给自适应清晰度滤波器718。
自适应清晰度滤波器718包括加法器784和786,寄存器788和790,和乘法器792和794。图24是说明自适应清晰度滤波器特点的图表。共振峰主频成分后置滤波器716作为输入送给加法器784而另一输入由乘法器792的输出提供。加法器784的输出送给寄存器788并存储一循环而在下一循环随同图19的LSP平均器712提供的K值输出给乘法器792和794。乘法器792和794的输出被送给加法器784和786。加法器786的输出送给AGC子系统728和移位寄存器790。寄存器790作为延时线以确保从共振峰主频成分滤波器714输出给AGC子系统728的数据与经共振峰主频成分后置滤波器716提供给自适应清晰度滤波器718的数据间的协调。
AGC子系统728接收来自共振峰主频成分滤波器和自适应清晰度滤波器的数据以对语音输出能量定标至大约输入到共振峰主频成分后置滤波器716和自适应清晰度应滤波器718的语音的能量。AGC子系统728包括乘法器798、800、802和804,加法器806、808和810,寄存器812、814和816,除法器818,和平方根单元820。从共振峰主频成分滤波器输出的40个样本在乘法器798平方并在包括加法器806和寄存器812的累加器中累加以产生数值“X”。相似地从自适应清晰度滤波器718输出的40样本,优先于存储器790,在乘法器800中平方并在包括加法器808和寄存器814的累加器中累加以产生数值“Y”。该数值“Y”在除法器816中除以数值“X”以产生该滤波器的反向增益。在单元818得到该反向增益因数的平方根其结果被平滑。通过当前增益G值在乘法器802乘以常数0.02,该结果在加法器810加上如寄存器820和乘法器804所计算出的0.98倍的前增益的结果来实现平滑工作。滤波器718的输出随后在乘法器730乘以平滑后的反向增益以提供输出的重建语音。该输出语音用各种已知变换技术变换成模拟形式输出给用户。
应该理解这里所揭示的本发明的实施例只是例示性的实施例,对该实施例作出的改变可认为在功能上的等同物。本发明可以在合适的程序控制下在数字信息处理机中实施,提供如这里所公开的对语音样本编码并对该编码的语音译码的功能操作。在本发明的另一个实施例中可以在实用熟知的超大规模集成(VLSZ)技术的专用集成电路(ASIC)来实现。
所提供的对较佳实施例的前面的说明能使本领域技术人员运用本发明。对这些实施例的各种变动对于本领域技术人员将是现成明显的,这里确定的总原则可不需要创造性劳动就可应用于其他实施例中。因而本发明希望不是限定在这所示出的实施例而是给予与这里所说的原则和新颖特征相一致的最大保护范围。
权利要求
1.一种用于掩蔽帧错误的设备,其特征在于,包括存储装置,用于存储至少一个先前的数据帧,并响应帧错误信号提供所述至少一个先前的数据帧;和掩蔽装置,用于接收所述帧错误信号,并根据所述至少一个先前的数据帧和一个预定的错误掩蔽格式(format)产生一个掩蔽信号。
2.如权利要求1所述的设备,其特征在于,所述至少一个先前的数据帧包括能够被解码的最近一个数据帧。
3.如权利要求2所述的设备,其特征在于,所述错误掩蔽格式包括对所述能够被解码的最近数据帧的增益进行衰减。
4.如权利要求1所述的设备,其特征在于,所述错误掩蔽格式包括对所述至少一个先前数据帧的增益进行衰减。
5.一种用于掩蔽帧错误的方法,其特征在于,所述方法包括以下步骤存储至少一个先前的数据帧;响应于帧错误信号,提供所述至少一个先前的数据帧;和根据所述至少一个先前的数据帧和一个预定的错误掩蔽格式产生一个掩蔽信号。
6.如权利要求5所述的方法,其特征在于,所述至少一个先前的数据帧包括能够被解码的最近一个数据帧。
7.如权利要求6所述的方法,其特征在于,所述错误掩蔽格式包括对所述能够被解码的最近数据帧的增益进行衰减。
8.如权利要求5所述的方法,其特征在于,所述错误掩蔽格式包括对所述至少一个先前数据帧的增益进行衰减。
9.在用于接收根据线性预测编码算法编码的数据帧的解码器中,一种用于掩蔽帧错误的设备,其特征在于,包括存储装置,用于存储一个正确接收帧的参数数据;和掩蔽装置,该装置用所述存储装置所存至少一个参数代替一错误接收帧中的至少一个参数。
10.如权利要求9所述的设备,其特征在于,所述掩蔽装置用所述存储装置所存参数代替被错误替代的所述帧的所有参数。
11.如权利要求9所述的设备,其特征在于,所述掩蔽装置用所述存储装置中的选定参数代替被错误替代的所述帧的选定参数。
12.如权利要求9所述的设备,其特征在于,所述掩蔽装置用所述存储装置所存参数并结合所述存储装置所存参数的改进形式来代替被错误替代的所述帧的所有参数。
13.如权利要求9所述的设备,其特征在于,所述掩蔽装置用约等于零的值代替所述错误接收帧中的码书增益参数。
14.如权利要求9和13所述的设备,其特征在于,所述掩蔽装置用所述存储装置所存音调增益值代替所述错误接收帧中的音调增益参数,其中所存音调增益值被限制为小于或等于1的值。
15.如权利要求9所述的设备,其特征在于,所述掩蔽装置用约等于零的值代替所述错误接收帧中的音调增益参数。
16.如权利要求9和15所述的设备,其特征在于,所述掩蔽装置选择一个随机的码书激励矢量索引,并用所述随机选定的码书激励矢量索引代替所述错误接收帧的码书激励矢量索引。
17.如权利要求9,15和16所述的设备,其特征在于,所述掩蔽装置用所述存储装置所存码书增益值的改进形式代替所述错误接收帧中的码书增益值。
18.如权利要求17所述的设备,其特征在于,所述掩蔽装置用所述存储装置所存码书增益值的比例形式代替所述错误接收帧中的码书增益值。
19.如权利要求18所述的设备,其特征在于,所述掩蔽装置用按约等于0.7的比例缩小的所述存储装置所存码书增益值代替所述错误接收帧中的码书增益值。
20.如权利要求9,15,16和17所述的设备,其特征在于,所述掩蔽装置用所述存储装置所存LSP参数的改进形式代替所述错误接收帧中的至少一个LSP参数。
21.如权利要求20所述的设备,其特征在于,所述掩蔽装置生成所述存储装置所存LSP参数的改进形式,以便促使所述改进形式逼近一预定偏置值。
22.如权利要求9所述的设备,其特征在于,当发射站故意使所述帧空白时,所述掩蔽装置选择第一掩蔽算法,而当所述帧因信道错误过量而被错误接收时,所述掩蔽装置选择第二掩蔽算法。
23.在用于接收根据线性预测编码算法编码的数据帧的解码器中,一种用于掩蔽帧错误的方法,其特征在于,包括存储一个正确接收帧的参数数据;和用至少一个所存参数代替一个错误接收帧中的至少一个参数。
24.如权利要求23所述的方法,其特征在于,所述代替步骤包括下述步骤,即用所述参数代替被错误替代的所述帧的所有参数。
25.如权利要求23所述的方法,其特征在于,所述代替步骤包括下述步骤,即用选定的所述参数代替被错误替代的所述帧的选定参数。
26.如权利要求23所述的方法,其特征在于,所述代替步骤包括下述步骤,即用所存参数并结合所存参数的改进形式来代替被错误替代的所述帧的所有参数。
27.如权利要求23所述的方法,其特征在于,所述代替步骤包括下述步骤,即用一个约等于零的值代替所述错误接收帧中的码书增益参数。
28 .如权利要求23和27所述的方法,其特征在于,所述代替步骤包括下述步骤,即用所存音调增益值代替所述错误接收帧中的音调增益参数,其中所存音调增益值被限制为小于或等于1的值。
29.如权利要求23所述的方法,其特征在于,所述代替步骤包括下述步骤,即用约等于零的值代替所述错误接收帧中的音调增益参数。
30.如权利要求23和29所述的方法,其特征在于,所述代替步骤包括下述步骤,即选择一个随机的码书激励矢量索引,并用所述随机选定的码书激励矢量索引代替所述错误接收帧的码书激励矢量索引。
31.如权利要求23,29和30所述的方法,其特征在于,所述代替步骤包括下述步骤,即用所存码书增益值的改进形式代替所述错误接收帧中的码书增益值。
32.如权利要求31所述的方法,其特征在于,所述代替步骤包括下述步骤,即用所存码书增益值的比例形式代替所述错误接收帧中的码书增益值。
33.如权利要求32所述的方法,其特征在于,所述代替步骤包括下述步骤,即用按约等于0.7的比例缩小的所存码书增益值代替所述错误接收帧中的码书增益值。
34.如权利要求23,29,30和31所述的方法,其特征在于,所述代替步骤包括下述步骤,即用所存LSP参数的改进形式代替所述错误接收帧中的至少一个LSP参数。
35.如权利要求34所述的方法,其特征在于,所述代替步骤还包括下述步骤,即生成所存LSP参数的所述改进形式,以便促使所述改进形式逼近一预定偏置值。
36.如权利要求23所述的方法,其特征在于,所述代替步骤包括下述步骤,即当发射站故意使所述帧空白时选择第一掩蔽算法,而当所述帧因信道错误过量而被错误接收时选择第二掩蔽算法。
全文摘要
本发明揭示了一种用于掩蔽帧错误的设备和方法。该设备和方法用存储装置存储至少一个先前的数据帧,并响应帧错误信号提供此先前的数据帧,而且还用掩蔽装置接收帧错误信号,并根据所述先前的数据帧和一个预定的错误掩蔽格式产生一个掩蔽信号。在用于接收根据线性预测编码算法编码的数据帧的解码器中,存储装置存储一个正确接收帧的参数数据,而掩蔽装置用存储装置中的至少一个参数代替错误接收帧中的至少一个参数。
文档编号G10LGK1381956SQ0112296
公开日2002年11月27日 申请日期1992年6月11日 优先权日1991年6月11日
发明者保罗·E·雅各布, 威廉·R·加德纳, 冲·U·李, 克莱恩·S·吉豪森, S·凯瑟琳·兰姆, 民昌·蔡 申请人:夸尔柯姆股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1