用于子带预测编码的基于全带音频波形外插的包丢失隐藏的制作方法

文档序号:2830402阅读:320来源:国知局
专利名称:用于子带预测编码的基于全带音频波形外插的包丢失隐藏的制作方法
技术领域
本发明涉及一种在语音或音频编码器中隐藏丢包导致的质量降低效果的系统和方法。

背景技术
在声音或音频信号通过分组网络进行数字传输的过程中,编码的声音/音频信号通常被分割成帧,然后封装成包,其中每个包可包含一个或多个编码声音/音频数据的帧。然后通过分组网络传输这些包。有时候一些包会丢失,而且一些有用的包会太晚到达,从而被认定为丢失。这种包丢失会引起音频质量的显著降低,除非使用特殊的技术来隐藏丢包所导致的效果。
当前存在用于独立块编码器或全频带预测编码器的基于外插音频信号的包丢包隐藏(packet loss concealment,缩写为PLC)方法。这种PLC方法包括以下美国专利申请中所公开的技术申请号为11/234,291、发明人为陈、名称为“用于独立块语音编解码器的丢包隐藏技术”的美国专利申请和申请号为10/183,608、发明人为陈、名称为“用于预测语音编码的基于外插语音波形的帧删除隐藏方法和系统”的美国专利申请。然而,在这些申请中描述的技术不能直接用于子带预测编码器,如ITU-T推荐G.722宽带语音编码器,这是因为存在这些技术未能解决的子带特定结构问题。此外,对于每个子带来说,G.722编码器使用了自适应差分脉冲编码调制(ADPCM)预测编码器,该ADPCM预测编码器使用了基于梯度方法的量化器步长和预测器系数的逐个采样(sample-by-sample)后向自适应,这造成了现有PLC技术未能解决的特殊难题。因此,需要一种为子带预测编码器(如G.722)特别设计的合适的PLC方法。


发明内容
本发明用于在子带预测编码器中隐藏丢包导致的质量降低效果。本发明具体解决了在对子带预测编码器应用音频波形外插技术时的一些子带特定的结构问题,本发明还解决了一般的后向自适应ADPCM编码器及特殊的G.722子带ADPCM编码器的特定PLC难题。
具体地说,本发明在此描述了一种在子带预测编码系统中隐藏表示编码音频信号的一系列帧中的丢失帧的影响的方法。根据所述方法,所述一系列帧中的一个或多个接收帧被解码以产生全带输出音频信号,其中所述全带输出音频信号包括至少第一子带解码音频信号和第二子带解码音频信号的组合。对应所述一个或多个接收帧的全带输出音频信号被存储。然后,合成对应所述丢失帧的全带输出音频信号,其中合成对应所述丢失帧的全带输出音频信号包括基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插。
本发明在此还描述了一种系统。所述系统包括解码器、缓存及全带音频信号合成器。所述解码器用于解码表示编码音频信号的一系列帧中的一个或多个接收帧以产生全带输出音频信号,其中所述全带输出音频信号包括至少第一子带解码音频信号和第二子带解码音频信号的组合。所述缓存用于存储对应所述一个或多个接收帧的全带输出音频信号。所述全带音频信号合成器用于合成对应所述一系列帧中丢失帧的全带输出音频信号,其中合成对应所述丢失帧的全带输出音频信号包括基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插。
本发明还描述一种计算机程序产品。所述计算机程序产品包括记录有计算机程序逻辑的计算机可读媒介,所述计算机程序逻辑用于使处理器在子带预测编码系统中隐藏表示编码音频信号的一系列帧中的丢失帧的影响。所述计算机程序逻辑包括第一模块、第二模块及第三模块。所述第一模块用于使所述处理器解码一系列帧中的一个或多个接收帧以产生全带输出音频信号,其中所述全带输出音频信号包括至少第一子带解码音频信号和第二子带解码音频信号的组合。所述第二模块用于使所述处理器存储对应所述一个或多个接收帧的全带输出音频信号。所述第三模块用于使所述处理器合成对应所述一系列帧中丢失帧的全带输出音频信号,其中合成对应所述丢失帧的全带输出音频信号包括基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插。
本发明的更多特征和优点以及本发明各种实施例的结构和操作将参考附图作进一步的细节描述。注意,本发明并不局限于在此所述的特殊实施例。在此提出的实施例仅作为示例性的目的。基于包含在此的教导,更多的实施例对于所属领域的技术人员来说是显而易见的。



在此结合的附图是说明书的一部分,附图与文字描述一起阐明了本发明一个或多个实施例,并进一步用于解释本发明的用途、优点和原理,以及使所属领域的技术人员实施和使用本发明。
图1是传统的ITU-T G.722子带预测编码器的编码器结构的示意图; 图2是传统的ITU-T G.722子带预测编码器的解码器结构的示意图; 图3是根据本发明实施例的解码器/PLC系统的模块图; 图4是根据本发明实施例在解码器/PLC系统中处理帧以产生输出语音信号的方法流程图; 图5是根据本发明实施例可由解码器/PLC系统处理的不同类型帧的时序图; 图6是原始语音信号和外插语音信号的振幅的时间线示意图; 图7是根据本发明实施例在解码语音信号和外插语音信号之间计算时滞(time lag)的方法流程图; 图8是根据本发明实施例在解码语音信号和外插语音信号之间计算时滞的两个阶段的方法流程图; 图9是根据本发明实施例在时滞计算执行过程中可相对于解码语音信号平移外插语音信号的方式的示意图; 图10A是根据本发明实施例表示超前于外插语音信号的解码语音信号和重新编码操作的相关效果的时间线示意图; 图10B是根据本发明实施例表示滞后于外插语音信号的解码语音信号和重新编码操作的相关效果的时间线示意图; 图10C是根据本发明实施例表示在帧边界上同步的外插语音信号和解码语音信号以及重新编码操作的相关效果的时间线示意图; 图11是根据本发明实施例在丢包后执行子带ADPCM解码器内部状态的重新定相(re-phasing)的方法流程图; 图12A是根据本发明实施例对超前于外插语音信号的解码语音信号应用时间扭曲(time-warping)的示意图; 图12B和12C均是根据本发明实施例对滞后于外插语音信号的解码语音信号应用时间扭曲的示意图; 图13是根据本发明实施例执行时间扭曲以沿时间轴收缩信号的一种方法的流程图; 图14是根据本发明实施例执行时间扭曲以沿时间轴拉伸信号的一种方法的流程图; 图15是根据本发明实施例的用于在解码器/PLC系统内发生丢包后对预定数量的接收帧之后的接收帧进行处理的逻辑的模块图; 图16是根据本发明实施例的用于在解码器/PLC系统中执行波形外插来生成与丢失的帧相关联的输出语音信号的逻辑的模块图; 图17是根据本发明实施例的用于更新解码器/PLC系统中的子带ADPCM解码器状态的逻辑的模块图; 图18是根据本发明实施例的用于在解码器/PLC系统中执行重新定相和时间扭曲的逻辑的模块图; 图19是根据本发明实施例的用于在解码器/PLC系统中对丢包后接收到的好帧执行约束和受控解码的逻辑的模块图; 图20是根据本发明实施例的用于在丢包过程中更新低带ADPCM解码器的内部状态的简化低带ADPCM编码器的模块图; 图21是根据本发明实施例的用于在丢包过程中更新高带ADPCM解码器的内部状态的简化高带ADPCM编码器的模块图; 图22A、22B和22C均是根据本发明实施例对解码语音信号应用时间扭曲的时间线示意图; 图23是根据本发明实施例的另一解码器/PLC系统的模块图; 图24是实现本发明的实施例的计算机系统的模块图。
通过结合附图做出的细节描述,本发明特征和优点将变得更加显而易见。附图中第一次出现的组件由对应的附图标记中最左边的阿拉伯数字表示。

