发明内容
除了其它技术,本发明通过提供整体音频编码技术来解决此需求,其中该整体音频编码技术使用了瞬变帧中的可变分辩率,并且基于量化数据的量值(magnitude)来生成可变长度的码书分段。
在此,本发明首先介绍本说明书参考使用的2007年8月17日提交的名称为“基于帧的数据的可变分辨率处理”、申请号为200710141662.0(下文简记为“D1”)的发明内容。
D1提出之背景
许多传统的信号处理技术是基于帧的。在这些技术中,将数据流分割为离散的帧,并且通常以相当统一的方式处理每个这样的帧中的数据。在一个示例中,将输入音频信号分割为相等长度的帧。然后,以特定的方式处理每个帧。要为每个帧确定的公共处理参数是块长度,或者等同地,为处理目的而应将帧分割为多少个大小相等的块。块长度决定了初始域(例如,对音频信号为时域)和频(或其它变换)域中的分辨率。更具体地,越短的块在初始域提供越高的分辨率而在频域中提供越低的分辨率。
音频信号经常由多个准稳态片段(episode)构成,其每个都包括被显著瞬变所打断的多个音调频率成分。这样,这种音频信号的一个单独帧经常包括一些与瞬变对应的采样,但是大多数采样与该信号的准稳态部分对应。
因为音频信号中的瞬变能够短到只有几个采样,所以在被检测到包含瞬变的帧内使用的块的大小理想情况下应该只是几个采样,从而滤波器的时间分辨率与该瞬变匹配。不幸的是,在同一帧内使用不同的块大小通常是不实际的。使得在具有被检测到的瞬变的帧内的所有块仅为几个采样的宽度会导致在该帧内的频率分辨率极低,因此,对该帧内的其它采样是不合适的;即,这些其它的采样,只要它们离该瞬变足够远,就是准稳态的并因此要使用高的频率分辨率来更好地处理。这个矛盾通常导致一种折衷的块大小,其既不是对于瞬变采样最优也不是对于同一帧中的准稳态采样最优。
图1中示出了用于处理输入采样12的帧的传统系统的框图。首先,在瞬变检测器14中分析采样12,以判定该帧是否包含瞬变。
根据该检测,在模块16选择窗函数。在这点上,音频编码算法经常使用具有不同时间-频率分辨率的滤波器组。一种常用的滤波器组是MDCT(改进型离散余弦变换),其具有能够由下述基本函数描述的脉冲响应:
其中k=0,1,...,M-1;n=0,1,...,2M-1;w(n)是长度2M的窗函数。参照,例如,H.S.Malvar,“Signal Processing with Lapped Transfroms”,Artech House,1992(这里参照Malvar)。
在这种情况下,时间-频率分辨率由M决定,在此,M有时被称为块大小。大的M意味着低的时间分辨率但是高的频率分辨率,而小的M意味着高的时间分辨率和低的频率分辨率。
为了实现模块16(如图1所示),传统的编码算法通常使用两个块大小。如果在模块14中没有检测到瞬变,则使用大的块大小,其被实现为覆盖整个帧的单个块。或者,如果检测到瞬变,则使用小的块大小,其被实现为覆盖该帧的预定数量的块。
与这两个块大小相对应的主窗函数分别是是窗函数30(在图2中示出并标注为WIN_LONG_LONG2LONG)和窗函数40(在图3中示出并标注为WIN_SHORT_SHORT2SHORT)。为了使得MDCT能够在这两个主窗函数之间正确地切换,完全重构条件(例如,如在Malvar中所述)要求使用三个过渡窗(transition window)函数,例如:窗函数50(图16中示出并标注为WIN_LONG_LONG2SHORT)、窗函数60(图5中示出并标注为WIN_LONG_SHORT2LONG)、和窗函数70(图6中示出并标注为WIN_LONG_SHORT2SHORT)。需要注意,所有这三个过渡窗函数50、60和70与长块(即,覆盖整个帧的块)结合使用。
这样,在传统的技术中,将一个帧分配给单独一个长块(并与长窗口30、50、60或70对应)或一系列相同的短块(并与相同的短窗口40对应)。因为每个块都比块与块之间的间隔要长,导致了长窗口和短窗口的交叠的序列,就如图7中所示的窗函数序列80,其中,每个窗口都覆盖当前块的M个新采样以及先前块的M个采样。在该图中,为了进行参照,与窗函数30、40、50、60或70对应的每个块的中间分别标明为31、41、51、61或71。
需要注意,这种传统的技术不仅基于模块14对当前帧所进行的检测,而且还基于对于先前帧和后续帧所进行的相同检测,来为不包含瞬变的帧选择窗函数。即,窗函数50、60和70用作瞬变帧和非瞬变帧之间的过渡窗函数。
返回到图1,然后,在模块17中,将在模块16中所选择的窗函数应用(对瞬变帧则多次应用)到当前帧的输入采样12。也就是说,对于每个块,将采样值与对应于该块的窗函数值相乘,以获得一组加权值。
然后,使用所选择的窗函数在模块19中处理这些加权值,以提供输出值22。在模块19中执行的处理的具体类型能够根据所希望的应用而变化。例如,对于音频信号,处理可以包括分析、编码、和/或增强。
D1发明内容
D1通过在检测到包含瞬变的帧内使用多个不同窗函数,以及其他内容,来解决这个问题和其它问题。在优选实施例中,D1在具有被检测瞬变的单个数据帧内提供至少两级分辨率。更优选的是,不改变帧内的块大小而提供该多种分辨率。
因此,例如,能够在瞬变的附近使用更高的分辨率而在帧的其它部分使用更低的分辨率。需要注意,未限定的术语“分辨率”这里指的是初始(例如,时间)域中的分辨率。因为频(或其它变换)域中的分辨率与初始域中的分辨率成相反的变化,在发明的这些实施例中,为帧中不包含瞬变的部分提供了更高的频率(或其它变换域)分辨率。此外,通过保持块大小不变,通常能够在不使处理结构变复杂的情况下获得前述优点。
这样,在一方面,D1的目的是处理基于帧的数据,其中,获得数据帧、在所述帧中发生瞬变的指示、以及所述瞬变在所述帧中的位置。根据所述瞬变的指示,为所述帧设定块大小,从而有效地在所述帧中定义多个大小相等的块。另外,根据所述瞬变的所述位置,为所述多个大小相等的块中的不同块选择不同的窗函数,并且通过使用所选择的窗函数来处理所述数据帧。
在优选实施例中,所述块相互交叠,并且每个窗函数也与每个相邻的窗函数交叠,优选地是采用满足完全重构条件的方式。前述性质优选地用于帧中的相邻的块和窗函数,以及在相邻帧中的相邻的块和窗函数。
在任何情况下,优选地将窗函数选择为,在所述多个大小相等的块中所识别出的包含瞬变的块中,提供更高的分辨率。而且,这优选地通过在所识别出的块中使用在所述多个窗函数中的比其它窗函数更窄的瞬变窗函数来实现(例如,通过将在该块中、但是在该瞬变窗函数外部的采样清零)。换而言之,虽然在该帧中的块的宽度保持不变,但是如果需要,则这些块中的窗函数的宽度能够变化,以便为该帧的每个块获得期望的分辨率折衷(例如,时间/频率)。
在这点上,能够用多种不同的方法来定义窗函数的宽度。例如,能够将其定义为窗函数中非零部分的长度、窗函数中高于特定阈值的部分的长度、或窗函数中包含有该窗函数的某个特定百分比的内容(例如,能量)的部分的长度。
因此,能够通过压缩或扩展标准形状,然后将在块中但不包括在该压缩形状中的任何采样清零,来改变窗函数的宽度。或者,能够通过使用不同的形状并且一些形状的更多能量集中在更小的部分,来改变宽度。
在另一方面,D1的目的是处理基于帧的数据,其中,获得数据帧、在所述帧中发生瞬变的指示、以及所述瞬变在所述帧中的位置。选择在所述帧中使用的不同的窗函数,以便在包含所述瞬变的区域内提供更高的分辨率,并且通过使用所选择的窗函数来处理所述数据帧。
前述概括仅仅是为了提供D1的特定方面的简单描述。通过结合附图并参照权利要求和以下优选实施例的详细描述,能够获得对D1的更完全的理解。
D1的主要目的是改进传统系统的窗函数选择组件16。D1的一个特征是引入新的“简短窗函数(brief window function)”,例如,如图8中所示的窗函数100。与传统的窗函数WIN_SHORT_SHORT2SHORT40类似,这个被标注为WIN_SHORT_BRIEF2BRIEF的窗函数100目的是用于短块中。实际上,如以下详细所述,在D1的优选实施例中,窗函数WIN_SHORT_BRIEF2BRIEF100目的是用在与窗函数WIN_SHORT_SHORT2SHORT40相同的帧中。
然而,与传统窗函数不同,简短窗函数100用于采用多个首部和尾部的零权重,对其所占据的块的整个长度(图8中,具有端点102和103)的仅仅中心部分进行信号整形,以便提高该部分的时间分辨率。例如,在短块的长度等于256个采样的情况下,简短窗函数100优选地在中心160个采样中(在这里其还是对称的)为非零,并且在这些采样中的最初16个和最后16个与和简短窗函数100相邻的各个过渡窗函数交叠,并且该窗口的最初48个采样和最后48个采样为零权重。
在D1的优选实施例中,简短窗函数100仅用于在音频帧中检测到瞬变采样的情况中(例如,在包含瞬变采样的块中),而规则的短窗函数(例如,传统窗函数40),或者D1所提供的多个新的过渡函数之一,用于在该帧中剩余部分的准稳态采样。与传统技术相比,这实现了以下可能性:
●能够使用明显更大的块大小,在这种情况下,准稳态采样的频率分辨率得到改善,而瞬变采样周围的时间分辨率保持不变。
●能够保持块大小不变,在这种情况下,准稳态采样的频率分辨率不变,而瞬变采样周围的时间分辨率得到改善。
●能够使用略微更大的块,在这种情况下,准稳态采样的频率分辨率略微得到改善,而瞬变采样周围的时间分辨率也略微得到改善。
使用任何以上选择,解决相矛盾的时间-频率分辨率需求的折衷方案得到改进。
为了便于结合其它两个主窗函数(即,WIN_LONG_LONG2LONG30和WIN_SHORT_SHORT2SHORT40)使用窗函数100(例如,为了满足完全重构条件),优选地引入额外的过渡窗函数。这种过渡窗函数的示例如下。然而,首先需要注意本公开普遍使用的术语:
WIN_BlockLength_PriorWF2Subs WF,其中,BlockLength指示当前窗函数所占据的块的长度(例如,长或短),PriorWF标识在紧邻的先前块中的窗函数的类型(例如,长、短、或简短),而SubsWF标识在紧邻的后续块中的窗函数的类型(例如,长、短、或简短)。
过渡窗函数110(在图9中示出并标注为WIN_SHORT_SHORT2BRIEF)用于短块中,该短块紧邻在包含瞬变的另一个短块之前。即,该窗口紧邻在窗函数WIN_SHORT_BRIEF2BRIEF100之前。
窗函数120(示于图10并标注为WIN_SHORT_BRIEF2SHORT)用于短块中,该短块紧邻在包含瞬变的另一个短块之后。即,该窗口紧邻在窗函数WIN_SHORT_BRIEF2BRIEF100之后。
窗函数130(示于图11并标注为WIN_LONG_LONG2BRIEF)用于长块中,该长块紧邻在包含瞬变的另一个短块之前。即,该窗口覆盖了在包含瞬变的后续帧之前紧邻的帧,该瞬变正好在该后续帧的第一个块中。
窗函数140(示于图12并标注为WIN_LONG_BRIEF2LONG)用于长块中,该长块紧邻在包含瞬变的另一个短块之后。即,该窗口覆盖了在包含瞬变的先前帧之后紧邻的帧,该瞬变正好在该先前帧的最后的一个块中。
窗函数150(示于图13并标注为WIN_LONG_BRIEF2BRIEF)用于长块中,该长块夹在两个包含瞬变的短块之间。即,该窗口覆盖了在两个包含瞬变的帧之间的帧,在先前帧中的瞬变正好在其最后的一个块中,而后续帧中的瞬变正好在其第一个块中。
窗函数160(示于图14并标注为WIN_LONG_SHORT2BRIEF)用于长块中,该长块覆盖了在两个包含瞬变的帧之间的帧,在先前帧中的瞬变正好不在其最后的一个块中,而后续帧中的瞬变正好在其第一个块中。
窗函数170(示于图15并标注为WIN_LONG_BRIEF2SHORT)用于长块中,该长块覆盖了在两个包含瞬变的帧之间的帧,在先前帧中的瞬变正好在其最后的一个块内,而后续帧中的瞬变正好不在其第一个块内。
在每种情况下,窗函数优选地设计为使得其以满足完全重构条件的方式,在每个边上与相邻的窗函数交叠。可以使用的窗函数的具体示例给出如下。
图16是示出用于根据D1的代表实施例选择窗函数的技术的流程图。一般地说,图16中所示出的整个过程会是自动的(例如,采用软件、固件、专用硬件、或者其组合来实现)。
最初地,在步骤202获得数据帧。在这点上,可以根据D1的实施例处理多种不同类型的数据。在此公开中,经常假定该数据对应于音频信号。然而,这不应该看作是限制,而是所获得的数据可以表示任何其他物理现象,比如图像信号、视频信号、或者用于表示热、压力、辐射、运动、距离、任何生物功能、天气和/或任何地质现象的信号。
还需要注意,该数据帧可能已经由该数据的来源(例如,作为数据通过通信频道而被接收的地方)进行了定义。或者,例如,该数据可以以连续流进行接收,并被(例如,在内部)分割为帧以进行处理。在任何情况下,本处理尤其(虽然不是排它地)适用于被分割为各个帧的数据。如上面所示,在某些特定方面,基于帧的处理容许以统一的方式处理整个数据流中的各个部分。
在D1的优选实施例中,每个帧有统一的块大小。在这点上,将块优选地定义为帧的基本信号处理单位。例如,在要将帧中的数据从原始域(例如,在音频情况下的时域)变换到(例如,在信号处理模块19)频域(例如,使用离散余弦变换或快速傅里叶变换),或者变换到由一组正交函数定义的任何其它变换域的情况下,优选地对每个块,分别执行该变换和在该变换域中的任何后续处理。
这样,在优选实施例中,帧可以由单个块覆盖,或者可以由多个大小相等的块覆盖。更优选地,如传统技术一样,仅有两种块大小:覆盖整个帧的大的块大小,和导致均匀分布在整个帧中的多个连续块的小的块大小。
此外,为了处理其它将发生的边界问题,如采用传统技术一样,D1的块优选地相互交叠(例如,以满足完全重构条件的方式)。从概念上,能够将每个块视为包含随后要进行处理(例如,在模块19中)的多个核心采样和与这些核心采样相邻的多个边界采样。在优选实施例中,核心采样是在该序列中的新采样,而边界采样是来自先前块的历史采样。在另一方面,多个帧优选地连续并且不交叠。因此,在一个帧的开始处的块与先前帧交叠。对于由单个块覆盖的帧,该单个块覆盖整个先前帧。
除了获取数据帧本身之外,步骤202还获取瞬变指示符(例如,从瞬变检测器14)。在优选实施例中,所获得的瞬变指示符指示在当前帧中是否存在瞬变,如果存在,则指示其在帧中的位置。如果在当前帧中检测到一个以上的瞬变,则优选地获取(例如,由瞬变检测器14确定,然后将其从瞬变检测器14接收)每个这种瞬变的位置。为了简化解释,本公开有时不失一般性地假设在每个帧中只检测到单个瞬变(如果有的话)。
能够使用例如任何现有技术来执行实际的瞬变检测。通常,瞬变会将自我显示为在非常短的时间内在高频成分中的一个尖峰,因此,能够以此为基础而被检测到。在任何情况下,经常会指定一个阈值级别,在其之下的信号活动将不被视为是瞬变。
返回参考图16,在步骤203,判断在当前帧中是否存在瞬变。优选地,该判断直接基于瞬变检测器14所提供的信息。如果不存在瞬变,则处理进行到步骤205。如果存在一个瞬变,则处理进行到步骤210。
在步骤205,基于当前帧不包含瞬变的判定来设定块大小。在优选实施例中,在这种情况下,使用单个块覆盖整个帧。更优选的,该块包含在当前帧中的所有采样作为核心采样,以及来自一个(或多个)先前帧的部分或全部采样。示例性的块大小为2048个采样,即,1024个核心采样(帧大小也为1024个采样)和1024个来自先前帧的采样。
接下来,在步骤207,为当前帧选择窗函数(假定单个块覆盖整个帧)。在优选实施例中,此步骤包括,评估先前紧邻的和后续紧邻的帧/块。由于窗函数数量的增加,与传统技术相比,适当窗口序列的确定通常略微更为复杂,但是潜在的原理相对更直接。具体地,选择长窗函数,并且具体形状取决于在先前和后续帧中任何瞬变的存在及其位置。具体选择优选地如下进行:
一旦在步骤207中选择了合适的窗函数,就在步骤17应用该窗函数(例如,如上所讨论的)。
在另一方面,如果在步骤203中判定在当前帧中存在瞬变,则处理进行到步骤210,在步骤中,将块大小设置为“小”。例如,对于1024个采样的帧大小而言,为256个采样的块大小,即,128个核心采样和与先前块交叠的128个采样(从而使得该帧被8个块覆盖)。虽然本实施例为这两种可能情形(瞬变/无瞬变)中的每一种都构想了单一块大小,但是需要注意,在其它的实施例中,可以基于任何期望的标准来选择不同的块大小,并且一个帧可以由多个不同大小的块构成。
在任何情况下,一旦确定了块大小,处理进行到步骤212,在该步骤中,为当前帧中的不同的块选择不同的窗函数。因为确知当前帧包含至少一个瞬变,所以WIN_SHORT_BRIEF2BRIEF窗函数100至少将会使用一次(在所确定的一个(或多个)位置处)。更优选地,根据如下原则,为当前帧的短块选择一系列简短窗函数和短窗函数:
●将,WIN_SHORT_BRIEF2BRIEF应用于发生瞬变的块中的采样,以便改善该块的时间分辨率。
●在包含瞬变的窗口之前紧邻的窗口的窗函数具有“...2BRIEF”形式的指数。
●在包含瞬变的窗口之后紧邻的窗口的窗函数具有“..._BRIEF2...”形式的指数。
因此,可以允许任何以下的窗函数组合:
在本公开中题目为“窗函数选择例程”的部分中,阐述了用C语言所编写的具体程序,用于在一个帧中放置窗函数。然而,一般而言,瞬变前的过渡窗函数是基于其自身的块长度(长或短)和在其之前紧邻的窗函数的性质(长、短、或简短),从以上表格的左边列中选出的。相似地,瞬变后的过渡窗函数是基于其自身的块长度(长或短)和在其之后紧邻的窗函数的性质(长、短、或简短),从以上表格的右边列中选出的。优选地,对于在当前帧中并非以下特性的每个块分配窗函数WIN_SHORT_SHORT2SHORT40:(i)瞬变前(在瞬变块之前紧邻的块)、(ii)瞬变(包含瞬变的块)、(iii)瞬变后(在瞬变块之后紧邻的块)、(iv)帧的第一个块、或(v)帧的最后的一个块。对于当前帧中的第一个块(假定其不是瞬变前块、瞬变块、瞬变后块)优选地分配窗函数WIN_SHORT_PriorWF2SHORT,对于当前帧中的最后的一个块(假定其不是瞬变前块、瞬变块、瞬变后块)优选地分配窗函数WIN_SHORT_SHORT2SubsWF。
一旦步骤212完成,过程就进行到步骤17,以应用所选择的窗函数。一旦步骤17完成,过程就返回到步骤202,以处理下一帧。
应当理解,图16中所示的流程图实际上主要是概念的。实际上,如上所述,一个帧的一个(或多个)窗函数的选择通常会受到在相邻帧中瞬变的存在及其位置的影响。因此,一个帧的一个(或多个)窗函数的选择,可以与一个或更多其它帧的一个(或多个)窗函数的选择同时执行。至少,对于当前帧的选择优选地要预想要被应用于后续帧的窗函数。
需要注意,图16中所示的流程图中的部分216能够用于代替在传统窗口选择模块16(图1中)中执行的相应处理。因此,D1的技术典型地能够被容易地体现为对于传统系统的改进。
可以使用D1的一种应用是音频编码/解码。在这种系统中,编码器典型地向解码器指明其用于编码当前帧的窗函数,从而使得解码器能够使用相同的窗函数来解码该帧。采用传统技术,要实现此目的,通常只需要向解码器传送一个窗函数索引,因为:
●对没有检测到瞬变的帧,只使用其中一种长窗函数,并且因此需要向解码器指明。
●对于包含一个或多个瞬变的帧,该帧中的所有窗函数都相同,即,WIN_SHORT_SHORT2SHORT40。图7中示出了这样的帧70(其夹在两个未检测到瞬变的帧之间)。
以上陈述对D1的技术也成立。即,为了使解码器使用与编码器相同的窗函数来解码帧,只需要向解码器传送一个窗函数索引。这是因为:
●对于没有检测到瞬变的帧,D1的技术也只需要向解码器指明使用长窗函数中的哪一个。
●对于检测到瞬变的帧,编码器只需向解码器指明在当前帧的第一个块中是否存在瞬变以及在下一个帧的第一个块中是否存在瞬变;然后,就能够使用在此所述的步骤,确定用于整个帧的窗函数序列。因为在优选实施例中,WIN_SHORT_BRIEF2BRIEF窗函数100用于具有瞬变的块,因此可以使用以下术语来传递此信息:
WIN_SHORT_CurrentSubs,其中,Current(SHORT=否,BRIEF=是)标识在当前帧的第一个块中是否存在瞬变,Subs(SHORT=否,BRIEF=是)标识在后续帧的第一个块中是否存在瞬变。例如,WIN_SHORT_BRIEF2BRIEF指示在当前帧的第一个块中以及后续帧的第一个块中存在瞬变,而WIN_SHORT_BRIEF2SHORT指示在当前帧的第一个块中存在瞬变,而在后续帧的第一个块中不存在瞬变。
图17-20示出了根据D1的示例性窗函数序列。在每个这样的序列中,具有至少一个瞬变的帧(由WIN_SHORT_BRIEF2BRIEF窗函数100所指示)在每个边上被两个不包含瞬变的帧所包围。然而,这些示例并非用于进行限定;每个都具有至少一个瞬变的连续的帧也是允许的。
示例性实现
一个广泛使用的窗函数为如下正弦函数:
如果对于长窗函数M=L、对于短窗函数M=S、以及对于简短窗函数M=B,其中L>S>B,则能够定义以下窗函数:
WIN_LONG_LONG2LONG:
0≤n<2L
WIN_LONG_LONG2SHORT:
WIN_LONG_SHORT2LONG:
WIN_LONG_SHORT2SHORT:
WIN_SHORT_SHORT2SHORT:
0≤n<2S
WIN_SHORT_BRIEF2BRIEF:
WIN_LONG_LONG2BRIEF:
WIN_LONG_BRIEF2LONG:
WIN_LONG_BRIEF2BRIEF:
WIN_LONG_SHORT2BRIEF:
WIN_LONG_BRIEF2SHORT:
WIN_SHORT_SHORT2BRIEF:
WIN_SHORT_BRIEF2SHORT:
一组好的窗口长度参数为:L=1024、S=128、以及B=32。然而,也可以使用其它的参数。
本发明的一方面涉及用于对音频信号进行编码的系统、方法和技术。获得分割成帧的采样音频信号。识别在其中一个帧中的瞬变的位置,并且通过对帧数据执行多分辨率滤波器组分析来生成变换数据采样,包括以不同的分辩率来对包括该瞬变的帧的不同部分进行滤波。基于心理声学模型,通过使用可变数量的比特,对变换数据采样进行量化,来生成量化数据,并且基于量化数据的量值,把该量化数据分成可变长度的分段。把码书分配给每个可变长度的分段,并且用被分配给此可变长度的分段的码书,来对每个可变长度的分段中的量化数据进行编码。
根据前述的配置,经常有可能同时实现对音频数据更准确的编码,而用更少量的比特来表示此数据。
本发明通过提供解码系统、方法和技术来解决此需求,其中,通过把码书应用到指定的量化指数范围(在某些情况下甚至跨越量化单元的边界),并且通过基于比特流内的窗信息来识别要在单个音频数据帧中应用的一序列不同的窗,来从比特流获取音频数据。
因此,在一个典型实施例中,本发明涉及用于对基于帧的比特流中的音频信号进行解码的系统、方法和技术。每个帧包括与该帧有关的处理信息以及表示该帧中音频数据的熵编码量化指数。该处理信息包括:(i)熵码书指数,(ii)用于指定码书将要被应用于的熵编码量化指数范围的码书应用信息,以及(iii)窗信息。通过将所确定的码书应用于对应的熵编码量化指数范围,解码熵编码量化指数。然后通过对所解码的量化指数进行反量化,生成子带采样,并且基于窗信息,确定在单个音频数据帧中所应用了的一序列不同的窗函数。通过对子带采样进行逆变换,并且使用由窗信息所指示的多个不同窗函数,来获得时域音频数据。
根据前述的配置,通常有可能获得更高的效率,并且同时提供对原始音频数据的更良好再现。
前述的概述仅仅是为了提供本发明的特定方面的简要描述。通过参考权利要求和以下关于优选实施例的详细描述,并结合附图,可以获得关于本发明的更完整的理解。
前述的概述仅仅是为了提供本发明的特定方面的简要描述。通过参考权利要求和以下关于优选实施例的详细描述,并结合附图,可以获得关于本发明的更完整的理解。
具体实施方式
<编码系统>
本发明涉及用于对音频信号进行编码,例如以便后续存储和传输的系统、方法和技术。本发明可以使用到的应用包括,但不限于:数字音频广播、数字电视(卫星、地面和/或有线广播)、家庭影院、数字影院、镭射视频碟片播放器、因特网上的内容流以及个人音频播放器。
图21是根据本发明的典型实施例的音频信号编码系统10的框图。如下所述,在一个典型子实施例中,完全用计算机可执行的代码来实现图21所示的各个部分或组件。然而,在替换的实施例中,可以用此处所讨论的任何其它方法来实现这些部分或组件中的任意或全部。
最初,把与初始音频信号的时间采样对应的脉冲编码调制(PCM)信号12输入到帧分割部分14。就这点而言,初始音频信号典型地由多个声道组成,例如用于普通立体声的左和右声道,或者用于环绕声的5-7个标准声道以及一个低频效果(LFE)声道。LFE声道典型地具有有限的带宽(例如小于120Hz),并且具有比标准声道更高的音量。在整个描述中,用x.y来表示给定声道的配置,其中x表示标准声道的数量,y表示LFE声道的数量。因此,将用2.0来表示普通立体声,并且用5.1、6.1或7.1来表示典型的常规环绕声。
本发明的优选实施例支持多达64.3的声道配置,以及从8千赫兹(kHz)到192kHz的采样频率,包括44.1kHz到48kHz,具有至少为24比特的精度。一般来说,除非此处特别说明,都独立于其它声道来对每个声道进行处理。
可以从外部源把PCM信号12输入到系统10,或者可替换地可以由系统10例如通过采样原始音频信号内部生成PCM信号12。
在帧分割部分14,把每个声道的PCM采样12分割成时域中的连续帧序列。就这点而言,在本发明的技术中,把帧看作是用于处理目的的基本数据单元。优选地,每个这种帧具有从相对小的帧大小集合中所选取的固定采样数量,其中所选择的对于任何特定时间间隔的帧大小取决于例如采样速率和帧间所能容忍的延迟量。更优选地,每个帧包括128、256、512或1024个采样,其中除了降低延迟非常重要的情况之外,优选更长的帧。在以下讨论的大多实例中,假设每个帧由1024个采样构成。然而,不能将这种实例当作是限制性的。
把从帧分割部分14所输出的每个数据采样帧输入到瞬变分析部分16,其确定所输入的PCM采样帧是否包含信号瞬变,优选地将该瞬变定义为信号能量的突然迅速的上升(冲击)或下降。基于这种检测,随后把每个帧分类成瞬变帧(即,包括瞬变的帧)或准稳态帧(即,不包括瞬变的帧)。此外,瞬变分析部分16对每个瞬变信号的位置和持续时间进行识别,并且随后使用该信息来识别“瞬变分段”。可以使用任何已知的瞬变检测方法,包括美国专利申请11/029722申请中所述的任何瞬变检测技术。
此处所用的术语“瞬变分段”是指信号的一部分,其具有相同或相似统计特性。因此,准稳态帧通常由单个瞬变分段构成,而瞬变帧通常由两个或三个瞬变分段构成。例如,如果在一帧中仅发生了瞬变的冲击或下降,那么该瞬变帧通常会具有两个瞬变分段:一个覆盖了该帧在冲击或下降之前的部分,另一个覆盖了该帧在冲击或下降之后的部分。如果在瞬变帧中冲击和下降都发生了,那么通常将会存在三个瞬变分段,每个分段各自覆盖由冲击和下降所分割的帧的部分。随后把该基于帧的数据和瞬变检测信息提供给滤波器组18。
可变分辩率的分析滤波器组18将每个声道音频的音频PCM采样分解成子带信号,其中子带的性质取决于所使用变换技术。就这点而言,尽管滤波器组18可以使用各种不同的变换技术,在优选实施例中,该变换是单一的并且基于正弦的。如US11/029722申请中所详述,更优选地,滤波器组18使用离散余弦变换(DCT)和改进型离散余弦变换(MDCT)。在此处所述的大多实例中,假设使用的是MDCT。因此,在优选实施例中,对于每个MDCT块,子带信号由多个子带采样构成,每个子带采样对应于不同的子带频率;此外,由于变换的单一性质,子带采样的数量等于由MDCT所处理的时域采样的数量。
此外,在优选实施例中,基于从瞬变分析部分16所接收的瞬变检测结果来对滤波器组18的时一频分辩率进行控制。更优选地,滤波器组使用D1申请中所述的技术。
一般来说,该技术使用一个长变换块来覆盖每个准稳态帧,并且使用多个相同的更短变换块来覆盖每个瞬变帧。在典型实例中,帧大小是1024个采样,把每个准稳态帧视为由一个初级块(具有1028个采样)构成,把每个瞬变帧视为由八个初级块(每个具有128个采样)构成。为了避免边界效应,MDCT块比初级块大,并且优选地是初级块的两倍大小,因此由2048个采样构成长MDCT块,由256个采样构成短MDCT块。
在应用MDCT之前,把窗函数应用到每个MDCT块,以便对各个滤波器的频率响应进行整形。因为仅将单个长MDCT块用于准稳态帧,所以使用单个窗函数以便满足完全重构要求,尽管其特定形状优选地取决于邻近帧中所使用的窗函数。另一方面,与常规技术不同,该优选实施例的技术在单个瞬变帧中使用不同的窗函数。更优选地,当在该帧中使用单个变换(例如MDCT)块大小的同时,选择这种窗函数,以便在瞬变帧中至少提供两个分辩率级别。
结果,例如,可以在瞬变信号附近实现更高的时域分辩率(以更低的频域分辩率为代价),并且可以在该瞬变帧的其它部分(例如更稳态的部分)实现更高的频域分辩率(以更低的时域分辩率为代价)。此外,通过保持变换块大小恒定,通常无需复杂化处理结构就能实现前述的优势。
在优选实施例中,除了常规的窗函数,还引入了以下新的“简短”窗函数WIN_SHORT_BRIEF2BRIEF:
其中,S是短初级块大小(例如128个采样),并且B是简短块大小(例如B=32)。如D1申请中所详述的,优选地还使用额外的过渡窗函数,以便满足完全重构要求。
注意到,同样如D1申请中所详述,可以使用“简短”窗函数的其它具体形式。然而,在本发明的优选实施例中,与瞬变帧的其它(例如更稳态的)部分中所使用的其它窗函数相比,所使用的“简短”窗函数的能量更多地汇聚在变换块的更小部分中。事实上,在特定的实施例中,多个函数值为0,从而保持中央和初级块的采样值。
在重组交叉部分20,优选地对当前声道的当前帧的子带采样进行重排列,以便把对应于相同子带的相同瞬变分段中的采样集合在一起。在具有长MDCT的帧(即准稳态帧)中,已经按照频率升序(例如从子带0到子带1023)重新排列了子带采样。因为MDCT的子带采样是按照自然顺序排列的,所以不把重构交叉应用到具有长MDCT的帧。
然而当帧是由nNumBlocksPerFrm个短MDCT块(即瞬变帧)组成的时候,按照频率升序(例如从子带0到子带127)来排列每个短MDCT的子带采样。再把这种子带采样的分组按照时间顺序排列,从而形成从0到1023的子带采样的自然顺序。
在重组交叉部分20中,通过将每个瞬变分段中具有相同频率的采样排列在一起,然后按照频率升序对它们进行排列,来对这些子带采样进行重构交叉。结果通常是减少了需要传输的比特的数量。
如下,是具有三个瞬变分段和八个短MDCT块的帧的自然顺序的实例:
再次,自然顺序的子带采样的线型序列是[0……1023]。应用了重构交叉以后的对应数据排列如下:
重构交叉顺序的子带采样的线性序列是[0,2,4,……,254,1,3,5,……,255,256,259,302,……,637,……]。
此处所用的“临界频带”是指人耳的频率分辩率,即带宽Δf,在该带宽内,人耳不能分辨出不同的频率。带宽Δf随着频率f的增加而增加,其中f和Δf之间近似指数关系。每个临界频带可以表示为滤波器组的多个邻近的子带采样。例如,短(例如128采样)MDCT的临界频带的范围典型地在最低频率时的4个子带采样宽度到最高频率时的42个子带采样宽度之间。
心理声学模型32提供了人耳的噪声掩蔽门限。心理声学模型32所基于的基本概念是:人的听觉系统中有门限。在这些值(掩蔽门限)之下的音频信号不能被听到。结果,没有必要把这部分信息发送给解码器。心理声学模型32的目的是为了提供这些门限值。
可以使用现有的通用心理声学模型,例如MPEG的两种心理声学模型。在本发明的优选实施例中,心理声学模型32输出每个量化单元的掩蔽门限(如下定义)。
可选择的和/差编码器22使用特定的联合声道编码技术。优选地,编码器22如下把左/右声道对的子带采样变换成和/差声道对:
和声道=0.5×(左声道+右声道);以及
差声道=0.5×(左声道-右声道)。
因此,在解码期间,在左/右声道中的子带采样重构如下:
左声道=和声道+差声道;以及
右声道=和声道-差声道。
可选择的联合强度编码器24通过使用人耳在高频的声学成像定位特性,对在联合声道中的高频成分进行编码。心理声学模型指示出人耳对于在高频的空间声象的感觉,主要是由左/右音频信号的相对强度来定义的,而较少是由各个频率成分定义的。这是联合强度编码的理论基础。以下是用于联合强度编码的简单技术。
对于待组合的两个和三个声道,把对应的子带采样交叉加到声道中,并且用全部子带采样替换其中一个初始源声道(例如,左声道)中的子带采样,称为联合子带采样。然后对于每个量化单元,调整功率,以便匹配该初始源声道的功率,保留每个声道的每个量化单元的比例因子。最后,仅对经过功率调整的联合子带采样和每个声道中的量化单元的比例因子进行保留和发送。例如,如果Es是源声道中的联合量化单元的功率,并且Ej是联合声道中的联合量化单元的功率,那么可以如下计算比例因子:
全局比特分配部分34把多个比特分配到每个量化单元。就这点而言,“量化单元”优选地由子带采样矩形构成,该子带采样矩形由频域中的临界频带和时域中的瞬变分段来界定。在此矩形中的所有子带采样都属于相同量化单元。
这些采样的序号可以不同,例如,因为在本发明的优选实施例中有两类子带采样排列顺序(即自然顺序和交叉顺序),但是它们优选地表示相同分组的子带采样。在一个实例中,第一量化单元由子带采样0,1,2,3,128,129,130和131所组成。然而,第一量化单元的子带采样的序号变成0,1,2,3,4,5,6和7。这两组不同序号表示相同的子带采样。
为了将量化噪声功率的值降低到低于每个掩蔽门限值,全局比特分配部分34将每个帧可用的所有比特在该帧的量化单元之间进行分配。优选地,通过调整量化单元的量化步长,来控制每个量化单元的量化噪声功率和分配给该量化单元的比特数量。
可以使用各种现有的比特分配技术,包括例如,注水。在注水技术中,(1)确定具有最大NMR(噪声掩蔽比)的量化单元;(2)减小分配给该量化单元的量化步长,从而降低量化噪声;并且随后(3)重复前述的两个步骤,直到所有量化单元的NMR小于1(或者其它预先设定的门限)为止,或者直到用尽了在当前帧中所允许的比特为止。
如上所述,量化部分26优选地通过使用由全局比特分配器34所提供的统一量化步长,直接地对每个量化单元中的采样进行量化,来对子带采样进行量化。然而,根据对全局比特分配部分34进行调整,可以使用其它任何量化技术。
码书选择器通过量化指数的局部统计特性来对这些量化指数进行分组或分段,并且从码书库中选择码书来分配给每个量化指数组。在本发明的优选实施例中,基本上同时发生分段和码书选择。
在本发明的优选实施例中,量化指数编码器28(以下额外详细描述)通过使用码书选择器36为每个分段所选择的码书,来对量化指数执行霍夫曼编码。优选地,对每个声道的子带采样量化指数执行霍夫曼编码。更优选地,使用两组码书(一组用于准稳态帧另一组用于瞬变帧)来对子带采样量化指数执行霍夫曼编码,其中每组码书由9个霍夫曼码书组成。因此,可以使用多达9个霍夫曼码书的优选实施例,来对给定帧的量化指数进行编码。这些码书的属性优选地如下所示:
码本标号(mnHS) |
维数 |
量化标号范围 |
中平(Midtread) |
准稳态码本组 |
瞬变码本组 |
0 |
0 |
0 |
保留 |
保留 |
保留 |
1 |
4 |
-1,1 |
是 |
HuffDec10_81x4 |
HuffDec19_81x4 |
2 |
2 |
-2,2 |
是 |
HuffDec11_25x2 |
HuffDec20_25x2 |
3 |
2 |
-4,4 |
是 |
HuffDec12_81x2 |
HuffDec21_81x2 |
4 |
2 |
-8,8 |
是 |
HuffDec13_289x2 |
HuffDec22_289x2 |
5 |
1 |
-15,15 |
是 |
HuffDec14_31x1 |
HuffDec23_31x1 |
6 |
1 |
-31,31 |
是 |
HuffDec15_63x1 |
HuffDec24_63x1 |
7 |
1 |
-63,63 |
是 |
HuffDec16_127x1 |
HuffDec25_127x1 |
8 |
1 |
-127,127 |
是 |
HuffDec17_255x1 |
HuffDec26_255x1 |
9 |
1 |
-255,255 |
否 |
HuffDec18_256x1 |
HuffDec27_256x1 |
在本发明的替换实施例中执行其它类型的熵编码(例如算术编码)。然而,在本实例中假设使用霍夫曼编码。此处所用的“霍夫曼”编码旨在包括任何用假设的符号概率、使用比较不普通的源符号更短的比特串来表示更普通的源符号的前缀二进制代码,而不管该编码技术是否与最初的霍夫曼算法相同。
考虑到预期将由量化指数编码器28执行的编码,在优选实施例中码书选择器36的目标是在每个声道中选择分类指数的分段,并且确定将哪个码书应用到每个分段。第一步是基于由瞬变分析部分16所识别的帧类型(准稳态或瞬变)来确定将使用哪个码书组。然后优选地按照以下方式,选择具体的码书和分段。
在常规音频信号处理算法中,熵码书的应用范围与量化单元相同,因此通过量化单元中的最大量化指数来定义熵码书。因此,没有进一步优化的可能。
相反,在本发明的优选实施例中,码书选择忽视了量化单元边界,而是同时选择恰当的码书及其将要应用于的分段。更优选地,通过量化指数的局部统计特性来把量化指数分割成分段。通过这些分段的边缘来定义码书的应用范围。参考图22中的流程图,描述了用于确定码书分段和对应码书的技术实例。
最初,在步骤82,选择码书分段以及对应码书的最初集合。可以通过各种不同的方法来执行这个步骤,例如使用群集技术,或者通过在连续间隔内将仅能够由给定大小的码书容纳的量化指数简单地集合在一起。就后一种方法而言,在可应用的码书组(例如九个不同的码书)中,主要的差别是能够容纳的最大量化指数。因此码书选择首先包括选择能够容纳所考虑的所有量化指数的量值的码书。因此,步骤82的一种方法是从容纳第一个量化指数的最小码书开始,并且随后一直使用该码书,直到需要更大的码书或者直到可以使用更小的码书。
无论如何,步骤82的结果是提供码书分段和对应码书的最初序列。一个实例包括图23中所示的分段101-113。此处,每个码分段101-113具有通过其水平长度来指示的长度,其中通过其垂直高度来表示分配的码书
接下来,在步骤83中,再次,优选地基于量化指数的量值,按照需要或希望合并码书分段。就这点而言,因为码书分段优选地可以具有任意边界,所以这些边界的位置典型地必须发送到解码器。因此,如果在步骤82之后,码书分段的数量过于巨大,优选地排除一些小的码书分段,直到满足指定的准则85为止。
在优选实施例中,排除方法是把小码书分段(例如最短的码书分段)与具有最小码书指数(对应于最小码书)的码书分段相合并,以合并到所考虑的码书分段的左边和右边。图24提供了将步骤83应用到图23所示的码书分割的结果的实例。在此情况下,把分段102与(使用相同码书的)分段101和103合并在一起,以提供分段121,把分段104和106与分段105合并在一起,以提供分段122,把分段110和111与分段109合并在一起,以提供分段125,并且把分段113与分段112合并在一起,以提供分段126。如果码书指数等于0(例如分段108),则没有量化指数需要发送,所以优选地不拒绝这种分离的码书分段,因此在本实例中不拒绝码书分段108。
如图22所示,优选地重复地应用步骤83,直到满足了结束准则85。取决于特定的实施例,结束准则包括,例如,分段的总数量不超过指定的最大数,每个分段具有最小长度和/或所参考的码书总数不超过指定的最大数。在此交互过程中,可以基于各种不同的准则来选择排除下一个分段,这些准则例如最短的现有分段,其码书指数可以被增加最小量的分段,比特数量的最小投影增加,或者将获得的总体净效益(例如,取决于分段长度以及其码书指数所需要的增加)。
当把如图25所示的常规分割与如图26所示的根据本发明的分割进行比较的时候,就可以了解本技术的优势。在图25中,把量化指数分割成四个量化分段151-154,具有对应的右边界161-163。根据常规方法,量化分段151-154直接对应于量化单元。在该例中,最大量化指数171属于量化单元154。因此,对于量化单元154,必须选择大的码书(例如码书c)。这不是一个明智的选择,因为量化单元154的大部分量化指数很小。
相反,当应用本发明的技术时,用上述技术,把相同的量化指数分割成码书181-184。结果,用码书分段183(已经基于其中的其它量化指数的量值,把码书c分配给了码书分段183)中的量化指数来对最大量化指数171进行分组。虽然此量化指数171仍然需要相同大小的码书(例如码书c),但是它与其它大的量化指数共享此码书。即,此大码书与码书分段183中的量化指数的统计特性匹配。此外,因为在码书分段184中所有的量化指数都很小,那么对其选择小的码书(例如码书a),即,该码书与其中的量化指数的统计特性匹配。很容易理解,该码书选择技术通常可以减少用于发送量化指数的比特数量。
如上所示,然而,使用此技术具有一些“额外花消”。常规的技术通常仅需要把码书指数的边信息发送到解码器,因为他们的应用范围与量化单元相同。然而,本技术通常不仅需要发送码书指数的边信息,而且需要把应用范围发送到解码器,因为该应用范围和量化单元典型地是不相关的。为了解决这个问题,在某些实施例中,如果不能补偿此“额外花消”,则本发明的技术默认使用常规方法(即,简单地把量化单元用作量化分段),无论如何希望这种情况极少发生。如上所示,解决此问题的一种方法是在允许的统计特性的条件下,分成尽可能大的码书分段。
一旦码书选择器36完成了此处理,把分段数量、每个分段的长度(每个码书的应用范围)、以及每个分段的所选码书指数提供给复用器45,以包含在比特流中。
量化指数编码器28使用码书选择器36所选择的分段和对应码书对量化指数执行压缩编码。在码书HuffDec18_256x1中和码书HuffDec27_256x1(对应于码书指数9)中的最大量化指数,即255,表示逸出(ESCAPE)。因为量化指数可能可以超过两个码书的最大范围,所以使用递归编码来对更大的指数进行编码,其中q表示为:
q=m*255+r
其中m是q的商,并且r是q的余数。用对应于码书指数9的霍夫曼码书对余数r进行编码,而直接将商q打包在比特流中。优选地用霍夫曼码书对用于打包商q的比特数进行编码。
因为码书HuffDec18_256x1和码书HuffDec27_256x1不是中平(midtread)的,当发送绝对值时,发送用于表示符号的额外比特。由于对应于码书指数1到8的码书是中平的,所以在霍夫曼解码后加上偏移量来重构量化指数符号。
复用器45把所有霍夫曼码,以及上述的所有额外信息、用户定义的任何辅助信息一起打包成单个比特流60。此外,对于当前音频数据帧,优选地插入错误代码。更优选地,编码器10打包完所有的音频数据之后,把最后一个字(32比特)中的所有空闲比特设为1。在解码器端,如果不是所有的空闲码字都等于1,那么在当前帧中断言错误,并且启动错误处理过程。
在本发明的优选实施例中,因为辅助数据处在错误检测码之后,所以在完成了代码错误检测之后,解码器可以停止并且等待下一个音频帧。换句话说,辅助数据对解码没有影响,并且不需要通过解码器来处理。结果,完全可以由用户来确定对辅助数据的定义和理解,从而给用户很大的灵活性。
每个帧的输出结构优选地如下:
帧头 |
同步字(优选地,0x7FFF)音频信号的描述,例如采样速率、普通声道的数量、LFE声道的数量等等 |
普通声道:1到64 |
所有普通声道的音频数据 |
LEF声道:0到3 |
所有LFE声道的音频数据 |
错误检测 |
当前音频数据帧的错误检测码。当检测到错误时,运行错误处理程序。 |
辅助数据 |
时间码和/或任何其它用户定义的信息 |
每个普通声道的数据结构优选地如下:
每个LFE声道的数据结构优选地如下:
解码系统
本发明的解码系统涉及用于,例如在从存储设备获得了或者通过通信声道接收了音频信号后,对音频信号进行解码的系统、方法和技术。可以使用本发明的应用包括,但不限于:数字音频广播、数字电视(卫星、地面和/或有线广播)、家庭影院、数字影院、镭射视频碟片播放器、英特网上的内容流以及个人音频播放器。例如,结合前面<编码系统>部分公开的方法和技术,来使用本发明的音频解码系统、方法和技术。
图27示出了可以使用根据本发明的解码器100的某些示例性的通用环境。一般而言,根据本发明的解码器100接收基于帧的比特流20作为输入,并且,对于每个帧,该比特流20包括该帧中的实际音频数据(典型地,熵编码量化指数)以及各种处理信息(例如,包括控制、格式化和/或辅助信息)。通常经由硬线连接或者经由可断开的连接器,把比特流20输入到解码器100。
如上所示,比特流20可以源于各种不同源中的任意一个。该源包括:例如,通过天线32接收的数字射频(或其它电磁)传输,并将其在解调器34中转换成比特流20;存储设备36(例如半导体、磁或光存储设备),通过读卡器38从存储设备36获得比特流20;电缆连接42,解调器44从电缆连接42得到比特流20;直接提供比特流的电缆连接48。例如,可以用前面<编码系统>部分中所述的任何技术来生成了比特流20。如所示,在本发明的特定实施例中,比特流20本身可能得自其它信号,例如,复用比特流,如那些根据MPEG 2系统协议复用的比特流,其中音频比特流与各种格式的视频比特流、其它格式的音频比特流、以及元数据复用在一起;或者用表示音频数据比特的冗余编码的、交织的和/或收缩的符号来调制(使用任意已知的技术)的接收射频信号。
如前面<编码系统>部分中所详述,在本发明的优选实施例中,已经把比特流20中的音频数据变换成了子带采样(优选使用统一的基于正弦的变换技术),进行了量化并且随后进行了熵编码。在优选实施例中,使用改进型离散余弦变换(MDCT)对音频信号进行了变换,并且对其进行了量化,然后使用恰当的霍夫曼编码对其进行了熵编码。然而在可替换的实施例中,可以改为使用其它的变换和/霍熵编码技术,并且以下讨论中所涉及的MDCT或霍夫曼应理解为仅是示例性的。此处把音频数据称为脉冲编码调制(PCM)采样或音频采样,因为变换优选是统一的,所以采样数量在时域中和在变换域中是相同的。
同样,尽管此处所述的音频数据以及许多控制、格式和辅助信息都已被执行霍夫曼编码,但是应该明白的是,这些编码通常是选择性的,并且优选实施例中仅为了使用该编码来减少数据大小。对于使用了霍夫曼编码的情况,解码器10优选存储与编码器所使用的码书相同的码书。例如,优选地,霍夫曼码书中“码”是十进制格式的霍夫曼码,“比特增量”是与前一行上的码相比,当前码所需的额外比特(十进制格式)数量,并且“指数”是十进制格式的未编码值。
在优选实施例中,输入音频数据是基于帧的,其中每个帧定义了特定的时间间隔,并且包括在该时间间隔中多个音频声道的采样。优选地,每个这种帧具有从相对小的帧大小集合中选择的固定采样数量,其中任意特定时间间隔的所选帧大小取决于,例如,采样速率和帧间所能容忍的延迟量。更优选地,每个帧包括128、256、512或1024个采样,其中优选更长的帧,除非降低延迟非常重要。在以下讨论的大多实例中,假设每个帧由1024个采样构成。然而,不能将这种实例当作是限制性的。
为了处理(首先是MDCT或其它变换处理),把帧分割成多个更小的、优选是大小相等的块(有时称为“初级块”,以便将其与典型地更长的MDCT或其它变换块进行区别)。图28A和28B中示出了此分割。在图28A中,通过单个初级块51(例如包括1024个音频数据采样)来覆盖整个帧50。在图28B中,用八个连续的初级块52-59(例如每个块包括128个音频数据采样)来覆盖帧50。
可以把每个采样帧归类为瞬变帧(即包括信号瞬变的帧)或准静态帧(即不包括瞬变的帧)。就这点而言,优选把信号瞬变定义为信号能量的突然迅速的上升(冲击)或下降。瞬变信号仅稀疏地发生,并且为了本发明的目的,假设在每个帧中最多发生两个瞬变信号。
此处所用的术语“瞬变分段”指其信号具有相同或相似统计特性的整个帧或帧的一个分段。因此,准静态帧通常由单个瞬变分段构成,而瞬变帧通常由两个或三个瞬变分段构成。例如,如果在帧中仅发生了冲击或下降,那么瞬变帧通常会具有两个瞬变分段:一个覆盖了该帧在冲击或下降之前的部分,另一个覆盖了该帧在冲击或下降之后的部分。如果在瞬变帧中冲击和下降都发生了,那么通常将会存在三个瞬变分段,每个分段各自覆盖由冲击和下降所分割的帧的部分。
图29A-C示出了这些可能性,其中每个图示出了被分割成八个大小相等的初级块61-68的单个采样帧60。在图29A中,瞬变信号70在第二个块62中发生,因此具有两个瞬变分段,一个由块61单独构成,并且另一个由块62-68构成。在图29B中,瞬变信号71在块64中发生,并且另一个瞬变信号72在块66中发生,因此具有三个瞬变分段,一个由块61-63构成,一个由块64-65构成并且最后一个由块66-68构成。在图29C中,瞬变信号73发生在块68中,因此具有两个瞬变分段,一个由块61-67构成,另一个由块68单独构成。
图30是根据本发明的典型实施例的音频信号解码系统100的框图,其中,实心箭头指示音频数据流,虚线箭头指示控制、格式和/或辅助信息流,并且虚线框指示出在本实施例中只有当比特流20中的对应控制数据指明时才例示的组件,以下将详细描述。如下所述,在典型的子实施例中,图30中所示的各个部分、模块或组件可以完全用计算机可执行代码来实现。然而,在可替换的实施例中,可以用此处所述的任何其它方法来实现任意或全部这些部分或组件。
最初将比特流20输入到解复用器115,其把比特流20分割成数据帧,并且对每个帧中的数据进行拆包,以便分离处理信息和音频信号信息。就第一个任务而言,优选将比特流20中的数据解释为帧序列,其中每个新帧以相同的“同步字”(优选是0x7FFF)开始。根据本发明的典型实施例,用于执行这些功能的计算机程序列表包括例如此处所述的Bit_Stream()、Frame()、FrameHeader()和UnpackWinSequence()模块,以及这些列出的模块所调用或参考的其它模块或对它们的描述。
每个数据帧的结构优选如下:
头信息
帧头中优选包括单比特字段“nFrmHeaderType”,用于指示帧的两个可能的不同类型之一,通用帧(例如通过nFrmHeaderType=0来指示)或扩展帧(例如通过nFrmHeaderType=1来指示)。位于该标志位之后的比特组成了剩下的头信息。在优选实施例中,根据该帧是被指定为通用还是扩展格式,将该信息总结如下,
因此,例如,如果nFrmHeaderType指示通用帧头,那么把nFrmHeaderType之后前10个比特解释为nNumWord(下面定义),把接下来的3个比特解释为nNumNormalCh(下面定义),等等。然而,如果nFrmHeaderType指示扩展帧头,那么把nFrmHeaderType之后前13个比特解释为nNumWord,把接下来的6个比特解释为nNumNormalCh,等等。以下讨论将解释在本发明的本实施例中所用的各种头字段。
字段“nNumWord”指示在当前帧(32比特码字)中从同步码字(其第一个比特)的开始到该当前帧的错误检测字的结束的音频数据长度。
字段“nNumBlocksPerFrm”指示对应于当前音频数据帧的短窗改进型离散余弦变换(MDCT)块的数量。在本发明的优选实施例中,一个短窗MDCT块包括128个初级音频数据采样(优选是熵编码的量化的子带采样),因此对应于音频数据帧的初级音频数据采样数量是128×nNumBlocksPerFrm。
注意到,为了避免边界效应,MDCT块优选大于初级块,并且更优选是初级块大小的两倍。因此,如果短初级块由128个音频数据采样构成,那么短MDCT块优选由256个采样构成,并且如果长初级块由1024个音频数据采样构成,那么长MDCT块优选由2048个采样构成。更优选地,每个初级块由新的(后来的)音频数据采样构成。
字段“nSampleRateIndex”指示用于音频信号的采样频率的指数。以下表格中示出了指数集合和对应的采样频率的实例:
nSampleRateIndex |
采样频率(Hz) |
0 |
8000 |
1 |
11025 |
2 |
12000 |
3 |
16000 |
4 |
22050 |
5 |
24000 |
6 |
32000 |
7 |
44100 |
8 |
48000 |
9 |
88200 |
10 |
96000 |
11 |
174600 |
12 |
192000 |
13 |
保留 |
14 |
保留 |
15 |
保留 |
字段“nNumNormalCh”指示标准声道的数量。通过帧头类型来确定表示此字段的比特数量。在本实施例中,如果nFrmHeaderType指示了通用帧头,那么使用3个比特,并且标准声道的数量可以在1到8之间变化。另一方面,如果nFrmHeaderType指示了扩展帧头,那么使用6个比特,并且标准声道的数量可以在1到64之间变化。
字段“nNumLfeCh”指示LFE声道的数量。在本实施例中,如果nFrmHeaderType指示了通用帧头,那么使用1个比特,并且标准声道的数量可以在0到1之间变化。另一方面,如果nFrmHeaderType指示了扩展帧头,那么使用2个比特,并且标准声道的数量可以在0到3之间变化。
字段“bAuxChCfg”指示在当前帧的末端是否存在任何辅助信息,例如,保护额外的信道配置信息。优选地,用bAuxChCfg=0表示否,用bAuxChCfg=1表示是。
字段“bUseSumDiff”指示是否已对当前帧应用了和/差编码。优选仅在通用帧头中显示此字段,并且不在扩展帧头中显示此字段。优选地,用bUseSumDiff=0表示否,bUseSumDiff=1表示是。
字段“bUseJIC”指示是否已对当前帧应用了联合强度编码。同样优选仅在通用帧头中显示此字段,并且不在扩展帧头中显示此字段。优选地,用bUseJIC=0表示否,bUseJIC=1表示是。
如果已对当前帧应用了联合强度编码,字段“nJicCb”指示联合强度编码的开始临界频带。同样优选仅在通用帧头中显示此字段,并且不在扩展帧头中显示此字段。
如上所述,头中的所有数据都是处理信息。以下将显而易见,一些声道专用数据也是处理数据,尽管绝大部分这种数据是音频数据采样。
声道数据结构
在优选实施例中,每个标准声道的通用数据结构如下:
然而,在特定实施例中,并不是所用标准声道都包含窗序列信息。如果没有把窗序列信息提供给一个或多个声道,优选从提供给声道0(ChO)的窗序列信息中拷贝此数据组,尽管在其它实施例中可以从任何其它指定声道中拷贝该信息。
在优选实施例中,每个LFC声道的通用数据格式如下:
如上所示,窗序列信息(仅提供给标准声道)优选包括MDCT窗函数指数。在本实施例中,把该指数指定为“nEinTypeCurrent”,并且具有以下的值和意义:
nWinTypeCurrent |
窗函数 |
窗函数长度(采样数量) |
0 |
WIN_LONG_LONG2LONG |
2048 |
1 |
WIN_LONG_LONG2SHORT |
2048 |
2 |
WIN_LONG_SHORT2LONG |
2048 |
3 |
WIN_LONG_SHORT2SHORT |
2048 |
4 |
WIN_LONG_LONG2BRIEF |
2048 |
5 |
WIN_LONG_BRIEF2LONG |
2048 |
6 |
WIN_LONG_BRIEF2BRIEF |
2048 |
7 |
WIN_LONG_SHORT2BRIEF |
2048 |
8 |
WIN_LONG_BRIEF2SHORT |
2048 |
9 |
WIN_SHORT_SHORT2SHORT |
256 |
10 |
WIN_SHHORT_SHORT2BRIEF |
256 |
11 |
WIN_SHORT_BRIEF2BRIEF |
256 |
12 |
WIN_SHORT_BRIEF2SHORT |
256 |
当nWinTypeCurrent=0、1、2、3、4、5、6、7或8时,指示长MDCT窗函数,并且把此单个长窗函数用于整个帧。nWinTypeCurrent的其它值(nWinTypeCurrent=9、10、11或12)指示短MDCT窗函数。对于后面的情况,当前帧由nNumBlockPerFrm(例如多达8个)个短MDCT组成,并且nWinTypeCurrent仅指示这些nNumBlockPerFrm个短MDCT的第一个和最后一个窗函数。结合D1申请中所详述的完全重构要求,优选通过瞬变出现的位置,来确定在该帧中的其它短窗函数。在任意情况下,接收数据优选包括足以完全确定编码器端所使用的整个窗序列的窗信息。
就这点而言,在本实施例中,字段“nNumCluster”指示当前帧中瞬变分段的数量。当窗函数指数nWinTypeCurrent指示出在当前帧(nWinTypeCurrent=0、1、2、3、4、5、6、7或8)中应用了长窗函数时,那么当前帧是准静态的,因此瞬变分段的数量隐含为1,并且nNumCluster不需要出现在比特流中(因此优选不对其进行传输)。
另一方面,在优选实施例中,当指示了短窗函数时,把2个比特分配给nNumCluster,并且其值在0-2之间变化,分别对应于1-3个瞬变分段。注意到,即使在准静态帧(例如单个瞬变分段)中也可以使用短窗函数。例如,当编码器想要实现低的编码延迟时,可以发生这种情况。在此低延迟模式中,一帧中的音频数据采样数量可以小于1024(即,长初级块的长度)。例如,编码器可能已选择为在一帧中只包括256个PCM采样,在此情况下,用帧中的两个短块(每个包括128个PCM采样,由256采样MDCT块所覆盖)来覆盖那些采样,意味着该解码器也应用了两个短窗。此模式的优势是在本实例中把正比于缓冲器大小(如果其它条件相同)的编码延迟降低了例如4倍(1024/256=4)。
如果当前帧是瞬变帧(即包括至少一部分瞬变信号,从而nNumCluster指示多于一个瞬变分段),那么在接收数据中优选包括字段“anNumBlocksPerFrmPerCluster[nCluster]”,并且通过每个瞬变分段nCluster占用的短MDCT块的数量来指示该瞬变分段nCluster的长度。优选地,对每个这种字进行了霍夫曼编码,并且因此,可以对每个瞬变分段长度解码,以重构瞬变分段的位置。
另一方面,如果当前帧是准静态帧(不管是具有单个长窗函数还是固定数量的短窗函数),优选不把anNumBlocksPerFrmPerCluster[nCluster]显示在比特流中(即,不发送该信息),因为该瞬变分段长度是隐含的,即,帧中的单个长块具有长窗函数(例如2048个MDCT采样),或者帧中的所有块具有多个(例如多达8个)短窗函数(例如每个包括256个MDCT采样)。
如上所示,当通过单个长块来覆盖帧时,通过nWinTypeCurrent来指定该单个块。然而,当通过多个短块来覆盖帧时,此情形通常是更加复杂一点。额外复杂度的原因是,由于完全重构要求,当前块的窗函数取决于紧邻的之前和之后块中所使用的窗函数。因此在本发明的当前实施例中,为了当指示了短块时确定合适的窗序列,而执行额外的处理。以下结合模块134的讨论来详细描述此额外处理。
复用器115还提取霍夫曼码书指数和应用范围信息。以下描述该信息和对其的处理。
一旦如上所述对帧数据进行了拆包,就获得变换系数,并以适当顺序对其进行排列,并且随后执行逆变换处理,以生成原始时域数据。以下参考图30,更加详细地描述了这些通用步骤。
系数获取
参考图30,在模块118中,基于解复用器15中提取的对应信息,选择恰当的码书和应用范围。更具体地,以上参考的霍夫曼码书指数和应用范围信息优选包括以下字段。
字段“anHSNumBands[nCluster]”指示在瞬变分段nCluster中的码书数量。字段“mnHSBandEdge[nCluster][nBand]*4”指示在瞬变分段nCluster中码书分段nBand(即,霍夫曼码书的应用范围)的长度(就量化指数而言);每一个这种值本身优选是被霍夫曼编码的,其中模块18使用HuffDec2_64x1,对准静态帧的值进行解码,并且使用HuffDec3_32x1对瞬变帧的值进行解码。字段“mnHS[nCluster][nBand]”指示在瞬变分段nCluster中的码书分段nBand的霍夫曼码书指数;每一个这种值本身优选是被霍夫曼编码的,例如使用HuffDec4_18x1对准静态帧的值进行解码,以及使用HuffDec5_18x1对瞬变帧的值进行解码。
然后基于如下的已解码mnHS[nCluster][nBand]码书指数,获得用于对实际的子带采样量化指数进行解码的码书:
码本标号(mnHS) |
维数 |
量化标号范围 |
中平 |
准稳态码本组 |
瞬变码本组 |
0 |
0 |
0 |
保留 |
保留 |
保留 |
1 |
4 |
-1,1 |
是 |
HuffDec10_81x4 |
HuffDec19_81x4 |
2 |
2 |
-2,2 |
是 |
HuffDec11_25x2 |
HuffDec20_25x2 |
3 |
2 |
-4,4 |
是 |
HuffDec12_81x2 |
HuffDec21_81x2 |
4 |
2 |
-8,8 |
是 |
HuffDec13_289x2 |
HuffDec22_289x2 |
5 |
1 |
-15,15 |
是 |
HuffDec14_31x1 |
HuffDec23_31x1 |
6 |
1 |
-31,31 |
是 |
HuffDec15_63x1 |
HuffDec24_63x1 |
7 |
1 |
-63,63 |
是 |
HuffDec16_127x1 |
HuffDec25_127x1 |
8 |
1 |
-127,127 |
是 |
HuffDec17_255x1 |
HuffDec26_255x1 |
9 |
1 |
-255,255 |
否 |
HuffDec18_256x1 |
HuffDec27_256x1 |
其中,维数指示由单个霍夫曼码来编码的量化指数的数量。
注意到,在本实施例中,指定了每个码书应用范围(即每个码书分段)的长度。每个码书分段可以跨越边界几个或多个量化单元。同样,有可能通过其它方式来指定码书分段,例如,通过指定每个码书应用范围的开始点。然而,如果指定了该长度(而不是开始点),通常有可能用更少的比特总数来编码。
在任意情况下,接收信息优选唯一地识别每个码书要应用于的应用范围,并且解码器100使用此信息来对实际量化指数进行解码。此方法与常规方法有重大的不同,在常规方法中把码书分配给每个量化单元,从而常规方法中没有发送应用范围。然而,通常,通过灵活地指定应用范围所获得的额外效率,更多地补偿了上述额外开销。
在模块120中,通过把模块118中所识别的码书应用于对应的量化指数应用范围,对由解复用器15所提取的量化指数进行解码。其结果是完全解码的量化指数集合。
在模块122中,对量化单元数量进行重构。就这点而言,优选通过由频域中的临界频带和时域中的瞬变分段所界定的量化指数矩形,来定义每个“量化单元”。在此矩形中的所有量化指数都属于相同量化单元。优选基于由解复用器115所提取的瞬变分段信息,按照上述方式,来识别瞬变分段。“临界频带”是指人耳的频率分辩率,即带宽Δf,在该带宽内,人耳不能分辨出不同的频率。带宽Δf优选随着频率f的增加而增加,其中f和Δf之间近似指数关系。每个临界频带可以表示为滤波器组的多个邻近子带采样。对于每个MDCT块大小和采样速率,预先确定临界频带的边界,其中编码器和解码器使用相同的临界频带。根据前述信息,重构量化单元的数量,如下:
or(nCluster=0;nCluster<nNumCluster;nCluster++)
{
nMaxBand=anHSNumBands[nCluster];
nMaxBin=mnHSBandEdge[nCluster][nMaxBand-1]*4;
nMaxBin=Ceil(nMaxBin/anNumBlocksPerCluster[nCluster]);
nCb=0;
while(pnCBEdge[nCb]<nMaxBin )
{
nCb++;
}
anMaxActCb[nCluster]=nCb;
}
其中anHSNumBands[nCluster]是瞬变分段nCluster的码书数量,mnHSBandEdge[nCluster][nBand]是瞬变分段nCluster的码书nBand的码书应用范围的上边界,pnCBEdge[nBand]是临界频带nBand的上边界,并且anMaxAct[nCluster]是瞬变分段nCluster的量化单元的数量。
在反量化模块124中,从比特流20中解码出适用于每个量化单元的量化步长的大小,并且使用此步长根据从解码模块120所接收的量化指数重构子带采样。在优选实施例中,“mnQStepIndex[nCluster][nBand]”指示出量化单元(nCluster、nBand)的量化步长指数,并且对于准静态帧,用霍夫曼码书HuffDec6_116x 1来对mnQStepIndex[nCluster][nBand]进行解码,对应瞬变帧,用霍夫曼码书HuffDec7_116x1来对其进行解码。
一旦识别出量化步长,优选如下获得每个子带采样值(假设在编码器使用线形量化):子带采样=量化步长×量化指数。在本发明的可替换的实施例中,使用非线形的量化技术。
优选仅在通过bUseJIC值指定的情况下,才在模块128中执行联合强度解码。如果执行,联合强度解码器128从源声道中拷贝子带采样,然后将它们乘以比例因子,以重构联合声道的子带采样,即,联合声道采样=比例因子×源声道采样。在一个典型实施例中,源声道是前左声道,并且每个其它标准声道都被编码成联合声道。优选地,相同量化单元中的所有子带采样具有相同的比例因子。
优选仅在通过bUseSumDiff指定的情况下,才在模块130中执行和/差解码。如果执行,优选如下执行左/右声道中子带采样的重构:
左声道=和声道+差声道;以及
右声道=和声道-差声道。
如前面<编码系统>部分所述,在编码器的优选实施例中,在称为交织的过程中,对当前声道的当前帧的子带采样进行重新排列,以便把对应于相同子带的相同瞬变分段中的采样集合在一起。因此,在解交织模块132中,把子带采样重新排列回它们的自然顺序。一种用于执行这种重新排列的技术如下:
p=0;
for(nCluster=0;nCluster<nNumCluster;nCluster++)
{
nBin0=anClusterBin0[nCluster];
nNumBlocksPerFrm=anNumBlocksPerFrmPerCluster[nCluster];
for(nBlock=0;nBlock<nNumBlocksPerFrm;nBlock++)
{
q=nBin0;
for(n=0;n<128;n++)
{
afBinNatural[p]=afBinInterleaved[q];
q+=nNumBlocksPerFrm;
p++;
}
nBin0++;
}
}
其中nNumCluster 是瞬变分段的数量,anNumBlocksFRmPerCluster[nCluster]是瞬变分段nCluster的瞬变分段长度,nClusterBin0[nCluster]是瞬变分段nCluster的第一个子带采样位置,afBinINterleaved[q]是按照交织顺序排列的子带采样的队列,并且afBinNatural[p]是按照自然顺序排列的子带采样的队列。
因此,根据由解交织模块132所执行的处理,每个声道的每个帧的子带采样都以它们的自然顺序来输出。
变换到基于时间的采样
在模块134,识别(在编码器端)对于当前数据帧的变换块所使用的窗函数序列。如上所示,在本实施例中,在编码器端使用了MDCT变换。然而,在其它实施例中,可能使用了其它类型的变换(优选是统一的并且基于正弦的),并且本发明的解码器100可以完全适应。在本发明中,如上所示,对于长变换块帧,所接收的字段nWinTypeCurrent对用于整个帧的单个长窗函数进行识别。因此,在此实施例中,对于长变换块帧,在模块134无须执行额外处理。
另一方面,对于短变换块帧,当前实施例中的字段nWinTypeCurrent仅指示了用于第一个和最后一个变换块的窗函数。因此,优选对短变换块帧执行以下处理。
当在该帧中使用短块时,所接收的nWinTypeCurrent的值优选指示出当前帧的第一个块和下一帧的第一个块是否包含瞬变信号。此信息,与瞬变分段的位置(从接收的瞬变分段长度来识别)和完全重构要求一起,允许解码器100确定把哪个窗函数用到该帧的每个块中。
由于在优选实施例中,把WIN_SHORT_BRIEF2BRIEF窗函数用于具有瞬变的块,可以使用以下命名法来传递此信息。WIN_SHORT_Current2Subs,其中,Current(SHORT=否,BRIEF=是)对当前帧的第一个块中是否存在瞬变进行识别,并且Subs(SHORT=否,BRIEF=是)对当下一帧的第一个块中是否存在瞬变进行识别。例如WIN_SHORT_BRIEF2BRIEF指示出当前帧的第一个块中以及下一帧的第一个块中存在瞬变,并且WIN_SHORT_BRIEF2SHORT指示出当前帧的第一个块中存在瞬变并且下一帧的第一个块中不存在瞬变。
因此,Current有助于确定在该帧的第一个块中的窗函数(通过指示出该帧的第一个块是否包括瞬变信号),并且Subs有助于对该帧的最后一个块的窗函数进行识别(通过指示出下一帧的第一个块是否包括瞬变信号)。尤其,如果Current是SHORT,第一个块的窗函数应该是WIN_SHORT_Last2SHORT,其中经由完全重构特性通过上一帧的最后一个窗函数来确定“Last”。另一方面,如果Current是BRIEF,第一个块的窗函数应该是WIN_SHORT_Last2BRIEF,其中同样经由完全重构特性通过上一帧的最后一个窗函数来确定Last。对于该帧的最后一个块,如果其包含瞬变,其窗函数应该是WIN_SHORT_BRIEF2BRIEF。当此块中没有瞬变时,如果Subs是SHORT,该帧的最后一个块的窗函数应该是WIN_SHORT_Last2SHORT,其中经由完全重构特性通过该帧的倒数第二个帧的窗函数来确定Last。另一方面,如果Subs是BRIEF,该帧的最后一个块的窗函数应该是WIN_SHORT_Last2BRIEF,其中同样经由完全重构特性通过该帧的倒数第二个块的窗函数来确定Last。最后,可以经由完全重构特性,通过(多个)瞬变位置来确定该帧中其余块的窗函数,其中通过瞬变分段的开始指示该瞬变位置。D1申请给出了这种做法的详细过程。
在模块136中,对于当前帧的每个变换块,使用由模块134针对该块所识别的窗函数,对子带采样进行逆变换,以恢复原始数据值(受到了在编码过程中所引入的任何量化噪声和其它数值不精确性的影响)。
模块136的输出是对输入到编码器的PCM采样的重构序列。
系统环境
一般来说,除了特别说明,此处所述的所有系统、方法和技术都可以用一个或者多个可编程通用计算设备来实现。这种设备典型地包括,例如,经由诸如公共总线彼此互连的以下组件中的至少一些组件:一个或多个中央处理单元(CPU);只读存储器(ROM);随机存储器(RAM);用于与其它设备进行接口的输入/输出软件和电路(例如,用硬线连接,例如串口,并口,USB连接或火线连接,或者使用诸如蓝牙或802.11协议的无线连接);用来连接到一个或多个网络的软件和电路(例如,用诸如以太网卡或无线协议,例如码分多址(CDMA)、全球移动通信系统(GSM)、蓝牙、802.11协议或其它基于小区的或不基于小区的系统的硬线连接),其中在本发明的多个实施例中,该一个或多个网络连接到因特网或其它网络;显示器(例如阴极射线显示器、液晶显示器、有机发光显示器、聚合发光显示器或者任何其它薄膜显示器);其它输出设备(例如一个或多个扬声器、耳机设备和打印机);一个或多个输入设备(例如鼠标、触摸板、写字板、触摸感应显示器或其它定点设备、键盘、小键盘、麦克风和扫描仪);大容量存储单元(例如硬盘驱动器);实时时钟;可擦除存储读/写设备(例如用于从RAM,磁盘、磁带、光磁盘、光盘等等读出或向它们写入);调制解调器(例如用于发送传真或用于经由拨号连接来连接到因特网或其它计算机网络)。在操作中,用于执行上述方法和功能的处理步骤,通过通用计算机来执行时,典型地将最初存储在大容量存储器(例如硬盘)中,并下载到RAM中,然后通过RAM之外的CPU来执行。然而,在一些情况下,最初将处理步骤存储在RAM或ROM中。
可以从各种提供商获得用于实现本发明的合适设备。在各个实施例中,根据任务的大小和复杂性来使用不同类型的设备。合适的设备包括大型计算机、多处理器计算机、工作站、个人计算机、甚至诸如PDA、无线电话或任何其它工具或设备的更小的计算机,无论独立的、硬连接到网络或无线连接到网络。
此外,尽管以上描述了通用可编程设备,在可替换的实施例中,可以替代(或额外)使用一个或多个专用处理器或计算机。总的来说,应该注意到的是,除非明确说明,上述的任何功能都可以用软件、硬件、固件或它们的任意合并来实现,其中基于已知的工程折衷来选择特定的实现。更具体地,本领域的技术人员很容易理解,当用固定的、预定的或逻辑方式来实现上述功能时,可以通过编程(例如软件或固件)、逻辑组件(硬件)的恰当排列或这两个的任意合并来完成。
应该注意到的是,本发明还涉及机器可读介质,可以在其上存储用于执行本发明的方法和功能的程序指令。这种介质包括,例如,磁盘、磁带、诸如CD ROM和DVD ROM的光可读介质、或者诸如PCMCIA卡的半导体存储器、各种类型的存储卡、USB存储设备等等。在每种情况下,介质可以是便携物的形式,例如微型磁盘驱动器或小磁盘、磁盘、磁带、盘式磁带、卡、棒等等,或者可以是相对较大的或不可移动的物体的形式,例如提供在计算机或其它设备中的硬盘驱动器、ROM或RAM。
前述的描述主要强调了电子计算机和设备。然而,应该明白的是,任何其它计算或其它类型的设备可以替换使用,例如利用了电子,光,生物和化学处理的任意合并的设备。
额外考虑
前述实施例涉及音频数据的处理。然而,需要明白的是,可以结合对于其它类型数据的处理来使用本发明的技术,例如视频数据、传感数据(例如地震、气象、辐射)、经济学数据或者其它可观察的或可测量的数据。
以上描述了本发明的各种不同的实施例,其中所述的每个实施例包括了特定的特征。然而,本领域的技术人员将会明白,所述的与任何单个实施例有关的特征并不限于该实施例,而是还可以包括在和/或以各种组合方式安排在任何其它实施例中。
同样,在上述讨论中,有时将功能归因于特定的模块或组件。然而,可以根据需要,在不同的模块或组件中对功能进行重新分配,在一些情况下,完全消除了对特定组件或模块的需要,和/或需要添加新的组件件或模块。本领域的技术人员将会明白,参考本发明的特定实施例,优选地根据已知的工程折衷来精确地分配功能。
因此,尽管本发明详细描述了示例性实施例和附图,对于本领域的技术人员来说,在不脱离本发明的精神和范围的前提下,显然可以对本发明做出各种改变和修改。因此,本发明并不限于附图和上述描述中所述的精确的实施例。而是,旨在把不脱离本发明实质的所有这种变形看作在本发明的范围之内,其中本发明的范围仅由所附权利要求来限定。