健壮解码器的制作方法

文档序号:6121968阅读:134来源:国知局

专利名称::健壮解码器的制作方法健壮解码器
技术领域
所述工具和技术涉及音频编解码器,尤其涉及用于处理延迟或或丢失的已编码音频信息的技术。些旦冃足随着数字无线电话网络、因特网上的流音频以及因特网电话的出现,语音的数字处理和传递变得常见。工程师使用各种技术来高效地处理语音,同时仍保持其质量。为了理解这些技术,理解计算机中如何表示和处理音频信息是有帮助的。I.计算机中音频信息的表示计算机将音频信息处理为表示音频的一连串数字。单个数字可表示一音频样本,它是特定时刻的幅值。若干因素会影响音频的质量,包括样本深度和采样速率。样本深度(或精度)指示用于表示样本的数字的范围。每一样本可能的值越多,一般产生的输出质量越高,因为可表示幅度中越微妙的变化。八位样本有256个可能的值,而十六位样本有65,536个可能的值。采样速率(通常被测量为每秒的样本数)也影响质量。采样速率越高,质量越高,因为可表示更多的声音频率。一些常见的采样速率有8,000、11,025、22,050、32,000、44,100、48,000和96,000样本/秒(Hz)。表1示出不同质量水平的若干音频格式,以及相应的原始比特率代价。<table>tableseeoriginaldocumentpage5</column></row><table>表l:不同质量音频的比特率如表1所示,高质量音频的代价是高比特率。高质量音频信息消耗大量计算机存储和传输容量。众多计算机和计算机网络缺乏处理原始数字音频的资源。压縮(也被称为编码)通过将信息转换成较低比特率的形式降低了存储和传输音频信息的成本。压縮可以是无损的(其中质量不会受损)或有损的(其中质量受损,但与相应的无损压縮相比比特率减少更显著)。解压(也被称为解码)从压縮后的形式中提取原始信息的重构版本。编解码器是编码器/解码器系统。II.语音编码器和解码器音频压缩的一个目标在于数字地表示音频信号以提供给定数量的位的最高信号质量。换言之,该目标在于以最少的位表示给定质量水平的音频信号。在某些场景中适用其它的目标,诸如从传输差错的回弹力和限制因编码/传输/解码而造成的总体延迟。不同种类的音频信号具有不同的特征。音乐的特征在于大范围的频率和幅度,且通常包括两个或更多的声道。另一方面,语音的特征在于较小范围的频率和幅度,且通常在单声道中表示。某些编解码器和处理技术适用于音乐和一般音频;其它编解码器和处理技术适用于语音。一种类型的常规语音编解码器使用线性预测来实现压縮。语音编码包括若干阶段。编码器找到并量化线性预测滤波器的系数,该滤波器被用来将样本值预测为之前的样本值的线性组合。残留信号(表示为"激励"信号)指示原始信号中未通过滤波来准确预测的部分。在某些阶段,语音编解码器为有话音片段(特征在于声音和弦振动)、无话音片段、和安静片段使用不同的压縮技术,因为不同种类的语音具有不同的特征。有话音片段一般展示高度重复的发音模式,即使在残留域中也如此。对有话音片段,编码器通过将当前的残留信号与之前的残留周期进行比较并按照与之前的周期相关的延迟或滞后信息编码当前的残留信号来实现进一步的压縮。编码器使用特别设计的码本来处理原始信号与所预测的、已编码的表示(来自线性预测和延迟信息)之间的差异。尽管上述某些语音编解码器对众多应用具有良好的总体性能,但它们具有若干缺点。具体地,当结合动态网络资源使用语音编解码器时,就有若干缺点浮出表面。在这样的场景中,已编码语音可能因临时性的带宽短缺或其它问题而被丢失。A.无效的掩盖技术当遗漏一个或多个已编码语音的分组,诸如它们被丢失、延迟、破坏或以其它方式在传输中或在别处不可使用时,解码器通常试图以某种方式掩盖遗漏的分组。例如,某些解码器仅重复己经接收的分组。然而,如果有显著的分组丢失,该技术可能迅速导致已解码语音输出的质量的降级。某些编解码器使用更复杂的掩盖技术,诸如波形相似性叠加法("WSOLA")。该技术通过经现有基音周期(pitchcycle)的加权平均生成新基音周期来扩展已解码音频信号以掩盖遗漏的分组。该方法比仅重复先前的分组可更有效地掩盖丢失的分组。然而,它不是对所有情况都是理想的。而且,如果它用于将信号扩展得过长,它可能产生不期望的声音效果(诸如机械或振鸣声)。此外,众多帧依赖于之前的帧的已解码特征的记忆(诸如激励信号历史)来解码。当这样的记忆不存在时(如原本用于产生记忆的分组丢失、延迟等),甚至随遗漏帧之后接收的帧的信号质量也可能降级。B.低效或无效的所需分组延迟计算随着己编码音频信息的分组被传送给解码器应用程序,每一分组可能经历因例如网络变化而造成的不同的延迟。这也可导致分组以不同于其发送的顺序到达。应用程序或解码器可计算延迟统计数据以确定所需解码器缓冲延迟,期望该延迟足够长以允许足够数目的分组及时到达解码器以被解码和使用。当然,一个抵消的考虑有系统中的总体延迟,尤其对诸如电话等实时、交互式应用。计算最优延迟的一种方式是査看先前分组的最大延迟并以该延迟值为指南。分组的延迟一般通过计算当发送分组时施加在编码器侧的发送时戳与当接收分组时施加在解码器侧的接收时戳之差来确定。然而,有时存在异常,使系统要适应没有代表性的分组。此外,有时令少数分组晚到(且被遗漏)好过强加足够长的延迟来接收这些异常、晚到的分组。一种替换方式是基于诸如游动平均和游动方差计算等公式来计算所需延迟。然而,在这样的计算中需要优化众多参数,且难以找到一方面计算和响应速度与另一方面将计算基于大量代表性历史值之间的合适的折衷。另一方法是直接分析分组延迟分布。例如,可维护分组延迟的柱状图。延迟时间柱状图中的柱的宽度代表将计算最优延迟的所需准确度。减少柱大小将改善准确度。柱状图的形状近似反映出基本的分组延迟分布。当新分组到达时,将分组延迟映射到相应的柱,且落入该柱的分组的计数递增。为了反映某些老分组的时效,所有其它柱中的计数在被称为"老化(aging)"的过程中按比例縮小。为了找到所需的新延迟,解码器设置所需的丢失率。典型的值范围在百分之一到百分之五之间。分析柱状图来确定实现所需丢失所必要的所需延迟的值。该方法的一个问题在于需要调谐某些参数,诸如柱宽度、和老化因子。此外,在老化过程中类似地对待所有老分组,且老化方法本身在该技术的总体性能上扮演了过分重要的角色。此外,可能会发生时钟漂移情况。当不同设备的时钟速率不同时会发生时钟漂移。如果在施加发送时戳的编码器侧设备与施加接收时戳的解码器侧设备之间发生时钟漂移,则总体延迟将具有正向或负向的趋势。即使当柱状图应为静态时,这也可使柱状图沿延迟时间线漂移。概述概括来说,该详细描述针对用于音频编解码器的各种技术和工具,尤其针对与处理因任何原因而遗漏的音频信息的技术相关的工具和技术。所述实施例实现一个或多个所述技术和工具,包括但不限于以下在一个方面中,如果当处理音频信号的比特流时遇到了一个或多个遗漏的帧,则至少部分基于一个或多个因素从多个可用的信号相关掩盖技术中选择一种掩盖技术。执行所选掩盖技术并输出结果。在另一方面中,当遇到从音频信号的比特流遗漏的一个或多个帧时,至少部分基于一个或多个先前帧中的基音周期生成掩盖信号,包括引入基音抖动。在另一方面中,遇到从音频信号的比特流遗漏的一个或多个帧并产生掩盖信号。遇到随后的帧,它至少部分依赖于来自一个或多个遗漏帧的信息以便解码。从掩盖信号产生代替信息,且依赖它来代替来自一个或多个遗漏帧的信息以对随后的帧进行解码。在另一方面中,处理音频信号的比特流。当遇到从比特流遗漏的一个或多个帧时,该处理包括生成包含至少部分基于与可用帧相关联的一个或多个值的扩展信号贡献的掩盖信号,以及在掩盖信号的阈值持续时间之后,向掩盖信号添加噪声贡献。当遇到来自比特流的一个或多个遗漏的帧时,该处理还可包括沿音频信号的至少部分逐渐降低扩展信号贡献的能量,并沿音频信号的至少部分逐渐增加噪声贡献的能量。而且,逐渐降低扩展信号贡献的能量可包括逐渐降低该能量直到扩展信号不可感知。而且,扩展信号贡献的能量可被逐渐降低,且噪声贡献的能量可被逐渐增加,直到掩盖信号基本上包括预定水平的背景噪声。在另一方面中,处理音频信号的比特流。当遇到来自比特流的一个或多个遗漏帧时,该处理包括标识来自可用帧的多个可用片段,且对多个可用片段中的每一个,使用可用片段的一个或多个特征来生成派生片段。使用该多个可用片段和多个派生片段来形成合并信号。可用帧可以是无话音帧,一个或多个特征可包括可用片段的能量。多个可用片段可包括第一和第二可用片段,多个派生片段可包括第一和第二派生片段,形成合并信号可包括将第一可用片段与第一派生片段合并、将第一派生片段与第二派生片段合并、以及将第二派生片段与第二可用片段合并。多个可用片段可包括两个以上的可用片段,多个派生片段可包括两个以上的派生片段。而且,该处理还可包括使用合并片段来代替可用帧和一个或多个遗漏的帧。在另一方面中,维护一数据结构。该数据结构包括对应于一组所接收的分组中的分组的一组多个节点。该组多个节点中的每一节点包括用于接收该组所接收分组中的相应分组的延迟值、指向该组多个节点中具有下一较高延迟值的节点的较高值指针、以及指向该组多个节点中具有下一较低延迟值的节点的较低值指针。至少部分基于该数据结构来确定所需解码器分组延迟值。当接收到新分组时,维护该数据结构可包括以新分组的延迟值代替该组所接收的分组中最老分组的延迟值,更新该组多个节点中一个或多个节点的高值指针,以及更新该组多个节点中一个或多个节点的低值指针。而且,确定该所需解码器分组延迟值可包括定位一组多个节点中包含最大延迟值的节点、在该组多个节点中搜索具有连续更低延迟值的节点直到搜索到所需数目的节点、以及使用将搜索到的最后一个节点的延迟值作为解码器的所需分组延迟。而且,所需的节点数目可对应于预定的所需分组丢失率。可组合或独立使用各种技术和工具。通过参考附图进行的不同实施例的以下详细描述,附加特征和优点将是显而易见的。附图简述图1是可在其中实现一个或多个所述实施例的合适计算环境的框图。图2是可结合来实现一个或多个所述实施例的网络环境的框图。图3是可结合来实现一个或多个所述实施例的实时语音帧编码器的框图。图4是描述一种实现中的码本参数的确定的流程图。图5是可结合来实现一个或多个所述实施例的实时语音帧解码器的框图。图6是描述示例解码器侧VoIP系统中的音频信息的一般流程的框图。图7是描述示例解码器侧缓冲技术中对样本进行缓冲的框图。图8是示例分组延迟分布的图。图9是示例分组延迟数据结构的图。图IO是描述确定适当的掩盖技术的示例的流程图。图11是示出用于掩盖遗漏的无话音音频信息的技术的示意图。图12是描述解码器记忆恢复技术的示例的流程图。详细描述所述实施例针对用于编码和/或解码时处理音频信息的技术和工具。使用这些技术,改善了从诸如实时语音编解码器等语音编解码器中得到的语音的质量。这样的改善可得自对各种技术和工具的单独或组合使用。这样的技术和工具可包括基于音频信号的特征选择掩盖技术和/或结合基音扩展掩盖技术来使用基音抖动。该技术可包括对从掩盖技术得到的信号中的某一些或全部进行编码并使用己编码的信息来重新生成用于解码将来分组的记忆。此外,该技术可包括使用适用于跟踪和排序分组延迟的数据结构来计算所需的分组延迟值。尽管为表示起见,以特定的、顺序的次序描述了各种技术的操作,但应理解,这种描述方式包含了操作次序的微调,除非需要特定的次序。例如,顺序描述的各操作在某些情况中可被重新安排或并发执行。而且,为简单起见,流程图可以不示出可结合其它技术使用特定技术的各种方式。尽管以下描述了特定计算环境特征和音频编解码器特征,但一个或多个工具和技术可用于各种不同类型的计算环境和/或各种不同类型的编解码器。例如,一个或多个健壮解码器技术可用于不使用CELP编码模型的编解码器,诸如自适应差分脉码调整编解码器、变换解码器和/或其它类型的编解码器。作为另一示例,一个或多个编解码器技术可用于单频带编解码器或子带编解码器。作为另一示例,一个或多个健壮解码器技术可应用于多频带编解码器的单个频带和/或包括多频带编解码器的多个频带的贡献的合成或未编码信号。I.计算环境图1示出了可在其中实现一个或多个所述实施例的合适计算环境(100)的一般示例。计算环境(100)不旨在对本发明的使用范围或功能提出任何限制,因为本发明可在不同的通用或专用计算环境中实现。参考图1,计算环境(100)包括至少一个处理单元(110)和存储器(120)。在图1中,该最基本配置(130)被包括在虚线内。处理单元(110)执行计算机可执行指令,且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。存储器(120)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等),或两者的某种组合。存储器(120)存储实现诸如信号相关掩盖、基音抖动、解码器记忆恢复、和/或链表分组延迟计算等技术的软件(180)。计算环境(100)可具有附加特征。在图1中,计算环境(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)和一个或多个通信连接(170)。诸如总线、控制器或网络等互连机制(未示出)互连计算环境(100)的各个组件。一般,操作系统软件(未示出)为在计算环境(100)中执行的其它软件提供操作环境,并协调计算环境(100)的各个组件的活动。存储(140)可以是可移动或不可移动的,且可包括磁盘、磁带或盒带、CD-ROM、CD-RW、DVD或可用于存储信息且可在计算环境(100)内访问的任何其它介质。存储(140)为软件(180)存储指令。输入设备(150)可以是诸如键盘、鼠标、笔或跟踪球等触摸输入设备、语音输入设备、扫描设备、网络适配器、或向计算环境(100)提供输入的另一设备。对音频而言,输入设备(150)可以是声卡、麦克风或接受模拟或数字形式的音频输入的其它设备、或向计算环境(100)提供音频样本的CD/DVD读取器。输入设备(160)可以是显示器、打印机、扬声器、CD/DVD-写入器、网络适配器、或提供自计算环境(100)的输出的另一设备。通信连接(170)允许经由通信介质至另一计算实体的通信。通信介质传达各种信息,诸如计算机可执行指令、经压縮的语音信息、或已调制数据信号中的其它数据。已调制数据信号是以编码信号中的信息的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括以电气、光学、RF、红外、声学或其它载波实现的有线或无线技术。可在计算机可读介质的一般上下文中描述本发明。计算机可读介质是可在计算环境内访问的任何可用介质。作为示例,而非限制,对于计算环境(100),计算机可读介质包括存储器(120)、存储(140)、通信介质、和以上的组合。可在诸如程序模块中所包括的、在目标真实或虚拟处理器上的计算环境中执行的计算机可读指令的一般上下文中描述本发明。一般,程序模块包括例程、程序、库、对象、类、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。在各个实施例中,程序模块的功能可按需在程序模块之间组合或分割。程序模块的计算机可执行指令可在本地或分布式计算环境内执行。为表示起见,该详细描述使用如"确定"、"生成"、"调节"和"应用"等术语来描述计算环境中的计算机操作。这些术语是计算机执行的操作的高层抽象,而不应与人类所执行的动作混淆。对应于这些术语的实际计算机操作可取决于实现而有所不同。II.一般化的网络环境的实时语音编解码器图2是可结合来实现一个或多个所述实施例的一般化网络环境(200)的框图。网络(250)将各个编码器侧组件同各个解码器侧组件分开。编码器侧和解码器侧组件的主要功能分别是语音编码和解码。在编码器侧,输入缓冲器(210)接受并存储语音输入(202)。语音解码器(230)从输入缓冲器(210)取得语音输入(202)并对其编码。特别地,帧分路器(212)将语音输入(202)的样本分成帧。在一种实现中,帧是统一的20ms长的样本——对8kHz的输入为160个样本,对16kHz的输入为320个样本。在其它实现中,帧具有不同的持续时间、为非统一或重叠的、禾口/或输入(202)的采样速率是不同的。可按照超帧/帧、帧/子帧、或其它配置为编码和解码的不同阶段组织帧。帧分类器(214)根据一个或多个准则对帧进行分类,这些准则诸如信号能量、过零率、长期预测增益、微分增益和/或子帧或全帧的其它准则。基于准则,帧分类器(214)将不同的帧分类成诸如安静、无话音、有话音和过渡(例如,无话音到有话音)的各类。此外,可根据对帧使用的冗余编码(如有)的类型对帧进行分类。帧类影响将被计算以对帧进行编码的参数。此外,帧分类可影响用于编码参数的分辨率和丢失回复能力,以对更重要的帧类和参数提供更高的分辨率和丢失回复能力。例如,安静帧一般以非常低的速率来编码,它们如果丢失能很简单地通过掩盖来恢复,且不需针对丢失进行保护。无话音帧一般以稍高的速率来编码,它们如果丢失理论上能简单地通过掩盖来恢复,且不针对丢失进行重大的保护。取决于帧的复杂程度以及过渡是否存在,有话音和过渡帧一般以更多比特来编码。有话音和过渡帧如果丢失也难以恢复,因此针对丢失进行了更重大的保护。或者,帧分类器(214)使用其它和/或另外的帧类。在图2中,每一帧如由帧编码组件(232)编码。以下结合图3更详细地描述这样的帧编码。通过多路复用器("MUX")(236)向一个或多个联网层(240)的软件提供得到的已编码语音。联网层(240)处理已编码语音以便通过网络(250)传输。例如,网络层软件将已编码语音信息的帧打包成遵循RTP的、议的分组,这些分组使用UDP、IP和各种物理层协议通过因特网中继。或者,使用其它和/或附加的软件层或联网协议。网络(250)是诸如因特网等广域、分组交换网络。或者,网络(250)是局域网或其它种类的网络。在解码器侧,一个或多个联网层(260)的软件接收并处理所传输的数据。网络、传输、和更高层协议以及解码器侧联网层(260)中的软件一般对应于编码器侧联网层(240)中的那些。联网层通过多路分解器("DEMUX")(276)将己编码语音信息提供给语音解码器(270)。如在解码模块(272)中所述,解码器(270)对每一帧进行解码。己解码的语音输出(292)也可经过一个或多个后置滤波器(284)以改善得到的经滤波的语音输出的质量(294)。以下结合图5描述一个一般化的实时语音帧解码器,但可替代使用其它语音解码器。或者,所述工具和技术中的某些或全部可用于其它类型的音频编码器和解码器,诸如音乐编码器和解码器、或通用音频编码器和解码器。除这些主要编码和解码功能以外,各个组件也可共享信息(在图2中以虚线示出)以控制已编码语音的速率、质量和/或丢失回复能力。速率控制器(220)考虑各种因素,诸如输入缓冲器(210)中的当前输入的复杂程度、编码器(230)中或别处的输出缓冲器的充满程度、所需输出速率、当前网络带宽、网络拥塞/噪声状况和/或解码器丢失率。解码器(270)向速率控制器(220)反馈解码器丢失率信息。联网层(240、260)收集或估算关于当前网络带宽和拥塞/噪声状况的信息,这些信息被反馈给速率控制器(220)。或者,速率控制器(220)考虑其它和/或附加因素。速率控制器(220)指导语音编码器(230)改变编码语音的速率、质量和/或丢失回复能力。编码器(120)可通过调节参数的量化因子或改变表示参数的熵码的分辨率即可改变速率和质量。此外,编码器可通过调节速率或冗余编码的类型来改变丢失回复能力。因此,编码器(230)可取决于网络状况来改变主要编码功能和丢失回复功能之间的比特分配。或者,以某种其它方式控制速率,诸如在编码器以固定速率操作之处。图3是可结合来实现一个或多个所述实施例的一般化的语音帧编码器(300)的框图。帧编码器(300)—般对应于图2中的帧编码组件(232)。帧编码器(300)接受来自帧分路器的帧输入(302)并产生己编码的帧输出(392)。LP分析组件(330)计算线性预测系数(332)。在一个实现中,LP滤波器为8kHz的输入使用IO个系数,为16kHz的输入使用16个系数,且LP分析组件(330)为每个帧计算一组线性预测系数。或者,LP分析组件(330)为每个帧计算两组系数,对中心在不同位置的两个窗口中的每一个有一组系数,或为每个帧计算不同数目的系数。LPC处理组件(335)接收并处理线性预测系数(332)。通常,LPC处理组件(335)将LPC值转换成不同的表示以便更高效地量化和编码。例如,LPC处理组件(335)将LPC值转换成线性频谱对(LSP)表示,LSP值被量化(诸如被向量量化)和编码。LSP值可在内部编码或从其它LSP值预测。LPC值有各种可能的表示、量化技术和编码技术。以某种形式提供LPC值作为已编码帧分组(392)的一部分以便分组化和传输(与任何量化参数和重构所需的其它信息)一起。为随后在编码器(300)中使用,LPC处理组件(335)重构了LPC值。LPC处理组件(335)可对LPC值执行内插(诸如与LSP表示或另一表示等效地)以平滑不同组LPC系数之间、或用于帧的不同子帧的LPC系数之间的过渡。合成(或"短期预测")滤波器(340)接受重构的LPC值(338)并将其并入到滤波器中。合成滤波器(340)接收激励信号,并产生原始信号的逼近。对给定帧,合成滤波器(340)可缓冲来自前一帧的多个重构样本(例如,对十抽头滤波器有十个)以便开始预测。感知加权组件(350、355)向原始信号和合成滤波器(340)的建模输出应用感知加权以便选择性地对语音信号的共振峰去加重(deemphasize)以使听觉系统对量化差错较不敏感。感知加权组件(350、355)利用诸如遮蔽等心理声学现象。在一种实现中,感知加权组件(350、355)基于从LP分析组件(330)接收的原始LPC值(332)来施加权重。或者,感知加权组件(350、355)应用其它和/或附加权重。在感知加权组件(350、355)之后,编码器(300)计算经感知加权的原始信号与合成滤波器(340)的经感知加权的输出之差以产生差信号(334)。或者,编码器(300)使用不同的技术来计算语音参数。激励参数化组件(360)按照最小化经感知加权的原始信号与合成信号之差(按照加权均方误差或其它准则)来设法找到自适应码本索引、固定码本索引和增益码本索引的最佳组合。为每个子帧计算众多参数,但更一般而言,参数可以是用于每个超帧、帧或子帧的。表2示出一种实现中不同帧类的可用参数类型。<table>tableseeoriginaldocumentpage15</column></row><table>表2:不同帧类的参数在图3中,激励参数化组件(360)将帧分成子帧并适当地为每个子帧计算码本索引和增益。例如,要使用的码本级(codebookstage)的数目和类型以及码本索引的分辨率最初可由编码模式确定,其中模式由上述速率控制组件规定。特定的模式也可规定除码本级的数目和类型以外的编码和解码参数,例如码本索引的分辨率。每一码本级的参数可通过优化参数以最小化目标信号和该码本级对合成信号的贡献之间的误差来确定。(如此处所使用的,术语"优化"指的是找到诸如畸变减少、参数搜索时间、参数搜索复杂度、参数比特率等适用约束下的合适解决方案,而非对参数空间执行完全搜索。类似地,术语"最小化"应按照找到适用约束下的合适解决方案来理解。)例如,可使用经修改的均方误差技术来完成优化。每一级的目标信号是残留信号与前一码本级对合成信号的贡献的总和之差。或者,可使用其它优化技术。图4示出根据一种实现用于确定码本参数的技术。激励参数化组件(360)执行该技术,潜在地与诸如速率控制器等其它组件相结合。或者,编码器中的另一组件执行该技术。参考图4,对有话音或过渡帧中的每一子帧,激励量化组件(360)确定(410)是否可为当前子帧使用自适应码本。(例如,速率控制可规定没有自适应码本将用于特定的一个帧。)如果不使用自适应码本,则自适应码本开关将指示将不使用自适应码本(435)。例如,这可通过在帧级上设置指示帧中未使用自适应码本的一位标志、通过在帧级上指定特定的编码模式、或通过为每一子帧设置指示在该子帧中未使用自适应码本的一位标志来完成。仍参考图4,如果有自适应码本可使用,则组件(360)确定自适应码本参数。那些参数包括索引、或基音值,它们指示激励信号历史所需的片段,以及向所需片段施加的增益。在图3和4中,组件(360)执行闭环基音搜索(420)。该搜索以图3中的可任选开环基音搜索组件(325)确定的基音开始。开环基音搜索组件(325)分析加权组件(350)所产生的经加权的信号以估算其基音。以所估算的基音开始,闭环基音搜索(420)优化基音值以减少目标信号与从激励信号历史所指示的片段生成的经加权的合成信号之间的误差。还优化自适应码本增益值(425)。自适应码本增益值指示对经基音预测的值(来自激励信号历史所指示的片段的值)施加以调节该值的范围的乘数。增益乘上经基音预测的值即自适应码本对当前帧或子帧的激励信号的贡献。增益优化(425)和闭环基音搜索(420)分别产生增益值和索引值,它们最小化目标信号与来自自适应码本贡献的加权合成信号之间的误差。如果组件(360)确定要使用自适应码本(430),则在比特流中用信号表示该自适应码本参数。如果不是,则如上所述诸如通过设置一位子帧级标志来指示将不为子帧使用自适应码本。该判定(430)可包括确定特定子帧的自适应码本贡献是否足够重要来与以信号表示该自适应码本参数所需的比特数等值。或者,可使用其它基准来进行判定。而且,尽管图4示出在判定之后发信号,但是替换地,信号可被批处理直到对帧或子帧结束该技术。激励参数化组件(360)还确定是否使用脉冲码本(450)。作为当前帧的总编码模式的一部分指示了脉冲码本的使用与否,或者可按照其它方式来指示或确定。脉冲码本是指定将对激励信号作出贡献的一个或多个脉冲的一种类型的固定码本。脉冲码本参数包括索引和符号(增益可正可负)对。每一对指示要在激励信号中包括的脉冲,索引指示脉冲的位置而符号指示脉冲的极性。取决于编码模式,脉冲码本中所包括且用来对激励信号作出贡献的脉冲的数目可有所不同。此外,脉冲的数目可取决于是否正使用自适应码本。如果使用自适应码本,则优化脉冲码本参数来最小化所指示的脉冲的贡献与目标信号之间的误差(455)。如果未使用自适应码本,则目标信号为加权的原始信号。如果使用自适应码本,则目标信号为加权原始信号与自适应码本对加权合成信号的贡献之间的差。在某时刻(未示出),可在比特流中以信号表示脉冲码本参数。激励参数化组件(360)还确定是否要使用任何随机固定码本级(465)。作为当前帧的总编码模式的一部分指示随机码本级(如果有)的数目,或者可按照其它方式指示或确定。随机码本是为其所编码的值使用预定义信号模型的一种类型的固定码本。码本参数可包括信号模型所指示的片段的起始点和可正可负的符号。所指示片段的长度或范围一般是固定的,从而一般不以信号表示,但替代地,可用信号表示所指示片段的长度或范围。增益乘上所指示片段中的值以产生随机码本对激励信号的贡献。如果使用了至少一个随机码本级,则优化该码本级的码本级参数来最小化随机码本的贡献与目标信号之间的误差(470)。目标信号是加权原始信号与自适应码本(如果有)、脉冲码本(如果有)以及之前确定的随机码本级(如果有)对加权合成信号的贡献的总和之间的差。在某时刻(未示出),在比特流中然后以信号表示随机码本参数。组件(360)然后确定是否还要使用随机码本级(480)。如果是,则如上所述优化下一随机码本级的参数并以信号表示它(470)。这将继续直到确定了随机码本级的所有参数。所有随机码本级可使用相同的信号模型,尽管它们可能指示来自模型的不同片段且具有不同的增益值。或者,可为不同的随机码本级使用不同的信号模型。如由速率控制器和/或其它组件所确定的,可独立地量化每一激励增益,或者可一起量化两个或更多的增益。尽管此处描述了用于优化各个码本参数的特定次序,但可使用其它次序和优化技术。例如,可同时优化所有的随机码本。因此,尽管图4示出了不同码本参数的顺序计算,但替代地,可联合优化两个或更多不同的码本参数(例如,通过根据某种非线性优化技术来联合变化参数并评估结果)。此外,可使用码本或其它激励信号参数的其它配置。该实现中的激励信号是自适应码本、脉冲码本、和随机码本级的任何贡献的总和。或者,组件(360)可为激励信号计算其它和/或附加的参数。参考图3,以信号表示或以其它方式将激励信号的码本参数提供给本地解码器(365)(图3中由虚线围住)以及帧输出(392)。因此,已编码的帧输出(392)包括来自上述LPC处理组件(335)的输出,以及来自激励参数化组件(360)的输出。输出(392)的比特率部分取决于码本所使用的参数,且编码器(300)可通过在不同的码本索引组之间切换、使用嵌入码、或使用其它技术来控制比特率和/或质量。码本类型和级的不同组合可为不同的帧和/或子帧产生不同的编码模式。例如,无话音帧可使用仅一个的随机码本级。自适应码本和脉冲码本可用于低比特率的有话音帧。高比特率帧可使用自适应码本、脉冲码本、和一个或多个随机码本级来编码。速率控制模块可确定或影响每一帧的模式。仍参考图3,激励参数化组件(360)的输出由对应于参数化组件(360)使用的码本的码本重构组件(370、372、374、376)和增益应用组件(380、382、384、386)接收。码本级(370、372、374、376)和相应的增益应用组件(380、382、384、386)重构码本的贡献。对这些贡献求和以产生激励信号(390),该信号被合成滤波器(340)接收,在那里它与"所预测的"样本一起使用,基于此进行随后的线性预测。激励信号的延迟部分也被自适应码本重构组件(370)用作激励历史信号以重构随后的自适应码本参数(例如,基音贡献),并由参数化组件(360)在计算随后的自适应码本参数(例如,基音索引和基音增益值)时使用。回来参考图2,由MUX(236)接受已编码帧输出以及其它参数。这样的其它参数可包括来自帧分类器(214)的帧类信息(222)和帧编码模式以及其它信息。MUX(236)重构应用层分组以传递给其它软件,或者MUX(236)将数据置于遵循诸如RTP等协议的分组的有效负载中。MUX可缓冲参数以便允许选择性地重复参数以便在随后的分组中进行前向纠错。在一种实现中,MUX(125)将一个帧的主要己编码语音信息以及一个或或多个先前帧的全部或部分前向纠错信息包进单个分组中。MUX(236)为速率控制起见提供诸如当前缓冲器满等反馈。更一般地,编码器(230)的各个组件(包括帧分类器(214)和MUX(236))可将信息提供给诸如图2中所示的速率控制器(220)。图2的比特率DEMUX(276)接受已编码语音信息作为输入,并分析它来标识和处理参数。参数可包括帧类、LPC值的某种表示、和码本参数。帧类可指示给定帧存在哪些其它参数。更一般地,DEMUX(376)使用编码器(230)所使用的协议并提取编码器(230)包进分组的参数。对通过动态分组交换网络接收的分组而言,DEMUX(276)包括抖动缓冲器以平滑分组速率在给定的一段时间上的短期波动。在某些情况中,解码器(270)调整缓冲器延迟,并管理何时从缓冲器中读出分组以将延迟、质量控制、遗漏帧的掩盖等集成到解码中。在其它情况中,应用层组件管理抖动缓冲器,抖动缓冲器以可变速率填充,并由解码器(270)以恒定或相对恒定的速率消耗。DEMUX(276)可接收给定片段的参数的多个版本,包括主要的已编码版本和一个或多个辅助的纠错版本。当纠错失败时,解码器(270)使用诸如下述的掩盖技术等掩盖技术。图5是可结合来实现一个或多个所述实施例的一般化的实时语音帧解码器(500)的框图。帧解码器(500)—般对应于图2的帧解码组件(272)。帧解码器(500)接受己编码语音信息(592)作为输入并在解码之后产生经重构的输出(502)。解码器(500)的组件在编码器(300)中具有相应的组件,但总体上,解码器(500)更简单,因为它没有用于感知权重、激励处理循环和速率控制的组件。LPC处理组件(535)以帧编码器(300)提供的形式接收表示LPC值的信息(以及重构所需的任何量化参数和其它信息)。LPC处理组件(535)使用先前对LPC值施加的转换、量化、编码等的逆过程来重构LPC值(538)。LPC处理组件(535)也可为LPC值(LPC表示的或诸如LSP等另一表示的)执行内插以平滑不同组LPC系数之间的过渡。码本级(570、572、574、576)和增益应用组件(580、582、584、586)对用于激励信号的任何相应的码本级的参数进行解码并计算所使用的每一码本级的贡献。更一般地,码本级(570、572、574、576)和增益组件(580、582、584、586)的配置和操作对应于编码器(300)中的码本级(370、372、374、376)和增益组件(380、382、384、386)的配置和操作。对所使用的码本级的贡献求和,且得到的激励信号(590)被馈送给合成滤波器(540)。激励信号(590)的延迟值也由自适应码本(570)在计算自适应码本对激励信号的后续部分的贡献时用作激励历史。合成滤波器(540)接受经重构的LPC值(538),并将其并入滤波器。合成滤波器(540)存储之前重构的样本以便处理。激励信号(590)经过合成滤波器以形成对原始语音信号的逼近。图2-5中所示的关系指示信息的一般流程;为简单起见未示出其它关系。取决于实现和所需的压縮类型,组件可增加、略去、分成多个组件、与其它组件组合、和/或以类似组件替换。例如,在图2所示的环境(200)中,速率控制器(220)可与语音编码器(230)组合。可能增加的组件包括多媒体编码(或回放)应用程序,它管理语音编码器(或解码器)以及其它编码器(或解码器)并收集网络和解码器状况信息,且执行自适应纠错功能。在替换实施例中,组件的不同组合和配置使用如此处所述的技术来处理语音信息。III.健壮解码技术和工具使用各种健壮解码技术和工具,改善了从诸如实时语音编解码器等语音编解码器得到的语音的质量。各种健壮解码技术和工具可单独或组合使用。尽管以上描述了特定的计算环境特征和音频编解码器特征,但一个或多个工具和技术可用于各种不同类型的计算环境和/或各种不同类型的编解码器。例如,一个或多个健壮解码器技术可用于不使用CELP编码模型的编解码器,诸如自适应差分脉码调制编解码器、变换编解码器和/或其它类型的编解码器。作为另一示例,一个或多个健壮解码器技术可用于单频带编解码器或子带编解码器。作为另一示例,一个或多个健壮解码器技术可应用于多频带编解码器的单个频带和/或包括多频带编解码器的多个频带的贡献的合成或未编码的信号。A.解码器侧VoIP因特网协议上的语音("VoIP")应用程序是上述编解码器的可能用途之一。VoIP应用程序一般以称为"推(push)模式"或称为"拉(pull)模式"的模式操作。所述技术可在任一模式中使用,或在某种其它模式中使用。然而,众多当前的VoIP应用程序使用拉模式解码。从而,图6以一般形式示出了某些解码器侧拉模式操作的一种可能的安排。一般而言,VoIP应用程序(610)将从网络源(600)接收到的所有分组立即传递给解码器(620),后者将决定所需的缓冲延迟。在图6中,解码器(620)执行下述掩盖技术,而不是将掩盖信号遗漏部分的任务委托给接收方应用程序(610)。或者,应用程序(610)或某个其它组件执行下述掩盖技术。在拉模式中,当呈现器(630)(—音频回放组件)需要附加的己解码音频信息来播放时,它请求该信息(650)。VoIP应用程序(610)向网络源(600)检索可用的信息(不仅用于所请求的回放时间段)(655)并将信息推到解码器(620)(660)。解码器(620)解码信息的某一部分(例如,所请求回放时间段的样本)并将所解码的信息返回给VoIP应用程序(610)(665),后者将该信息提供给呈现器(630)(670)。如果遗漏了一个或多个帧,则解码器(620)执行一个或多个掩盖技术,并将得到的掩盖信息(例如,作为音频样本)返回给VoIP应用程序(610)以替换遗漏帧的实际样本。因为呈现器(630)在需要时请求样本,因此定时仅依赖于呈现器(630)所使用的本地时钟。因此,该设计可自动处理在诸如依赖于具有稍许不同的时钟速率的多个时钟的推模式解码器的其它设计中可能出现的时钟漂移问题。如图7中所示,VoIP应用程序从网络源(710)接收的分组被立即传递给解码器,后者根据其(音频信号中的)顺序次序将其置于抖动缓冲器(720)中。如图7中所示,抖动缓冲器(720)中的"1"指示存在相应的分组,"0"指示不存在相应的分组。此外,存在样本缓冲器(730),它保存回放可用的已解码输出样本(740)。无论何时呈现器(760)想要播放某个音频时,它从解码器样本缓冲器(730)中拉出所需样本(750)。如果样本缓冲器(730)没有足够的样本来满足请求,则解码器查看抖动缓冲器(720)来检查下一分组是否可用。如果下一分组可用,则它被解码,且己解码的样本被置于样本缓冲器(730)中,且所请求的样本通过VoIP应用程序被传递给呈现器(760)。另一方面,如果分组不可用,则调用掩盖模块来生成替代样本。替代样本被置于样本缓冲器(730)中,且请求得到满足。在任一情况中,抖动缓冲器可被移位,并适当调节抖动缓冲器的头信息(725)。B.分组延迟计算在某些健壮解码技术和工具中,解码器通过监控分组接收时间来跟踪分组丢失率并估算网络延迟。图8示出了示例分组延迟分布。所接收分组的历史可用于确定任何延迟趋势以及计算所需延迟(Ddesired820)。如果所需延迟(820)改变或分组延迟分布改变(例如,因网络波动),则解码器可动态改变抖动缓冲器延迟,并使用时间压縮/扩展(或可变放出)技术来解码,这将改变音频的回放时间同时维持正确的基音。使用这样的技术,当观察到分组延迟增加时,样本缓冲器中的样本可被时间扩展,使得稍后的分组可被调整到对回放延迟、交互等可接受的某时刻。对有话音帧,这可使用下述WSOLA技术来完成。类似地,如果观察到延迟减少,则样本缓冲器中的样本可被时间压縮(较快播放),使得抖动缓冲器不会变满。计算所需延迟的传统方法包括简单地使用先前分组的最大延迟作为指南。然而,有时会存在异常,使得系统适合于没有代表性的分组延迟值。此外,有时让少数分组较晚到达以至于不能被回放要好过强加足够长的延迟来接收和使用异常的、晚到的分组。某些编解码器基于诸如游动平均和游动方差计算等公式来计算所需延迟。在R.Ramjee、J.Kurose、D.Towsley和H.Schulzrinne于1994年4月的正EEINFOCOM'94的学报第680-688页上所著的"AdaptivePlayoutMechanismforPacketizedAudioApplicationsinWide-areaNetworks"中描述了一个示例。然而,在这样的计算中众多参数需要被优化,且难以找到一方面的响应速度与另一方面将计算基于大量代表性历史值之间的合适的折衷。另一方法是直接分析分组延迟分布(810),诸如通过使用C丄Sreenan、J-C.Chen、P.Agrawal和B.Narendran于2000年6月在IEEETrans.Multimedia学报第2巻第2号第88-100页所著的"DelayReductionTechniquesforPlayoutBuffering"中所述的Concord算法的实现。在该方法中,维护分组延迟的柱状图。柱状图中柱的宽度表示将用于计算最优延迟的所需准确度。减少柱大小将改善准确度,但会增加跟踪复杂度。柱状图的形状近似反映出基本的分组延迟分布。当新分组到达时,将分组延迟映射到相应的柱,且递增落入该柱的分组的计数。为了反映某些老分组的时效,所有其它柱中的计数在被称为"老化"的过程中按比例縮小。为了找到所需的新延迟,解码器设置所需的丢失率(Ldesired830)。一般所需丢失率值范围在1%到5%之间。然后分析柱状图来确定何处需要该所需延迟来实现所需丢失率。该方法的一个问题在于需要调节某些参数,诸如柱宽度和老化因子。此外,所有老分组被类似地对待,且老化方法在总体性能上扮演了过分重要的角色。此外,当发生时钟漂移情况时,则总体延迟将具有或正或负的趋势,这将进一步使算法复杂化,尤其是当柱状图旨在在时间延迟时间线内保持静态时。在此处提供的一种健壮解码技术中,维护设定数目的分组的延迟的历史。例如,历史中所包括的分组的数目可以是500、1000或某个其它合适的数目。随着每一分组的传入,以最新分组的延迟代替最老分组的延迟,或以历史中的最新分组代替最老分组。使用这种方式,从计算中仅去除了最老分组。参考图8,基于记录上的所有分组延迟的历史,根据所需柱宽度生成分组延迟分布柱状图(810)。最优所需延迟(820)被确定为对应于所需丢失(830)的柱延迟值。该技术不依赖于老化方法。从而,减少了因时钟漂移情况而产生的问题。然而,以每一新分组重新生成新柱状图的计算要求通常较高。例如,在一个实现中,柱状图计算消耗总解码器复杂程度的约10%。有可能通过重用之前的柱状图,而不是从头开始重建来减少这种复杂性,但如果发生时钟漂移情况,这将使得延迟柱状图沿延迟时间轴移动,即使当它应保持静态时。在另一健壮解码技术中,使用一种数据结构来确定适于变化的分组延迟的最优缓冲延迟。在一个特定实现中,使用存储器中线性放置(例如,以数组)的延迟节点的双向链表用于更新,以及用于确定所需延迟。所接收的第n个分组处的历史由历Woo;/^=fZ),Aw,....,A^+J定义,其中历史的大小为W个分组。历史中所表示的分组的延迟值被置于双向链表类型的数据结构中。在图9中示出了具有数组中四个节点(920、922、924、926)的这一数据结构(910)的示例。当然,数据结构可包括多得多的节点,诸如500到1000个节点。然而,为解释该数据结构时简单起见,示出了4个节点。每一节点包括对应于所接收分组的延迟的延迟值(940)。节点(920、922、924、926)可线性地置于存储器中,且对所有节点循环使用索引尸(930)。因此,索引尸(1030)跟踪数组中当前最老的分组。每一节点(920、922、924、926)具有下一项指针(950)(此处,仅为节点字段)和前一项指针(960)(此处,仅为节点字段)。每一下一项指针(950)引用具有下一较高延迟值的节点。每一前一项指针(960)引用具有下一较低延迟值的节点。因此,在图9中所示的数据结构(910)中,Aw(尸3处)〉"(/%处)>^-2(尸2处)〉A^(尸,处)。最老的分组(尸/)最初位于列表的起始处。当接收到每一新分组时,将该分组添加到该结构(910)直到历史被填满(例如,500个分组被跟踪)。此时,当接收到新分组时,包括关于最老分组的信息的节点被替换(例如,以分组501替换分组1,最老的分组现在是分组2,然后以分组502替换分组2,最老的分组现在是分组3)。当替换老节点信息时,更新前一项和下一项指针。对于新延迟值,通过循环下一项指针来找到延迟值有序列表中的正确位置,然后通过更新下一项和前一项指针来将延迟值"插入"到延迟值次序中。链表还维护对列表中最高延迟的引用。当期望找到相应所需丢失率的最优所需延迟时,解码器以最高延迟开始,并跟随指向较低延迟的前一项指针直到找到对应于所需丢失率的节点的计数。这可在每当接收到新分组时或以某种其它间隔来完成。因此,找到所需延迟是简单的过程,因为仅遍历少数节点(例如,1%到5。X的节点用于1%到5%的所需丢失值)。而且,这可对时钟漂移问题提供自然的解决方案,因为未形成实际上的柱状图。因此,可自动处理漂移柱状图的现象。此外,计算不限于由柱宽度指定的准确程度。从而,计算可比典型的柱状图技术更精细和准确。或者,代替被实现为线性存储器中的数组,双向链表可被实现为某种其它类型的动态数据结构。C.信号相关的掩盖当遗漏了一个或多个分组时,可使用若干不同方法之一来产生掩盖丢失的信号。可根据信号的本质和遗漏分组或帧的数目来选择适当的掩盖技术。在图IO中示出信号技术判断的一个示例。或者可使用其它判断。参考图IO,遇到一个或多个遗漏帧(1010)。基于诸如一个或多个相邻帧的本质和遗漏帧的数目等一个或多个因素选择掩盖技术(1020)。或者,使用其它和/或附加的因素来进行选择。使用所选技术产生掩盖信号(1030)。以下示出若干示例信号相关的掩盖技术。根据第一种信号相关的掩盖技术,当对遗漏的有话音帧有以往的信息可用且之前可用的帧被分类为有话音帧时,使用有话音语音的单向掩盖。如果可用音频信息之间的间隙太长或出于其它原因而以致于实际上不能使用双向掩盖或维护低复杂度,则当有将来信息可用时,也可使用单向掩盖。可对单向掩盖使用波形相似性叠加掩盖技术("WSOLA")。在Y.J.Liang、N.Fiirber禾口B.Girod在2003年12月的IEEETransactionsonMultimedia巻5第4号第532-543页的"AdaptivePlayoutSchedulingandLossConcealmentforVoiceCommunicationoverIPNetworks"中描述了WSOLA。WSOLA技术通过经现有基音周期的加权平均生成新基音周期来扩展之前的信号。可使用该方法生成任何所需的长度,直到接收到下一分组。然而,如果基音扩展过度,诸如当丢失了许多分组时,WSOLA方法可导致机械声。因此,在现有的健壮解码技术中,如果基音扩展过度,则可添加噪声。例如可使用通过为最近接收的音频信号进行优化的线性预测系数滤波器的随机白噪声来生成噪声。噪声的能量可随扩展的增加而增加。如下所述,基音扩展的能量也可逐渐降低直到所有剩下的都是所生成的背景噪声。将扩展信号与从稍后接收的分组中产生的稍后信号合并。这可包括最大化两信号之间的相关的信号匹配例程。该信号匹配例程可以是简单的相关例程,诸如使重叠信号的相应样本幅度相乘并对得到的乘积求和以产生相关值的相关例程。可调节稍后信号的时滞以最大化相关值。或者,可使用其它信号匹配例程。信号可使用加权窗口来合并,诸如被设计成对合并区上的信号能量有恒定效应的加权窗口。根据第二种类型的信号相关掩盖技术,如果要扩展的信号本质上是无话音的(即,在信号中不能找到清楚的话音或基音信息),则使用不同的算法来扩展信号。在这样的情况中,对要扩展的信号分析相应的线性预测系数,且使用这些系数来使随机噪声通过线性预测系数滤波器以生成将与要扩展的信号合并的合成无话音信号。合成信号的能量派生自用于扩展的信号。一般而言,这种派生可包括将无话音语音帧分成两半,并对每一半进行扩展和合并。在图11中示出这一派生的示例。在所示示例中,对一个帧有无话音语音信号(1110)可用,且下一帧遗漏了信号(1120)。将无话音语音信号分成两个重叠的可用样本信号或片段(1130、1140)。左侧的可用样本(1130)包括可用信号(1110)的左边一半加上来自右边一半的少数后续样本以便进行平滑。例如,可使用40或80个后续样本。同样地,右侧的可用样本包括可用信号(iiio)的右边一半加上少数先前的样本以便进行平滑。基于左侧可用样本(1130)的能量创建左侧派生样本(1150)。具体地,分析左侧可用样本(1130)来产生相应的线性预测系数。使用这些相应的系数生成随机噪声并使之通过线性预测系数滤波器。縮放得到的信号使得它的信号能量等于可用样本(1130)的信号能量,从而生成合成无话音信号,即左侧派生样本(1150)。同样地,基于右侧可用样本(1140)的能量创建右侧派生样本(1160)。具体地,分析右侧可用样本(1140)来产生相应的线性预测系数。使用这些相应的系数生成随机噪声并使之通过线性预测系数滤波器。縮放得到的信号使得它的信号能量等于可用样本(1140)的信号能量,从而生成合成无话音信号,即右侧派生样本(1160)。如图11中所示,四组采样如下从左到右排序左侧可用样本(1130)、左侧派生样本(1150)、右侧派生样本(1160)和右侧可用样本(1140)。使用加权窗口(1170)合并重叠信号(1130、1140、1150、1160)以产生结果信号(1180)。结果信号(1180)的持续时间足以覆盖可用信号(1110)和遗漏信号(1120)的播放时间。如果后续帧也遗漏,则也可重复结果信号(1180)以进一步扩展信号。相信该技术能够在其中可用无话音帧内的能量在帧内显著上升或下降的众多情况中执行良好。或者,解码器将可用信号分成更多片段以便派生、合并等。根据第三种类型的信号相关掩盖技术,如果以往和将来的有话音音频信息均可用,则使用双向掩盖。特别地,如果可用音频信号之间的间隙不太长(例如,三个遗漏帧或更少),则可使用来自两侧的信息来填满该间隙。将以往的信息扩展到越过以往和将来可用帧之间的中点一个比特,并将将来的信息扩展到往回越过该中点一个比特。例如,可为有话音音频将以往和将来的信息扩展到越过中点约一个基音长度,或可将它们各自扩展某个预定的量,诸如越过中点40或80个样本。可使用WSOLA法、上述无话音掩盖技术、和/或某种其它方法来扩展这两个信号之一或两者。例如,如果以往的信息是有话音的,而将来的信息是无话音的,则可使用上述第一技术来扩展以往的信息,并使用第二技术来扩展将来的信息。对有话音信号,可使用诸如上述的信号匹配例程来确保信号在以往和将来的端点和中点的最佳位置处合并。无论信号是有话音、无话音还是两者,然后可使用诸如被设计成使信号能量在合并区中保持近乎恒定的加权窗口等加权窗口来合并信号。当使用这样的双向掩盖时,一般不将噪声添加到信号。在第一和第二前述类型的信号相关掩盖技术中,当存在没有接收到分组的延长的一段时间时,使用上述技术之一创建的扩展的有话音或无话音信号的能量逐渐降低,且所生成的背景噪声逐渐增大直到结果信号达到背景噪声的预定能量级。这有助于减少诸如可因信号被长时间扩展而导致的铃声和机械声等人工声音。该技术对使用话音活动检测而未生成任何舒适噪声的应用尤其有用。在这样的应用中,当话音活动停止(例如,语句之间的暂停、或当其他说话人在说话)时,发送方应用程序只需在安静时间段内停止发送分组。在这样的情况中,尽管解码器可能在这样的时间段内遇到遗漏帧,但解码器可还原成背景噪声,这是安静时间段内所需的响应。在一种实现中,在将信号扩展约两个帧之后开始逐渐引入噪声,且噪声一般在约4个帧之后能为听者所感知。当将信号扩展约6个或7帧时,仅留下背景噪声。可基于不同环境中听者感知的音频质量来调节这些时间。D.基音抖动使用WSOLA技术或其它有话音语音扩展技术,可使用诸如先前的一个或多个帧的先前信号的片段的基音特征来产生信号。通常重用得到的信号片段来扩展信号,有时用于掩盖许多分组的丢失。这样的通过基音重复来重复信号的扩展(诸如使用WSOLA技术)可导致铃声或机械声。WSOLA技术中所使用的加权本身可有助于减少这些影响。诸如上述的噪声添加技术可进一步减少这些影响。铃声或机械声也可通过在扩展信号时向后续样本中的基音大小/偏移量添加随机、伪随机、或其它调节因子来减少。从而,代替以精确大小的基音周期来扩展信号,向基音大小添加一因子,使得信号更类似于自然语音,而自然语音很少具有完全固定的基音速率。随着扩展的长度增加,因子的大小可增加。这种技术可通过使用包括一因子序列的因子表来实现,其中因子的大小逐渐增加。作为一示例,偏移量调节因子对第一基音周期可以是零样本,对第二周期是负一,对第三基音周期是正一,对第四周期是正二,对第五周期是负一等。或者,可在解码期间从适用范围中随机/伪随机选择调节因子。在一种实现中,随机因子的最大范围是从负三个样本到正三个样本。然而,范围大小可基于收听测试来调节。或者,可使用其它技术来产生调节因子和/或可使用其它调节因子范围。可单独或组合使用上述用于减少因重复基音周期而产生的不期望声音效果的三种技术(WSOLA加权、噪声添加、和基音抖动)。可重复进行对这些技术的参数的调节来产生特定实现中的更期望的结果。E.解码器记忆恢复具有有限内部存储器或没有内部存储器的解码器相当易于在VoIP应用中使用。在这样的情况中,分组丢失不会使编码器和解码器不同步,因为当解码当前信息时没有对先前信息的重要的记忆(以往历史)的依赖性。然而,这样的话音编解码器就比特率而言通常不是非常高效。在其中比特率较低的编解码器中,通常引入强记忆依赖性以便改善这些较低比特率下的质量。这在某些应用中不是问题,诸如为归档起见而进行压縮。然而,当在诸如VoIP应用等其它应用中使用这样的编解码器时,经常丢失分组。记忆依赖性,诸如对用于产生激励信号的自适应码本的记忆依赖性可使解码器中扩展的失真超出丢失的分组。在图12中一般描述了可用于产生由后续分组用作历史信号的替代信息的以下技术。或者,使用其它和/或附加的技术。首先,解码器为一个或多个遗漏帧生成掩盖信号(1210)。以此方式,掩盖了遗漏的帧直到可从下一接收的分组获得的信号部分。例如,以上信号相关技术可用于这样的掩盖。或者,其它掩盖技术可用于掩盖。解码器然后对掩盖信号执行至少部分的编码(和重构)(1220)。例如,解码器通过简化的假编码器(驻留在解码器中)传递一个或多个掩盖技术产生的掩盖信号以重新生成解码器内部状态。这一般加快了后续解码中从遗漏帧的恢复。在一种特定实现中,处理掩盖信号以产生可代替遗漏的激励信号历史的相应的残留信号。这可通过使掩盖信号通过线性预测合成滤波器(换言之即线性预测分析滤波器)的逆过程来完成。在合成滤波器技术(诸如上述组件(540)中),滤波器使用重构的线性预测系数来处理重构的残留信号以产生组合或合成的信号。与此相对,这种技术的线性预测分析滤波器使用己知的线性预测系数来处理解码器生成的信号(此处是掩盖信号)以产生替代残留信号。先前帧的线性预测系数可在线性预测分析滤波器中使用。或者,可通过分析掩盖信号来计算新的线性预测系数。这可参考线性预测分析组件(330)使用上述技术来完成。相信通过为掩盖信号计算新线性预测系数会达到更好的结果。然而,使用来自先前帧的线性预测系数更简单。或者,解码器使用这些线性预测系数的某种组合或诸如带宽扩展等某种其它方法。从这种技术得到的信号可由解码器用作随后的自适应码本计算的记忆,来代替使用遗漏帧的激励历史。因为掩盖信号通常不是完美的,因此解码器产生的替代残留信号仍仅近似于如果对遗漏帧进行解码则将创建的实际的记忆或历史。然而,即使这样,解码器能够在遗漏帧的激励历史不存在的情况中快得多地收敛回到正确的状态。因此,相信该技术可显著地改善丢失分组之后的已解码信号的质量。如果遗漏帧之后的下一帧具有显著的记忆依赖性,则该技术也可用于双向掩盖的目的。在这种情况中,可如下实现双向掩盖首先,为遗漏帧执行单向掩盖;第二,使用该掩盖来重新生成下一帧的近似记忆;第三,使用重新生成的记忆来对下一帧解码;第四,使用下一帧和遗漏帧的前一帧来执行遗漏帧的双向掩盖。相信这样的双向掩盖将比仅使用单向掩盖或没有下一帧的记忆的双向掩盖产生更好的结果。在参考所述实施例描述和示出了本发明的原理之后,可以认识到,可在安排和细节上修改所述实施例而不背离这样的原理。应理解,除非以其它方式指示,否则此处描述的程序、过程或方法不相关于或限于任何特定类型的计算环境。可使用各种类型的通用或专用计算环境或它们可执行根据此处所述的教导的操作。以软件示出的所述实施例中的要素可使用硬件实现,反之亦然。考虑可应用本发明的众多可能的实施例,本发明要求保护可落入所附权利要求书及其等效实施方式的范围和精神内的所有这样的实施例。权利要求1.一种计算机实现的方法,包括处理音频信号的比特流,包括如果当处理所述比特流时遇到了一个或多个遗漏帧,则至少部分基于一个或多个因素,从多个可用的信号相关掩盖技术中选择一种掩盖技术;以及执行所选掩盖技术;以及输出结果。2.如权利要求l所述的方法,其特征在于,所述一个或多个因素包括对所述音频信号中所述一个或多个遗漏帧之前的可用帧的分类,且所述分类是包括有话音和无话音的一组可能的分类之一。3.如权利要求2所述的方法,其特征在于如果对所述之前的可用帧的分类为有话音,则所选掩盖技术包括使用基音扩展技术来生成掩盖信号;以及如果对所述之前的可用帧的分类为无话音,则所选掩盖技术包括至少部分基于所述之前的可用帧的能量来生成所述掩盖信号。4.如权利要求2所述的方法,其特征在于,所述一个或多个因素还包括对所述一个或多个遗漏帧的计数,所述计数指示遗漏了多少连续的帧。5.如权利要求4所述的方法,其特征在于如果对所述之前的可用帧的分类和对所述音频信号中所述一个或多个遗漏帧之后的可用帧的分类均为有话音,且所述一个或多个遗漏帧的计数小于一阈值,则所选掩盖技术包括双向掩盖;以及如果对所述之前的可用帧的分类是有话音,且所述一个或多个遗漏帧的计数大于一阈值,则所选掩盖技术包括单向掩盖。6.如权利要求2所述的方法,其特征在于,如果对所述之前的可用帧的分类是有话音,则所选掩盖技术包括如果一掩盖信号长于一阈值持续时间则向所述掩盖信号添加噪声。7.如权利要求2所述的方法,其特征在于,如果对所述之前的可用帧的分类是无话音,则所选掩盖技术包括标识所述之前的可用帧的多个片段;使用所述多个之前的帧的片段来生成多个掩盖信号片段;以及将所述多个之前的帧片段与所述多个掩盖片段合并在一起以生成掩盖信号。8.如权利要求l所述的方法,其特征在于,所选掩盖技术包括生成扩展信号;以及向所述扩展信号添加噪声以产生掩盖信号。9.如权利要求8所述的方法,其特征在于,所选掩盖技术还包括沿所述音频信号的至少一部分逐渐降低所述扩展信号的能量;以及沿所述音频信号的至少一部分逐渐增加所述噪声的能量。10.如权利要求1所述的方法,其特征在于,所述多个可用的信号相关掩盖技术包括用于有话音内容的单向掩盖技术、用于无话音内容的单向掩盖技术、双向掩盖技术和渐弱掩盖技术。11.如权利要求1所述的方法,其特征在于,所述一个或多个因素包括对之前的可用帧的分类、对之后的可用帧的分类、对所述音频信号中的所述之前的可用帧与所述之后的可用帧之间的遗漏帧的计数。12.—种计算机实现的方法,包括当遇到从音频信号的比特流遗漏的一个或多个帧时,至少部分基于一个或多个先前帧中的基音周期生成掩盖信号,包括引入基音抖动;以及输出结果。13.如权利要求12所述的方法,其特征在于,所述引入基音抖动包括向所述掩盖信号的基音添加随机或伪随机因子。14.如权利要求13所述的方法,其特征在于,所述随机或伪随机因子包括正值和负值。15.如权利要求13所述的方法,其特征在于,将一单独的随机或伪随机因子应用于所述掩盖信号的多个部分中的每一个。16.如权利要求12所述的方法,其特征在于,所述引入包括随着离所述一个或多个先前帧的距离增加而增加所述基音抖动。17.—种计算机实现的方法,包括遇到从音频信号的比特流遗漏的一个或多个帧;产生掩盖信号;遇到至少部分依赖于来自所述一个或多个遗漏帧的信息以便解码的后续帧;从所述掩盖信号产生替代信息,以及依赖于所述替代信息来代替来自所述一个或多个遗漏帧的所述信息以对所述后续帧进行解码。18.如权利要求17所述的方法,其特征在于,所述后续帧的自适应码本索引指示当计算对所述后续帧的激励信号的至少一部分的自适应码本计算时要使用的所述一个或多个遗漏帧的片段。19.如权利要求17所述的方法,其特征在于,所述产生替代信息包括至少部分地编码所述掩盖信号的至少一部分。20.如权利要求17所述的方法,其特征在于,所述产生替代信息包括基于所述掩盖信号构造表示残留信号的信息。全文摘要描述了涉及延迟或丢失的已编码音频信息的技术和工具。例如,基于包括对一个或多个遗漏帧附近的一个或多个可用帧中的每一个的分类在内的一个或多个因素来选择用于一个或多个遗漏帧的掩盖技术。作为另一示例,使用来自掩盖信号的信息来产生替代信息,依赖于该替代信息对后续帧进行解码。作为又一示例,使用具有对应于所接收的分组延迟的节点的数据结构来确定所需的解码器分组延迟值。文档编号G01L21/00GK101268351SQ200680018465公开日2008年9月17日申请日期2006年4月5日优先权日2005年5月31日发明者H·A·海莉尔,K·科什达,T·王,W-G·陈,X·孙申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1