具体实施例方式 A、引言 以下将参考附图对本发明的典型实施例来了作细节描述。其它实施例也是可行的,而且可以在本发明精神和范围之内对示例性实施例做出修改。因此,以下的细节描述并不用于限制本发明。相反,本发明的范围是由权利要求定义的。
所属领域的技术人员应容易理解,如以下所描述的,本发明可以在硬件、软件、软硬件和/或附图所示的实体中实现。任何以特定控制硬件实现本发明的实际软件代码并不是本发明的限制。因而,以下对本发明的操作和行为的描述是基于以下理解给出的,即根据本申请中给出的详细描述的程序,可以对本申请中的实施例进行各种修改和变化。
应理解,尽管在此提出的本发明的细节描述是针对的语音信号的处理,本发明还可用于涉及其它类型音频信号的处理。因此,在此使用的术语“语音”和“语音信号”仅仅是为了描述方便,并不作为限制。所属领域的技术人员应知悉,该术语可以用更常用的术语“音频”和“音频信号”来代替。此外,虽然语音和音频信号在此描述为被分割成多个帧,所属领域的技术人员应知悉,这种信号也可以被分割成其它离散的信号段,包括但不限于子帧。因而,在此描述的在帧上执行的操作也包括在语音或音频信号的其它段上执行的类似操作,如子帧。
另外,虽然以下描述讨论了通过分组网络传输的音频信号的帧丢失(被称为丢包),但是本发明并不限于丢包隐藏(PLC)。例如,在无线网络中,由于信道损坏,也可能丢失或删除音频信号帧。这种情形称之为“帧删除”。当这种情形发生时,为了避免输出语音质量上的实质下降,无线系统中的解码器需要执行“帧删除隐藏”(FEC)来尝试隐藏因丢帧而导致的质量下降。对于PLC或FEC算法,丢包和帧删除都遇到相同的问题某些传输的帧不能再用于解码,所以PLC或FEC算法需要产生波形来填补对应于丢失的帧的波形间隙(gap),从而隐藏帧因丢帧导致的质量下降。因为术语FEC和PLC通常指相同种类的技术,所以可以交替地使用。因而,为了方便起见,在此所用的术语“丢包隐藏”或PLC用于指代两者。
B、子带预测编码的回顾 为了有利于更好地理解在后面章节中描述的本发明的各实施例,在此回顾一下子带预测编码的基本原理。通常,子带预测编码器可将输入语音信号分离成N个子带,其中N≥2。在不失一般性的情况下,在此将ITU-T G.722编码器的双带预测编码系统作为示例进行描述。所属领域的技术人员能够容易地将该描述概括到其它N带子带预测编码器。
图1是G.722子带预测编码器的简化编码器结构100。编码器结构100包括正交镜像滤波器(QMF)分析滤波器组110、低带自适应差分脉码调制(ADPCM)编码器120、高带ADPCM编码器130和比特流复用器140。QMF分析滤波器组110将输入语音信号分离成低带语音信号和高带语音信号。低带ADPCM编码器120将低带语音信号编码成低带比特流。高带ADPCM编码器130将高带语音信号编码成高带比特流。比特流复用器140将低带比特流和高带比特流复用成单个输出比特流。在此讨论的分组传输应用中,该输出比特流被封装成包,然后被传输到子带预测解码器200,如图2所示。
如图2所示,解码器200包括比特流解复用器210、低带ADPCM解码器220、高带ADPCM解码器230和QMF合成滤波器组240。比特流解复用器210将输入比特流分离成低带比特流和高带比特流。低带ADPCM解码器220将低带比特流解码成解码低带语音信号。高带ADPCM解码器230将高带比特流解码成解码高带语言信号。然后QMF合成滤波器组240将解码低带语音信号和解码高带语音信号合并成全带输出语音信号。
有关编码器100和解码器200的结构和操作的更多细节可以在ITU-T推荐G.722中找到,在此将其整体作为参考引入本文。
C、基于全带语音波形外插(extrapolation)的子带预测编码器的丢包隐藏技术 现在对根据本发明的一个实施例的高质量PLC系统和方法进行描述。在本节中提供了对该系统和方法的概括介绍,涉及该系统和方法具体实现的更多细节将在以下D节中进行描述。该示例系统和方法用于ITU-T推荐G.722语音编码器。然而,所属领域的技术人员应知悉,在此参考该特殊实施例描述的许多概念可以用于在其它类型的子带预测语音编码器以及其它类型的语音和音频编码器中执行PLC。
如在此更多的细节中描述的,该实施例在G.722语音解码器的16kHz输出域中执行PLC。该方法使用周期性波形外插来填充与语音信号的丢帧相关联的波形,其中根据发生丢帧前的信号特征将外插波形与经滤波的噪声混合。为了更新子带ADPCM解码器的状态,外插的16kHz信号通过QMF分析滤波器组来生成子带信号,然后该子带信号由简化的子带ADPCM编码器处理。为了提供从与丢失的帧关联的外插波形到与丢包后接收的好帧关联的正常解码波形的平滑过渡,每次丢包后会执行额外的处理。其中,子带ADPCM解码器的状态与丢包后接收的第一个好帧进行相位对齐,并将与第一个好帧关联的正常解码波形进行时间扭曲,以在其与插值波形叠加之间将该正常解码波形与插值波形对齐,从而实现平滑过渡。对于长期的丢包情况,该系统和方法将逐渐将输出信号减弱。
图3是实现这种PLC功能的G.722语音解码器300的高级模块图。虽然在此描述的解码器/PLC系统300包括G.722解码器,但是所属领域的技术人员应知悉,在此描述的许多概念通常可用于任何N带子带预测编码系统。类似地,针对每个子带的预测编码器不必是图3所示的ADPCM编码器,也可以是任何普通的预测编码器,并且可以是前向自适应或者后向自适应的。
如图3所示,解码器/PLC系统300包括比特流解复用器310、低带ADPCM解码器320、高带ADPCM解码器330、切换器336、QMF合成滤波器组340、全带语音信号合成器350、子带ADPCM解码器状态更新模块360和解码约束和控制模块370。
在此使用的术语“丢失帧”或者“坏帧”指的是没有在解码器/PLC300接收到的或者被认为不适合正常解码操作的语音信号帧。“接收帧”或“好帧”是在解码器/PLC系统300正常接收的语音信号帧。“当前帧”是当前正由解码器/PLC300处理以生成输出语音信号的帧,而“前帧”是之前由解码器/PLC系统300处理来生成输出语音信号的帧。术语“当前帧”和“前帧”均可用来指接收的帧以及正执行PLC操作和丢失帧。
解码器/PLC系统300操作的方式将参考图4的流程图400来进行描述。如图4所示,流程图400的方法在步骤402开始,解码器/PLC系统300确定当前帧的帧类型。解码器/PLC系统300辨别六种不同类型的帧,分别用类型1到6表示。图5提供了不同帧类型的时间线500。类型1的帧是丢包后的第八个接收帧后的任何接收帧。类型2的帧是与丢包相关的第一和第二丢失帧。类型3的帧是与丢包相关的第三到第六丢失帧中的任何一个。类型4的帧是与丢包相关的第六个丢失帧后的任何一个丢失帧。类型5的帧是紧随丢包后接收的任何接收帧。最后,类型6的帧是在丢包后接收的第二到第八个接收帧中的任何一个。所属领域的技术人员应容易知悉,根据本发明的替代实施例也可使用分类帧类型的其它方案。例如,在具有不同帧大小的系统中,每个帧类型中的帧数都与上述不同。同样,对于不同的编解码器(即非G.722编解码器),每个帧类型中的帧数可以是不同的。
解码器/PLC系统300处理当前帧来产生输出语音信号的方式是由当前帧的帧类型确定的。这在图4中通过一系列判断步骤404、406、408和410表现出来。具体地说,如果在步骤402确定当前帧是类型1的帧,那么执行第一序列的处理步骤来产生输出语音信号,如判断步骤404所示。如果在步骤402确定当前帧是类型2、类型3或类型4的帧,那么执行第二序列的处理步骤来产生输出语音信号,如判断步骤406所示。如果在步骤402确定当前帧是类型5的帧,那么执行第三序列的处理步骤来产生输出语音信号,如判断步骤408所示。最后,如果在步骤402确定当前帧是类型6的帧,那么执行第四序列的处理步骤来产生输出语音信号,如判断步骤410所示。以下将描述与每种不同帧类型关联的处理步骤。
在执行完每个序列的处理步骤之后,在判断步骤430中确定是否有额外的帧要处理。如果有额外的帧要处理,那么处理返回到步骤402。然而,如果没有额外的帧要处理,那么处理在所示步骤432结束。
1、处理类型1的帧 如在流程图400的步骤412所示,如果当前帧是类型1的帧,那么解码器/PLC系统300执行当前帧的正常G.722解码。因此,解码器/PLC系统300的模块310、320、330和340正确地执行分别与传统G.722解码器200相对的模块210、220、230和240相同的功能。具体地说,比特流解复用器310将输入比特流分离成低带比特流和高带比特流。低带ADPCM解码器320将低带比特流解码成解码低带语音信号。高带ADPCM解码器330将高带比特流解码成解码高带语音信号。然后QMF合成滤波组340将解码低带语音信号和解码高带语音信号重新合并成全带语音信号。在处理类型1的帧的过程中,切换器336连接到标记为“类型1”的上面位置,从而将QMF合成滤波组340的输出信号作为针对类型1的帧的解码器/PLC系统300的最终输出语音信号。
在完成步骤412之后,解码器/PLC系统300更新各种状态存储器,并执行有利于为后续丢帧而执行的PLC操作的一些处理,如步骤414所示。状态存储器包括PLC相关的低带ADPCM解码器状态存储器、PLC相关的高带ADPCM解码器状态存储器和全带PLC相关的状态存储器。作为该步骤的一部分,全带语音信号合成器350将QMF合成滤波器组340的输出信号存储在内部信号缓存中,以为后续丢失帧处理过程中可能的语音波形外插做准备。子带ADPCM解码器状态更新模块360和解码约束和控制模块370在处理类型1的帧的过程中是非活跃的。以下将参考D节中描述的解码器/PLC系统300的具体实现提供了有关类型1的帧处理的更多细节。
2、处理类型2、类型3和类型4的帧 在处理类型2、类型3和类型4的帧的过程中,与丢失帧相关的输入比特流是不可用的。因此,模块310、320、330和340不能执行它们通常的功能,并且是非活跃的。相反,切换器336被连接到标记为“类型2-6”的下部位置,全带语音信号合成器350变为活跃,合成解码器/PLC系统300的输出语音信号。全带语音信号合成器350通过插入之前存储的与丢包前最后几个接收帧相关的输出语音信号来合成解码器/PLC系统300的输出语音信号。这在流程图400的步骤416中体现出来。
在全带语音信号合成器350完成波形合成的任务后,子带ADPCM解码器状态更新模块360适当地更新低带ADPCM解码器320和高带ADPCM解码器330的内部状态,为下一帧中可能存在的好帧做准备,如步骤418所示。现在对执行步骤416和418的方式进行更多的细节描述。
a、波形外插 执行步骤416的波形外插功能存在许多现有技术。以下在D节中描述的解码器/PLC系统300的实现所使用的技术是在申请号为11/234,291、申请人为陈、提交日期为2005年9月26日、标题为“用于块独立语音编解码器的丢包隐藏技术”的美国专利申请中描述的技术的修改版本。在此将提供该技术的高级描述,而在D节中将提出更多的细节。
为了实现波形外插功能,全带语音信号合成器350在接收帧的处理过程中分析来自QMF合成滤波器组340的存储的输出语音信号以提取基音周期(pitchperiod)、短期预测因子和长期预测因子。然后将这些参数存储起来以便后续使用。
全带语音信号合成器350通过执行两阶段搜索来提取基音周期。在第一阶段,通过对输入语音信号或其滤波版本的抽样版本(decimated version)执行搜索来确定低解析度的基音周期(或粗基音)。在第二阶段,通过使用未抽样信号搜索粗基音的邻域来将粗基音提炼成正常解析度。这种两阶段搜索方法明显比在未抽样区间中的单阶段完整搜索需要明显较低的计算复杂度。在对语音信号或其滤波版本进行抽样之前,通常未抽样信号需要通过防混叠(anti-aliasing)低通滤波器。为了减少复杂度,普通的现有技术是使用低阶无限脉冲响应(IIR)滤波器,如椭圆滤波器。然而,好的低阶IIR滤波器的极点通常很靠近单位圆,因而当执行16位定点算法中与滤波器的全极点部分相对应的滤波运算时,需要双重精度的算法运算。
与现有技术相比,全带语音信号合成器350使用有限脉冲响应(FIR)滤波器作为防混叠低通滤波器。通过以这种方式使用FIR滤波器,仅需要单精度的16位定点算法运算,FIR滤波器能以较低的抽样信号的采样率进行运算。所以,这种方法可以显著地减少防混叠低通滤波器的计算复杂度。例如,在D节中描述的解码器/PLC系统300的实现中,未抽样信号具有16kHz的采样率,但是用于基音提取的抽样信号仅具有2kHz的采样率。在现有技术的基础上,可以使用4阶椭圆滤波器。椭圆滤波器的全极点部分需要双重精度的定点算法,并且需要以16kHz采样率运算。正因如此,尽管全零部分能以2kHz采样率运算,整个4阶椭圆滤波器和下采样操作运算需要0.66WMOPS(加权百万运算每秒)的计算复杂度。相反,即便使用相对的60阶的高阶FIR滤波器来代替4阶椭圆滤波器,由于60阶FIR滤波器是以非常低的2kHz采样率操作,所以整个60阶FIR滤波器和下采样操作仅需要0.18WMOPS的复杂度,相比4阶椭圆滤波器减少了73%。
在丢包的第一个丢失帧开始点,当到级联合成滤波器的输入设为零的时候,全带语音信号合成器350使用级联长期合成滤波器和短期合成滤波器来产生一个信号,称之为“呼叫信号(ringing signal)”。然后全带语音信号合成器350分析某些信号参数(如基音预测增益和标准化自相关)来确定存储的输出语音信号中“发音(voicing)”的度。如果之前的输出语音信号发音很高,那么以周期性方式外插该语音信号以产生当前坏帧的替代波形。周期性波形外插是使用在最近接收的帧上提取的基音周期的提炼版来执行的。如果之前的输出语音信号是不发声的或类似噪声的,那么成比例的(scaled)随机噪声通过短期合成滤波器来产生当前坏帧的替代信号。如果发音的度是在两个极端之间,那么将两个成分按发音度成比例的混合在一起。然后将该外插信号与呼叫信号叠加,以确保在丢包的第一个坏帧开始时不会有波形中断。此外,将波形外插扩展到超出当前坏帧末端一段至少等于叠加周期的时间,使得下一帧开始时该外插信号的额外采样可以用作下一帧开始时叠加的呼叫信号。
在不是丢包的第一个坏帧的坏帧中(即在类型3或类型4的帧中),全带语音信号合成器350的操作本质上与上一段描述的操作是相同的,除了全带语音信号合成器350不需要计算呼叫信号,并且可以使用在超出上一帧末端后在上一帧内计算出的外插信号的额外采样作为叠加运算的呼叫信号,以此确保在该帧开始时没有波形中断。
对于长期丢包的情况,全带语音信号合成器350逐渐将解码器/PLC系统300的输出语音信号减弱。例如,在D节中描述的解码器/PLC系统的实现中,丢包过程中产生的输出语音信号以线性方式衰减或“减弱”到零,从20ms开始,并在60ms结束。执行该功能是因为关于“实际”波形的形状和形式的不确定性随时间增加。实际上,当外插片段远超出约60ms的范围时,许多PLC方案开始产生嗡嗡响(buzzy)的输出。
在本发明的替代实施例中,对于背景噪声中的PLC,(通常)本发明的实施例追踪背景噪声(周围噪声)的级别,并针对长时间的帧删除衰减到该级别,而不是零。这消除了因PLC系统对输出的消声而在背景噪声中产生的丢包中断效果。
本发明的进一步替代实施例通过执行实现舒适噪声产生(CNG)功能解决了背景噪声中PLC的前述问题。当本发明的该实施例开始针对长期丢包衰减解码器/PLC系统300的输出语音信号时,其也开始混入由CNG产生的舒适噪声。通过混入舒适噪声和以舒适噪声替换,当解码器/PLC系统300的输出语音信号被衰弱并最终消声时,上述的中断效果将被消除并且提供出了该信号周围环境的可靠再现。该方法已经被证明并且普遍地在其它应用中被接受。例如,在子带回声消除器(SBAEC)中,或者一般的回声消除器(AEC)中,当检测到残余回声时,减弱该信号并且以舒适噪声替换。这通常是指非线性处理(NLP)。本发明的该实施例的前提在于,PLC呈现出非常类似的方案。与AEC相似,这种方法针对PLC的使用将提供一种更加增强的体验,这远没有中断效果令人讨厌。
b、低带和高带ADPCM解码器的内部状态的更新 全带语音信号合成器350完成了在步骤416中执行的波形合成任务之后,子带ADPCM解码器状态更新模块360然后在步骤418中适当地更新低带ADPCM解码器320和高带ADPCM解码器330的内部状态,为下一帧中可能的好帧做准备。执行低带ADPCM解码器320和高带ADPCM解码器330的内部状态更新存在许多方法。由于图1中的G.722编码器和图2中的G.722解码器具有相同类型的内部状态,更新解码器320和330的内部状态的一种直接的方法是反馈全带语音信号合成器350的输出信号通过图1所示的标准G.722编码器,以上一帧的最后一个采样留下的内部状态开始。然后,在对外插语音信号的当前坏帧编码后,当前坏帧的最后一个采样留下的内部状态被用来更新低带ADPCM解码器320和高带ADPCM解码器330的内部状态。
然而,前述方法具有两个子带编码器的复杂度。为了节省复杂度,在D节中描述的解码器/PLC系统300对以上方法进行了近似实现。对于高带ADPCM编码器,公认的是在处理丢包后的第一个接收帧的时候,并不需要高带自适应量化步长ΔH(n)。相反,量化步长被复位为丢包前的滑动平均值(如在本申请中其它部分描述的)。因此,使用非量化的差分信号(或预测误差信号)eH(n)进行高带ADPCM编码器中的自适应预测更新,并且对eH(n)的量化操作被完全避免了。
对于低带ADPCM编码器,方案稍微有点不同。由于维持低带自适应量化步长ΔL(n)的基音调制的重要性,以下在D节中描述的解码器/PLC系统300的实现有效地在丢失帧中更新了这个参数。标准G.722低带ADPCM编码器采用差分信号(或预测误差信号)eL(n)的6位量化。然而,根据G.722标准,仅使用了8个幅度量化指数的子集来更新低带自适应量化步长ΔL(n)。通过使用非量化差分信号eL(n)代替量化差分信号用于低带ADPCM编码器中的自适应预测更新,在维持低带自适应量化步长ΔL(n)的同样的更新的情况下,在D节中描述的实施例能够使用不是很复杂的差分信号量化。
所属领域的技术人员应容易知悉,在本申请中涉及高带自适应量化步长ΔH(n)的描述中,高带自适应量化步长可由高带对数比例因子

替换。同样地,在本申请中涉及低带自适应量化步长ΔL(n)的描述中,低带自适应量化步长可由低带对数比例因子

