音频信号分析方法和设备
本发明涉及一种用于确定音频信号的特征(尤其是音调)的方法和设备。
随着更廉价存储和对因特网的访问的出现,消费者可以访问和积累包括视频、音频、文本和图形的大量信息和内容。为了有助于消费者对这些内容进行查找和访问,人们已经认识到了对于分类的需要。在音频环境中,分类可以基于音乐流派、艺术家、作曲人等等来进行。然而当基于情绪或其它特定感情标准而进行选择的时候,这些分类可能是有限制的。例如浪漫音乐可以被认为涵盖了古典、流行和其他音乐传统在内的作曲人和音乐风格的范围。情感音乐的特征在于其内在的音乐特征,包括声级、节奏和音调,其中的每一个都与特定的流派、作曲人或相似的分类无关。
在Tsuruta等人的美国专利5,038,658中,公开了一种能够确定声学信号的音调的自动音乐转录方法和设备。实施该方法的缺点是需要对声学信号进行多次分割以便确定对于确定音调所必需的音程(musicalinterval),包括基于所获取的功率信息变化、基于标准音符长度和基于在连续区间中的所标识片段的音程是否一致的分割。该方法的另一个缺点是需要通过自相关提取时域中的音高信息。
在论文“Querying Large Collections of Music for Similarity”(Welsh etal,UC Berkeley Technical Report UCB/CSD-00-1096,November,1999)中,给出了一种能够实现对大型数字音乐档案进行查询的系统,其中使用了基于一组预处理音乐档案的特征提取器的技术。一个特征提取器产生跨越一个音阶的音符的频率幅度的直方图,直方图的每个条柱对应于所分析的音乐样本的跨越5个八度(octave)的特定音符(例如升C)的平均幅度。其中记载了这种信息可以用于帮助确定演奏该音乐所用的音调,但是没有公开其方法。该方法的另一缺点是可能比较难于将那些与该音乐音调相关的音符与平均音符数据区别开来。
本发明的一个目的是改进已知技术。
根据本发明的第一方面,提供一种用于确定音频信号音调的方法,该方法包括以下步骤:
对于多个信号分段(portion)中的每个分段,分析该分段以标识音符,其中至少一个音符被标识:
确定与该音符或每个音符相关的强度;和
生成包含该音符或每个音符的标识、与该音符或每个音符相关的强度以及该分段的标识的数据记录;
对于每个数据记录,如果与所标识的音符相关的强度小于与该数据记录中包含的任何所标识的音符相关的最大强度的预定分数,则忽略所述强度;
从所标识的音符中确定第一音符作为它们各自强度的函数;
从所标识的音符中选择至少第二和第三音符作为第一音符的函数;和
基于对所述至少第二和第三音符的各自强度的比较来确定音调。
根据本发明的第二方面,提供一种用于确定音频信号音调的设备,该设备包括:
可用于接收信号的输入装置;
数据处理设备,用于:
对于多个信号分段中的每个分段,分析该分段以标识音符,其中至少一个音符被标识:
确定与该音符或每个音符相关的强度;和
生成包含该音符或每个音符的标识、与该音符或每个音符相关的强度和该分段的标识的数据记录;
对于每个数据记录,如果与所标识的音符相关的强度小于与该数据记录中包含的任何所标识的音符相关的最大强度的预定分数,则忽略所述强度;
从所标识的音符中确定第一音符作为它们各自强度的函数;
从所标识的音符中选择至少第二和第三音符作为第一音符的函数;和
基于对所述至少第二和第三音符的各自强度的比较来确定音调。
根据本发明,可以以高效、准确的方式确定音频信号的音调。该音频信号可以是一段音乐的数字或模拟记录。
优选地,每个分段是相同大小的,并且每个分段具有相同的时间长度。有利地,该分段的大小是音频信号的节奏的函数。这些分段可以是连续的。优选地,该预定分数依赖于音频信号的内容来确定。理想地,该预定分数在十分之一到二分之一的范围内,该预定分数的一个优选实施例是七分之一。
有利地,分析所述分段以标识音符的步骤包括以下步骤:
将该分段转换为频域表示;
将该频域表示细分为多个八度;
对于每个包含最大幅度的八度:
确定在最大幅度处的频率值;和
根据该频率值选择音阶的音符名称;
和
根据在多于一个八度中选择的相同音符名称来标识音符。
在本实施例中,优选地通过傅里叶变换来将该分段变换到频域表示。该音阶理想地为平均律音阶(equal tempered scale)。
在一个优选实施例中,确定与音符相关的强度的步骤包括以下步骤:
确定该音符的每个频率分量的幅度;和
对这些幅度求和。
有利地,确定第一音符的步骤包括以下步骤:
对于每个所标识的音符,对各数据记录中的与该音符相关的强度求和;和
确定具有最大强度和的所标识音符为第一音符。
在一个优选实施例中,该第一音符是该音调的主音。
本发明的优点是可以随意选择用于分析的音频信号分段,从而这种选择与音频信号的内容无关。并且,本发明的方法依赖于检测与音频信号音调相关的音符的存在,优选地检测源于特定类型的音乐源(例如乐器)的音符。有利地,确定音符的定时和持续时间与该方法无关。另一个优点是应用滤波来消除无关音符(和噪音)的影响,否则所述无关音符会干扰确定感兴趣音符的标识的过程。而且,本发明的方法适于以廉价硬件和/或软件来实现,从而可以应用于大量消费产品中。
现在仅通过示例并参照附图对本发明的各实施例进行说明,其中:
图1是用于确定音频信号音调的方法的流程图;
图2是图1的方法中用于分析音频信号的一个分段的步骤的流程图;
图3a是一系列显示音频信号的一个分段的频域表示的示例的曲线图;
图3b是显示对应于包含图3a中的分段的音频信号的各分段的一组数据记录表;
图4a是显示对应于音频信号各分段的一组数据记录的表;
图4b是显示与从图4a的表中的数据得到的所标识音符相关的总强度的表;和
图5是用于确定音频信号音调的设备的示意性表示。
图1显示了用于确定音频信号音调的方法的流程图。一般地,音频信号通过执行该方法的设备(500,图5)的输入装置(510,图5)接收。该方法一般用100表示,从102开始,分析(104)音频信号的一个分段以标识音符(如下面所详细说明的)。优选地,使用所标识的低音音符来确定音调。这些音符的特征在于,它们的基波分量位于该低音音域(bass register)内并且具有一个或多个相关的谐波频率分量,所述分量与所识别的音阶相关。这些音符可以由标定了音高的乐器(即能够根据音阶来发出一个或多个音符的声音的乐器)来发声,例如低音吉他或低音提琴。其中对于该分段已经标识出至少一个音符,然后该方法确定(110)与该一个或多个音符相关的强度。该强度作为所标识音符的一个或多个频率分量的幅度的函数而被确定。一旦已经确定了与一个分段中的每个音符相关的强度,就会产生(112)数据记录120,该数据记录120包括该一个或多个音符的标识、与每个音符相关的强度以及该分段的标识。然后该方法检查(116)以确认已经对将被处理的音频信号的所有分段106执行了步骤104、108、110和112。要注意的是,所述分段可以仅包含总接收音频信号的一部分,并且所述分段可以是连续或不连续的。对所得到的该组数据记录114中的每条数据记录120进行检查,以忽略(118)该记录中任何小于与包含在该组数据记录中的任何记录中的任何标识的音符相关的最大强度的预定分数(例如七分之一)的强度。这些强度可以从该数据记录中删除(122)。其目的是滤除那些会影响在该音频信号中区分与音调相关的音符的音符强度。接着,该方法使用经滤波的数据126从所标识的音符中确定(124)第一音符作为它们各自强度的函数。然后,再次使用经滤波的数据126从所标识的音符中选出(128)至少第二和第三音符作为第一音符的函数。在分析中使用所述基于音阶选择的音符。优选地,使用平均律音阶。对于此音阶系统,该第一音符将表示该音阶的主音,而第二和第三音符可以分别表示替换间隔音符,其各自对应于音调的大调模式和小调模式。还可以基于将被确定音调的模式来选择附加的音符。然后基于对所述至少第二和第三音符的各自强度的比较来确定(130)音调。该方法在132结束。
图2显示了详细描述图1的方法中用于分析音频信号的一个分段的步骤104的流程图。该方法在202开始,进而将该分段转换(204)为频域表示。可以使用任何适当的转换方式;优选地,通过傅里叶变换来进行转换。接着,将该频率表示细分(206)为多个八度,因为音阶可以使用八度构成。任何适当的音阶都可以应用;优选地使用平均律音阶,因为这种音阶是许多音乐流派和风格的共同基础。在每个八度内搜索最大幅度频率分量。在这种最大值存在的位置,确定(208)该最大幅度处的频率值。然后根据该确定的频率值选择(210)音阶(例如平均律音阶)的音符名称。该确定的频率值应当确切地对应于具有规定音符名称的音阶音符的参照频率值,或者至少对应于该参照频率值的一个预定范围(例如+/-10%)。
所选择的该特定的预定范围可以依赖于音频信号内音符的容许频偏(frequency tolerance);该容许频偏又可受到例如与该音阶的参照调音不合调的一个或多个音乐源的影响。调音的差异可以被测量,从而用所选择的预定范围来补偿。在从音乐源到该音调确定方法或设备的路径中会发生失真。该路径中的失真类型包括变音(wow)和颤音(flutter)、数据损坏和噪音。由于这种失真会随时间而变化,所以可以选择标称预定范围(例如+/-10%)或者可以应用更复杂的方案来连续测量该失真并动态适配该预定范围。
音阶的音符名称描述了与八度的倍数相关的所有音符(即具有相同名称的音符是谐波相关的);一个音阶内的特定音符可以用音符名称和特定的八度来表征。该方法检查(212)以确保该分段的频域表示的所有八度均已被步骤208和210处理。然后对在八度中选择的音符名称进行比较(214);当发现有两个或更多相同的音符名称时,就认为它们标识(216)一个音符。这是因为音乐源(例如歌手和乐器)可以产生以一组谐波相关的频率分量为特征的声音;也就是说,由这种音乐源发出的音符的频率分量位于彼此的倍数处。该方法在218结束。
对于普通技术人员显而易见的是,该方法对于一个分段可能标识0个、1个或多个音符。在一个分段的频域表示被细分为多个八度的情况下,标识多于一个音符的能力依赖于一个分段的频域表示所被细分成的八度的数量;两个或三个八度可以标识至多一个音符;四个或五个八度可以标识至多两个音符,等等。音乐源产生的音符的范围会影响一个分段的频域表示所应当被细分成的八度的数量。例如,音频信号可以包括位于频率范围27Hz到4.1kHz的音符(例如,钢琴可以发出平均律音阶的从A0到C8的音符)。在这个例子中,该方法会把音频信号的一个分段的频域表示细分为例如至少一个或两个另外的八度(例如总共11个八度——平均律音阶的八度0到10),以便标识钢琴的高音高音符。然而,这种整体方法对于确定音调的目的是不必要的,优选为使用八度的一个子集。例如可以使用具有特定音域的音乐源来确定音调。优选地,音频信号包括低音音符,而该方法可以将该音频信号的一个分段的频域表示细分为五个八度(例如平均律音阶的八度1到5)以便标识低音音符。
图3a是显示音频信号的一个分段的频域表示300的示例的一系列曲线图。该频域表示被细分为多个八度。在图3a中显示了五个幅度-频率图形表示301、302、303、304、305,每个表示音阶中的一个八度(水平的频率轴用对数表示)。八度被选择成使得它们包括一个频率范围,所发出的音符的适当分量(如果在该分段中存在的话)处于该频率范围内。优选地,低音音符将被标识;因而,适当的八度包含那些包括由低音乐器产生的音符的基波和谐波分量的八度,例如在平均律音阶的情况下的八度1到5。每个八度内的该分段的频率分量的幅度外形线被显示为306、308、310、312、314。这些外形线中的每个都被检查以检测最大值(如果存在的话)。在所示的例子中,每个八度具有一个最大值,分别显示为316、318、320、322、324。在图3a中,每个幅度-频率图形表示301到305被设置成涵盖了对于平均律音阶的一个八度的相同的音符序列;例如音符C的频率值(在一个八度内)位于原点,该频率轴刻度覆盖了一个八度。最大值316、320和324均与相同的音符名称E相关,如线326所示,线326表示所有八度共用的相同的音符名称(E)(因为每个八度使用对数频率轴和垂直布置的表示301-305来描述)。因此,音符E出现(即是最大频率分量)在一个以上的八度中(确切地是三个八度)。从而认为音符E被标识出来。然后通过对其中该音符名称对应于幅度最大值的各八度中的频率分量的幅度求和来确定所标识的音符E的相关的强度。在本例子中,该强度包括该音符在对应的八度中的相关(最大值)频率分量的幅度值e1、e3、e5的和。检查其他的八度,可以看到,没有相同的音符对应于最大值318和322,这些最大值分别是音符D的频率分量(具有幅度d2)和音符A的频率分量(具有幅度a4)。
图3b显示了包含对应于音频信号的一个分段的一组数据记录的表,该音频信号包含图3a中所示的分段。在对该音频信号的各分段的分析过程中创建一组数据记录327。每条记录包含用于标识音符328、与该音符相关的强度330和该被标识音符所在的分段332的字段。如前所述,在一个分段中可以标识出一个以上的音符;图3b以对于编号为2的分段的数据记录的情况提供了这种说明。其中显示了图3a中所示分段的数据记录,并且包括该被标识音符的标识334、所计算的与该音符相关的强度336和该分段的标识338。
考虑在平均律音阶的5个八度1至5中标识音符的例子,所标识的强度最大的音符可能出现在任何分段中的原因是:
a)低音音符在5个八度中的多数八度中都具有较大幅度的分量,和/或
b)较高音高的音符在上八度(例如八度4和5)中具有较大幅度分量。
对分段大小的适当选择可以有助于区分这些音符。随着分段大小的增加,在一个分段中可标识音符的数量也会增加。回想到对一个分段标识出一个以上的音符依赖于该分段的频域表示被细分成的八度的数量,从而对于给定数目的八度,较大的分段大小会减弱标识出所存在的所有音符的能力。相反地,为了最小化强音符在低音音域(例如八度4和5)的较高部分中的影响,分段大小应当被适当地选择,以使得低音音符和强度高的较高音符较少出现在相同分段中。分段大小可以是可变的或固定的。使用固定分段大小的优点在于,减少了处理要求(从而加快了执行)。优选地,每个分段是相同大小的,例如每个分段包含相同的时间长度。分段大小的选择可以是音频信号的节奏(节拍速率)的函数。在节奏未知时,分段大小可以作为最大预期节奏的函数来选择,例如240拍每分钟。通过假定每拍中演奏的不同音符的最大数量可以进行进一步细化,例如两个音符每拍。例如,包括44100个样本每秒的音频信号可以在这样的分段中分析,其中每个分段具有5512个样本,表示八分之一秒,对应于240拍每分钟的节奏,其中每拍最多演奏两个不同音符(即八分音符)。在这个例子中,为了方便起见,分段大小可以四舍五入为5000个样本。
图4a是显示对应于音频信号各分段的一组数据记录的表。数据记录402包含用于标识其中一个或两个被标识的分段和与每个音符相关的强度的字段。数据记录404与分段1相关,并且标识出具有相关强度(30)的一个音符(E)。类似地,数据记录406与分段4相关,并且标识出具有相关强度(分别是100和10)的两个音符(C和升F,F#)。
如上所述,该组数据记录包括多个分段的记录,每条数据记录包括特定分段的音符和强度数据。现在,该方法滤除所述数据记录内的某些所标识的音符,例如通过忽略与一个分段的一个音符相关的强度,该强度小于在任何分段中出现的最强的所标识音符的预定分数。所述滤除有助于突出例如音频信号中的较强的音符,这种音符往往与音调更相关。在其中标识出低音音符的示例情况中,被忽略的与一个分段的一个音符相关的强度可以包含具有相对较少低音内容的音符(例如仅在该分段的频域表示的较高八度内有所贡献)或者具有相对较低的低音水平以致于对整体影响极小(例如相对安静的音符或噪音)的音符。该预定分数可以在任何分段中最强的所标识音符的十分之一到二分之一的范围内。该预定分数可以依赖于音频信号的内容来确定,例如具有较多乐器在低音音域演奏(与音乐的第二片段比较)的音乐的第一片段会需要与第二片段不同的滤波(分数)。所选择的预定分数可以取决于音乐流派;例如对于流行音乐合适的预定分数是七分之一。优选地,使用七分之一作为预定分数的默认值。在默认值七分之一对于音调的确定给出较差结果的情况下,可以使用不同的分数值进行替换的滤波。如上所述,合适的分数值的选择可以根据经验进行或者基于音频信号的内容或流派来选择。
在图4a的例子中,已知该音频信号是流行音乐,所以使用七分之一为预定分数。该组数据记录400中的最大强度是100(与分段4中的所标识音符C对应的强度410)。因此,该组数据记录400中的强度414、416、418、420中的每一个都小于100/7,并且会在随后的处理中被忽略,例如从该组数据记录400中的它们各自的数据记录中删除(图4a中未示出)。然后作为各个所标识音符的各自强度的函数来从所标识音符中确定第一音符。一个例子可以包括取得每个分段中具有相同音符名称的所标识音符的强度,和对所有分段计算音阶的每个所标识音符的总强度。
图4b是显示与从图4a的表中的数据获得的与所标识音符相关的总强度的表。所计算的每个总强度对应于平均律音阶的半音音阶的12个音符452中的一个。具有最高总强度的所标识音符被认为是与该音频信号的音调相关的第一音符(在本例子中是主音)。第二和第三音符是根据它们与该主音的关系而选择的,使得它们的相对强度指示该音调模式是大调还是小调。例如,对于主音是音调音符的音阶,可以检查该音阶的第3音步(音程)。当音频信号的被分析的各分段主要在大调中时,将会有较强的第4半音出现在主音之上(例如,当主音是音符C时,C大调的第4半音是名称为E本位(E natural)的音符)。或者,当音频信号的被分析的各分段主要在小调中时,将会有较强的第3半音出现在主音之上(例如,当主音是音符C时,C小调的第3半音是名称为升D(D#)的音符)。因此,对于本例,比较在主音之上的第4和第3半音处的所标识音符的相对总强度可以指示该音调是大调还是小调(对于C调,比较所标识音符E和D#)。可以检测替换的音符以确定包含第6音程的音符(例如,对于C调,比较所标识音符A本位和升G(G#))的大调和小调。在图4b中,所标识音符C 454具有最高的总强度466(包括强度408、410、412的相加)并且从而被认为是第一音符(和主音)。包含在该组数据记录400中的其他所标识音符包括音符456、458、460、462、464,及其相应的(经滤波的)强度468、470、472、474、476。可以看到,例如音符458的总强度470不含有420的贡献,因为其被认为是不相关音符或噪音而被滤除掉(忽略)。如上所述,然后选择其他所标识音符作为主音的函数,例如第3和第6音程。该方法基于主音选择对应于第3(或第6)音程的所标识音符456、478(或者464、480)。使用对每个被选择的所标识音符的总强度468、482(或者476、484)的比较来确定音频信号的音调的大调或小调模式。在图4b的例子中,音调的主音是C(最大总强度160);比较对应的大调和小调第3音程音符456和478的总强度468和482,可以确定音调是C大调。可以发现,音调可以具有这样一种类型的模式,该类型的模式需要选择除了所述这些之外的其他的或者替换的所标识音符,以便完全确定音调模式。
图5是用于确定音频信号的音调的设备的示意性表示,通常用500表示。该设备包括用于接收音频信号的输入装置510。该输入装置可以包含用于读取物理介质(磁带、磁盘或光盘等)的接口或者也许是与有线和/或无线网络连接的接口,以便能够访问本地和远程网路资源,包含因特网资源。具体地说,合适的有线系统的例子包括以太网、RS232和USB;合适的无线系统的例子包括WiFi、802.11b、低功率无线电(LowPower radio)和蓝牙。该音频信号可以包括任何合适的模拟或数字格式。所接收的音频信号可以是基带或调制的。合适的数字音频信号格式的例子包括AES/EBU、CD音频、WAV和AIFF。该输入装置可以执行处理以提供适于该设备的数据处理设备502部分的形式的音频信号。该设备还包括CPU 504、程序ROM 506、RAM 508(它们一起组成数据处理设备502),它们之间互相连接并且通过总线512与输入装置510通信。程序ROM包含当由CPU运行时可以执行所述方法步骤的代码。该程序代码或者可以通过该输入装置从远程源下载到该设备,并被存储在本地存储器(例如RAM 508)中。该RAM一般用于保存临时结果。输入装置510和/或数据处理设备502可以以硬件或软件或它们的任意组合来实施。例如,ASIC可以实现该输入装置和/或数据处理设备的功能。在另一例子中,输入装置可以是无线空气接口,而数据处理设备是使用常规的CPU、ROM和RAM来实现的。用户接口514可以通过总线512连接到数据处理设备,并且该接口然后可以用于使用户能够配置该方法,例如选择所需的音乐情感类型(悲伤、快乐等),该选择可以用于确定所要寻找的音调。存储器516可以包含音频信号标识符(例如描述音频信号位置的数据)或音频信号文件(例如音乐轨道)的列表及其音调(根据先前分析所确定的,例如通过所述设备确定)。响应于用户输入或者通过任何其他方式,该设备基于一个或多个所确定的音调来访问和分析音频信号和/或选择音频信号,以便例如编辑播放列表,该播放列表是根据包含情感、位置等的输入信息进行编辑的。该设备可以从远程源访问和分析音频信号,以根据该输入信息来提供所述音乐轨道。在另一种情况下,该设备可以通过输出装置518输出音调和音频信号信息,以便由另一个设备或系统使用。该输出装置可以包括任何合适的实施方式,包括上面针对输入装置所述的用于与物理介质和/或网络实体接口的实施方式。
本发明可以合并到任何合适的设备中,该设备被配置为专用的音调提取设备或在主机产品或应用中提供音调提取特征。合适的设备的例子包括音频自动电唱机(audio Jukebox)、因特网无线电和播放列表生成器(例如用于无线电台)。音频自动电唱机可以使用可移动的介质(利用磁带/磁盘和/或光盘)和/或通过联网技术(本地和广域网,包括因特网等)以有线或无线互连的方式访问音频信号。
前述的方法和实施方式仅仅是示例性给出的,其代表从一个范围的方法和实施方式中所做的选择,这些方法和实施方式可以由本领域普通技术人员容易地理解以利用本发明的优点。
在上述参照图1的说明中,公开了一种用于确定音频信号(例如音乐轨道)的音调的方法。分析(104)音频信号的各分段106以标识(108)每个分段中的音符及其相关的强度110。在一个分段中所标识的一些音符可以被忽略(118)以使得能够更容易地区分与音调相关的音符。然后可以从所标识的音符中确定(124)第一音符作为它们各自强度的函数。从所标识的音符中选择(128)至少两个另外的音符作为该第一音符的函数。然后基于对所选择音符的各自强度的比较来确定(130)该音频信号的音调。