具体实施方式
本发明提供一种用于在已给定包含大量的已知媒体文件的数据库的情况下,识别外来的媒体样本的方法。还提供一种用于产生数据库索引的方法,所述的数据库索引允许使用本发明的识别方法进行有效搜索。尽管下述讨论主要涉及音频数据,应该理解,本发明的方法可以适用于任何类型的媒体样本和媒体文件,包括但不限于:文本、音频、视频、图像、和单个媒体类型的任何多媒体组合。在音频的情况中,本发明对识别包含高度线性或非线性失真的样本特别有用,其中,所述的失真是由于,例如,背景噪声、传输错误和信息遗失、干扰、带宽受限制的滤波、量化、时间变形、以及语音质量数字压缩所造成的。随着从下文的描述中将变得清晰,本发明之所以在这样的条件下起作用,是因为:即使只有小一部分计算出的特征幸免于失真,其也可以正确地识别失真的信号。通过本发明可以识别任何类型的音频信号,包括声音、语音、音乐、或多个类型的结合。音频样本的例子包括所记录的音乐、无线广播节目、以及广告。
如这里所使用的,外来的媒体样本是从如下文中所描述的多种来源获取的任意大小的媒体数据的片断。为了执行识别,样本必须是已在本发明所使用的数据库中索引的媒体文件的一部分的再现。所述的被索引的媒体文件可以看作是原始记录,而样本则为原始记录的失真和/或删节的版本或者再现。典型地,样本只与被索引文件的一小部分一致。例如,可以对在数据库中索引的五分钟长的歌曲的十秒钟片断执行识别。尽管用术语“文件”描述被索引的实体,但是所述的实体可以是任何能够获取必要值(如下所述的)的形式。而且,在获取该值后,不需要存储或访问该文件。
图1示出了概念上说明本发明的方法10的全部步骤的方框图。下文中更详细地描述了各个步骤。本方法辨认选中的媒体文件,即一种其特征指纹的相对位置与外来的样本的同样的指纹的相对位置最接近地匹配。在步骤12中捕获到外来的样本之后,就在步骤14中计算标志和指纹。标志出现于样本中特定的位置,即,时间点。标志在样本中的位置最好由样本自身确定,即,依赖于样本品质,并且是可再生的。也就是说,每次重复处理时,为相同的信号计算相同的标志。对于每一个标志,指纹在所获标志处或其附近描述样本的一个或多个特征。特征与标志的接近程度(nearness)通过所使用的指纹处理方法来定义。在某些情况中,如果特征明显地与一个标志一致而与先前或随后的标志不一致,则认为该特征接近于该标志。在其它情况中,特征与多个邻近的标志一致。例如,文本指纹可以是字串(word string);音频指纹可以是声频谱(spectral)分量;而图像指纹可以是像素红绿蓝(RGB)值。下文中描述了步骤14的两个一般实施例,一个实施例中依次计算标志和指纹,而另一个实施例中同时计算标志和指纹。
在步骤16中,样本指纹被用来检索存储在数据库索引18中的多组匹配的指纹,在所述的数据库索引18中,匹配的指纹与一组媒体文件的标志和标识符相关联。然后,使用该组被检索的文件标识符和标志值,来产生一致对(correspondence pair)(步骤20),所述的一致对包含样本标志(在步骤14中计算出的)和被检索的文件标志,在此计算出了相同的指纹。然后,作为结果的一致对按歌曲标识符分类,为每个可用的文件产生样本标志与文件标志之间的多组一致。扫描每一组,以进行文件标志与样本标志之间的校准。也就是说,辨认各对标志中的线性一致,并根据线性相关的对的数目对该组评分。当大量相对应的样本位置与文件位置可以在一定的容限内用充分相同的线性方程描述时,就出现线性一致。例如,如果描述一组一致对的多个方程的斜率在±5%范围内变化,那么该整组一致可以看作是线性相关的。当然,可以选择任何合适的容限。具有最高分,即具有最大量的线性相关的一致的组的标识符,是选中的文件标识符,被确定其位置,并在步骤22中返回。
如下文中进一步描述的,可以用与数据库中实体的数目的对数成正比的时间分量执行识别。基本上,可以实时地执行识别,即使用很大的数据库。也就是说,在获取样本之时,以小的时间滞后,就可以识别样本。本方法可以基于5-10秒,甚至低至1-3秒的片断辨认声音。在一个优选实施例中,随着在步骤12中捕获样本,实时执行标志处理和指纹处理分析,即步骤14。当样本指纹变为可用时,就执行数据库查询(步骤16),并积累一致结果,周期性地扫描线性一致。这样,本方法的所有步骤同时发生,而非图1中所建议的依次线性样式。需要注意的是,本方法与文本搜索引擎是部分地相似的:用户提交查询样本,并返回在声音数据库中索引的匹配文件。
典型地,本方法作为在计算机上运行的软件实现,其中,各个步骤作为独立的软件模块最有效地实现。这样,实现本发明的系统可以认为由标志处理和指纹处理的对象、被索引的数据库、和分析对象组成,用于搜索数据库索引,计算一致,并辨认选中的文件。在依次标志处理和指纹处理的情况中,标志处理和指纹处理的对象可以被认为是不同的标志处理和指纹处理的对象。用于不同对象的计算机指令代码存储在一个或多个计算的存储器中,并由一个或多个计算机处理器执行。在一个实施例中,代码对象与诸如基于英特尔的(intel-based)个人计算机或其它工作站之类的单个计算机系统集群(cluster)在一起。在一个优选实施例中,本方法是通过中央处理器(CPU)的网络的集群来实现的,其中,不同的处理器执行不同的软件对象,以便分散计算量。作为选择,每个CPU可以有所有软件对象的副本,允许全同配置的元件的对等网络(homogeneous network)。在这种后者的配置中,每一个CPU具有数据库索引的子集,并负责搜索其自己的媒体文件的子集。
尽管本发明不限于任何特定的硬件系统,图2中概略地说明了分布式的计算机系统30的一个优选实施例的例子。系统30包含一个集群的基于Linux的(Linux-based)处理器32a-32f,这些处理器是通过多处理总线结构(multiprocessing bus architecture)34或诸如Beowulf集群计算机协议之类的连网协议,或两者的混合,来连接的。在这样的安排下,数据库索引最好存储在集群中的至少一个节点32a上的随机存取存储器(RAM)中,以确保非常迅速地进行指纹搜索。与其它对象相对应的诸如标志处理节点32c和32f、指纹处理节点32b和32e、以及校准扫描节点32d之类的计算节点,不需要与支持数据库索引的节点或多个节点32a一样多的随机存取存储器。这样,指定给每个对象的计算节点的数目可以根据需要而调节,使得没有单个对象成为瓶颈。所以,计算网络是高度可并行的,且可以额外地处理被分布在可用的计算资源中的多个同时信号识别查询。这表明,这使得大量的用户可以请求识别并接近实时地接收结果的应用成为可能。
在一个作为选择的实施例中,某些功能对象会更紧密地耦合在一起,而与其它对象保持较不紧密的耦合。例如,标志处理和指纹处理对象可以存在于与其它计算对象在物理上分离的位置。一个这种例子是标志处理和指纹处理对象与信号捕获处理的紧密联合。在这种安排下,标志处理和指纹处理对象可以作为要嵌入的附加的硬件或软件并入,例如,移动电话、无线应用协议(WAP)浏览器、个人数字助理(PDA)、或其它诸如音频搜索引擎的客户端之类的远程终端。在基于因特网的诸如内容标识服务之类的音频搜索服务中,标志处理和指纹处理对象可以并入客户浏览器应用程序中,作为软件指令或诸如微软动态连接库(DLL)之类的软件插入模块的被连接的组。在这些实施例中,所结合的信号捕获、标志处理、以及指纹处理对象,构成了该服务的客户端。客户端向服务器端发送所捕获的信号样本的抽取特征(feature-extracted)的摘要,所述的信号样本包含标志和指纹对,而服务器端执行该识别。向服务器端发送这种抽取特征的摘要而不是未加工的捕获的信号是有利的,因为大大地减少了数据量,通常以500或更大的因数减少。这样的信息,可以通过低带宽侧信道,连同或代替例如发送到服务器的音频流,被实时地发送。这使得能够在公共通讯网络上执行本发明,所述的公共通讯网络为每个用户提供相对小的带宽。
现在将参考音频样本和在声音数据库中索引的音频文件来描述本方法。本方法由两个主要的成分构成,即声音数据库索引构建和样本识别。
数据库索引构建
在可以执行声音识别之前,必须构建可搜索的声音数据库索引。如这里所使用的,数据库是数据的任意索引的集合,而且不限于商业可用的数据库。在数据库索引中,数据的相关元素彼此关联,且每个元素可以被用于检索所关联的数据。声音数据库索引包含:针对记录的所选择的集合或库中的每个文件或记录的索引集合,所述的记录包括演讲、音乐、广告、声纳签名(sonarsignature)、或其它声音。每个记录也具有唯一的标识符、声音_ID(sound_ID)。声音数据库本身不需要为每个记录存储音频文件,但是声音_ID可以被用于检索来自别处的音频文件。期望声音数据库索引非常大,包含针对数百万或甚至上亿的文件的索引。新记录最好以递增的方式添加到数据库索引中。
图3中示出了用于根据第一个实施例来构建可搜索声音数据库索引的优选方法40的方框图。在本实施例中,首先计算标志,然后在标志处或其附近计算指纹。本领域中一般技术人员将会明白,可以设计用于构建数据库索引的作为选择的方法。尤其是,下面所列许多步骤是可选的,但是用于产生更有效搜索的数据库索引。虽然搜索效率对于从大型数据库进行实时声音识别很重要,但是,小型数据库可以相对快地搜索,即使其没有被最优地分类。
为索引声音数据库,集合中的每个记录都经受标志处理和指纹处理分析,来为每个音频文件产生一个索引集合。图4概略地说明了已经计算了标志(LM)和指纹(FP)的声音记录的片断。标志在声音的特定的时间点出现,并具有从文件的开头偏移的时间单位的值,而指纹在特定的标志处或其附近描述声音的特征。这样,在本实施例中,针对特定的文件的每个标志都是唯一的,而相同的指纹却可以在单个文件或多个文件内出现许多次。
在步骤42,使用在声音记录内发现与众不同且可再生的位置的方法,对每个音乐记录作标志。优选的标志处理算法能够在声音记录中标明相同的时间点,而不管噪声和其它线性及非线性失真的存在。某些标志处理方法在概念上独立于下述的指纹处理过程,但其可以被选择以优化其性能。标志处理导致声音记录中的一列时间点{landmarkk},随后在这些时间点计算指纹。好的标志处理方案在声音记录中每秒标明大约5-10个标志;当然,标志密度依赖于声音记录中的活动(activity)的量。
多种技术可用于计算标志,其都在本发明的范围之内。用来实现本发明的标志处理方案的详细技术处理是本领域所公知的,故不再详细讨论。一种简单的标志处理技术被公知为功率范数(Power Norm),在记录中的每一个可能的时间点处计算瞬时功率,并选择局部最大值。这样做的一种方式是通过对波形进行直接校正并滤波来计算包络。另一种方式为计算信号的希尔伯特变换(积分),并使用希尔伯特变换和原始信号的平方值的和。
标志处理的功率范数方法长于发现声音信号中的瞬变。功率范数实际上是更一般的频谱Lp范数在p=2时的特殊情况。一般的频谱Lp范数是通过计算短时频谱,而沿声音信号的每一时刻计算的,例如,通过Hanning-windowed快速傅立叶变换(FFT)。一个优选实施例使用8000Hz的采样速率、1024个样本的快速傅立叶变换帧尺寸、以及每个时间段64个样本的步幅。然后计算频谱分量的绝对值的p次方之和作为针对每个时间段的Lp范数,可选地,再求p次方根。如前所述,在时间上选择结果值的局部最大值作为标志。图5示出了频谱Lp范数方法的一个例子,即针对特定的声音信号的L4范数作为时间的函数的图。局部最大值处的虚线表明所选标志的位置。
当p=∞时,L∞范数实际上是最大值范数。也就是说,范数的值是频谱段中最大频谱分量的绝对值。该范数带来强壮的(robust)标志和良好的整体识别性能,并最好是用于音调的(tonal)音乐。
作为选择,通过在固定的或彼此可变的偏移处,求多个时间段上的频谱分量的绝对值p次方之和,来计算“多段”频谱标志,而不是单个段。发现该扩展的总和的局部最大值,允许多段指纹的位置的最优化,如下所述。
一旦计算了标志,在步骤44中,在记录中的每个标志时间点处计算指纹。一般地,指纹是概括在记录中该时间点处或其附近的一组特征的一个或一组值。在当前的优选实施例中,每个指纹是单个数字值,其为多个特征的隐(hashed)函数。指纹的可能类型包括频谱段指纹、多段指纹、线性预测编码系数、以及倒频谱系数。当然,任何类型的、描述信号或标志附近信号的特征的指纹都在本发明的范围之内。可以通过对信号的任何类型的数字信号处理或频率分析,来计算指纹。
为产生频谱段指纹,在每个标志时间点的附近执行频率分析,以抽取最高的几个频谱尖峰。简单的指纹值正好是最强频谱尖峰的单个频率值。使用这样的简单的尖峰,带来在存在噪声的情况中的令人惊讶的良好识别;然而,与其它指纹方案相比,单频谱段指纹往往产生更多的假正值(false positive),因为其不是唯一的。可以通过使用由两个或三个最强频谱尖峰的一个函数构成的指纹,来减少假正值的数目。然而,如果第二强频谱尖峰不够强,不足以从存在的噪声中的竞争者中识别出,那么就可能对噪声更敏感。也就是说,所计算指纹值可能不够强壮,而不能可靠地再现。尽管如此,这种情况的性能也是好的。
为了利用许多声音的时间演化,通过向标志时间点添加一组时间偏移,来确定一组时间段。在每个所得时间段,计算频谱段指纹。然后组合所得的这组指纹信息,以形成一个多频声(multitone)或多段指纹。每个多段指纹远比单频谱段指纹更独特,因为,其跟踪时间演化,带来在下述的数据库索引搜索中的假匹配较少。实验表明,由于其增强的独特征,从两个时间段中的每一个中的单个最强频谱尖峰计算出的多段指纹,带来在随后的数据库索引搜索中快得多的计算(大约快100倍),但是当存在显著的噪声时,识别百分率有一些下降。
作为选择,若不使用固定的便置或来自给定的时间段的偏移来计算多段指纹,则可以使用可变的偏移。对所选择的段的可变的偏移是,指纹从“锚(anchor)”标志到下一个标志、或到一定的偏移范围内的标志的偏移。在这种情况中,标志之间的时间差值,连同多频率信息,也被编码到指纹中。通过向指纹添加更多维数,它们就会变得更加独特,且具有更低的假匹配的机会。
除频谱分量之外,可以抽取其它频谱特征,并用作指纹。线性预测编码分析,线性地抽取信号的诸如频谱尖峰、以及频谱形装之类的可预测特征。线性预测编码是数字信号处理领域中所公知的。对于本发明,通过将已量化的线性预测编码系数隐藏(hashing)进索引值中,可以将锚在标志位置处的波形段的线性预测编码系数用作指纹。
倒频谱系数在测量周期性时有用,并且可以被用于描述诸如语音或许多乐器之类的谐和的信号。倒频谱分析是数字信号处理领域中所公知的。对于本发明,许多倒频谱系数被一起隐藏进索引中,并用作指纹。
图6中示出了一个作为选择的实施例50,在其中,同时计算标志和指纹。图3的步骤42和44被步骤52、54、和56所取代。如下所述的,在步骤52中,从声音记录计算多维函数,并从该函数中抽取标志54和指纹56。
在图6的实施例的一种实现中,从声音记录的声频谱图中计算标志和指纹。声频谱图是声音记录的时间-频率分析,在所述的声音记录中,对声音样本的窗口的(windowed)且重叠的帧做声频谱分析,典型地,使用快速傅立叶变换。如前所述,一个优选实施例使用8000Hz的采样速率、1024个样本的快速傅立叶变换帧尺寸、以及每个时间段64个样本的步幅。图7A中示出了频谱图的一个例子。时间在水平轴上,而频率在垂直轴上。每个连续的快速傅立叶变换帧沿水平轴以相对应的等距间隔垂直堆叠。声频谱图描绘每一时间频率点的能量密度;图中较黑的区域代表较高的能量密度。声频谱图是音频信号处理领域中所公知的。对于本发明,可以从多个凸点中获取标志和指纹,所述的凸点如图7B的声频谱图中圈出的声频谱图局部最大值。例如,获取了每个尖峰的时间和频率坐标,其中,时间用作标志,而频率用来计算相对应的指纹。这种频谱图尖峰标志与L∞范数相似,在L∞范数中,由范数的最大绝对值确定标志位置。然而,在该声频谱图中,局部最大值搜索在时间-频率平面的斑点上进行,而不是在整个时间段上进行。
在本文中,将从声音记录的点抽取分析中而得来的凸点的集合称为星座(constellation)。对于由局部最大值构成的星座,优选分析为选择多个点,所述的多个点是每个所选点附近的时间-频率平面的最大能量值。例如,如果坐标(t0,f0)处的一个点在一个矩形内是最大能量值点,就选择坐标(t0,f0)处的点,其中,所述的矩形的角坐标为(t0-T,f0-F)、(t0-T,f0+F)、(t0+T,f0-F)、以及(t0+T,f0+F),即边长为2T和2F的矩形,而T和F被选择来提供适当数目的星座点。也可以根据频率值改变矩形的范围的大小。当然可以使用任何的区域形状。还可以对最大能量值标准加权,这样,竞争时间-频率能量尖峰根据时间-频率平面中的距离量度(metric)而被逆加权,即越远的点加权越小。例如,能量可以被加权为:
其中,S(t,f)是声频谱图在点(t,f)处的幅度(magnitude)平方值,而Ct和Cf是正数值(不必是常数)。也可以是其它距离加权函数。局部最大值选择约束可以应用到其它(非最大值)凸点特征抽取方案,且在本发明的范围之内。
本方法带来与上述的单频谱指纹非常相似的、有着许多相同的属性的值对。声频谱图时间-频率方法比单频方法产生更多标志/指纹对,但是在下述的匹配阶段也可以得到许多假匹配。然而,其比单频谱指纹提供更强壮的标志处理和指纹处理,因为可以使声音样本中的强势噪声不扩展到每一段中声频谱的所有部分。也就是说,在声频谱的多个部分中,非常有可能有某些标志和指纹对没有被强势噪声所影响。
声频谱图标志处理和指纹处理方法是特征分析方法的特殊情况,所述的特征分析方法计算声音信号的多维函数,并在函数值中确定凸点的位置,其中,有一维是时间。凸点可以是局部最大值、局部最小值、零交叉(zerocrossings)、或其它与众不同的特征。标志被作为凸点的时间坐标,而从其余的坐标中的至少一个来计算相对应的指纹。例如,多维凸点的非时间坐标可以隐藏(hashed)在一起,以形成多维函数的指纹。
上述的用于多段频谱指纹的可变的偏移方法可被应用于声频谱图或其它多维函数指纹。在这种情况中,如图7C中所示的声频谱图中所说明的,星座中的点被链接在一起而形成链接的点。星座中的每个点用作定义标志时间的锚点,其它点的其余坐标值被结合以形成链接的指纹。例如,彼此接近的点,如下所定义,被连接在一起形成更复杂的聚合体(aggregate)特征指纹,其可以更容易地被区分和搜索。和用多段频谱指纹一样,将信息从多链接的凸点结合到单个指纹中的目的是创建更多多样性的可能的指纹值,从而减少假匹配的可能性,即,减少用相同的指纹描述两个不同的音乐样本的可能性。
在原理上,在两点连接方案中,N个凸点的每一个都可以链接到每一个其它点,产生大约N2/2个组合。相似地,对于K点连接,从一个星座引起的可能的组合的数目的量级是NK。为了避免这样的组合的激增,期望能约束将要连接在一起的点,使之相邻。完成这一约束的一种方式是为每个锚点定义一个“目标区域”。然后一个锚点与其目标区域中的多个点相连接。也可以选择目标区域内的点的子集来连接——并非每一个点都需要被连接。例如,只可以连接与目标区域中最强尖峰相关联的点。目标区域可以具有固定的形状,或根据锚点的特征而改变。对于声频谱图尖峰星座的锚点(t0,f0)的目标区域的简单例子是:使得t在间隔[t0+L,t0+L+W]中的声频谱图带中的点(t,f)的集合,其中,L是进入将来的引子(lead),而W是目标区域的宽度。在这种方案中,在目标区域中允许所有的频率。L或W可以是变量,例如,如果使用一种比率控制机制调整所产生的连接组合的数目。作为选择,例如,通过约束目标区域使得为频率f在间隔[f0-F,f0+F]中,可以实现频率限制,其中,F为边界参数。频率约束的一个优点在于:在心理声学中,已知当多个序列的音调具有彼此接近的频率时,旋律往往更好地一致。这样的约束可以使更多的“心理声学上逼真的”识别性能成为可能。尽管为心理声学建模不是本发明的必要目的。也可以考虑相反的规则,其中,f被选为在区域[f0-F,f0+F]之外。这迫使连接彼此频率不同的点,可以避免下述情况,即星座抽取人为因素产生结结巴巴(stuttering)的、时间接近且频率相同的、多个序列的时间-频率点。如其它位置参数那样,F不必是常数,并可以,例如,是f0的函数。
当在指纹值中包括非锚凸点的时间坐标时,必须使用相对时间值,以允许指纹为时间不变量。例如,指纹可以是(i)非时间坐标值和/或(ii)多个凸点的相对应的时间坐标值的差值的函数。可以使用时间差值值,例如,关于锚点的,或在链接的集中的相继的凸点之间的连续差值。可以将坐标和差值放在链接的比特域(concatenated bit field)中,以形成隐藏的(hashed)指纹。由于本领域中的一般技术人员将会明白,存在将多组坐标值映射到指纹值的许多其它方式,且都在本发明的范围之内。
这种方案的一个具体例子使用N>1个链接的声频谱图尖峰,其坐标为(tk,fk),k=1,...,N。然后,(i)取第一个尖峰的时间t1为标志时间,以及(ii)时间差值Δtk=tk-t1,k=2,...,N,加上链接的尖峰的频率fk,k=1,...N,被隐藏(hashed)在一起以形成指纹值。指纹可以从所有可用的Δtk和fk坐标或其子集计算出。例如,如果需要,可以忽略某些或所有时间差值坐标。
使用多点形成指纹的另一个优点在于,可以使指纹编码相对时间展宽不变,例如,当以不同于原始记录速度的速度播放声音记录时。这一优点既适用于声频谱图,又适用于时间段方法。注意到,在已展宽时间的信号中,时间差值值和频率具有反比关系(例如,以因数二减少时间差值,会使得频率加倍)。这种方法通过从指纹中移除时间展宽的方式将时间差值和频率进行结合,来利用了那种事实。
例如,在坐标值为(tk,fk),k=1,...,N的N点声频谱尖峰的情况中,将要隐藏(hash)进指纹中的可用的中介值(intermediate value)是Δtk=tk-t1,k=2,...,N,和fk,k=1,...N。然后,通过取多个频率中的一个,比如说f1,作为参考频率,并形成(i)其与其余频率的商、和(ii)其与时间差值的乘积,可以使中介值关于时间展宽不变。例如,中介值可以是gk=fk/f1,k=2,...,N,和sk=Δtkf1,k=2,...,N。如果样本以因数α加速,那么频率fk变成αfk,而时间差值Δtk变成Δtk/α,这样gk=αfk/αf1=fk/f1,而sk=(Δtk/α)(αf1)=Δtkf1。然后,使用函数将这些新中介值结合起来以形成独立于时间展宽的隐藏的(hashed)指纹值。例如,可以通过将gk和sk值放入链接的比特域中来隐藏(hash)gk和sk值。
作为选择,可以使用参考时间差值,例如Δt2来取代参考频率。新的中介值被计算为(i)与其余时间差值的商Δtk/Δt2以及(ii)与频率的乘积Δt2fk。这种情况等价于使用参考频率,因为结果值可以从上面的gk和sk值的乘积以及商求出。频率比率的倒数同样可以有效地被使用;也可以用原始中介值的对数值的和与差分别代替积与商。任何通过这样的换算(commutation)、代换(substitution)、以及置换(permutation)的数学操作所获取的时间展宽独立的指纹值都在本发明的范围之内。另外,可以使用多个参考频率或参考时间差值,它们也使时间差值相对化。使用多个参考频率或参考时间差值等价于使用单个参考值,因为可以通过对gk和sk值的算数操作实现相同的结果。
返回到图3和图6,通过上述方法的任何一个进行标志处理和指纹处理分析会带来针对每个声音_ID的索引集合,如图8A所示。针对给定的声音记录的索引集合是一列值对(指纹,标志)。典型地,每个被索引的记录在其索引集合中有一千的量级的(指纹,标志)对。在上述的第一个实施例中,标志处理和指纹处理技术基本上是独立的,可以视其为分离的且可交换的模块。按照系统、信号品质、或将要被识别的声音的类型,可以使用许多不同的标志处理或指纹处理模块中的一个。事实上,因为索引集合简单地由多个值对组成,所以可以,而且往往最好是同时使用多个标志处理和指纹处理方案。例如,一种标志处理和指纹处理方案可能长于探测独特的音调模式,但是不长于辨认打击乐,因为不同的算法可能有相反的属性。使用多个标志处理/指纹处理策略带来更强壮且更丰富的识别性能的范围。通过为某些种类的指纹保留某些范围的指纹值,可以一起使用多种不同的指纹技术。例如,在32位指纹值中,可以用前3位限定后面的29位编码的是8个指纹处理方案中的哪一个。
为将要在声音数据库中索引的每个声音记录产生索引集合之后,以允许快速(即对数时间)搜索的方式构建可搜索的数据库索引。这是在步骤46中通过构建一列三元组(指纹,标志,声音_ID)来完成的,所述的三元组是通过向每个索引集合中的每个偶对(doublet)添加相对应的声音_ID而获取的。针对所有声音记录的所有这些三元组被收集到大型索引列表中,图8B中示出了其示例。然后,为了使随后的搜索处理最优化,根据指纹对该列三元组进行分类。快速分类算法是本领域中所公知的,而且,在D.E.Knuth,The Art of ComputerProgramming(计算机编程的技术),Volume 3:Sorting and Searching(分类与搜索),Reading,Massachusetts:Addison-Wesly,1998中被广泛地讨论过,在此并入作为参考。可以使用高性能分类算法在NlogN时间内对列表进行分类,其中,N是列表中的项目的数目。
一旦索引列表被分类,在步骤48中通过分段将其进行进一步处理,这样,列表中每个独特的指纹被收集到新的主索引列表,图8C中示出了它的一个例子。主索引列表中的每一个项目都包含指纹值和指向一列(标志,声音_ID)对的指针。按照被索引的记录的数目和特征,给定的指纹可以在整个集合中出现几百次甚至更多。将索引列表重新安排为主索引列表是可选的,但是节省存储器,因为每个指纹值只出现一次。其也可以加速随后的数据库搜索,因为列表中的项目的有效的数目极大地减少为一列独特的值。作为选择,可以通过将每个三元组插入一个B-tree(B树)来构建主索引列表。如本领域中的一般技术人员所公知的,存在用于构建主索引列表的其它可能性。主索引列表最好保留在诸如动态随机存取存储器(DRAM)之类的系统存储器中,用于在信号识别期间快速访问。主索引列表可以保留在系统内的单个节点的存储器中,如图2中所说明的。作为选择,主索引列表可以被分割成分配到多个计算节点中的块。参考上文的声音数据库索引最好是图8C中所说明的主索引列表。
声音数据库索引最好是离线(offline)构建,并且当识别系统中并入新的声音时,就增加地更新。为更新列表,可以向主列表中的适当的位置插入新的指纹。如果新的记录包含多个现有的指纹,那么向用于这些指纹的现有的列表添加相对应的(标志,声音_ID)对。
识别系统
使用如上所述地产生的主索引列表,对外来的声音样本执行声音识别,典型地,所述的声音样本是由希望辨认该样本的用户所提供的。例如,用户在广播上听到一首新歌曲,并想了解该歌曲的作者和名称。该样本可以源自诸如无线广播、迪斯科舞厅、酒馆、海底、声音文件、音频流片段、或立体声系统之类的任何类型的环境,并且可以包含背景噪声、信息遗失、或谈话语音。在向系统提供音频样本以供识别之前,用户可以将其存储在诸如应答机、计算机文件、磁带录音机、或电话或移动电话语音邮件系统之类的存储设备中。基于系统设置和用户约束,音频样本从诸如立体声系统、电视、光盘播放器、无线广播、应答机、电话、移动电话、因特网(Internet)流广播、文件传输协议(FTP)、作为电子邮件附件的计算机文件、或传送这样的记录材料的任何其它合适的装置之类的任意数目的模拟或数字来源提供给本发明的识别系统。按照来源,样本的形式可以是声波、无线电波、数字音频脉冲编码调制(PCM)流、压缩的数字音频流(诸如杜比数字(Dolby Digital)或运动画面专家组3(MP3))、或因特网流广播。用户通过诸如电话、移动电话、网络浏览器、或电子邮件之类的标准接口与识别系统进行交互。样本可以被系统捕获并且实时处理,或者其可以被复制,用于从先前捕获的声音(例如声音文件)进行处理。在捕获期间,音频样本被数字地采样,并通过诸如麦克风之类的采样设备,将其发送到系统。按照捕获方法,样本可能会因信道或声音捕获设备的局限而经受进一步的劣化。
一旦声音信号被转换成数字形式,其被处理以便识别。如用于数据库文件的索引集合的构建,使用与用于处理声音记录数据库的算法相同的算法,来为样本计算标志和指纹。如果对原始声音文件的高度失真的再现的处理之后,能得到与针对原始记录所获得的相同的或相似的一组标志和指纹对,那么,该方法是最优的。针对声音样本的作为结果的索引集合是一组经分析的值对(指纹,标志),如图9A中所示。
给定针对声音样本的多个对,搜索数据库索引以确定潜在匹配的文件的位置。搜索按如下进行:通过在主索引列表中搜索fingerprintk,来处理未知的样本的索引集合中的每个(fingerprintk,landmarkk)对。关于有序的列表的快速搜索算法是本领域中所公知的,并且,在D.E.Knuth,The Art of ComputerProgramming(计算机编程技术),Volume 3:Sorting and Searching(分类与搜索),Reading,Massachusetts:Addison-Wesly,1998中被广泛地讨论过。如果在主索引列表中发现了fingerprintk,那么,其相对应的一列匹配的(landmark* j,sound_IDj)对被复制,并增补landmarkk,以形成形式为(landmarkk,landmark* j,sound_IDj)的一组三元组。在这种符号表示法中,星号(*)表明数据库中的被索引的一个文件的标志,而没有星号的标志指的是样本。在某些情况中,最好是,匹配的指纹不需要是相同的,只需要是相似的;例如,在预先确定的阈值内,它们可以是不同的。匹配的指纹,不论是相同的还是相似的,都被称为是等价的。三元组中的sound_IDj与具有带星号的标志的文件相对应。这样,每个三元组包含两个不同的标志,一个在数据库索引中,而一个在样本中,在这两个不同的标志处计算出等价的指纹。对所输入的样本的索引集合范围内的所有的k重复这种过程。将所有得到的三元组收集到一个大的候选列表中,如图9B中所说明的。称其为候选列表是因为:其包含多个声音文件的声音_ID,通过它们的匹配的指纹的特点,所述的声音文件是用于辨认外来的声音样本的候选者。
在编辑了候选列表之后,对其进一步的处理是根据声音_ID分段。做这件事情的一种方便的方式是通过声音_ID对候选列表进行分类,或将其插入到B-树。如上所述,在本领域中有大量的分类算法可用。该处理的结果是一列候选声音_ID,其中,每一列都具有由样本和文件标志时间点对(landmarkk,landmark* j)组成一个散布列表,其中,可选地剥去了声音_ID,如图9C中所示。这样,每一个散布列表包含一组相对应的标志,是根据它们的以等价的指纹值来描述的特征而相对应的。
然后分析针对每个候选声音_ID的散布列表,以确定该声音_ID是否与样本匹配。可以使用一个可选的阈值(thresholding)步骤,首先排除具有非常小的散布列表的潜在的大量的候选者。很明显,在其散布列表中只有一个项目的候选者,即只有一个指纹与样本一样的候选者,不与样本匹配。可以使用任何大于或等于一的合适的阈值数目。
一旦确定了候选者的最终的数目,就确定了选中的候选者的位置。如果下面的算法不能确定选中的候选者的位置,则返回失败消息。洞察匹配处理的关键在于:假设两边的时间基(timebase)都是稳定的,则在匹配的声音中的时间演化必须遵循线性一致。这几乎总是正确的,除非一个声音已经被故意地非线性地扭曲了,或经受了诸如具有颤抖(warbling)速度问题的盒式录放机之类的有缺陷的播放设备。这样,给定的声音_ID的散布列表中的正确标志对(landmarkn,landmark* n)必须有如下形式的线性一致:
landmark* n=m*landmarkn+offset,
其中,m是斜率,应该接近一;landmarkn是外来的样本内的时间点;landmark* n是通过声音_ID索引的声音记录内的相对应的时间点;而offset是偏移到与外来的声音样本的开头相对应的声音记录中的时间。能满足针对m和offset的特定的值的上述方程的多个标志对被称为线性相关。显然,线性相关的概念只对多于一对的相对应的标志有效。注意到,这种线性相关性以很高的概率辨认正确的声音文件,同时排除没有重要性的无关标志对。尽管对于两个不同的信号可以包含许多一致的指纹,但是这些指纹非常不可能具有相同的相关的(relative)时间演化。对线性一致的要求是本发明的关键特征,并提供一种识别技术,其显著地优于简单地计数相同的特征的数目或测量特征之间的相似性之类的技术。事实上,由于本发明的这一方面,即使在外来的声音样本中出现的原始记录的指纹少于1%,即,如果声音样本非常短,或如果其是显著地失真的,仍然可以识别声音。
这样,确定是否有针对外来的样本的匹配的问题,被简化成等价于在给定的散布列表的标志点的散布图内发现斜率接近一的对角线。图10A和图10B中示出了两个样本散布图,其中,声音文件标志在水平轴上,而外来的声音样本标志在垂直轴上。在图10A中,辨认了斜率近似等于一的一条对角线,表明该歌曲确实与该样本匹配,即,该声音文件是选中的文件。水平轴上的截距表明偏移到该音频文件中,样本在那里开始。在图10B的散布图中,没有发现统计上有意义的对角线,表明该声音文件与外来的样本不匹配。
有很多种在散布图中发现对角线的方法,所有这些方法都在本发明的范围之内。可以理解,短语“确定对角线的位置”指的是等价于确定对角线的位置而又不明显地产生对角线的所有方法。一种优选的方法开始于:从上述方程的两端减去m*landmarkn,将得到:
(landmark* n-m*landmarkn)=offset。
假设m近似等于一,即,假设没有时间展宽,我们可以得到:
(landmark* n-landmarkn)=offset。
然后,对角线发现(diagonal-finding)问题,被简化为发现针对给定的声音_ID的、集群(cluster)在相同的offset值附近的多个标志对。这一点可以通过从一个标志减去另一个并收集所得偏移值的柱状图而容易地完成。可以通过使用快速分类算法对所得的偏移值进行分类、或通过创建具有计数器的箱(bin)项目并插入到B-树中,来准备该柱状图。柱状图中的选中的偏移箱包含最大数目的点。在这里,这个箱被称为柱状图的尖峰。因为,如果外来的声音信号完全包含在正确的库(library)声音文件之中,则偏移必须为正,所以,可以排除导致负偏移的标志对。类似地,也可以排除超出文件的结尾的偏移。为每个有资格的声音_ID记录在柱状图的选中的偏移箱内的点的数目。这个数目成为针对每个声音记录的分值。选择候选列表中的具有最高分值的声音记录为选中者。如下所述地,向用户报告选中的声音_ID,以发出通知辨认成功的信号。为防止辨认失败,可以使用最小阈值分值以控制辨认处理的成功。如果没有分值超过阈值的库声音,那么,就没有识别,并如此通知用户。
如果外来的声音信号包含多个声音,则可以识别每个单独的声音。在这种情况中,在校准扫描中确定多个选中者的位置。不需要知道声音信号包含多个选中者,因为校准扫描将确定分值远高于其余分值的多于一个的声音_ID的位置。所使用的指纹方法最好展示出良好的线性重合(superposition),以便可以抽取多个单独的指纹。例如,声频谱图指纹处理方法展示出线性重合。
如果声音样本已经经受了时间展宽,则斜率不是一致地等于一。对以时间展宽的样本(假设指纹是时间展宽不变量)假设一致的斜率的结果是:所计算出的偏移值不是相等的。解决这一问题并提供适度的时间展宽的方式是增加偏移箱的尺寸,即,考虑为在一个偏移范围内,是相等的。通常,如果多个点不落在一条直线上,则所计算的偏移值是显著地不同的,而在偏移箱的尺寸上的轻微增加并不会产生显著数目的假正值。
其它线发现(line-finding)策略是可以的。例如,可以使用T.Risse,“HoughTransform for Line Recognition(用于线识别的Hough变换)”,Computer Visionand Image Processing(计算机视觉和图像处理),46,327-345,1989中描述的Radon或Hough变换,它们是机器视觉和图形研究领域中所公知的。在Hough变换中,散布图中的每个点在(斜率,偏移)空间中投影到一条直线。这样,在Hough变换中,散布图中的该组点被投影到多条直线的对偶空间(dual space)中。Hough变换中的尖峰与参数直线的交叉点相对应。给定的散布图的这样的一个变换的全体的尖峰,表明Hough变换中交叉直线的最大数目,以及协同线性(co-linear)点的最大数目。为允许5%的速度变化,例如,可以将Hough变换的结构限制到斜率参数在0.95与1.05之间变化的区域,这样,节省一些计算量。
分级搜索
除了排除具有非常小的散布列表的候选者的阈值步骤,还可以进一步地提高效率。在一个这样的提高中,根据出现的概率,数据库索引被分段成至少两部分,并且,起初只搜索具有匹配样本的最高概率的声音文件。该划分可以出现在处理的各种阶段。例如,主索引列表(图8C)可以分段为两个或更多个部分,这样,步骤16和20首先在一个段上执行。也就是说,只从数据库索引的一部分中检索与匹配的指纹相对应的文件,并从这一部分中产生一个散布列表。如果没有确定选中的声音文件的位置,则对数据库索引的其余部分重复该处理。在另一个实现中,从数据库索引中检索所有的文件,但是对角线扫描在不同的段上分离地执行。
使用这种技术,首先在数据库索引中的声音文件的小子集上执行对角线扫描,所述的对角线扫描为本方法的计算量密集的部分。因为对角线扫描具有关于被扫描的声音文件的数目近似成线性的时间分量,执行这样的分级搜索很有优势。例如,假设声音数据库索引包含代表1,000,000个声音文件的指纹,但是只有大约1000个文件以很高的频率匹配样本查询,例如95%的查询是针对1000个文件的,而只有5%的查询是针对其余的999,000个文件的。假设计算成本与文件的数目是线性相关的,则成本在95%的时间与1000成比例,而只有5%的时间与999,000成比例。从而平均成本大约与50,900成比例。这样,分级搜索使计算量减小为二十分之一。当然,也可以将数据库索引分割成多于两级,例如一组新发行的歌曲、一组最近发行的歌曲、和一组老的不流行的歌曲。
如上所述,首先对声音文件的第一子集,即高概率文件,执行搜索,然后,仅当首次搜索失败时,对包含其余文件的第二子集执行搜索。如果每个偏移箱中的点的数目没达到预定的阈值,则对角线扫描失败。作为选择,可以并行地(同时地)执行这两级搜索。如果在对第一子集的搜索中确定了正确的声音文件的位置,则发出信号以终止对第二子集的搜索。如果没有在对第一个搜索中确定出正确的声音文件的位置,则继续第二个搜索,直到确定选中的文件的位置。这两种不同的实现涉及到在计算力(effort)和时间上的权衡。第一种实现有更好的计算效率,但是,如果第一个搜索失败了,就引入了轻微的等待时间;而对于第二种实现,如果选中的文件是在第一子集中,则会浪费计算力,但是,当选中的文件不是在第一子集中时,等待时间最小。
对列表分段的目的是估计一个声音文件为查询的目标的概率,并将搜索限制在那些最有可能与查询样本匹配的文件中。有各种可能的方式来指定概率并对数据库中的声音分类,它们全部都在本发明的范围之内。最好是,基于新旧程度和被识别为选中的声音文件的频率来指定概率。新旧程度是有用的量度,特别是对于流行歌曲,因为随着新歌曲的发行,音乐兴趣随时间变化非常快。在计算概率分值之后,为文件指定等级,而列表按等级自分类(self-sort)。然后,已分类的列表被分段成两个或更多个子集,用于搜索。较小的子集可以包含预定的数目的文件。例如,如果排列将文件定位于顶部,换句话说,1000个文件中,则将文件放置在较小的、更快的搜索中。作为选择,可以动态调整用于两个子集的分界点。例如,所有具有超过一个特定的阈值的分值的文件可以被放置在第一子集中,并因此,每个子集中的文件的数目连续变化。
计算概率的一种特定的方式是:每当一个声音文件被辨认为针对查询样本的一个匹配时,就给声音文件的分值增加一。为说明新旧程度,周期性地降低所有记录的分值,这样,较新的查询比较旧的查询在排列上具有更强的效果。例如,可以通过对每个查询使用常数乘法因数,来变(ratchet)低所有的分值,使得:如果未被更新,分值就呈指数衰减。按照数据库中的文件的数目,该数目很容易达到一百万,这种方法要求每次查询时更新大量的分值,使得其潜在地不受欢迎。作为选择,以相对不频繁的间隔向下调整分值,比如每天一次。从较不频繁的调整得到的顺序,与从每次查询时都调整得到的顺序,是有效地相似的,但不十分一致。然而,更新等级的计算量非常低。
这种新旧程度调整的一个轻微变化是:每当查询时,向选中的声音文件添加指数增长的分值更新at,其中,t是从上次全体更新以来所经过的时间的量,该变化更准确地保持新旧程度分值。然后在每次全体更新时,通过将所有的分值除以aT,来向下调整所有的分值,其中,T是从上次全体更新以来所经过的总的时间。在这中变化中,a是大于一的新旧因数。
除了上述的排列,可以引入某些推理知识,以帮助选择列表中的种子候选者(seed)。例如,新发行的歌曲很可能比旧歌曲拥有更高的查询数。这样,新发行的歌曲可以被自动地放置在第一子集中,所述的第一子集包含具有匹配查询的较高概率的歌曲。这可以独立于上述的自排列算法而被执行。如果也使用自排列特征,新发行的歌曲可以被指定初始等级,以将其放置在第一子集中的某个地方。新发行的歌曲可以被种子候选(seed)在列表的非常顶部的位置、高概率歌曲列表的底部、或两者之间的某个地方。由于搜索的目的,初始位置并不重要,因为等级将随时间而收敛,以反映真实的兴趣水平。
在一个作为选择实施例中,搜索是以新旧排列的顺序来执行的,并在声音_ID值超过预定的阈值时终止。这与每段只包含一个声音_ID的上述的方法是等价的。实验表明,选中的声音的分值远大于所有其它声音文件的分值,并因此可以用最小限度的实验来选择合适的阈值。实现本实施例的一种方式是:根据新旧程度排列数据库索引中的所有的声音_ID,并对相同分值的情况中进行任意的重新评比(tie-breaking)。因为每个新旧程度排列是唯一的,所以新旧程度分值与声音_ID之间是一一映射。于是,当按声音_ID分类时,可以使用排列来代替声音_ID,以形成候选声音_ID的列表和关联的散布列表(图9C)。在产生三元组(指纹,标志,声音_ID)的索引列表时,索引列表被分类为主索引列表之前,可以将排列号限定(bound)在索引中。然后,以排列代替声音_ID。作为选择,可以使用搜索和替换函数来用排列替换声音_ID。只要保持映射完整性,随着排列被更新,新的排列就被映射到旧的排列上。
作为选择,在处理中,排列可以在稍后被限定(bound)。一旦创建了散布列表,排列可以与每个声音_ID相关联。然后,通过排列对多个集进行分类。在这个实现中,只需要修改指向散布列表的指针;不需要重复分组成散布列表。稍后限定(bindings)的优点是:不需要在每次更新排列时重建整个数据库索引。
注意到,流行度(popularity)排列本身就可以作为有经济价值的对象。也就是说,排列映用户获取一个未知的声音样本的辨认的需求。在很多情况中,查询是由购买该歌曲的欲望引起的。实际上,如果已知关于用户的人口统计信息,那么可以为每个期望的人口统计群体实现作为选择的排列方案。可以从用户签订识别服务时要求的简介信息获取用户的人口统计群体。也可以通过标准协作滤波技术(standard collaborsastive filtering technique)动态地确定。
在实时系统中,声音随时间递增地提供给识别系统,使得能够流水(pipelined)识别。在这种情况中,可以分段处理输入数据,并递增地更新样本索引集合。在每次更新周期之后,使用上述的搜索和扫描步骤,最近增加的索引集合被用来检索候选库声音记录。从数据库索引中搜索与最近获取的样本指纹匹配的指纹,并产生新的(landmarkk,landmark* j,sound_Dj)三元组。散布列表中添加了新的对,且柱状图也被增加。这一途径的优点在于:如果已经收集了可以毫不含糊地辨认声音记录的充足数据,例如,如果多个声音文件中的一个的偏移箱中的点的数目超过一个高阈值或超过第二高的声音文件分值,那么就可以终止数据采集并宣布结果。
一旦辨认了正确的声音,用任何合适的方法向用户或系统报告结果。例如,结果可以通过计算机打印输出、电子邮件、网络搜索结果页面、发给移动电话的短消息服务(SMS)、通过电话的计算机产生的语音通知、或将结果公布到用户可以稍后访问的网站或因特网帐号上。所报告的结果可以包括诸如歌曲的名称和作者、古典作品的作曲家和名称以及记录属性(例如,演奏者、指挥、演出地)、广告的公司和产品、或任何其它合适的标识符之类的声音的辨认信息。另外,可以提供传记信息、关于附近音乐会的信息、和其它歌迷感兴趣的信息;可以提供到这类数据的超级链接。所报告的结果也可以包括声音文件的绝对分值、或其与第二高分值的文件相比的分值。
本识别方法的一个有用的成果在于:其不混淆相同声音的两个不同的表演。例如,古典音乐的同一篇章的不同演奏不会被认为是相同的,即使人们不能察觉到两者之间的差异。这是因为,针对两次不同的演奏的标志/指纹对与其时间演化,极不可能精确地匹配。在当前的实施例中,标志/指纹对彼此必须在10毫秒之内,以便辨认为线性一致。作为结果,本发明所执行的自动识别使得在所有情况下都可以信任合适的演奏/声迹(soundtrack)和作者/标签。
实现的例子
下面描述本发明的一个优选的实现,即连续滑动的窗口音频识别。麦克风或其它声源被连续地采样到缓冲器中,以获取声音的前N秒记录。周期性地分析声音缓冲器的内容,以确定声音内容的一致性。声音缓冲器可以具有固定的尺寸,或可以随着声音被采样而增长尺寸,在这里,被称为音频样本的顺序增长段。给出报告以表明被辨认的声音记录的出现。例如,可以收集日志文件,或在设备上显示指示诸如标题、艺术家、唱片封面画、歌词、或购买信息之类的关于音乐的信息。为避免冗余,可以只在所识别的声音的一致性改变时给出报告,例如,在自动唱片点唱机节目改变之后。这样的设备可以被用于创建从任何声音流(无线广播、因特网信息流广播、隐藏的麦克风、电话呼叫、等)播放的音乐的列表。除了音乐一致性,可以把诸如识别的时间之类的信息记入日志。如果位置信息是可获得的(例如,从全球定位系统(GPS)),也可以把这类信息记入日志。
为完成该辨认,可以重新辨认每个缓冲器。作为选择,例如,可以将声音参数抽取到指纹或其它中间的特征抽取的形式中,并存储在第二个缓冲器中。新指纹可以被添加到第二个缓冲器的前端,并从该缓冲器的尾端丢弃旧指纹。这样的一个滚动缓冲器方案的优点在于,不需要对声音样本的重叠的旧段冗余地执行相同的分析,这样,来节省计算力。对滚动指纹缓冲器的内容周期性地执行辨认处理。在小型便携式设备的情况中,由于指纹流不是非常数据密集的,所以,可以在设备中执行指纹分析,且可以使用相对低带宽的数据信道将结果传送给识别服务器。滚动指纹缓冲器可以被保留在便携式设备中,并每次向识别服务器传输,或可以保留在识别服务器上,这种情况中,连续识别会话(session)被高速缓存(cache)在服务器上。
在这样的一个滚动缓冲器识别系统中,一有充分的信息可用于识别,就可以识别新的声音记录。充足的信息可以占用小于缓冲器的长度。例如,如果一首与众不同的歌曲在播放一秒钟后就可以唯一的识别,并且系统识别周期为一秒钟,那么,就可以立即识别该歌曲,尽管缓冲可以有15-30秒长。相反地,如果一首较少特色的歌曲要求更多秒钟的样本来识别,那么,在宣布歌曲的一致性之前,系统就必须等待较长的时期。在这种滑动窗口识别方案中,一有声音可以被辨认,就可以识别该声音。
需要非常注意的是,尽管已经以完整功能的识别系统和方法描述了本发明,那些本领域中的技术人员将会明白,本发明的机制能够以各种形式的指令的计算机可读媒体的形式而被分配,并且,本发明可以平等地应用,而不管用于实际执行分配的信号承载媒体的具体类型。这类计算机可存取设备的例子包括计算机存储器(随机存取存储器或只读存储器(ROM))、软盘、和光盘只读存储器(CD-ROM),以及诸如数字和模拟通讯链接之类的传输类型的媒体。