替换。
与标准G.722子带ADPCM编码器比较,在D节的实施例中所用的低带和高带ADPCM编码器的另一区别是编码器的基于信号属性和丢包持续时间的自适应复位。现在开始描述该功能。
如以上介绍的,对于长时间的丢包,全带语音信号合成器350在预定时间后将输出语音波形消声。在以下D节中描述的解码器/PLC系统300的实现中,来自全带语音信号合成器350的输出信号馈通给G.722QMF分析滤波器组,以获得用于在丢失帧期间更新低带ADPCM解码器320和高带ADPCM解码器330内部状态的子带信号。因此,一旦来自全带语音信号合成器350的输出信号被消减到零,用于更新子带ADPCM解码器内部状态的子带信号也会变成零。恒零能使每个解码器中的自适应预测器与编码器中的自适应预测器区分开,因为恒零会不自然地使预测器部分在相同方向不停地适应性调整。这在传统的高带ADPCM解码器中是显而易见的,这在长时间丢包后处理好帧时通常会产生高频啁啾声(chirping)。对于传统的低带ADPCM解码器,由于预测器具有太高的滤波器增益,这个问题偶尔会引起不自然的能量增长。
基于前述的论述,一旦PLC输出波形已经被消减到零,以下在D节中描述的解码器/PLC系统300的实现复位ADPCM子带解码器。该方法在长时间帧删除后几乎完全消除了高频啁啾声。全带语音信号合成器350产生的合成波形的不确定性随丢包时间的增加而增加,这种论述结果表明,在某个点上,使用该方法来更新子带ADPCM解码器320和330是不明显的。
然而,即使在全带语音信号合成器350的输出被完全消声时复位子带APCM解码器320和330,仍然存在以不常见的啁啾声(来自高带ADPCM解码器330)和不常见且不自然能量增长(来自低带ADPCM解码器320)的形式出现的一些问题。通过产生各子带ADPCM解码器自适应的复位深度,在D节中描述的实现中已经解决了这些问题。复位在波形消声时仍会发生,但是也可以提前复位子带ADPCM解码器320和330的一个或多个。
如将在D节中描述的,提前复位的决定是基于在坏帧期间(即在基于来自全带语音信号合成器的输出信号更新子带ADPCM解码器320和330的期间)对控制子带ADPCM解码器320和330的自适应预测器的极点部分的自适应的信号的某些性能的监控做出的。对于低带ADPCM解码器320,部分重构的信号PLt(n)驱动全极点滤波部分的自适应,而部分重构的信号PH(n)驱动高带ADPCM解码器330的全极点滤波部分的自适应。本质上,在10ms的丢失帧期间内监控到每个参数都很大程度上是恒定的,或者在当前丢失帧期间内主要为正或负。应注意,在D节描述的实现中,自适应复位被限制在包丢失30ms之后。
3、处理类型5和类型6的帧 在处理类型5和类型6的帧时,与当前帧相关的输入比特流再一次可用,因而模块310、320、330和340再次处于活跃状态。然而,低带ADPCM解码器320和高带ADPCM解码器330执行的解码操作被解码约束和控制模块370所约束和控制,以减少从丢失帧到接收帧的过渡处的赝像(artifact)和失真,从而提高丢包后解码器/PLC系统300的性能。对于类型5的帧,这体现在流程图400的步骤420中,对于类型6的帧则体现在步骤426中。
对于类型5的帧,将对输出语音信号执行附加修改来确保由全带语音信号合成器350产生的合成信号和由QMF合成滤波器组340产生的输出信号之间的平滑过渡。因而,QMF合成滤波器组340的输出信号并不直接用作解码器/PLC系统300的输出语音信号。相反,全带语音合成器350修改QMF合成滤波器组340的输出,并使用修改后的版本作为解码器/PLC系统300的输出语音信号。因而,在处理类型5或类型6的帧时,切换器336保持连接到标记为“类型2-6”的下部位置,以接收来自全带语音信号合成器350的输出语音信号。
在这点上,如果全带语音信号合成器350产生的合成信号和QMF合成滤波器组340产生的输出信号之间存在未对齐,全带语音信号合成器350执行的操作包括时间扭曲和重新定相。这些操作的执行在流程400的步骤422示出,并将在以下做更多的细节描述。
同样,对于类型5的帧,全带语音信号合成器350产生的输出语音信号与来自先前处理的丢失帧的呼叫信号叠加。这样做是为了确保从与前帧关联的合成波形到与当前类型5的帧关联的输出波形的平滑过渡。该步骤的执行在流程图400的步骤424示出。
在已经为类型5或类型6的帧产生输出语音信号之后,解码器/PLC系统300更新各种状态存储器,并执行一些处理来利于针对后续丢失帧以步骤414的类似方式所执行的PLC运算,如步骤428所示。
a、子带ADPCM解码的约束和控制 如以上介绍的,解码约束和控制模块370对在处理类型5和类型6的帧过程中由低带ADPCM解码器320和高带ADPCM解码器330执行的解码操作进行约束和控制,以提高丢包后解码器/PLC系统300的性能。现在对解码约束和控制模块370采用的各种约束和控制进行描述。有关这些约束和控制的更多细节将在以下D节中参考解码器/PLC系统300的特殊实现作进一步描述。
i、用于高带ADPCM解码器的自适应量化步长的设置 对于类型5的帧,解码约束和控制模块370将用于高带ADPCM解码器330的自适应量化步长ΔH(n)设定为与丢包前接收的好帧关联的值的滑动平均值。通过减少背景噪声的片段中可见的丢包导致的能量下降,提高了背景噪声中解码器/PLC系统300的性能。
ii、用于低带ADPCM解码器的自适应量化步长的设置 对于类型5的帧,解码约束和控制模块370执行自适应策略以为低带ADPCM解码器320设置自适应量化步长ΔL(n)。在替代的实施例中,该方法也可用于高带ADPCM解码器330。如在前面部分介绍的,对于高带ADPCM解码器330,将自适应量化步长ΔH(n)设定为丢包前第一个好帧上的值的滑动平均值,对解码器/PLC系统300在背景噪声内的性能是有益的。然而,相同方法应用到低带ADPCM解码器320偶尔会在有声语音上产生很大的不自然能量增长。这是因为在有声语音中使用基音周期对ΔL(n)进行调制,并因此将ΔL(n)设定为丢帧前的滑动平均值会在丢包后的第一个好帧上引起ΔL(n)非常大的反常增加。
因此,在由基音周期调制ΔL(n)的情况下,优选地是使用来自ADPCM解码器状态更新模块360的ΔL(n),而不是丢包前的ΔL(n)的滑动平均值。回顾一下,通过将全带语音信号合成器350的输出信号传递通过G.722QMF分析滤波器组来获得低带信号,子带ADPCM解码器状态更新模块360更新低带ADPCM解码器320。如果全带语音信号合成器350正在执行任务,可能是针对有声语音的,那么用于更新低带ADPCM解码器320的信号很可能非常匹配在编码器上使用的信号,因此参数ΔL(n)也很可能非常接近该编码器的步长。对于有声语音,该方法优选地是将ΔL(n)设定为丢包前的ΔL(n)的滑动平均值。
考虑到之前描述的,解码约束和控制模块370采用自适应策略以设定用于丢包后第一个好帧的ΔL(n)。如果丢包前的语音信号相当稳定的,例如稳定的背景噪声,那么将ΔL(n)设定为丢包前的ΔL(n)的滑动平均值。然而,如果丢包前的语音信号呈现出ΔL(n)上的变化,例如被认为是针对有声语音的,那么将ΔL(n)设定为通过基于全带语音信号合成器350的输出的低带ADPCM解码器更新而获得的值。对于中间的情况,ΔL(n)被设定为基于丢包前ΔL(n)变化在这两个值之间进行的线性加权。
iii、用于高带ADPCM解码器的自适应量化步长的自适应低通滤波 在处理包丢失后最初几个好帧(类型5和类型6的帧)的过程中,为了减少产生太强的高频内容的局部波动(由于G.722编码器和G.722解码器之间同步的暂时丢失)的风险,解码约束和控制模块370会有效控制高带ADPCM解码器的自适应量化步长ΔH(n)。这样会产生高频振荡效应,这正好是实际啁啾声的影响。因此,在最初几个好帧内,对高带量化步长ΔH(n)应用自适应低通滤波器。经过自适应的时间周期以二次形式减少了平滑过渡。对于丢包前语音信号非常稳定的信号片段,持续时间更长(以下在D节中描述的解码器/PLC系统300的实现中为80ms)。对于丢包前不是很稳定的语音信号的情况,持续时间稍短(以下在D节中描述的解码器/PLC系统300的实现中为40ms),而对于不稳定的片段,则不采用低通滤波。
iv、最初几个好帧内全极点滤波器部分上的自适应安全裕度(adaptivesafety margin) 由于在包丢失期间和之后G.722解码器和编码器之间必然的偏差,解码约束和控制模块370在丢包后最初几个好帧(类型5和类型6的帧)期间对低带ADPCM解码器720的自适应预测器执行某些约束。根据G.722标准,默认的编码器和解码器在子带预测器的极点部分上执行1/16的最小“安全”裕度。然而,已经发现的是,低带ADPCM解码器的两极六个零预测滤波器的全极点部分在丢包后经常会引起反常的能量增加。这通常以波形弹跳(pop)的形式感测到。显然,丢包引起较低的安全裕度,其与产生极高能量波形的具有较高增益的全极点滤波部分对应。
通过自适应地在低带ADPCM解码器320的自适应预测器的全极点滤波部分上执行更多的严格约束,解码约束和控制模块370极大地减少了这种丢包后的反常能量增加。在包丢失后最初几个好帧上获得了增加的最小安全裕度。增加的最小安全裕度被逐渐降低至标准的G.722最小安全裕度。此外,还对丢包前的安全裕度的滑动平均值进行监控,并对包丢失后最初几个好帧期间增加的最小安全裕度进行控制,以致不会超过该滑动平均值。
v、高带ADPCM解码器的内部信号上的DC移除 在包丢失后最初几个好帧(类型5和类型6的帧)期间,据观察,G.722解码器经常产生非常令人讨厌的明显的高频啁啾失真。该失真来自于因丢包而与高带ADPCM编码器失去同步并因而产生有偏差的预测的高带ADPCM解码器。导致啁啾失真的同步丢失表明了其自身在输入信号中对极点预测器PH(n)的自适应的控制和对在长时间内具有恒定正负号的重构高带信号rH(n)的控制。这使得预测器的极点部分发生漂移,因为自适应是基于符号的(sign-based),因而在相同方向上保持更新。
为了避免这个问题,通过在包丢失后最初几个好帧期间分别以高通滤波版本PH,HP(n)和rH,HP(n)来代替信号PH(n)和rH(n),解码约束和控制模块370对这些信号增加了DC移除操作。这用来完全消除啁啾声。DC移除被实现为PH(n)和rH(n)各自的滑动平均值的减法。这些滑动平均值针对好帧和坏帧持续地更新。在以下D节中描述的解码器/PLC系统300的实现中,这种替换针对包丢失后最初40ms发生。
b、重新定相和时间扭曲 如以上介绍的,在流程图400的步骤422中,如果全带语音信号合成器350在丢包期间产生的合成语音信号和QMF合成滤波器组340在丢包后最初接收的帧期间产生的语音信号之间存在未对齐,全带语音信号合成器350执行被称为“重新定相”和“时间扭曲”的技术。
如上所述的,在处理丢失帧时,如果与丢包前的接收帧相关的解码语音信号几乎是周期性的,如语音元音信号,那么全带语音信号合成器350基于基音周期外插语音波形。仍如上所述的,在丢失帧结尾以外继续这种波形外插,以获得用于与下一帧的相关语音信号叠加的更多采样,从而确保了平滑过渡以及避免了任何中断。然而,解码语音信号的实际基音周期一般不跟随在丢失帧中进行波形外插期间所用的基音轨迹。所以,一般外插语音信号不会与第一个好帧关联的解码语音信号完全对齐。
这在图6中示出,图6是示出了丢包前和丢包后第一个接收帧期间解码语音信号602的振幅(为了方便,还示出了丢失帧时的解码语音信号,但是应了解,解码器/PLC系统300不能解码原始信号的这个部分)以及在丢失帧期间和丢包后第一个接收帧期间产生的外插语音信号604的振幅的时间线600。如图6所示,两个信号在第一个接收帧中是异相的。
这种异相现象在解码器/PLC系统300中引起两个问题。第一,从图6中可以看到,在丢包后的第一个接收帧中,叠加区域中的解码语音信号602和外插语音信号604是异相的,并将部分对消,引起可听膺像。第二,与子带ADPCM解码器320和330相关的状态存储器呈现了某种程度的基音调制,并因此对语音信号的相位敏感。如果语音信号接近基音周期,即是靠近信号电平急剧上升和下降的基音脉冲的语音信号部分,这一问题尤其明显。因为子带ADPCM解码器320和330对语音信号的相位敏感,并因为外插语音信号604被用来在包丢失时更新这些解码器的状态存储器(如上所述),外插语音信号604和解码语音信号602之间的相位差将在丢包后的接收帧中产生明显的膺像,这是因为子带ADPCM编码器和解码器的内部状态失配。
以下将对此作更多的细节描述,时间扭曲用于解决叠加区域中的相消干扰的第一个问题。具体地说,时间扭曲用于拉伸和收缩与丢包后第一个接收帧相关的解码语音信号的时间轴,以将它与用于隐藏前一丢失帧的外插语音信号对齐。虽然在此参考具有存储器的子带预测编码器对时间扭曲进行描述,但是这项普通技术也可应用到其它编码器,包括但不限于具有和不具有存储器的编码器、预测和非预测编码器以及子带和全带编码器。
同样在此作更多的细节描述,重新定相用于解决由于丢失帧和包丢失后第一帧的未对齐引起的子带ADPCM编码器和解码器的内部状态失陪的第二个问题。重新定相是将子带ADPCM解码器320和330的内部状态设定为外插语音波形与包丢失后第一个接收帧前的最后一个输入信号采样同相时的时间点的状态的处理过程。虽然在后向自适应系统的环境中描述了重新定相,但是它也可以用于在前向自适应预测编码器或者具有存储器的任何编码器中执行PLC。
i、时滞计算 重新定相和时间扭曲技术都需要计算外插语音信号和与包丢失后第一个接收帧相关的解码语音信号之间未对齐的采样的数量。这一未对齐被称为“滞后”,如图6中所标记的,其可认为是解码语音信号滞后外插语音信号的采样数量。在图6的情形中,滞后是负的。
实行时滞计算的一种一般的方法在图7的流程图700中示出,但是也可以使用其它的方法。执行该方法的一种特定方式在以下D节中给出了描述。
如图7所示,流程图700的方法在步骤702开始,在前一丢失帧期间由全带语音信号合成器350产生的语音波形被外插到丢包后第一个接收帧中。
在步骤704,计算时滞。在概念级上,通过最大化外插语音信号和与丢包后第一个接收帧关联的解码语音信号之间的相关性来计算时滞。如图9所示,相对于与第一接收帧(表示为902)关联的解码语音信号,外插语音信号(表示为904)在-MAXOS到+MAXOS的范围内漂移,其中MAXOS表示最大偏移量,最大化相关性的漂移量被用作时滞。这可以通过在零附近的±MAXOS的时滞范围内的信号间搜索标准化交叉相关性函数R(k)的峰值来完成 其中es是外插语音信号,x是与包丢失后第一个接收帧关联的解码语音信号,MAXOS是允许的最大偏移,LSW是滞后搜索窗口长度,i=0表示在滞后搜索窗口中的第一采样。最大化该函数的时滞将对应于两个波形之间的相对时间偏差。
在一个实施例中,以基于基音周期自适应的方式确定出在其上计算相关性的采样的数量(又称为滞后搜索窗口)。例如,在以下D节中描述的实施例中,用于粗滞后搜索的采样(16kHz采样率)数量上的窗口大小如下
其中ppfe是基音周期。该等式使用了地板函数(floor function)。实数x的地板函数

是返回小于或等于x的最大整数的函数。
如果在步骤704中计算的时滞是零,那么这表示外插语音信号和第一个接收帧关联的解码语音信号是同相的,而正值表示与第一个接收帧关联的解码语音信号滞后于(相比较而言被延迟)外插语音信号,负值表示与第一个接收帧关联的解码语音信号超前于外插语音信号。如果时滞等于零,那么不需要执行重新定相和时间扭曲。在以下D节中提出的示例实现中,如果包丢失前的最后一个接收帧是无声的(通过针对该帧计算出的发声的度数来表示,如以上关于类型2、类型3和类型4的处理所描述的),或者如果包丢失后的第一个接收帧是无声的,时滞也被设为零。
为了最小化相关性计算的复杂度,可以使用多阶段处理来执行滞后搜索。图8的流程图800示出了这种方法,其中首先在步骤802使用信号的下采样表示来执行粗时滞搜索,然后在步骤804使用信号的较高采样率表示来执行细化时滞搜索。例如,将信号下采样到4kHz后执行粗时滞搜索,以8kHz上的信号执行细化时滞搜索。为了进一步减小复杂度,可以仅通过对信号进行二次采样而忽略任何混叠效应来执行向下采样。
一个问题在于使用什么信号来与第一个接收帧内的外插语音信号进行相关。“强力(brute force)”方法是完整地解码第一个接收帧以获得解码语音信号然后在16kHz上计算相关性的方法。为解码第一个接收帧,可以使用从重新编码外插语音信号(如上所述)一直到帧边界而获得的子带ADPCM解码器320和330的内部状态。然而,由于以下所述的重新定相算法将为子带ADPCM解码器320和330提供一组的更佳状态,这需要重新运行G.722解码。因为该方法执行两次完整的解码操作,所以在计算复杂度方面是非常浪费的。为了解决此问题,本发明的实施例实现了一种较低复杂度的方法。
根据较低复杂度的方法,在第一个接收帧中接收的G.722比特流仅被部分解码以获得低带量化差分信号dLt(n)。在正常G.722解码过程中,从比特流解复用器310接收的比特由子带ADPCM解码器320和330转换成差分信号dLt(n)和dH(n),这两个信号由向后自适应比例因子进行缩放,并通过向后自适应零极点(pole-zero)预测器来获得子带语音信号,这些信号然后由QMF合成滤波器组340合成来产生输出语音信号。在该处理过程内的每个采样上,将更新子带ADPCM解码d器320和330中的自适应预测器的系数(coefficient)。这个更新解决了解码器复杂度的重要部分。由于仅需要用于时滞计算的信号,那么在较低复杂度方法中,两极、六零预测滤波器系数仍保持不变(它们并不基于逐个采样被更新)。另外,因为滞后是由基音决定的,而人的语音的基音基本频率小于4kHz,所以仅能获得低带近似信号rL(n)。关于此方法的更多细节将在以下D节中提供。
在以下D节中描述的实施例中,两极、六零预测滤波器的固定滤波系数是从重新解码丢包期间的外插波形一直到最后一个丢失帧的末端来获得。在可选的实现中,固定滤波系数可以是在包丢失前的最后一个接收帧的结尾使用的那些滤波器系数。在另一可选的实现中,可以根据语音信号的特性或者其它标准,以自适应方式来选择这些系数组中的一个或者其它。
ii、重新定相 在重新定相过程中,调整子带ADPCM解码器320和330的内部状态来考虑外插语音波形和包丢失后的第一个接收帧关联的解码语音波形之间的时滞。如之前所述,在处理第一个接收帧之前,通过对在前一丢失帧期间由全带语音信号合成器350合成的输出语音信号进行重新编码来估计子带ADPCM解码器320和330的内部状态。这些解码器的内部状态呈现出某种基音调制。因而,如果在与前一丢失帧关联的波形外插期间使用的基音周期正好紧跟解码语音信号的基音轨迹,那么可在最后一个丢失帧和第一个接收帧之间的边界停止重编码处理,而子带ADPCM解码器320和330的状态与原始信号是同相的。然而,如上所述,在外插时使用的基音一般不匹配解码语音信号的基音轨迹,且在包丢失后的第一个接收帧开始时,外插语音信号和解码语音信号是不对齐的。
为了克服此问题,重新定相使用时滞来控制在何处停止重新定相处理。在图6的例子中,外插语音信号604和解码语音信号602之间的时滞是负的。假设该时滞由lag表示。那么,可以看出,如果对外插语音信号重编码超出帧边界的-lag个采样,那么重编码将在外插语音信号604内的与帧边界上解码语音信号602的相位一致的相位上停止。产生的子带ADPCM解码器320和330的状态存储器将与第一个好帧中的接收数据同相,从而提供了更好的解码信号。因而,重新解码子带重构信号的采样数量如下 N=FS-lag (3) 其中FS是帧大小,所有参数都是以子带采样率(8kHz)为单位。
图10A、图10B和图10C分别给出了三种重新定相的方案。在图10A的时间线1000上,解码语音信号1002超前于外插语音信号1004,所以重新解码超出帧边界-lag个采样。在图10B的时间线1010上,解码语音信号102滞后于外插语音信号1014,重新解码在帧边界前lag个采样处中止。在图10C的时间线1020上,外插语音信号1024和解码语音号信1022在帧边界上同相(尽管丢失帧期间的基音轨迹是不同的),且重新编码在帧边界上停止。注意,为了方便,在图10A、10B和10C中,都示出了在丢失帧期间的解码语音信号,但是应清楚解码器300并不能解码原始信号的这个部分。
如果没有执行子带ADPCM解码器320和330内部状态的重新定相,那么可以在丢失帧的整个处理过程中执行用于更新这些内部状态的重新编码。然而,因为一直要到包丢失后的第一个接收帧才知道滞后,所以并不能在丢失帧的整个过程中执行重新编码。解决此问题的简单方法是存储用于替换前一丢失帧的整个外插波形,然后在第一个接收帧期间执行重新编码。然而,这需要存储器来存储FS+MAXOS个采样。重新编码的复杂度也全部落入第一个接收帧。
图11是以重新分配对在前丢失帧的大量计算的方式执行重新编码的方法流程图110。因为MAXOS<<FS,所以从计算的负载平衡角度来看,这是合理和可行的。
如图11所示,流程图1100的方法开始于步骤1102,在丢失帧内执行重新编码一直到帧边界,然后存储帧边界上子带ADPCM解码器320和330的内部状态。另外,还要存储重新编码FS-MAXOS个采样后的中间内部状态,如步骤1104所示。在步骤1106,在存储器中保存用于重新编码FS-MAXOS+1到FS+MAXOS所生成的波形外插采样。在步骤1108,在包丢失后的第一个接收帧内,使用帧边界上存储的内部状态作为初始状态以执行子带近似解码(用于确定上述的lag)。然后,在判决步骤1110,确定lag是正的还是负的。如果lag是正的,那么重新存储在FS-MAXOS采样上的内部状态,并开始重新解码MAXOS-lag采样,如步骤1112所示。相反,如果lag是负的,那么使用帧边界上的内部状态,并重新编码附加的|lag|采样。根据本方法,在第一个接收帧中重新编码至多MAXOS采样。
所属领域的技术人员应知悉,可以通过在丢失帧中的重新编码过程时沿途存储更多的G.722状态来减少第一个好帧中的重新编码的量。在极端情况下,可以存储FRAMESIZE-MAXOS和FRAMESIZE+MAXOS之间每个采样的G.722状态,且并不需要在第一个接收帧中进行重新编码。
相比流程图1100的方法,一种在第一个接收帧中需要更多的重新编码的替代方法中,重新编码在丢失帧期间针对FS-MAXOS个采样而执行。子带ADPCM解码器320和330的内部状态和剩余2*MAXOS个采样被保存在存储器中以便在第一个接收帧中使用。在第一个接收帧中,计算出滞后,并基于该滞后对合适量的采样从存储的G.722状态开始执行重新编码。该方法需要存储2*MAXOS个重构的采样、G.722状态的一份副本以及第一个接收帧中的至多2*MAXOS个采样的重新编码。该替代方法的缺点是不能存储用于上述较低复杂度解码和时滞计算的帧边界上的子带ADPCM解码器320和330的内部状态。
理想地说,滞后应该与外插语音信号和第一个接收帧关联的解码语音信号之间的帧边界上的相移一致。根据本发明的一个实施例,通过相对长的滞后搜索窗口来计算出粗滞后估计值,该窗口的中心并不与帧边界一致。例如,滞后搜索窗口可以是基音周期的1.5倍。滞后搜索范围(即相对于原始语音信号偏移外插语音信号的采样数量)也相对比较宽(即±28个采样)。为了改善对齐度,于是执行滞后细化搜索。作为滞后细化搜索的一部分,移动搜索窗口以从第一个接收帧的第一个采样开始。这可以通过由粗滞后估计来偏置外插语音信号来完成。滞后细化搜索中的滞后搜索窗口的大小可以比较小,且滞后搜索范围也可以比较小(即±4个采样)。搜索方法可以与上述3.b.i节中的方法相同。
本发明在以上G.722后向自适应预测编译码器的环境中已经提出了重新定相的概念。我们可以很容易的将此概念扩展到其它后向自适应预测编译码器,如G.726。然而,重新定相的使用并不局限于后向自适应预测编译码器。相反,多数基于存储器的编码器在状态存储器中表现出相位相关性,并因此受益于重新定相。
iii、时间扭曲 如在此使用的,术语时间扭曲指的是沿时间轴拉伸或收缩信号的处理。如在此别处讨论的,为了维持连续的信号,本发明的实施例将用于代替丢失帧的外插语音信号和包丢失后第一个接收帧关联的解码语音信号合并以避免中断。这是通过执行两个信号之间的叠加来完成的。然而,如果信号间是相互异相的,那么可能发生波形对消(cancellation),并产生可听膺像,例如图6中的叠加区域。在此区域中执行叠加将引起解码语音信号602的负的部分和外插语音信号604之间明显的波形对消。
根据本发明的实施例,与包丢失后第一个接收帧关联的解码语音信号被执行时间扭曲,以在第一个接收帧中的某个时间点上使解码语音信号与外插语音信号相位对齐。时间扭曲的量是由时滞的值控制的。因而,在一个实施例中,如果时滞是正的,那么将拉伸与第一个接收帧关联的解码语音信号,并且叠加区域可以设置在第一个接收帧的开始处。然而,如果时滞是负的,解码语音信号将被压缩。因此,叠加区域被设置到进入第一个接收帧|lag|个采样。
在G.722的情况下,丢包后第一个接收帧开始的有些采样并不是可靠的,这是因为帧开始时子带ADPCM解码器320和330的内部状态是不正确的。因此,在本发明的实施例中,根据对与第一个接收帧关联的解码语音信号应用的时间扭曲,第一个接收帧内的头MIN_UNSTBL个采样可不包含在叠加区域中。例如,在以下D节描述的实施例中,将MIN_UNSTBL设定为16,或者是160个采样的10ms帧内的第一个1ms。在该区域中,外插语音信号可用作解码器/PLC系统300的输出语音信号。这种实施例有效地解决了第一个接收帧中语音信号的重新收敛时间。
图12A、图12B和图12C示出了这一概念的几个例子。在图12A的例子中,时间线1200示出了在第一个接收帧中解码语音信号超前于外插信号。因此,解码语音信号经过了-lag个采样的时间扭曲收缩(时滞lag是负的)。应用了时间扭曲后的结果如时间线1210所示。如时间线1210所示,这些信号在叠加区的中心或中心附近是同相的。在这种情况下,叠加区域的中心位于MIN_UNSTBL-lag+OLA/2处,其中OLA是叠加区域中采样的数量。在图12B的例子中,时间线1220示出了在第一个接收帧中解码语音信号滞后于外插信号。因此,将解码语音信号作lag个采样的时间扭曲拉伸来完成对齐。采用时间扭曲的结果如图1230所示。在这种情况下,MIN_UNSTBL>lag,并且在第一个接收帧中仍存在不稳定的区域。在图12C的例子中,时间线1240示出了解码信号再一次滞后于外插信号,所以解码语音信号被时间扭曲拉伸来提供时间线1250中的结果。然而,如时间线1250所示,因为MIN_UNSTBL≤lag,所以叠加区域可以从第一个接收帧中的第一个采样开始。
解码语音信号和外插信号之间的“同相点”需要在叠加区域的中间,叠加区域尽可能设置在靠近第一个接收帧开始的地方。这减少了必须将前一丢失帧关联的合成语音信号外插到第一个接收帧的时间。在本发明的一个实施例中,这是通过执行两个阶段的时滞估计来完成的。在第一阶段,通过相对长的滞后搜索窗口来计算粗滞后估计值,窗口的中心可不与叠加区域的中心一致。例如,滞后搜索窗口可以是基音周期的1.5倍。滞后搜索范围(即相对于原始语音信号偏移外插语音信号的采样数量)也相对比较宽(即±28个采样)。为了改善对齐度,于是执行滞后细化搜索。作为滞后细化搜索的一部分,滞后搜索窗口与依照粗滞后估计得到的预计叠加设置同中心。这可以通过由粗滞后估计来偏置外插语音信号来完成。滞后细化搜索中的滞后搜索窗口的大小可以较小(例如叠加区域的大小),而滞后搜索范围也可以较小(即±4个采样)。搜索方法可以与上述3.b.i节中的方法相同。
执行时间扭曲存在许多技术,一种技术包括分段式(piece-wise)单采样平移和叠加。图13的流程图1300描述了一种使用该技术进行收缩的方法。根据该方法,如步骤1302所示,周期性降低采样。从采样降低的这个点开始,叠加原始信号和向左平移的信号(由于降低),如步骤1304所示。图14的流程图1400描述了一种使用该技术进行拉伸的方法。根据该方法,周期性重复采样,如步骤1402所示。从采样重复的那个点开始,叠加原始信号和向右平移的信号(由于采样重复),如步骤1404所示。这些操作的叠加窗口的长度取决于采样增加/降低的周期性。为了避免太多的信号平滑,可以定义一个最大的叠加周期(即8个采样)。发生采样增加/降低的周期取决于各种因素,如帧大小、采样增加/降低的数量以及是否正在执行增加或降低。
时间扭曲的量可以被限制。例如,在以下D节描述的G.722系统中,可以将时间扭曲的量针对10ms的帧限制为±1.75ms(或者160个采样的10ms帧中的28个采样)。大于此范围的扭曲可以消除上述的破坏性干扰,但是通常会带来一些其它的可听失真。因而,在这种实施例中,在时滞超出此范围的情况下,将不执行时间扭曲。
本发明将以下在D节中描述的系统设置来确保在丢包后第一个接收帧之后的零采样延迟。为此,该系统不对超过第一个接收帧的解码语音信号执行时间扭曲。这进而限制了在上一段中所述的没有可听失真发生的时间扭曲的量。然而,所属领域的技术人员应知悉,在容纳某些采样延迟(在包丢失后的第一个接收帧之后)的系统中,可以对超过第一个好帧的解码语音信号应用时间扭曲,从而能在没有可听失真的情况下调整到较大的时滞。当然,在这种系统中,如果第一个接收帧后的帧丢失,那么时间扭曲仅可以应用于与第一个好帧关联的解码语音信号。这种可选实施例也在本发明的范围和精神之内。
在本发明的可选实施例中,对解码语音信号和外插语音信号都可以执行时间扭曲。由于多种原因,这种方法可以提供更好的性能。
例如,如果时滞是-20,那么根据上述方法将解码语音信号作20个采样的收缩。这就是说需要产生外插语音信号的20个采样以用于第一个接收帧内。这个数量也可以通过收缩外插语音信号来减少。例如,可以将外插语音信号收缩4个采样,留下16个采样用于解码语音信号。这减少了必须用于第一个接收帧内的外插信号的采样数量,也减少了必须在解码语音信号上执行的扭曲的量。如上记录的,在D节的实施例中,时间扭曲需要限制到28个采样。用于对齐信号所需的时间扭曲量的减少意味着在时间扭曲过程中会引入更少的失真,而且也增加了可以改善的情形的数量。
通过将解码语音信号和外插语音信号作时间扭曲,也应该获得叠加区域中更好的波形匹配。解释如下如果滞后是之前例子中的-20个采样,这就是说解码语音信号超前于外插信号20个采样。这种情况最有可能的原因是用于外插的基音周期大于实际基音。通过同样收缩外插语音信号,叠加区域中该信号的有效基音变得更小,更接近于实际基音周期。同样,通过收缩原始信号,该信号的有效基音周期大于仅用于收缩的情况。因此,叠加区域中的两个波形会具有更加匹配的基音周期,因而波形会更匹配。
如果滞后是正的,那么拉伸解码语音信号。在这种情况下,虽然拉伸外插信号会增加用于第一个接收帧中的外插采样的数量,而是否可以获得改善却并不清楚。然而,如果存在长期的丢包,并且两个波形明显异相,那么该方法可以提供改善的性能。例如,如果滞后是30个采样,因为大于28个采样的限制,在前述的方法中并没有执行扭曲。30个采样的扭曲很可能引起本身的失真。然而,如果该30个采样分布在两个信号之间,如拉伸外插语音信号10个采样并拉伸解码语音信号20个采样,那么可以在没使用过多时间扭曲的情况下将它们对齐。
D、G.722解码器中的示例实现的细节 这部分提供了涉及本发明在ITU-T推荐G.722语音解码器中特殊实现的具体细节。该示例实现在固有的10毫秒(ms)帧大小上执行,也可以在任何10ms的倍数的包或帧大小上执行。较长的输入帧作为超帧(super frame)进行处理,对此,PLC逻辑以其固有的10ms帧大小调用合适数量的次数。与使用相同帧大小的常规G.722解码相比,其并不会引起附加的延迟。本发明仅通过示例的方式提供了这些实现细节及以下给出的内容,并不能用来限制本发明。
本节中描述的实施例满足与G.722附录IV中描述的PLC算法相同的复杂度需求,但是提供了比那个附录中描述的PLC算法明显更好的语音质量。由于它的高质量,本节中描述的实施例适用于发生帧删除或丢包的G.722的一般应用。这种应用包括,例如,互联网协议语音技术(VoIP)、无线保真语音技术(WiFi)和下一代数字增强无线通信(DECT)。本节中描述的实施例易于适用,除了在执行无PLC的基本G.722解码器之后实际没有留下复杂度净空(headroom)的应用之外。
1、缩写和约定 表1中列出了在本节中使用的一些缩写。
表1缩写 本发明的描述也使用了一些约定,并将对其中一部分作出解释。PLC算法以10ms的固有帧大小进行运算,因此该算法的描述仅针对10ms的帧。对于更大的包(10ms的倍数),以10ms分段对接收包进行解码。在16kHz采样率级别上信号的离散时间一般使用“j”或“i”表示。在8kHz采样级别上信号的离散时间索引一般使用“n”表示。低带信号(0-4kHz)以下标“L”标识,高带信号(4-8kHz)以下标“H”标识。如果可能,该描述将重新使用ITU-T G.722的规范。
以下表2中列出了最常用的符号及它们的描述。




表2常用符号及其描述 2、PLC算法的一般描述 如以上参考图5描述的,解码器/PLC系统300处理的帧有六种类型类型1、类型2、类型3、类型4、类型5和类型6。类型1的帧是任何在包丢失之后的第八个接收帧以外的接收帧。类型2的帧是与包丢失关联的第一个和第二个丢失帧的其中之一。类型3的帧是与包丢失关联的第三个到第六个丢失帧的其中任何一个。类型4的帧是与包丢失关联的第六帧以外的任何丢失帧。类型5的帧是紧随包丢失后的一个接收帧。最后,类型6的帧是紧随包丢失后的第二个到第八个接收帧的其中任何一个。本节中描述的PLC算法是在持续时间为10ms的固定帧大小上进行运算的。
本发明根据标准的G.722操作来解码类型1的帧,增加了某些状态存储器的维护和处理以利于PLC及相关的处理。图15是根据本发明的实施例执行这些操作的逻辑的模块图1500。具体地说,如图15所示,在处理类型1的帧时,从比特解复用器(图15中未示出)中接收低带ADPCM编码器的索引(index)IL(n),并由低带ADPCM解码器1510解码来产生子带语音信号。类似地,从比特解复用器中接收高带ADPCM编码器的索引数IH(n),并由高带ADPCM解码器1520解码来产生子带语音信号。QMF合成滤波器组1530合成低带语音信号和高带语音信号来产生解码输出信号xout(j)。这些操作与标准G.722解码是一致的。
除这些标准G.722解码操作以外,在处理类型1的帧时,逻辑模块1540用于更新PLC相关的低带ADPCM状态存储器,逻辑模块1550用于更新PLC相关的高带ADPCM状态存储器,逻辑模块1560用于更新WB PCM PLC相关的状态存储器。这些状态存储器更新用于加快与其它帧类型相关的PLC处理。
对于类型2、类型3和类型4的帧,宽带(WB)PCM PLC是在16kHz输出语音域内执行的。图16中提供了用于执行WB PCM PLC的逻辑的模块图1600。G.722解码器的之前的输出语音xout(j)被缓存起来,并被传送到WB PCMPLC逻辑。WB PCM PLC算法是基于周期性波形外插(PWE)的,基音估计是WB PCM PLC逻辑的重要组成部分。最初,基于加权语音域中的向下采样(到2kHz)信号来估计粗基音。随后,使用原始的16kHz采样以全解析度细化该估计值。WB PCM PLC逻辑的输出xPLC(i)是周期性外插波形和由PLC定形的噪声的线性组合。对于持续的帧删除,输出波形xPLC(i)被逐渐减弱。减弱从帧丢失后的20ms后开始,并在帧丢失后的60ms后完成。
如图17的模块图1700所示,对于类型2、类型3和类型4的帧,WB PCMPLC逻辑的输出xPLC(i)被传送通过G.722QMF分析滤波器组1702以获得相应的子带信号,这些子带信号随后被分别传送给改进的低带ADPCM编码器1704和改进的高带ADPCM编码器1706以更新解码器的状态和存储器。只有部分简化的子带ADPCM编码器用于该更新。
图16和图17所示的逻辑执行的处理发生在丢失帧期间。改进的低带ADPCM编码器1704和改进的高带ADPCM编码器均被简化以减少复杂度。在本申请的其它地方将对它们作细节描述。在编码器1704和1706中出现的一个特征(在常规的G.722子带ADPCM编码器中并不存在)是基于信号属性和包丢失持续时间的编码器自适应复位。
与PLC算法关联的最复杂的处理是对于类型5的帧的处理,类型5的帧是紧随包丢失的第一个接收帧。在这个帧期间发生外插波形到标准解码波形的过渡。在处理类型5的帧时使用的技术包括重新定相和时间扭曲,这些将在此作更多的细节描述。图18提供了用于执行这些技术的逻辑的模块图1800。另外,在处理类型5的帧时,以在此描述了更多细节的方式来更新解码器中的QMF合成滤波器组。与处理类型5的帧关联的另一功能包括在包丢失后第一个接收帧开始时的低带和高带对数比例因子的设定。
在此都是使用改进的和约束的子带ADPCM解码器来解码类型5和类型6的帧。图19描述了用于处理类型5和类型6的帧的逻辑的模块图1900。如图19所示,逻辑1970在处理类型5和/或类型6的帧时对子带ADPCM解码器1910和1920施加约束和控制。子带ADPCM解码器的约束和控制是在包丢失后的头80ms期间施加的。其中有些没有扩展到40ms以外,而其它的约束和控制在持续时间或度上是自适应的。约束和控制机制将在本申请中作更多的细节描述。如图19所示,逻辑模块1940、1950和1960用于在处理类型5或类型6的帧之后更新状态存储器。
在无错信道的条件下,本节中描述的PLC算法与G.722是比特精准的(bit-exact)。此外,在错误条件下,该算法在包丢失后第八帧以外与G.722是相同的,如果没有比特错误,应该能得到向G.722无错输出的收敛。
本节中描述的PLC算法支持任何是10ms的倍数的帧大小。对于大于10ms的包大小,仅需针对每个包将PLC算法以10ms间隔调用多次。因此,在本节的后续部分中,将按照10ms的固定帧大小来描述PLC算法。
3、G.722输出的波形外插 对于与包丢失相应的丢失帧(类型2、类型3和类型4的帧),在图16中描述的WB PCM PLC逻辑外插与前一帧关联的G.722输出波形来产生当前帧的替换波形。然后在处理类型2、类型3和类型4的帧时将该外插宽带信号波形xPLC(i)用作G.722PLC逻辑的输出波形。为了方便地描述图16中各种模块,当WB PCM PLC逻辑为丢失帧计算出信号xPLC(i)以后,信号xPLC(i)被写入存储了xout(j)的缓存,其中xout(j)是整个G.722解码器/PLC系统的最终输出。现在对图16的每个处理模块作更多的细节描述。
a、八阶LPC分析 模块1604用于在计算出当前帧关联的信号xout(j)并将其存储在缓存之后,在接近帧处理循环的结尾执行8阶LPC分析。这种8阶LPC分析是一种自相关LPC分析,具有应用到与当前帧关联的xout(j)信号的10ms不对称分析窗口。这种不对称窗口定义如下 假设xout(0)、xout(1)、...、xout(159)表示与当前帧关联的G.722解码器/PLC系统输出宽带信号采样。执行窗口运算如下 xw(j)=xout(j)w(j),j=0,1,2,...,159. (5) 下一步,计算自相关系数如下 然后将频谱平滑和白噪声纠正操作应用到自相关系数,如下 其中fs=16000是输入信号的采样率,σ=40。
下一步,使用列文森-杜宾(Levinson-Durbin)递归来将自相关系数

转换为LPC预测器系数

i=0,1,...,8。如果列文森-杜宾递归在完成递归之前过早的退出(例如,因为预测误差能量E(i)小于零),那么在当前帧中使用与最近一帧关联的短期预测器系数。为了解决这种方式的例外,需要

数组的初始值。

数组的初始值被设定为



i=1,2,...,8。列文森-杜宾递归算法具体规定如下
1、如果

使用最近一帧的

数组,并退出列文森-杜宾递归 2. 3. 4. 5.E(1)=(1-k12)E(0) 6、如果E(1)≤0,使用最近一帧的

数组,并退出列文森-杜宾递归 7,对于i=2,3,4,...,8,执行如下运算 a. b. c. d.E(i)=(1-ki2)E(i-1) e、如果E(i)≤0,使用最近一帧的

数组,并退出列文森-杜宾递归
如果过早退出递归,使用之前处理的帧的

数组。如果顺利完成递归(正常情况下),LPC预测器系数如下 及 通过对以上获得的系数应用宽带扩展运算,最终获得的LPC预测器系数组如下
b、短期预测残余信号的计算 图16的模块1602(标记为“A(z)”)表示短期线性预测误差滤波器,滤波器系数为以上计算的ai,i=0,1,...,8。模块1602用于在执行8阶LPC分析后进行操作。模块1602计算短期预测残余信号d(j)如下 传统上,当前帧的时间索引n从之前处理的帧的时间索引继续。换言之,如果时间索引范围0,1,2,...,159表示当前帧,那么时间索引范围-160,-159,...,-1就表示之前处理的帧。因而,在以上的等式中,如果索引(j-i)是负的,那么该索引指向在之前处理的帧的结尾附近的信号采样。
c、比例因子的计算 图16中的模块1606用于计算与当前帧关联的短期预测残余信号的平均幅度。这一操作在模块1602以上述方式计算出短期预测残余信号d(j)之后才执行。平均幅度avm的计算如下 如果下一待处理的帧是丢失帧(换言之,与包丢失相应的帧),可以使用该平均幅度作为比例因子来调整白高斯(Gaussian)噪声序列(如果当前帧是无声的)。
d、加权语音信号的计算 图16的模块1608(标记为“1/A(z/y)”)表示加权短期合成滤波器。模块1608用于在以上述方式(参考模块1602)计算出当前帧的短期预测残余信号d(j)之后进行操作。这个加权短期合成滤波器的系数

(i=0,1,...,8)计算如下(其中γ1=0.75) 短期预测残余信号d(j)通过该加权合成滤波器。相应的输出加权语音信号xw(j)的计算如下
e、八比一抽样(eight-to-one decimation) 图16的模块1616将模块1608输出的加权语音信号传送通过60阶最小相位有限脉冲响应(FIR)滤波器,然后执行8:1抽样来将获得的16kHz低通滤波加权语音信号向下采样为2kHz向下采样的加权语音信号xwd(n)。这一抽样操作是在计算出加权语音信号后才执行的。为了减少复杂度,仅当需要xwd(n)的新采样时才执行FIR低通滤波操作。因而,向下采样的加权语音信号xwd(n)的计算如下
其中bi(i=0,1,2,...,59)是60阶FIR低通滤波器的滤波系数,如表3所示。
表360阶FIR滤波器的系数 f、粗基音周期提取 为了减小计算的复杂度,WB PCM PLC逻辑执行基音提取分为两个阶段首先使用2kHz抽样信号的时间解析度来确定粗基音周期,然后使用16kHz非抽样信号的时间解析度来执行基音周期细化。仅当计算出向下采样的加权语音信号xwd(n)之后才执行这种基音提取。本子部分描述了图16的模块1620所执行的第一阶段的粗基音周期提取算法。该算法基于使用某种附加判定逻辑来最大化标准的交叉相关性。
在粗基音周期提取时可使用15ms的基音分析窗口。基音分析窗口的尾部与当前帧的尾部对齐。在2kHz的采样率下,15ms对应30个采样。在不失一般性的情况下,假设索引范围n=0到n=29对应于用于xwd(n)的基音分析窗口。粗基音周期提取算法通过计算以下值开始 及
以上计算针对从k=MINPPD-1到k=MAXPPD+1范围内的所有整数进行,其中MINPPD=5和MAXPPD=33分别是抽样范围中的最小和最大基音周期。然后粗基音周期提取算法在k=MINPPD,MINPPD+1,MINPPD+2,...,MAXPPD的范围中进行搜索,以找到满足c(k)>0的数组{c2(k)/E(k)}的所有局部峰值。(如果一个值相邻的两个值都比它小,将这个值定义为局部峰值)。假设Np表示正的局部峰值的数量。假设kp(j)(j=1,2,...,Np)为索引,其中c2(kp(j))/E(kp(j))是局部峰值且c(kp(j))>0,并假设kp(1)<kp(2)<...<kp(Np)。为了方便,c2(k)/E(k)将被称为“标准化相关性平方(normalized correlation square)”。
如果Np=0,即如果函数c2(k)/E(k)不存在正的局部峰值,那么该算法将搜索具有最大幅值|c2(k)/E(k)|的最大的负局部峰值。如果找到这个最大的负局部峰值,那么将相应的索引k用作输出粗基音周期cpp,并终止模块1620的处理。如果标准化相关性平方函数c2(k)/E(k)既没有正局部峰值,也没有负局部峰值,那么将输出粗基音周期设定为cpp=MIPPD,并终止模块1620的处理。如果Np=1,那么将输出粗基音周期设定为cpp=kp(1),并终止模块1620的处理。
如果存在至少两个局部峰值(Np≥2),那么这个模块使用算法A、B、C和D(将在下面描述),按照这个顺序来确定输出粗基音周期cpp。在这四个算法中较前的算法中计算出的变量将传递给后一算法继续使用。
以下的算法A用于识别标准化相关性平方c2(kp)/E(kp)的局部峰值周围的最大二次内插峰值。针对c(kp)执行二次内插,而针对E(kp)执行线性内插。这种内插是使用16kHz非抽样语音信号的时间解析度来执行的。在以下的算法中,D表示将xw(n)抽样为到xwd(n)时使用的抽样因子。因而,在此D=8。

算法A-在c2(kp)/E(kp)周围查找最大二次内插峰值 A、设定c2max=-1,Emax=1,jmax=0。
B、对于j=1,2,...,Np,进行如下12个步骤 1、设定a=0.5[c(kp(j)+1)+c(kp(j)-1)]-c(kp(j)) 2、设定b=0.5[c(kp(j)+1)+c(kp(j)-1)] 3、设定ji=0 4、设定ei=E(kp(j)) 5、设定c2m=c2(kp(j)) 6、设定Em=E(kp(j)) 7、如果c2(kp(j)+1)E(kp(j)-1)>c2(kp(j)-1)E(kp(j)+1),进行步骤7的余下部分 a、Δ=[E(kp(j)+1)-ei]/D b、对于k=1,2,...,D/2,进行步骤7的以下部分 i.ci=a(k/D)2+b(k/D)+c(kp(j)) ii.ei←ei+Δ iii.如果(ci)2Em>(c2m)ei,进行下面三行 a.ji=k b.c2m=(ci)2 c.Em=ei 8、如果c2(kp(j)+1)E(kp(j)-1)≤c2(kp(j)-1)E(kp(j)+1),进行步骤8的余下部分 a、Δ=[E(kp(j)-1)-ei]/D b、对于k=-1,-2,...,-D/2,进行步骤8的以下部分 i.ci=a(k/D)2+b(k/D)+c(kp(j)) ii.ei←ei+Δ iii.如果(ci)2Em>(c2m)ei,进行下面三行 a.ji=k b.c2m=(ci)2 c.Em=ei 9、设定lag(j)=kp(j)+ji/D 10、设定c2i(j)=c2m 11、设定Ei(j)=Em 12、如果c2m×Emax>c2max×Em,进行以下三行 a.jmax=j b.c2mna.x=c2m c.Emax=Em
符号←表示使用右侧的值更新左侧的参数。
为了避免选择大约是实际粗基音周期的整数倍的粗基音周期,对与c2(kp)/E(kp)的局部峰值相对应的各时滞进行搜索,以确定是否有时滞足够接近之前处理的帧的输出粗基音周期(表示为cpplast,对于每个第一帧,cpplast被初始化为12)。如果有时滞位于cpplast的25%以内,那么就认为足够接近了。对于所有在cpplast的25%以内的时滞,将相应的标准化相关性平方c2(kp)/E(kp)的二次内插峰值进行比较,并选择其中对应于最大标准化相关性平方的内插时滞用于后续处理。以下的算法B执行了上述的任务。在该算法中使用了在上述算法A中计算出的内插数组c2i(j)和Ei(j)。

算法B-在所有接近最近一帧的输出粗基音周期的时滞之中查找最大化内插c2(kp)/E(kp)的时滞 A、设定索引im=-1 B、设定c2m=-1 C、设定Em=1 D、对于j=1,2,...Np,进行如下运算 1.如果|kp(j)-cpplast|≤0.25×cpplast,进行如下 a.如果c2i(j)×Em>c2m×Ei(j),进行如下三行 i.im=j ii.c2m=c2i(j) iii.Em=Ei(j)
注意,如果没有位于cpplast的25%以内的时滞kp(j),那么索引im的值将在执行算法B后保持为-1。如果存在一个或多个位于cpplast的25%以内的时滞,那么索引im在这些时滞中对应于最大标准化相关性平方。
接下来,算法C确定是否在基音范围的前半周选择另一个时滞作为输出粗基音周期。该算法搜索小于16个的所有内插时滞lag(j),并检查它们中是否有接近其每个整数倍(一直到32,包括其本身)的足够大的标准化相关性平方的局部峰值。如果存在满足这个条件的一个或多个时滞,那么选择这些满足条件的时滞中最小的一个时滞作为输出粗基音周期。
此外,在以上算法A和算法B中计算出的各个变量也传递其最终值给以下的算法C。如下所述,参数MPDTH为0.06,给出阈数组MPTH(k)为MPTH(2)=0.7,MPTH(3)=0.55,MPTH(4)=0.48,MPTH(5)=0.37,MPTH(k)=0.30,k>5。

算法C-检查是否应该选择粗基音周期范围内的前半周中的另一个时滞作为输出粗基音周期 A、对于j=1,2,3,...,Np,当lag(j)<16时,按该顺序进行如下操作 1、如果j≠im,设定threshold=0.73;否则,设定threshold=0.4。
2、如果c2i(j)×Emax≤threshold×c2max×Ei(j),取消这个j,并跳过对应这个j的步骤(3),将j增1并返回步骤(1)。
3、如果c2i(j)×Emax>threshold×c2max×Ei(j),进行如下操作 a、对于k=2,3,4,...,当k×lag(j)<32时,进行如下 i、s=k×lag(j) ii、a=(1-MPDTH)s iii、b=(1+MPDTH)s iv、按照顺序经过m=j+1,j+2,j+3,...,Np,看是否有时滞lag(m)位于a和b之间。如果没有时滞处于a和b之间,跳过这个j,停止步骤3,将j增1并返回步骤1。如果存在满足a<lag(m)<b且c2i(m)×Emax>MPTH(k)×c2max×Ei(m)的至少一个m,那么认为在lag(j)的第k个整数倍的附近找到了标准化相关性平方的足够大的峰值;在这种情况下,停止步骤3.a.iv,将k增1并返回步骤3.a.i。b、如果是在没有过早停止的情况下完成步骤3.a的,也就是,如果在小于32的lag(j)的每个整数倍的±100xMPDTH%中存在标准化相关性平方的足够大的内插峰值,那么停止该算法,跳过算法D并将cpp=lag(j)作为最终的输出粗基音周期。

如果执行完以上的算法C而没有找到满足条件的输出粗基音周期cpp,算法D将检查最近一帧的粗基音周期周围的标准化相关性平方的最大局部峰值(在以上的算法B中得到),并最终确定输出粗基音周期cpp。同样,在以上算法A和算法B中计算出的变量将其最终值传递给以下的算法D。如下所述,参数为SMDTH=0.095,LPTHI=0.78。

算法D-输出粗基音周期的最终确定 A、如果im=-1,即如果在最近一帧的粗基音周期周围没有足够大的标准化相关性平方的局部峰值,那么将在算法A最后计算出的cpp作为最终的输出粗基音周期,并退出该算法。
B、如果im=jmax,即如果在最近一帧的粗基音周期周围的标准化相关性平方的最大局部峰值也是该帧中标准化相关性平方的所有内插峰值中的全局最大值,那么将在算法A最后计算出的cpp作为最终的输出粗基音周期,并退出该算法。
C、如果im<jmax,进行如下部分 1、如果c2m×Emax>0.43×c2max×Em,进行步骤C的以下部分 a、如果lag(im)>MAXPPD/2,设定输出cpp=lag(im),并退出该算法。
b、否则,对于k=2,3,4,5,进行以下部分 i、s=lag(jmax)/k ii、a=(1-SMDTH)s iii、b=(1+SMDTH)s iv、如果lag(im)>a且lag(im)>b,设定输出cpp=lag(im),并退出该算法。
D、如果im>jmax,进行以下部分 1、如果c2m×Emax>LPTH1×c2max×Em,设定输出cpp=lag(im),并退出该算法。
E、如果算法执行到此,那么上述步骤都不没有选择出最终的输出粗基音周期。在这种情况下,仅接受在算法A的结尾计算出的cpp作为最终的输出粗基音周期。

g、基音周期细化 图16中的模块1622用于通过使用G.722解码输出语音信号以完整的16kHz时间解析度搜索粗基音周期的附近区域来执行基音周期提取算法的第二阶段处理。该模块首先通过用抽样因子D乘以粗基音周期cpp来将粗基音周期cpp转换到非抽样信号域,其中D=8。基音细化分析窗口大小WSZ选定为cpp×D个采样和160个采样(对应10ms)中较小的一个窗口大小WSZ=min(cpp×D,160)。
接下来,计算搜索范围的下边界为lb=max(MINPP,cpp×D-4),其中MINPP=40个采样是最小基音周期。计算搜索范围的上边界为ub=max(MAXPP,cpp×D+4),其中MAXPP=265个采样是最大基音周期。
模块1622维持了总共是XQOFF=MAXPP+1+FRSZ个采样的16kHz G.722解码语音信号xout(j)的缓存,其中FRSZ=160是帧大小。这个缓存的最后FRSZ个采样包含当前帧的G.722解码语音信号。前MAXPP+1个采样是当前帧之前被处理的上一帧中的G.722解码器/PLC系统输出信号。分析窗口的最后一个采样与当前帧的最后一个采样对齐。设从j=0到j=WSZ-1的索引范围对应于该分析窗口(该窗口是xout(j)缓存中的最后WSZ个采样),并且设负索引表示分析窗口之前的采样。在搜索范围[lb,ub]内针对时滞k计算非抽样信号域中的以下相关性函数和能量项(energy term)如下 然后将最大化比率

的时滞k∈[lb,ub]选定为帧删除的最终细化基音周期,或ppfe。即 接下来,模块1622还计算了两个更加与基音相关的比例因子。第一个被称为ptfe或帧删除的基音抽头,其是用于周期性波形外插的比例因子,并被计算为分析窗口中xout(j)信号的平均幅度和ppfe个采样之前的xout(j)信号部分的平均幅度的比,具有与这两个信号部分之间的相关性函数相同的符号,如下 在的退化情况下,将ptfe设定为0。当ptfe的这种计算完成之后,ptfe值的边界范围为[-1,1]。
第二个与基音相关的比例因子被称为ppt或基音预测抽头,用于计算长期滤波呼叫信号(后面将对此进行叙述),其被计算为ppt=0.75×ptfe。
h、计算混合比(Mixing Ratio) 图16中的模块1618计算优值系数(figure of merit)来确定丢失帧期间的周期性外插波形和经滤波噪声波形之间的混合比。这一计算仅在每次发生包丢失时的第一个丢失帧期间执行。优值系数是三个信号特性的加权和对数增益、第一标准化自相关和基音预测增益,它们每个的计算如下。
使用与之前的子节描述中相同的用于xout(j)的索引约定,基音细化分析窗口中的xout(j)信号的能量为 且以2为底的对数增益lg的计算如下
如果基音预测余能的计算如下 而基音预测增益pg的计算如下
如果设定pg=0。如果sige=0,同样设定pg=0。
第一标准化自相关ρ1的计算如下
当获得这三个信号特性之后,优值系数的计算如下 merit=lg+pg+12ρ1. (28) 以上计算出的merit确定了两个比例因子Gp和Gr,这两个比例因子有效地确定了周期性外插波形和经滤波噪声波形之间的混合比。这里有两个用于merit的阈值优值高阈值MHI和优值低阈值MLO。这些阈值被设定为MHI=28和MLO=20。随机(滤波噪声)成分的比例因子Gr的计算如下 而周期性成分的比例因子Gp的计算如下 Gp=1-Gr (30) i、周期性波形外插 图16中的模块1624用于在丢失帧期间周期性地外插前一输出语音波形(如果merit>MLO)。现在将对模块1624执行该功能的方式进行描述。
对于每次包丢失的第一个丢失帧,计算出每帧的平均基音周期增量。基音周期历史缓存pph(m)(m=1,2,...,5)保存了前5帧的基音周期ppfe。平均基音周期增量是按照以下过程获得的。以即时的最近一帧开始,计算从其前一帧到该帧的基音周期增量(负值表示基音周期减量)。如果基音周期增量为零,该算法会检查前一帧的基音周期增量。该处理过程持续直到检测到第一个具有非零基音周期增量的帧为止,或者直到检测到第四个先前帧为止。如果所有在前的五帧具有相同的基音周期,那么将平均基音周期增量设为零。否则,如果在第m个先前帧发现第一个非零基音周期增量,并且如果该基音周期增量的幅度小于在该帧上的基音周期的5%,则平均基音周期增量ppinc计算为该帧上的基音周期增量除以m,并且将结果值限制在[-1,2]的范围内。
在包丢失的第二个连续丢失帧中,将平均基音周期增量与基音周期ppfe相加,并将结果数四舍五入成最接近的整数,然后将其限制到[MIPP,MAXPP]的范围内。
如果当前帧是包丢失的第一个丢失帧,那么计算出在叠加中使用的所谓的“呼叫信号”,以保证在帧起始时的平滑波形过渡。呼叫信号和周期性外插波形的叠加长度是第一个丢失帧的20个采样。假设j=0,1,2,...,19的索引范围对应当前第一个丢失帧的头20个采样,即为叠加周期,并且假设负索引对应先前的帧。便可获得长期呼叫信号为短期预测残余信号(其比叠加周期早一个基音周期)的缩放版本 在计算出ltring(j)的这些20个采样之后,用模块622计算出的比例因子ppt进一步对它们进行调整 ltring(j)←ppt·ltring(j),j=0,1,2,...,19. (32) 使用在最近一帧中被初始化为xout(j)信号的最后8个采样的滤波存储器ring(j)(j=-8,-7,...,-1),获得的最终呼叫信号如下 假设j=0,1,2,...,159的索引范围对应于当前第一个丢失帧,而j=160,161,162,...,209的索引范围对应于下一帧的头50个采样。此外,假设wi(j)和wo(j)(j=0,1,...,19)分别是三角形淡入和淡出窗口,所以wi(j)+wo(j)=1。那么,周期性波形外插是分以下两个步骤执行的 步骤1 xout(j)=wi(j)·ptfe·xout(n-ppfe)+wo(j)·ring(j),j=0,1,2,...,19. (34) 步骤2 xout(j)=ptfe·xout(j-ppfe),j=20,21,22,...,209. (35) j、标准化噪声生成器 如果merit<MHI,图16中的模块1610会产生具有单一平均幅度的白高斯随机噪声序列。为了降低计算复杂度,预先计算白高斯随机噪声并存储在表中。为了避免使用过长的表并避免由于过短的表而重复相同的噪声模式,本发明将使用一种特殊的索引方案。在该方案中,白高斯噪声表wn(j)具有127个条目,噪声生成器模块的输出的调整版本为 wgn(j)=avm×wn(mod(cfecount×j,127)),j=0,1,2,...,209,(36) 其中cfecount是帧计数器,对于当前包丢失中的第k个连续丢失帧,cfecount=k,

是模运算。
k、噪声序列的滤波 图16中的模块1614表示短期合成滤波器。如果merit<MHI,模块1614对经调整的白高斯噪声进行滤波以对其给出与最近一帧内的xout(j)信号的频谱包络相同的频谱包络。获得的经滤波噪声fn(j)如下 1、周期性和随机成分的混合 如果merit>MHI,那么只有模块1624计算出的周期性外插波形xout(j)用作WB PCM PLC逻辑的输出。如果merit<MLO,只有模块1614产生的经滤波噪声信号fn(j)用作WB PCM PLC逻辑的输出。如果MLO≤merit≤MHI,那么将两个成分混合为 xout(j)←Gp·xout(j)+Gr·fn(j),j=0,1,2,...,209. (38) 外插的xout(j)信号(j=160,161,162,...,199)的前40个额外采样将变为下一帧的呼叫信号ring(j),j=0,1,2,...,39。如果下一帧还是丢失帧,那么只有该呼叫信号的前20个采样用于叠加。如果下一帧是接收帧,那么该呼叫信号的所有40个采样都将用于叠加。
m、有条件的斜降(conditional ramp down) 如果包丢失持续20ms或更短,那么通过混合周期性和随机成分而产生的xout(j)信号将用作WB PCM PLC输出信号。如果包丢失持续大于60ms,那么WB PCM PLC输出信号被完全消声。如果包丢失持续大于20ms但小于60ms,那么通过混合周期性和随机成分而产生的xout(j)信号将产生线性斜降(以线性方式衰减到零)。如以下特定的算法中规定的,这个有条件的斜降是在cfecount>2时的丢失帧期间执行的。在此给出了以Q15形式的数组gawd()为{-52,-69,-104,-207}。同样,j=0,1,2,...,159的索引范围对应于xout(j)的当前帧。

有条件的斜降算法 A、如果cfecount≤6,进行以下9行 1、delta=gawd(cfecount-3) 2、gaw=1 3、对于j=0,1,2,...,159,进行以下两行 a.xout(j)=gaw·xout(j) b.gaw=gaw+delta 4、如果cfecount<6,进行以下三行 a、对于j=160,161,162,...,209,进行以下两行 i.xout(j)=gaw·xout(j) ii.gaw=gaw+delta B、否则(如果cfecount>6),设定xout(j)=0,j=0,1,2,...,209。

n、第一个接收帧中的叠加 对于类型5的帧,将来自G.722解码器的输出xout(j)与来自最后一个丢失帧的呼叫信号ring(j)(由模块1624以如上描述的方式计算出)进行叠加 xout(j)=wi(j)·xout(j)+wo(j)·ring(j) j=0...LOLA-1, (39) 其中 4、PLC输出的重新编码 为了在丢失帧期间(类型2、类型3和类型4的帧)更新G.722ADPCM解码器的存储器和参数,PLC输出本质上要经过G.722编码器。图17是用于执行该重新编码处理的逻辑的模块图1700。如图17所示,PLC输出xout(j)通过QMF分析滤波器组1702以产生低带子带信号xL(n)和高带子带信号xH(n)。低带子带信号xL(n)由低带ADPCM编码器1704进行编码,高带子带信号xH(n)由高带ADPCM编码器1706进行编码。为了降低复杂度,与传统的ADPCM子带编码器相比,本发明将ADPCM子带编码器1704和1706进行简化。现在对前述的操作进行更多的细节描述。
a、传送PLC输出经过QMF分析滤波器组 QMF分析滤波器组1702的存储器被初始化来提供与解码子带信号连续的子带信号。WB PCM PLC输出的最初22个采样构成了滤波存储器,子带信号根据如下等式计算得到 其中xPLC(0)对应当前帧的16kHz WB PCM PLC输出的第一个采样,xL(n=0)和xH(n=0)分别对应当前帧的8kHz低带和高带子带信号的第一个采样。除了偏移额外的22个采样外,所述滤波与G.722编码器的传送QMF是相同的,并且WB PCM PLC输出(与输入相对)被传送到滤波器组。此外,为了产生子带信号的完整帧(80个采样~10ms),WB PCM PLC需要在当前帧之外扩展22个采样,并产生182个采样~11.375ms。子带信号xL(n)(n=0,1,...,79)和xH(n)(n=0,1,...,79)分别是根据等式41和42产生的。
b、低带信号的重新编码 低带信号xL(n)是使用简化的低带ADPCM编码器来进行编码的。简化的低带ADPCM编码器2000的模块图如图20所示。在图20中可以看到,删除了标准的低带ADPCM编码器的反向量化器,且用非量化预测误差代替了量化预测误差。此外,因为自适应量化器的更新仅基于由6比特低带编码器索引IL(n)表示的64元素集合中的8元素子集进行,所以预测误差仅被量化为8元素集。这提供了自适应量化器的相同更新,也简化了量化。表4列出了基于eL(n)的绝对值的8级简化量化器的判定级别、输出代码和乘数。
表48级简化量化器的判定级别、输出代码和乘数 图20的实体是根据它们的G.722低带ADPCM子带编码器的等效形式来计算的 sL(n)=sLp(n)+sLz(n), (45) eL(n)=xL(n)-sL(n),及 (46) pLt(n)=sLz(n)+eL(n). (47) 自适应量化器准确地根据G.722编码器的规定进行更新。零和极点部分的自适应与在G.722编码器中一样发生,如G.722规范的条款3.6.3和3.6.4中所描述的。
低带ADPCM解码器1910在帧丢失的60ms后自动复位,但是其可以在帧丢失期间早30ms进行自适应复位。在低带信号的重新编码过程中,对部分重构信号pLt(n)的属性进行监控,并控制低带ADPCM解码器1910的自适应复位。pLt(n)信号在整个丢失过程中被监控,因此其在第一个丢失帧时被设为零 对于丢失帧,在每帧的基础上监控与恒定信号对比的pLt(n)的属性,因此在每个丢失帧的起初将属性(cnst[])设为零。其被更新为 如果满足以下条件,在丢失帧3到5的结尾复位子带解码器 或cnst[pLt(n)]>40, (50) 其中Nlost是丢失帧的数量,即3、4或5。
c、高带信号的重新编码 高带信号xH(n)是使用简化的高带ADPCM编码器来进行编码的。简化的高带ADPCM编码器2100的模块图如图21所示。在图21中可以看到,标准高带ADPCM编码器的自适应量化器已经被删除,因为该算法使用丢包前的移动平均值重写第一个接收帧上的对数比例因子,因而并不需要高带重编码的对数比例因子。高带ADPCM编码器2100的量化预测误差被非量化预测误差替代了。
图21的实体是根据它们的G.722高带ADPCM子带编码器的等效形式来计算的 sH(n)=sHp(n)+sHz(n), (53) eH(n)=xH(n)-sH(n),及 (54) pH(n)=sHz(n)+eH(n). (55) 零和极点部分的自适应与在G.722编码器中一样发生,如G.722规范的条款3.6.3和3.6.4中所描述的。
与低带重新编码类似,高带ADPCM解码器1920在帧丢失的60ms后自动复位,但是其可以在帧丢失期间早30ms进行自适应复位。在高带信号的重新编码过程中,对部分重构信号pH(n)的属性进行监控,并控制高带ADPCM解码器1910的自适应复位。pH(n)信号在整个丢失过程中被监控,因此其在第一个丢失帧时被设为零 对于丢失帧,在每帧基础上监控与恒定信号对比的pH(n)的属性,因此在每个丢失帧的开始将属性(cnst[])设为零。其被更新为 如果满足以下条件,在丢失帧3到5的结尾复位子带解码器 或cnst[pH(n)]>40. (58) 5、监控信号特性及其PLC的使用 以下描述了图19的约束和控制逻辑1970的功能,用于减少从丢失帧到接收帧的过渡上的赝像和失真,从而提高丢包后解码器/PLC系统300的性能。
a、低带对数比例因子 在接收帧期间更新低带对数比例因子

的特性,并在帧丢失后的第一个接收帧上使用这些特性来自适应地设定针对比例因子的自适应量化器的状态。因而得到一种低带对数比例因子平稳性的度量(measure),用于确定状态的正确复位。
i、低带对数比例因子的平稳性 在接收帧期间计算和更新低带对数比例因子

的平稳性,这是基于具恒定泄漏(leakage)的

的一阶移动平均值

的 一阶移动平均值的追踪

的度量计算如下 具有自适应泄漏的二阶移动平均值

根据如下等式61计算 低带对数比例因子的平稳性根据如下等式被衡量为变化度 在丢失帧期间没有更新,换言之 (63) ii、低带自适应量化器的对数比例因子的复位 在帧丢失后的第一个接收帧处,根据帧丢失前的平稳性自适应地复位(重写)低带对数比例因子 b、高带对数比例因子 在接收帧期间更新高带对数比例因子

的特性,并在帧丢失后的接收帧上使用这些特性来设定自适应量化比例因子的状态。此外,所述特性自适应地控制帧丢失后高带对数比例因子的收敛。
i、高带对数比例因子的移动平均值和平稳性 根据下式计算

的追踪
基于追踪,计算具有自适应泄漏的移动平均值如下 该移动平均值用于在第一个接收帧上复位高带对数比例因子,这将在稍后的子节中进行描述。
从平均值中计算高带对数比例因子的平稳性的度如下 该平稳性的度量用于控制帧丢失后

的重收敛,这将在稍后的子节中进行描述。
在丢失帧期间没有更新,换言之 ii、高带自适应量化器的对数比例因子的复位 在第一个接收帧上将高带对数比例因子复位为丢包前的接收帧的移动平均值 iii、高带自适应量化器的对数比例因子的收敛 帧丢失后的高带对数比例因子的收敛是由丢帧前的平稳性的度量

来控制的。对于平稳的情况,在丢包后对

应用自适应低通滤波器。该低通滤波器应用到0ms、40ms或80ms上,在此期间低通滤波的程度逐渐减少。采样的持续时间

根据如下来确定 低通滤波如下给出 其中系数按如下给出 因此,低通滤波逐个采样的减少了时间n。经低通滤波的对数比例因子在

采样期间简单地替换常规的对数比例因子。
c、低带极点部分 在接收帧期间为子带ADPCM解码器更新称之为(极点部分的)稳定性裕度的实体(entity),以用于约束帧丢失后的极点部分。
i、低带极点部分的稳定性裕度 低带极点部分的稳定性裕度被定义为 βL(n)=1-|aL,1(n)|-aL,2(n),(73) 其中aL,1(n)和aL,2(n)是两个极点系数。接收帧期间的稳定性裕度的移动平均值根据下式进行更新 βL,MA(n)=15/16·βL,MA(n-1)+1/16·βL(n) (74) 在丢失帧期间,不更新移动平均值 βL,MA(n)=βL,MA(n-1). (75) ii、低带极点部分的约束 在常规G.722低带(和高带)ADPCM编码和解码中,要维持βL,min=1/16的最小稳定性裕度。在帧丢失后的最初40ms内,为低带ADPCM解码器维持增加的最小稳定性裕度,其是帧丢失以来的时间及稳定性裕度的移动平均值的函数。
对于最初的三个10ms帧,最小稳定性裕度 βL,min=min{3/16,βL,MA(n-1)} (76) 设置在帧边界上并在整个帧上执行该最小稳定裕度。在进入到第四个10ms帧的帧边界上,执行最小稳定性裕度 而对其它帧执行βL,min=1/16的常规最小稳定性裕度。
d、高带部分重构信号和高带重构信号 在所有帧期间,包括丢失帧和接收帧,保存持高带部分重构信号pH(n)和高带重构信号rH(n)的高通滤波版本 pH,HP(n)=0.97[pH(n)-pH(n-1)+pH,HP(n-1)],及 (78)
这对应约40Hz的3dB截断,主要是去除DC。
在帧丢失后的最初40ms内,常规的部分重构信号和常规的重构信号被它们各自的高通滤波版本所代替,这分别是为了高带极点部分自适应和高带重构输出。
6、时滞计算 在此讨论的重新定相和时间扭曲技术需要有丢帧隐藏波形xPLC(j)和第一个接收帧中的信号未对齐的采样数量。
a、低子带重构信号的低复杂度估计 在第一个接收帧内用于计算时滞的信号是通过使用极零滤波系数(aLpwe,i(159),bLpwe,i(159))和从STATE159获得的其它的必要状态信息对低子带截断差分信号dLt(n)进行滤波来获得的n=0,1,...,79. (80) 这一功能由图18的模块1820来执行。
b、重新定相和时间扭曲需求的确定 如果最后一个接收帧是无声的,如优值系数所表示的,时滞TL被设定为 如果merit≤MLO,TL=0.(81) 另外,如果第一个接收帧是无声的,如标准化第一自相关系数所表示 时滞被设定为零 如果r(1)<0.125,TL=0. (83) 否则,时滞的计算如以下部分所解释。所述时滞的计算是由图18的模块1850来执行的。
c、时滞的计算 时滞的计算包括以下步骤(1)生成外插信号;(2)粗时滞搜索;及(3)细化时滞搜索。这些将在以下的子节中进行描述。
i、外插信号的生成 时滞表示xPLC(j)和rLe(n)之间的偏差。为了计算这个偏差,将xPLC(j)延伸到第一个接收帧,并将标准化交叉相关性函数最大化。这个子节描述了如何外插xPLC(j),并详细说明了所需信号的长度。假设xPLC(j)被复制到xout(j)缓存中。因为这是一个类型5的帧(第一个接收帧),所以假设相应的是 xout(j-160)=xPLC(j),j=0,1,...,159 (84) 搜索相关性(correlation)的范围如下
其中ΔTLMAX=28,ppfe是在产生xPLC(j)时使用的周期性波形外插的基音周期。
滞后搜索的窗口大小(16kHz采样率下)如下
指定8kHz采样率下的滞后搜索窗口LSW是很用的,如下
如上给出的,需要从xPLC(j)得到的外插信号的总长度为 L=2·(LSW+ΔTL). (88) 外插信号相对于接收帧中第一个采样的起始位置为 D=12-ΔTL. (89) 外插信号es(j)是根据如下方法重构的
如果D<0 es(j)=xout(D+j) j=0,1,...,-D-1 如果(L+D≤ppfe) es(j)=xout(-ppfe+D+j)j=-D,-D+1,...,L-1 否则 es(j)=xout(-ppfe+D+j)j=-D,-D+1,...,ppfe-D-1 es(j)=es(j-ppfe)j=ppfe-D,ppfe-D+1,...,L-1 否则
如果(ovs≥L) es(j)=xout(-ovs+j)j=0,1,...,L-1 否则 如果(ovs>0) es(j)=xout(-ovs+j)j=0,1,...,ovs-1 如果(L-ovs≤ppfe) es(j)=xout(-ovs-ppfe+j)j=ovs,ovs+1,...,L-1 否则 es(j)=xout(-ovs-ppfe+j)j=ovs,ovs+1,...,ovs+ppfe-1 es(j)=es(j-ppfe)j=ovs+ppfe,ovs+ppfe+1,...,L-1.
ii、粗时滞搜索 粗略估计的时滞TLSUB首先通过搜索子采样标准化交叉相关性函数RSUB(k)的峰值来计算得到 为了在细化时避免搜索超出边界,调整TLSUB如下 如果(TLSUB>ΔTLMAX-4) TLSUB=ΔTLMAX-4(91) 如果(TLSUB<-ΔTLMAX+4) TLSUB=-ΔTLMAX+4. (92) iii、细化时滞搜索 然后通过搜索R(k)的峰值细化搜索以给出时滞TL,R(k)如下 最后,检查以下条件 如果 Or(TL>ΔTLMAX-2)‖(TL<-ΔTLMAX+2) (96) 那么TL=0. 7、重新定相 重新定相是将内部状态设定为丢帧隐藏波形xPLC(j)与第一个接收帧前的最后一个输入信号采样同相时的状态的处理过程。重新定相可以分成以下几个步骤(1)在丢失帧的重新编码过程中存储中间G.722状态;(2)根据时滞调整重新编码;及(3)更新QMF合成滤波存储器。以下的子部分将描述这些步骤的更多细节。重新定相是由图18的模块1810来执行的。
a、在重新编码过程中存储中间G.722状态 如在本申请其它地方所描述的,在丢失帧期间重新编码重构信号xPLC(j)以更新G.722解码器状态存储器。假设STATEj是对xPLC(j)的第j个采样重新编码后的G.722状态和PLC状态。那么除在帧边界上的G.722状态(将被正常维持,即STATE159)之外,还存储了STATE159-ΔTLMAX。为了促进重新定相,还存储了子带信号 xL(n),xH(n)n=69-ΔTLMAX/2...79+ΔTLMAX/2 b、根据时滞调整重新编码 依据时滞的符号,调整重新编码的过程如下 如果ΔTL>0 1、恢复G.722状态和PLC状态到STATE159-ΔTLMAX 2、以前述方式重新编码xL(n)、xH(n)(n=80-ΔTLMAX/2...79-ΔTL/2)如果ΔTL<0 1、恢复G.722状态和PLC状态到STATE159 2、以前述方式重新编码xL(n)、xH(n)(n=80...79+|ΔTL/2|) 注意,为了促进xL(n)和xH(n)的重新编码一直到n=79+|ΔTL/2|,需要xPLC(j)的一直到ΔTLMAX+182个采样。
c、更新QMF合成滤波器存储器 在第一个接收帧上,由于在丢失帧期间因为PLC发生在16kHz输出语音域内,QMF合成滤波器组是不活跃的,所以需要计算QMF合成滤波器存储器。时间上来说,该存储器一般对应最后一个丢失帧的最后一个采样。然而,需要将重新定相考虑进去。根据G.722,QMF合成滤波器存储器给定如下 xd(i)=rL(n-i)-rH(n-i),i=1,2,...,11,及 (97) xs(i)=rL(n-i)+rH(n-i),i=1,2,...,11 (98) 第一个接收帧的最初两个输出采样计算如下 及 (99) 滤波器存储器(即xd(i)和xs(i)(i=1,2,...,11))是根据在重新编码xL(n)和xH(n)(n=69-ΔTL/2,69-ΔTL/2+1,...,79-ΔTL/2,)(即一直到重新定相点的最后一些采样)时给简化子带ADPCM编码器的经重新定相的输入中的最后11个采样计算出的 xd(i)=xL(80-ΔTL/2-i)-xH(80-ΔTL/2-i),i=1,2,...,11,及 (101) xs(i)=xL(80-ΔTL/2-i)+xH(80-ΔTL/2-i),i=1,2,...,11, (102) 其中xL(n)和xH(n)在丢失帧期间已经被存储在状态存储器中。
8、时间扭曲 时间扭曲是沿时间轴拉伸或收缩信号的处理。以下描述了如何对xout(j)进行时间扭曲以改善与周期性波形外插信号xPLC(j)的对齐。仅当TL≠0时执行该算法。时间扭曲由图18的模块1860来执行。
a、时滞细化 通过取叠加窗口中的交叉相关性的最大值来细化用于时间扭曲的时滞TL。基于TL估计出的第一个接收帧中的叠加窗口的起始位置如下 SPOLA=max(0,MIN_UNSTBL-TL),(103) 其中MIN_UNSTBL=16。
相对于SPOLA的外插信号的起始位置如下 Dref=SPOLA-TL-RSR, (104) 其中RSR=4是细化搜索范围。
外插信号的所需长度如下 Lref=OLALG+RSR. (105) 外插信号estw(j)是使用如D.6.c.i节所述的相同过程来获得的,除了LSW=OLALG,L=Lref及D=Dref。
细化滞后Tref是通过搜索以下的峰值来获得的 然后获得用于时间扭曲的最终时滞 TLwarp=TL+Tref. (107) b、计算经时间扭曲的xout(j)信号 信号xout(j)经过TLwarp个采样的时间扭曲,形成随后与波形外插信号esold(j)叠加的信号xwarp(j)。图22A、图22B和图22C的时间线2200、2220和2240分别示出了依据TLwarp值的三种情况。在图22A中,TLwarp<0,xout(j)经历收缩或压缩。xout(j)的第一个MIN_UNSTBL采样在扭曲过程中不用于创建xwarp(j)且xstart=MIN_UNSTBL。在图22B中,0≤TLwarp≤MIN_UNSTBL,对xout(j)进行TLwarp个采样的拉伸。同样,xout(j)的第一个MIN_UNSTBL未被使用且xstart=MIN_UNSTBL。在图22C中,TLwarp≥MIN_UNSTBL,再一次对xout(j)进行TLwarp个采样的拉伸。然而,因为在扭曲过程中会创建额外的TLwarp个采样,所以在这种情况下不需要xout(j)的头TLwarp个采样;因而,xstart=TLwarp。
在每种情况下,每次叠加/下降的采样数量如下 扭曲是通过分段式(piece-wise)单采样平移和三角叠加来实现的,从xout[xstart]开始。为了执行收缩,周期性地降低采样。从采样降低的点开始,将原始信号和向左平移的信号(由于降低)进行叠加。为了执行拉伸,周期性地重复采样。从采样重复的点开始,将原始信号和向右平移的信号(由于采样重复)进行叠加。叠加窗口的长度Lolawarp(注意这不同于图22A、22B和22C中所示的OLA区域)取决于采样增加/降低的周期性,如下 如果 否则
Lolawarp=min(8,Lolawarp). 经扭曲的输入信号xwarp的长度如下 Lxwarp=min(160,160-MIN_UNSTBL+TLwarp).(110) c、计算波形外插信号 如图22A、22B和22C所示,在第一个接收帧中将扭曲信号xwarp和外插信号esola(j)进行叠加。按照如下两个步骤的处理可在xout(j)信号缓存中直接产生外插信号esola(j) 步骤1 esola(j)=xout(j)=ptfe·xout(j-ppfe) j=0,1,...,160-Lxwarp+39 (111) 步骤2 xout(j)=xout(j)·wi(j)+ring(j)·wo(j) j=0,1,...,39, (112) 其中wi(j)和wo(j)是长度为40的三角形斜升和斜降叠加窗口,ring(j)是以本申请中其它地方所述的方式计算出的呼叫信号。
d、时间扭曲信号与波形外插信号的叠加 在前一段中计算出的外插信号与扭曲信号xwarp(j)进行叠加,如下 xout(160-Lxwarp+j)=xout(160-Lxwarp+j)·wo(j)+xwarp(j)·wi(j),j=0,1,...,39. (113) 然后xwarp(j)的剩余部分被简单复制到信号缓存中 xout(160-Lxwarp+j)=xwarp(j),j=40,41,...,Lxwarp-1.(114) E、基于子带语音波形外插的子带预测编码器的丢包隐藏 如图23中的解码器/PLC系统2300所示,为本发明的一个可选实施例。上述为解码器/PLC系统300研究的大部分技术也可用于这第二个示例性实施例。解码器PLC系统2300和解码器/PLC系统300的主要区别是在子带语音信号域内执行语音信号波形外插,而不是在全带语音信号域。
如图23所示,解码器/PLC系统2300包括比特流解复用器2310、低带ADPCM解码器2320、低带语音信号合成器2322、切换器2336和QMF合成滤波器组2340。比特流解复用器2310本质上与图2的比特流解复用器210相同,QMF合成滤波器组2340本质上与图2的QMF合成滤波器组240相同。
与图3的解码器/PLC系统300一样,解码器/PLC系统2300以依据帧类型的方式处理帧,并且使用与上述图5中相同的帧类型。
在处理类型1的帧时,解码器/PLC系统2300执行标准G.722解码。在这种操作模式下,解码器/PLC系统2300的模块2310、2320、2330和2340分别执行与传统的G.722解码器200的对应模块210、220、230和240相同的功能。具体地说,比特流解复用器2310将输入比特流分离成低带比特流和高带比特流。低带ADPCM解码器2320将低带比特流解码成解码低带语音信号。切换器2326连接到标记为“类型1”的上面位置,从而将解码低带语音信号连接到QMF合成滤波器组2340。高带ADPCM解码器2330将高带比特流解码成解码高带语音信号。切换器2336也连接到标记为“类型1”的上面位置,从而将解码高带语音信号连接到QMF合成滤波器组2340。然后QMF合成滤波器组2340将解码低带语音信号和解码高带语音信号重新组合成全带输出语音信号。
因此,在处理类型1的帧时,解码器/PLC系统相当于图2的解码器200,区别是为了后续丢失帧中可能的使用,解码低带语音信号被存储在低带语音信号合成器2322中,同样为了后续丢失帧中可能的使用,解码高带语音信号被存储在高带语音信号合成器2332中。预计执行PLC操作的其它状态更新和处理也可以被执行。
在处理类型2、类型3和类型4的帧(丢失帧)时,从与先前帧关联的存储的子带语音信号中对每个子带的解码语音信号进行外插,以填补与当前丢失帧关联的波形间隙。这种波形外插是由低带语音信号合成器2322和高带语音信号合成器2332来执行的。执行模块2322和2332的波形外插功能存在许多现有技术。例如,可使用在申请号为11/234,291、发明人为陈、申请时间为2005年9月26日、名称为“独立块语音编解码器的丢包隐藏技术”的美国专利中描述的技术,或者使用那些技术的修改版本,如涉及上述图3的解码器/PLC系统300的技术。
在处理类型2、类型3或类型4的帧时,切换器2326和2336位于标记为“类型2-6”的下面位置。因而,它们将合成低带音频信号和合成高带音频信号连接到QMF合成滤波器组2340,进而将它们重新组合成针对当前丢失帧的合成输出语音信号。
与解码器/PLC系统300类似,紧随坏帧(类型5和类型6的帧)的最初几个接收帧需要特殊的处理来最小化由于不匹配G.722状态导致的语音质量下降,以及保证从最后一个丢失帧中的外插语音信号波形到紧随最后一个坏帧的最初几个好帧中的解码语音信号波形的平滑过渡。因而,在处理这些帧时,切换器2326和2336保持在标为“类型2-6”的下面位置,以便来自低带ADPCM解码器2320的解码低带语音信号可以在提供到QMF合成滤波器组2340之前由低带语音信号合成器2322进行修改,以及来自高带ADPCM解码器2330的解码高带语音信号可以在提供到QMF合成滤波器组2340之前由高带语音信号合成器2332进行修改。
所属领域的技术人员应知悉,在以上子节C和D中针对包丢失后最初几个帧描述的大部分技术也可以很容易地用于包丢失后的最初几个帧的特殊处理的这种示例性实施例中。例如,解码约束和控制逻辑(图23中未示出)也包括在解码器/PLC系统2300中,用于以上述参照解码器/PLC系统300的类似方式来约束和控制由低带ADPCM解码器2320和高带ADPCM解码器2330在处理类型5和类型6的帧时执行的解码操作。同样,每个子带语音信号合成器2322和2332用于执行重新定相和时间扭曲技术,如上述参照解码器/PLC系统300描述的那些技术。因为在前面部分提供了这些技术的完整描述,所以在此不需要重复在解码器/PLC系统2300的环境中使用的这些技术的描述。
与解码器/PLC系统300相比,解码器/PLC系统2300的主要优点是其具有更低的复杂度。这是因为在子带域中外插语音信号排除了采用QMF合成滤波器组将全带外插语音信号分离成子带语音信号的需要,如在第一个示例性实施例中完成的。然而,在全带域中外插语音信号也具有其优点,以下将对此进行阐述。
当图23中的系统2300外插高带语音信号时,存在一些潜在的问题。首先,如果其不对高带语音信号执行周期性波形外插,那么输出语音信号将不保留可能在一些高周期性有声信号中出现的高带语音信号的周期性特性。换言之,如果其对高带语音信号执行周期性波形外插,即使其使用用于外插低带语音信号的相同基音周期来减少计算并保证两个子带语音信号正使用相同的基音周期用于外插,仍然存在另一问题。当周期性外插高带语音信号时,外插高带语音信号将是周期性的,并在频谱上具有谐波结构。换言之,高带语音信号的频谱中的频谱峰值的频率将与整数倍相关。然而,一旦合成滤波器组2340将高带语音信号与低带语音信号重新组合,高带语音信号的频谱将被“译成”或移位为较高的频率,同时可能发生镜像,这取决于所用的QMF合成滤波器组。因而,在这种镜像和频率偏移之后,并不能保证全带输出语音信号的高带部分中的频谱峰值仍具有低带语音信号中的基音频率的整数倍的频率。这可能潜在地导致高周期性有声信号的输出音频质量的下降。相反,图3中的系统300并不存在这个问题。因为系统300在全带域中执行音频信号外插,所以保证了高带中的谐波峰值的频率是基音频率的整数倍。
总之,解码器/PLC系统300的优点是对于有声信号,外插全带语音信号将在整个语音带上保留频谱峰值的谐波结构。换言之,解码器/PLC系统2300具有低复杂度的优点,但是其不可以在较高的子带中保留这种谐波结构。
F、硬件和软件实现 为了保证完整,本发明提供了通用的计算机系统的以下描述。本发明可以在硬件或软硬件的组合中实现。因此,本发明可在计算机系统或其它处理系统的环境中实现。图24示出了这种计算机系统2400的一个示例。在本发明中,以上在C、D和E节中描述的所有解码和PLC操作可在一个或多个不同的计算机系统2400上执行,以实现本发明的各种方法。
计算机系统2400包括一个或多个处理器,如处理器2404。处理器2404可以是特殊用途或通用的数字信号处理器。处理器2404连接到通信架构2402(例如,总线或网络)。各种软件实现是按照这个示例性计算机系统来描述的。在阅读完这个叙述之后,所属领域的技术人员将很容易理解如何使用其它计算机系统和/或计算机结构实现本发明。
计算机系统2400还包括主存储器2406,优选是随机存储器(RAM),还可包括第二存储器2420。第二存储器2420可包括,例如,硬盘驱动器2422和/或移动存储驱动器2424,代表性的有软盘驱动器、磁带驱动器、光盘驱动器等等。移动存储驱动器2424以众所周知的方式读和/或写移动存储单元2428。移动存储单元2428有软盘、磁带、光盘等等,其由移动存储驱动器2424进行读和写。应知悉,移动存储单元2428包括已将计算机软件和/数据存储在其中的计算机使用存储媒介。
在可选的实现中,第二存储器2420可包括其它类似的装置,用于将计算机程序或其它指令载入计算机系统2400。这种装置也包括,例如,移动存储单元2430和接口2426。这种装置的例子包括程序盒(cartridge)和盒式接口(如在视频游戏设置中使用的)、移动存储芯片(如EPROM或PROM)和相关插槽、其它使数据从移动存储单元2430传输到计算机系统2400的移动存储单元2430和接口2426。
计算机系统2400还包括通信接口2440。通信接口2440使软件和数据在计算机系统2400和外部设置之间传输。通信接口2440的示例包括调制解调器、网络接口(如以太网卡)、通信端口、PCMCIA槽和卡等。通过通信接口2440传输的软件和数据的形式可以是电、电磁、光或其它能够由通信接口2440接收的信号。通过通信通道2442可将这些信号提供到通信接口2440。通信通道2442传送信号,其可使用电线或电缆、光纤、电话线、移动电话连接、RF连接和其它通信信道来实现。
在此所用的术语“计算机程序媒介”和“计算机可使用媒介”通常用于指的是媒介,如移动存储单元2428、安装在硬盘驱动器2422上的硬盘及由通信接口2440接收的信号。这些计算机程序产品是用于提供软件给计算机系统2400的手段。
计算机程序(也称为计算机控制逻辑)被存储在主存储器2406和/或第二存储器2420中。计算机程序也可通过通信接口2440进行接收。这种计算机程序在被执行时,使计算机系统2400实现了本发明,如在此讨论的。具体地说,计算机程序被执行时,使处理器2400实现了本发明的处理,如在此讨论的任何方法。因此,这种计算机程序表示计算机系统2400的控制器。在使用软件实现本发明时,可以将软件存储在计算机程序产品中并使用移动存储驱动器2424、接口2426或通信接口2440将软件载入到计算机系统2400中。
在另一实施例中,本发明的特征主要是在硬件中实现,例如,使用硬件器件,如专用集成电路(ASIC)和门矩阵。使用硬件状态机执行在此所述的功能的实现对于所属领域的技术人员来说也是显而易见的。
G、结论 虽然以上描述了本发明的各种实施例,应当理解,其目的仅在于举例说明,而没有限制性。本领域的技术人员知悉,在不离开本发明的精神和范围情况下,在形式上和细节上还可做各种的改变。因此,本发明的保护范围不当仅局限于以上描述的任一实施例,而应该依照权利要求及其等效替换来限定。
权利要求
1、一种在子带预测编码系统中隐藏表示编码音频信号的一系列帧中的丢失帧的影响的方法,其特征在于,所述方法包括
解码所述一系列帧中的一个或多个接收帧以产生全带输出音频信号,其中所述全带输出音频信号包括至少第一子带解码音频信号和第二子带解码音频信号的组合;
存储对应所述一个或多个接收帧的所述全带输出音频信号;及
合成对应所述丢失帧的全带输出音频信号,其中合成对应所述丢失帧的全带输出音频信号包括基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插。
2、根据权利要求1所述的方法,其特征在于,解码所述一系列帧中的一个或多个接收帧包括
将与接收帧关联的输入比特流分离成至少第一子带比特流和第二子带比特流;
在第一解码器中解码所述第一子带比特流以产生所述第一子带解码音频信号;及
在第二解码器中解码所述第二子带比特流以产生所述第二子带解码音频信号。
3、根据权利要求2所述的方法,其特征在于,其中
所述第一解码器是低带自适应差分脉冲编码调制解码器;及
所述第二解码器是高带自适应差分脉冲编码调制解码器。
4、根据权利要求2所述的方法,其特征在于,所述方法进一步包括
在合成与所述丢失帧关联的全带输出音频信号之后更新所述第一解码器和第二解码器的内部状态,其中更新所述第一解码器和第二解码器的内部状态包括编码与所述丢失帧关联的全带输出音频信号。
5、根据权利要求1所述的方法,其特征在于,基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插包括
基于所述存储的对应一个或多个接收帧的全带输出音频信号执行周期性波形外插以产生周期性波形外插信号。
6、根据权利要求5所述的方法,其特征在于,基于所述存储的对应一个或多个接收帧的全带输出音频信号执行周期性波形外插包括
计算与所述存储的全带输出音频信号关联的基音周期,其中计算所述基音周期包括
对所述存储的全带输出音频信号进行抽样以产生抽样的全带输出音频信号;
基于所述抽样的全带输出音频信号执行搜索以确定粗基音周期;及
基于所述存储的全带输出音频信号执行搜索以在所述粗基音周期周围预定的范围内确定细化的基音周期。
7、根据权利要求6所述的方法,其特征在于,所述方法进一步包括
对所述存储的全带输出音频信号进行抽样之前,在防混叠低通滤波器内对所述存储的全带输出音频信号进行滤波,其中所述防混叠低通滤波器是有限脉冲响应滤波器。
8、根据权利要求5所述的方法,其特征在于,基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插进一步包括
基于所述存储的对应一个或多个接收帧的全带输出音频信号得到短期合成滤波器;及
通过所述短期合成滤波器对经缩放的伪随机白噪声采样序列进行滤波以产生经滤波的噪声信号。
9、根据权利要求8所述的方法,其特征在于,基于所述存储的全带输出音频信号执行波形外插进一步包括
将所述周期性波形外插信号和所述经滤波的噪声信号混合以合成对应所述丢失帧的全带输出音频信号。
10、根据权利要求9所述的方法,其特征在于,将所述周期性波形外插信号和所述经滤波的噪声信号混合以合成与所述丢失帧关联的全带输出音频信号包括
计算表示所述存储的对应一个或多个接收帧的全带输出音频信号有声的程度的因子;及
基于所述因子确定用于混合的所述周期性波形外插信号和所述经滤波的噪声信号的比例。
11、根据权利要求1所述的方法,其特征在于,合成对应所述丢失帧的全带输出音频信号包括
基于所述存储的对应一个或多个接收帧的全带输出音频信号得到滤波器;
使用所述滤波器计算呼叫信号片段;及
将所述呼叫信号片段与波形外插信号叠加,其中所述波形外插信号是通过基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插得到的。
12、根据权利要求1所述的方法,其特征在于,所述方法进一步包括
合成对应表示编码音频信号的一系列帧中的一系列丢失帧的全带输出音频信号;及
在预定数量的丢失帧后将对应所述一系列丢失帧的合成全带输出音频信号的幅度衰减到减小的级别。
13、根据权利要求12所述的方法,其特征在于,在预定数量的丢失帧后将对应所述一系列丢失帧的合成全带输出音频信号的幅度衰减到减小的级别包括
在预定数量的丢失帧后将对应所述一系列丢失帧的合成全带输出音频信号的幅度衰减到零或者环境噪声的实测级别。
14、根据权利要求12所述的方法,其特征在于,所述方法进一步包括
产生舒适噪声;及
将所述经衰减的合成全带输出音频信号与所述舒适噪声进行混合或替换。
15、一种系统,其特征在于,包括
用于解码表示编码音频信号的一系列帧中的一个或多个接收帧以产生全带输出音频信号的解码器,其中所述全带输出音频信号包括至少第一子带解码音频信号和第二子带解码音频信号的组合;
用于存储对应所述一个或多个接收帧的全带输出音频信号的缓存;及
用于合成对应所述一系列帧中丢失帧的全带输出音频信号的全带音频信号合成器,其中合成对应所述丢失帧的全带输出音频信号包括基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插。
16、根据权利要求15所述的系统,其特征在于,进一步包括
用于将与接收帧关联的输入比特流分离成至少第一子带比特流和第二子带比特流的比特流解复用器;
其中所述解码器包括
用于解码所述第一子带比特流以产生所述第一子带解码音频信号的第一解码器;及
用于解码所述第二子带比特流以产生所述第二子带解码音频信号的第二解码器。
17、根据权利要求16所述的系统,其特征在于,其中
所述第一解码器是低带自适应差分脉冲编码调制解码器;及
所述第二解码器是高带自适应差分脉冲编码调制解码器。
18、根据权利要求16所述的系统,其特征在于,进一步包括
用于在合成与所述丢失帧关联的全带输出音频信号之后更新所述第一解码器和第二解码器的内部状态的子带解码器状态更新逻辑,其中更新所述第一解码器和第二解码器的内部状态包括编码与所述丢失帧关联的全带输出音频信号。
19、根据权利要求15所述的系统,其特征在于,所述全带音频信号合成器用于基于所述存储的对应一个或多个接收帧的全带输出音频信号执行周期性波形外插以产生周期性波形外插信号。
20、根据权利要求19所述的系统,其特征在于,所述全带音频信号合成器通过计算与所述存储的全带输出音频信号关联的基音周期来执行周期性波形外插,其中计算所述基音周期包括对所述存储的全带输出音频信号进行抽样以产生抽样的全带输出音频信号,基于所述抽样的全带输出音频信号执行搜索以确定粗基音周期,以及基于所述存储的全带输出音频信号执行搜索以在所述粗基音周期周围预定的范围内确定细化的基音周期。
21、根据权利要求20所述的系统,其特征在于,所述全带音频信号合成器用于在对所述存储的全带输出音频信号进行抽样之前,在防混叠低通滤波器对所述存储的全带输出音频信号进行滤波,其中所述防混叠低通滤波器是有限脉冲响应滤波器。
22、根据权利要求19所述的系统,其特征在于,所述全带音频信号合成器用于所述存储的对应一个或多个接收帧的全带输出音频信号得到短期合成滤波器以及通过所述短期合成滤波器对经缩放的伪随机白噪声采样序列进行滤波以产生经滤波的噪声信号。
23、根据权利要求22所述的系统,其特征在于,所述全带音频信号合成器进一步用于将所述周期性波形外插信号和所述经滤波的噪声信号混合以合成对应所述丢失帧的全带输出音频信号。
24、根据权利要求23所述的系统,其特征在于,所述全带音频信号合成器用于计算表示所述存储的对应一个或多个接收帧的全带输出音频信号的有声程度的因子以及基于所述因子确定用于混合的所述周期性波形外插信号和所述经滤波的噪声信号的比例。
25、根据权利要求15所述的系统,其特征在于,所述全带音频信号合成器用于基于所述存储的对应一个或多个接收帧的全带输出音频信号得到滤波器、使用所述滤波器计算呼叫信号片段以及将所述呼叫信号片段与波形外插信号叠加,其中所述波形外插信号是基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插得到的。
26、根据权利要求15所述的系统,其特征在于,所述全带音频信号合成器进一步用于合成对应表示编码音频信号的一系列帧中的一系列丢失帧的全带输出音频信号以及在预定数量的丢失帧后将对应所述一系列丢失帧的合成全带输出音频信号的幅度衰减到减小的级别。
27、根据权利要求26所述的系统,其特征在于,所述全带音频信号合成器用于在预定数量的丢失帧后将对应所述一系列丢失帧的合成全带输出音频信号的幅度衰减到零或者环境噪声的实测级别。
28、根据权利要求26所述的系统,其特征在于,所述全带音频信号合成器进一步用于产生舒适噪声以及将所述经衰减的合成全带输出音频信号与所述舒适噪声进行混合或替换。
29、一种计算机程序产品,包括记录有计算机程序逻辑的计算机可读媒介,所述计算机程序逻辑用于使处理器在子带预测编码系统中隐藏表示编码音频信号的一系列帧中的丢失帧的影响,其特征在于,所述计算机程序逻辑包括
用于使所述处理器解码表示编码音频信号的一系列帧中的一个或多个接收帧以产生全带输出音频信号的第一模块,其中所述全带输出音频信号包括至少第一子带解码音频信号和第二子带解码音频信号的组合;
用于使所述处理器存储对应所述一个或多个接收帧的全带输出音频信号的第二模块;及
用于使所述处理器合成对应所述一系列帧中丢失帧的全带输出音频信号的第三模块,其中合成对应所述丢失帧的全带输出音频信号包括基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插。
30、根据权利要求29所述的计算机程序产品,其特征在于,所述第一模块包括
用于使所述处理器将与接收帧关联的输入比特流分离成至少第一子带比特流和第二子带比特流的解复用模块;
用于使所述处理器解码所述第一子带比特流以产生所述第一子带解码音频信号的第一解码模块;及
用于使所述处理器解码所述第二子带比特流以产生所述第二子带解码音频信号的第二解码模块。
31、根据权利要求30所述的计算机程序产品,其特征在于,其中
所述第一解码模块包括用于使所述处理器执行低带自适应差分脉冲编码调制解码的模块;及
所述第二解码模块包括用于使所述处理器执行高带自适应差分脉冲编码调制解码的模块。
32、根据权利要求30所述的计算机程序产品,其特征在于,所述计算机程序逻辑进一步包括
用于使所述处理器在合成与所述丢失帧关联的全带输出音频信号之后更新所述第一解码模块和第二解码模块的内部状态的模块,其中更新所述第一解码模块和第二解码模块的内部状态包括编码与所述丢失帧关联的全带输出音频信号。
33、根据权利要求29所述的计算机程序产品,其特征在于,所述第三模块包括用于使所述处理器基于所述存储的对应一个或多个接收帧的全带输出音频信号执行周期性波形外插以产生周期性波形外插信号的模块。
34、根据权利要求33所述的计算机程序产品,其特征在于,所述用于使所述处理器基于所述存储的对应一个或多个接收帧的全带输出音频信号执行周期性波形外插的模块包括
用于使所述处理器计算与所述存储的全带输出音频信号关联的基音周期的模块,其中用于使所述处理器计算所述基音周期的模块包括
用于使所述处理器对所述存储的全带输出音频信号进行抽样以产生抽样的全带输出音频信号的模块;
用于使所述处理器基于所述抽样的全带输出音频信号执行搜索以确定粗基音周期的模块;以及
用于使所述处理器基于所述存储的全带输出音频信号执行搜索以在所述粗基音周期周围预定的范围内确定细化的基音周期的模块。
35、根据权利要求34所述的计算机程序产品,其特征在于,用于使所述处理器计算所述基音周期的模块进一步包括
用于使所述处理器对所述存储的全带输出音频信号进行抽样之前在防混叠低通滤波器对所述存储全带输出音频信号进行滤波的模块,其中所述防混叠低通滤波器是有限脉冲响应滤波器。
36、根据权利要求33所述的计算机程序产品,其特征在于,所述第三模块包括
用于使所述处理器基于对应所述存储的对应一个或多个接收帧的全带输出音频信号得到短期合成滤波器的模块;以及
用于使所述处理器通过所述短期合成滤波器对经缩放的伪随机白噪声采样序列进行滤波以产生经滤波的噪声信号的模块。
37、根据权利要求36所述的计算机程序产品,其特征在于,所述第三模块进一步包括
用于使所述处理器将所述周期性波形外插信号和所述经滤波的噪声信号混合以合成对应所述丢失帧的全带输出音频信号的模块。
38、根据权利要求37所述的计算机程序产品,其特征在于,所述第三模块进一步包括
用于使所述处理器计算表示对应所述存储的对应一个或多个接收帧的全带输出音频信号的有声程度的因子的模块;以及
用于使所述处理器基于所述因子确定用于混合的所述周期性波形外插信号和所述经滤波的噪声信号的比例的模块。
39、根据权利要求29所述的计算机程序产品,其特征在于,所述第三模块包括
用于使所述处理器基于所述存储的对应一个或多个接收帧的全带输出音频信号得到滤波器的模块;
用于使所述处理器使用所述滤波器计算呼叫信号片段的模块;以及
用于使所述处理器将所述呼叫信号片段与波形外插信号叠加的模块,其中所述波形外插信号是通过基于所述存储的对应一个或多个接收帧的全带输出音频信号执行波形外插得到的。
40、根据权利要求29所述的计算机程序产品,其特征在于,所述第三模块进一步包括
用于使所述处理器合成对应表示编码音频信号的一系列帧中的一系列丢失帧的全带输出音频信号的模块;以及
用于使所述处理器在预定数量的丢失帧后将对应所述一系列丢失帧的合成全带输出音频信号的幅度衰减到减小的级别的模块。
41、根据权利要求40所述的计算机程序产品,其特征在于,用于使所述处理器在预定数量的丢失帧后将对应所述一系列丢失帧的合成全带输出音频信号的幅度衰减到减小的级别的模块包括
用于使所述处理器在预定数量的丢失帧后将对应所述一系列丢失帧的合成全带输出音频信号的幅度衰减到零或者环境噪声的实测级别的模块。
42、根据权利要求40所述的系统,其特征在于,所述第三模块进一步包括
用于使所述处理器产生舒适噪声的模块;以及
用于使所述处理器将所述经衰减的合成全带输出音频信号与所述舒适噪声进行混合或替换的模块。
全文摘要
本发明提供了一种在子带预测编码系统中隐藏表示编码音频信号的一系列帧中的丢失帧的影响的技术。根据该技术,所述一系列帧中的一个或多个接收帧被解码以生成全带输出音频信号。对应所述一个或多个接收帧的全带输出音频信号被存储起来。然后,通过基于被存储的所述对应一个或多个接收帧的全带输出音频信号执行波形外插来合成对应所述丢失帧的全带输出音频信号。
文档编号G10L21/02GK101366079SQ200780001854
公开日2009年2月11日 申请日期2007年8月15日 优先权日2006年8月15日
发明者朱因韦·陈, 杰斯·赛森, 罗伯塔·W·措普夫 申请人:美国博通公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1