歌词文件和音调文件对齐方法及装置与流程

文档序号:11691879阅读:485来源:国知局
歌词文件和音调文件对齐方法及装置与流程

本发明涉及信息技术领域,特别是涉及歌曲相关信息的自动处理技术领域,尤其涉及一种歌词文件和音调文件对齐方法及装置。



背景技术:

目前,手机或者音乐播放器等都具有在播放歌曲时同步展示歌词的功能,具体在播放歌曲文件时,可以读取相应的歌词文件中与正在播放的歌曲的时间戳对应的歌词。歌曲除了可记录为mp3、wma等常见的音频编码格式,还可以记录为文本形式的音调文件,也可以称为midi(musicalinstrumentdigitalinterface,乐器数字化接口)文件,利用音调文件可以进行模拟演奏。

然而,歌词文件和音调文件通常出自不同的制作团队,导致歌词文件和音调文件通常是不同步的,无法满足高精确度的应用需求。



技术实现要素:

基于此,有必要针对歌词文件和音调文件不同步的问题,提供一种歌词文件和音调文件对齐方法及装置。

一种歌词文件和音调文件对齐方法,所述方法包括:

获取相同歌曲的歌词文件和音调文件;

根据所述歌词文件获取歌词单字以及相应的播放时间段;

根据所述音调文件获取音调值以及相应的播放时间段;

按照所述歌词单字和所述音调值之间播放时间段的时间重合度将所述歌词单字和所述音调值进行匹配;

将相匹配的歌词单字和音调值按照相应的音调值的播放时间段进行时间对齐。

一种歌词文件和音调文件对齐装置,所述装置包括:

文件获取模块,用于获取相同歌曲的歌词文件和音调文件;

歌词文件读取模块,用于根据所述歌词文件获取歌词单字以及相应的播放时间段;

音调文件读取模块,用于根据所述音调文件获取音调值以及相应的播放时间段;

匹配模块,用于按照所述歌词单字和所述音调值之间播放时间段的时间重合度将所述歌词单字和所述音调值进行匹配;

时间对齐模块,用于将相匹配的歌词单字和音调值按照相应的音调值的播放时间段进行时间对齐。

上述歌词文件和音调文件对齐方法及装置,对于相同歌曲的歌词文件和音调文件,按照歌词单字和音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配,从而将歌词文件中的歌词单字和音调文件中的音调值对应起来。由于用于模拟演奏的音调文件中音调值的播放时间段比歌词文件中的播放时间段更为精确,因此利用音调值的播放时间段将相匹配的歌词单字和音调值进行时间对齐,不仅保证了歌词文件中的歌词单字与音调文件中的音调值的同步,还可以保证同步后歌词文件与其它格式的音频文件也基本是同步的。

附图说明

图1为一个实施例中用于实施歌词文件和音调文件对齐方法的电子设备的结构示意图;

图2为一个实施例中歌词文件和音调文件对齐方法的流程示意图;

图3为一个实施例中处理孤立的音调值的步骤的流程示意图;

图4为一个实施例中从获取的歌词单字中按歌词句剔除说唱歌词单字的步骤的流程示意图;

图5为一个实施例中时间偏移处理的步骤的流程示意图;

图6为一个实施例中歌词文件和音调文件对齐装置的结构框图;

图7为另一个实施例中歌词文件和音调文件对齐装置的结构框图;

图8为再一个实施例中歌词文件和音调文件对齐装置的结构框图;

图9为一个实施例中歌词文件和音调文件对齐装置的结构框图;

图10为一个实施例中说唱歌词剔除模块的结构框图;

图11为另一个实施例中歌词文件和音调文件对齐装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,在一个实施例中,提供了一种电子设备,包括通过系统总线连接的处理器、非易失性存储介质和内存储器。其中处理器具有计算功能和控制电子设备工作的功能,该处理器被配置为执行一种歌词文件和音调文件对齐方法。非易失性存储介质包括磁存储介质、光存储介质和闪存式存储介质中的至少一种,非易失性存储介质存储有操作系统和歌词文件和音调文件对齐装置,该歌词文件和音调文件对齐装置用于实现一种歌词文件和音调文件对齐方法。

如图2所示,在一个实施例中,提供了一种歌词文件和音调文件对齐方法,本实施例以该方法应用于上述图1中的电子设备来举例说明。将歌词文件和音调文件对齐,包括将歌词文件中的歌词单字与音调文件中的音调值对齐,还包括将歌词文件和音调文件时间对齐。该方法具体包括如下步骤:

步骤202,获取相同歌曲的歌词文件和音调文件。

具体地,电子设备获取的歌词文件和音调文件属于相同歌曲。歌词文件有不同的格式,但都至少包含歌词单字和每个歌词单字对应的播放时间段信息,播放时间段信息可以是歌词单字的起始时间点和结束时间点,也可以是歌词单字的起始时间点和播放持续时长。歌词文件比如qrc文件(文件扩展名为“.qrc”)、lrc文件(文件扩展名为“.lrc”)等。

音调文件至少包含音调值和相应的播放时间段信息,播放时间段信息可以是音调值的起始时间点和结束时间点,也可以是音调值的起始时间点和播放持续时长。一个音符(note)的音调值(midinumber)可以根据该音符的频率值计算出,假设音调值为m,相应的频率值为fm,则可通过以下公式(1)将音 调值m和频率值fm彼此转换:

m=12×log2(fm/400hz)+69;

fm=2^((m-69)/(12×440hz))公式(1)

其中,公式1中“^”是幂次运算符。

步骤204,根据歌词文件获取歌词单字以及相应的播放时间段。

具体地,歌词文件具有特定格式,电子设备可以根据该特定格式识别出歌词单字和相应的播放时间段,最好还可以自动识别出歌词句。电子设备根据歌词文件获取歌词单字以及相应的播放时间段,为了方便计算,获取的播放时间段与下述步骤206中获取的播放时间段可以采用相同的格式,比如统一用起始时间点tq1和结束时间点tq2来表示播放时间段(tq1,tq2)。

以qrc文件为例,歌曲名称为《新鸳鸯蝴蝶梦》的歌词文件的部分内容如下:

“……

[42432,4920]昨(42432,450)日(42882,250)像(43132,270)那(43402,350)东(43752,290)流(44042,380)水(44422,690)离(45112,260)我(45372,310)远(45682,310)去(45992,330)不(46322,330)可(46652,380)留(47032,320)

[48392,3499]今(48392,280)日(48672,350)乱(49022,280)我(49302,330)心(49632,720)多(50352,290)烦(50642,769)忧(51411,480)

……”

其中,歌词句之间可以通过段落标记(回车标记)进行识别,也可以通过歌词句头部的播放时间段信息来识别。歌词单字和相应的播放时间段信息是一一对应的。

比如,“昨日像那东流水离我远去不可留”和“今日乱我心多烦忧”分别是两句歌词句,[42432,4920]表示“昨日像那东流水离我远去不可留”这一歌词句的播放时间段信息,“42432”为这一歌词句的起始时间点,“4920”为这一歌词句的播放持续时长。(42432,450)是“昨”这一歌词单字的播放时间段信息,其中“42432”是这一歌词单字的起始时间点,“450”则是这一歌词单字的播放持续时长。qrc文件的时间单位是ms(毫秒),歌词文件也可以使用其他时间单位。 电子设备读取歌词文件获得的其中一个歌词单字为“昨”,相应的播放时间段为(42432,42883)。

步骤206,根据音调文件获取音调值以及相应的播放时间段。

电子设备根据音调文件获取音调值以及相应的播放时间段,为了方便计算,播放时间段可表示为(tn1,tn2),其中tn1为起始时间点,tn2为结束时间点。

举例说明,假设音调文件包括三列,第一列为音调的播放起始时间,第二列为音调的播放持续时间,第三列为音调值。歌曲名称为《新鸳鸯蝴蝶梦》的音调文件的部分内容如下所示:

“……

4243232871

4276132874

4309032876

4341932876

……”

其中,“4243232871”这一行中,“42432”为音调的起始时间点,“328”为音调的播放持续时长,“71”为音调值。电子设备读取“4243232871”这一行,获得音调值“71”以及相应的播放时间段(42432,42761)。

在一个实施例中,电子设备还可以对音调值的播放时间段进行去音重合处理。本实施例中,由于音调文件在制作过程中是由人工弹奏键盘模拟人声而自动产生的,所以在音调文件中会存在相邻两个音重合的情况,为解决此人工误差,具体可判断相邻两个音调值的播放时间段是否满足音重合条件,若满足则将按时序在前的音调值的结束时间点设置为在后的音调值的起始时间点。音重合条件包括:按时序在后的音调值的起始时间点比在前的音调值的结束时间点早,或者,在前的音调值的结束时间点比在后的音调值的起始时间点早10ms以内。本实施例中,考虑到音乐人工弹奏时手指按下的位置是可靠的,但抬起的时间会出现误差,通过去音重合处理可以使得音调值的播放时间段更为准确。

步骤208,按照歌词单字和音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配。

具体地,电子设备按照歌词单字的顺序遍历歌词单字,遍历时查找与当前的歌词单字在播放时间段上时间重合度最高的音调值,从而将该时间重合度最高的音调值与当前遍历的歌词单字匹配。匹配是为了建立歌词单字和音调值的对应关系。

歌词单字和音调值之间播放时间段的时间重合度,是指歌词单字的播放时间段与音调值的播放时间段之间交集的大小,交集越大时间重合度越大。时间重合度可以用歌词单字和音调值之间播放时间段的交集的区间长度来表示,也可以用歌词单字和音调值之间播放时间段的交集的区间长度除以并集的区间长度来表示。比如(tq1,tq2)和(tn1,tn2)的时间重合度,可以用|(tq1,tq2)∩(tn1,tn2)|/|(tq1,tq2)∩(tn1,tn2)|来表示,其中|·|表示区间长度,可以用相应区间的最大值减去最小值计算获得。

在一个实施例中,在步骤208之前还包括:从获取的歌词单字中按歌词句剔除说唱歌词单字。其中,说唱(rap)是一种特殊的音乐属性,有歌词内容,即说唱歌词,但不存在相应的音调值。而且说唱歌词是整句出现的,按歌词句剔除说唱歌词单字,可以保证属于说唱内容的歌词单字被完整排除。从获取的歌词单字中剔除说唱歌词单字,可避免将说唱歌词单字错误地与音调值匹配而造成对齐处理出错。

步骤210,将相匹配的歌词单字和音调值按照相应的音调值的播放时间段进行时间对齐。

具体地,用于模拟演奏的音调文件中音调值的播放时间段比歌词文件中的播放时间段更为精确,这里在将相匹配的歌词单字和音调值进行时间对齐时,以匹配的音调值的播放时间段为依据进行时间对齐。

在一个实施例中,电子设备可在步骤210之后根据匹配的歌词单字和音调值以及相应的播放时间段生成简谱文件。简谱文件包括歌词单字、音调值、歌词单字和音调值之间的匹配、歌词单字的播放时间段以及音调值的播放时间段。

举例说明,生成的歌曲名称为《新鸳鸯蝴蝶梦》所对应的简谱文件的部分内容可如下所示:

“word_01昨4243242761

note_0714243242761

word_11日4276143090

note_1744276143090

……”

其中,word_0、word_1……是歌词单字的标识,note_0、note_1……是音调值的标识。每行表示一个歌词单字的属性或者一个音调值的属性,一个歌词单字的属性之后的是相匹配的音调值的属性,以表示歌词单字和音调值的匹配。

比如,“word_01昨4243242761”这一行中,歌词单字的标识之后的“1”表示“word_0”匹配的音调值数量,“昨”表示“word_0”表示的歌词单字的内容,“42432”表示“word_0”对应的播放时间段的起始时间点,“42761”表示“word_0”对应的结束时间点。

再比如,“note_0714243242761”这一行中,“71”表示音调值,“42432”表示“note_0”对应的播放时间段的起始时间点,“42761”表示“note_0”对应的结束时间点。

在一个实施例中,步骤210包括:将仅匹配一个音调值的歌词单字的播放时间段修改为匹配的音调值的播放时间段。具体地,常见情况下,一个歌词单字仅匹配一个音调值,此时可直接将歌词单字的播放时间段修改为匹配的音调值的播放时间段。

在一个实施例中,步骤210包括:对于匹配有至少两个音调值的歌词单字,将匹配的至少两个音调值的播放时间段合并后作为相应的歌词单字的播放时间段。

具体地,对于匹配有至少两个音调值的歌词单字,将相应播放时间段的起始时间点和结束时间点分别修改为至少两个音调值的最早播放时间段的起始时间点和最晚播放时间段的结束时间点。

具体地,歌词单字可以匹配多个音调值,假设歌词单字a匹配两个音调值b和c,其中音调值b的播放时间段为(tb1,tb2),音调值c的播放时间段为(tc1,tc2),且tb2≤tc1,则(tb1,tb2)为最早播放时间段,(tc1,tc2)为最晚播放时间段,此时将匹配有至少两个音调值的歌词单字的播放时间段的起始时间点和结束时 间点分别修改为最早播放时间段(tb1,tb2)的起始时间点tb1和最晚播放时间段(tc1,tc2)的结束时间点tc2。

在一个实施例中,对于匹配有至少两个音调值的歌词单字,电子设备可判断至少两个音调值的播放时间段是否时间连续或者无交集时时间相差是否在30ms之内,若时间连续或时间相差在30ms之内则将匹配的至少两个音调值的播放时间段合并后作为相应的歌词单字的播放时间段;若时间不连续或者时间相差超过30ms则输出人工处理日志。时间连续是指播放时间段首尾相接或者时间相差不超过10ms。

比如上述的音调值b和c,若0≤tc1-tb2≤10ms,则音调值b的播放时间段和音调值c的播放时间段时间连续;若10ms≤tc1-tb2≤30ms则音调值b的播放时间段和音调值c的播放时间段无交集,此时b、c两个音调值的播放时间段的时间相差不超过30ms。其中10ms是判断时间连续的容错时间差,30ms是判断是否将匹配的至少两个音调值的播放时间段进行合并的容错时间差。

上述歌词文件和音调文件对齐方法,对于相同歌曲的歌词文件和音调文件,按照歌词单字和音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配,从而将歌词文件中的歌词单字和音调文件中的音调值对应起来。由于用于模拟演奏的音调文件中音调值的播放时间段比歌词文件中的播放时间段更为精确,因此利用音调值的播放时间段将相匹配的歌词单字和音调值进行时间对齐,不仅保证了歌词文件中的歌词单字与音调文件中的音调值的同步,还可以保证同步后歌词文件与其它格式的音频文件也基本是同步的。

在一个实施例中,步骤208之后,还包括:确定与歌词文件中的任意歌词单字在播放时间段上不存在交集的孤立的音调值;将孤立的音调值匹配到与孤立的音调值相邻且时间连续的音调值所匹配的歌词单字。

如图3所示,在一个实施例中,步骤208之后还包括处理孤立的音调值的步骤,具体包括如下步骤:

步骤302,确定与歌词文件中的任意歌词单字在播放时间段上不存在交集的孤立的音调值。

具体地,孤立的音调值是指与歌词文件中的任意歌词单字在播放时间段上 不存在交集的音调值。电子设备在遍历歌词单字之后,若存在与任意歌词单字在播放时间段上不存在交集的音调值,则确定为孤立的音调值。

步骤304,判断孤立的音调值是否与相邻的音调值时间连续。若时间连续,则执行步骤306;若不连续,则执行步骤312。

具体地,音调值相邻是按照音调文件中记录的音调值的顺序相邻,孤立的音调值相邻的音调值,包括孤立的音调值的前一个音调值和后一个音调值。时间连续是指播放时间段首尾相接或者时间相差不超过10ms。

步骤306,判断相邻且时间连续的音调值是否存在匹配的歌词单字。若存在,则执行步骤308,若不存在则执行步骤310。

具体地,若相邻的音调值是与孤立的音调值时间连续的,则电子设备可判断相邻且时间连续的音调值是否已经匹配了歌词单字。

步骤308,将孤立的音调值匹配到与孤立的音调值相邻且时间连续的音调值所匹配的歌词单字。

具体地,若孤立的音调值与相邻的音调值时间连续,且该相邻的音调值已经匹配了歌词单字,则电子设备可将该孤立的音调值匹配到该相邻且时间连续的音调值所匹配的歌词单字。如果孤立的音调值的两个相邻的音调值都与独立的音调值时间连续,则考虑到在预设样本中统计的尾字变调的概率为95%,可将孤立的音调值匹配到与孤立的音调值相邻且时间连续的按时序在前的音调值所匹配的歌词单字。

步骤310,将时间连续的音调值作为孤立的音调值,并返回步骤304。

具体地,若相邻且时间连续的音调值没有匹配到歌词单字,则将该相邻且时间连续的音调值作为新的孤立的音调值进行迭代处理,再返回步骤304进行处理,涉及的孤立的音调值变为新的孤立的音调值。

步骤312,输出人工处理日志。

具体地,若孤立的音调值不与相邻的音调值时间连续,此时电子设备无法判断出该孤立的音调值的情形,需要输出日志由人工处理。

本实施例中,当存在与歌词文件中的任意歌词单字在播放时间段上不存在交集的孤立的音调值时,可通过孤立的音调值是否与相邻的时间连续的判断来 处理孤立的音调值,尽量减少人工干预而且保证准确性。

如图4所示,在一个实施例中,步骤208之前,还包括从获取的歌词单字中按歌词句剔除说唱歌词单字的步骤,具体包括如下步骤:

步骤402,按照获取的歌词单字和获取的音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配。

具体地,电子设备在从获取的歌词单字中按歌词句剔除说唱歌词单字之前,按照获取的歌词单字和获取的音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配,从而根据确定的匹配识别出说唱歌词句,从而从获取的歌词单字中按歌词句剔除说唱歌词单字。

步骤404,将歌词单字按歌词句统计歌词字数和歌词句中所有歌词单字所匹配的音调值总数量。

具体地,电子设备统计每个歌词句中歌词单字的字数即歌词字数n,并统计歌词句中的各个歌词单字所匹配的音调值数量并求和,获得歌词句中所有歌词单字所匹配的音调值总数量m。

步骤406,根据统计的歌词字数和音调值数量识别出歌词句是否为说唱歌词句。

具体地,在一个实施例中,步骤406具体包括:判断统计的歌词字数和音调值总数量是否符合说唱歌词句的特征;若符合,则将歌词句识别为说唱歌词句;若不符合,则将歌词句识别为非说唱歌词句。

在一个实施例中,说唱歌词句的特征包括:歌词字数大于音调值总数量。具体地,说唱歌词句中的歌词单字本不该存在匹配的音调值,即使因时间偏移导致存在音调值数量也应当比较少,利用这一说唱歌词句的音调值总数量的特征便可以识别出说唱歌词句和非说唱歌词句。

在一个实施例中,说唱歌词句的特征包括:歌词字数大于等于5,且歌词字数与音调值总数量的差值大于2。具体地,当歌词字数n≥5时,歌词字数与音调值总数量的差值n-m>2。

在一个实施例中,说唱歌词句的特征包括:歌词字数大于2且小于5,且歌词字数与音调值总数量的差值大于1。具体地,当2<n≤5时,歌词字数与音 调值总数量的差值n-m>1。

根据歌词句的歌词字数的不同,将歌词句划分为不同长度的类别,从而设置不同的说唱歌词句的特征来识别说唱歌词句。在识别时考虑歌词句长度对音调值总数量的影响,从而利用歌词字数与音调值总数量的差值的不同范围作为识别条件,可以更加准确地识别出说唱歌词句和非说唱歌词句。

步骤408,从获取的歌词单字中剔除掉说唱歌词句的歌词单字,并将已进行的匹配清除。

具体地,电子设备从获取自歌词文件的歌词单字中剔除掉说唱歌词句的歌词单字,剔除时也是按句剔除的。电子设备进而清楚掉步骤402中确定的匹配,以便后续执行步骤208来重新按照歌词单字和音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配。

本实施例中,在按照获取的歌词单字和获取的音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配后,根据确定的匹配识别出说唱歌词句,从而从获取的歌词单字中按歌词句剔除说唱歌词单字,并清除匹配。这样可避免说唱歌词句中的歌词单字在匹配音调值时带来的不准确的匹配结果,为非说唱歌词句中的歌词单字与音调值进行准确的匹配提供了条件。

在一个实施例中,步骤208之后还包括时间偏移处理的步骤,如图5所示,具体包括如下步骤:

步骤502,获取未匹配到音调值的歌词单字。

具体地,考虑到非说唱歌词句中的歌词单字是肯定存在匹配的音调值的,如果没有匹配到音调值,说明目前的匹配结果并非最优需要进一步优化。本实施例可以解决人工制作歌词文件或者音调文件时的时间偏移问题。

步骤504,查找与当前获取的歌词单字在播放时间段上的时间重合度最高的音调值。若查找到则执行步骤506,若未查找到则执行步骤512。

具体地,电子设备在步骤208中,会按照歌词单字和音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配,这里需要判断未匹配到音调值的歌词单字在播放时间段上的时间重合度最高的音调值。如果查找到则应当已经与其它歌词单字匹配。当前获取的歌词单字是指当前获取的未匹配到音调值 的歌词单字。

步骤506,获取当前查找到的音调值匹配的歌词单字所匹配的音调值的数量。具体地,当前查找到的音调值具有匹配的歌词单字,该歌词单字可能仅匹配有一个音调值即查找到的音调值,也可能匹配有多于一个的音调值。

步骤507,检测获取的数量是一个还是多于一个。若获取的数量为一个,则执行步骤508;若获取的数量多于一个,则执行步骤510。

步骤508,若获取的数量为一个,则获取查找到的音调值所匹配的歌词单字,并返回步骤504。

具体地,如果获取的数量为一个,说明查找到的音调值与相应的歌词单字的匹配是一一对应的,说明查找到的音调值所匹配的歌词单字也发生了时间偏移,可继续返回步骤504进行进一步处理。

步骤510,若获取的数量多于一个,则将查找到的所有音调值与相应歌词单字的匹配关系向未匹配到音调值的歌词单字的方向进行平移调整。

具体地,如果获取的数量多于一个,说明当前查找到的音调值所匹配的歌词单字是歌词单字发生时间偏移的转折点,可将到目前为止查找到的所有音调值的匹配关系进行平移,具体向未匹配到音调值的歌词单字的方向进行平移调整。

举例说明,假设有三个歌词单字及相应的播放时间段依次为:我(10,20)是(20,30)谁(30,50),三个音调值的播放时间段依次为:(17,27)(27,37)(37,57),则经过步骤208之后得到匹配结果为:“我(10,20)是(20,30)【(17,27)】谁(30,50)【(27,37)、(37,57)】”。其中,“【】”所包括的播放时间段为前面的歌词单字所匹配的音调值。此匹配结果为歌词时间偏移了7ms的情况。

对上述匹配结果进行时间偏移处理,具体地,获取未匹配到音调值的歌词单字“我”,查找与歌词单字“我”的时间重合度最高的音调值为播放时间段(17,27)对应的音调值。该播放时间段(17,27)对应的音调值所匹配的歌词单字“是”所匹配的音调值数量为一个,则继续查找与歌词单字“是”在播放时间段上的时间重合度最高的音调值为播放时间段(27,37)对应的音调值。播放 时间段(27,37)对应的音调值所匹配的歌词单字“谁”所匹配的音调值数量为两个,此时将所有查找到的音调值与相应歌词单字的匹配关系向歌词单字“我”的方向进行平移调整,具体将播放时间段(27,37)对应的音调值整到与歌词单字“是”匹配,将播放时间段(17,27)对应的音调值调整到与歌词单字“我”匹配。调整之后得到的优化的匹配结果为:“我(10,20)【(17,27)】是(20,30)【(27,37)】谁(30,50)【(37,57)】”。克服了时间偏移的问题。

步骤512,获取距离当前获取的歌词单字在预设距离之内的匹配有至少两个音调值的歌词单字。

具体地,电子设备如果未查找到与当前获取的歌词单字在播放时间段上的时间重合度最高的音调值,说明无法通过时间重合度来判断是否发生了时间偏移,此时可在预设距离之内搜索最近的匹配有至少两个音调值的歌词单字,预设距离可以用歌词单字数量计量,比如10个歌词单字。若在距离当前获取的歌词单字预设距离之内不存在匹配有至少两个音调值的歌词单字,则可直接输出人工处理日志。

在一个实施例中,步骤512包括:搜索距离当前获取的歌词单字最近的匹配有至少两个音调值的歌词单字,进而判断搜索到的歌词单字距离当前获取的歌词单字是否在预设距离之内,若是则执行步骤514;若否,则直接输出人工处理日志。

步骤514,从寻找到的歌词单字所匹配的与当前获取的歌词单字时间最接近的音调值起,将与相应歌词单字的匹配关系进行平移调整,直至当前获取的歌词单字。

具体地,电子在寻找到的歌词单字所匹配的至少两个音调值中,确定与当前获取的歌词单字时间最接近的音调值,进而从该时间最接近的音调值起,将音调值和歌词单字之间的匹配关系进行平移调整,使得从寻找到的歌词单字起到当前获取的歌词单字的所有歌词单字都有匹配的音调值。其中时间最接近是指相应的播放时间段之间的时间距离最近。

举例说明,假设有一系列歌词单字为“由{1}来{1}只{0}有{1}新{1}人{1} 笑{1}有{1}谁{1}听{2}到{1}旧{1}人{1}哭{1}”,符号{}中的内容表示该符号前面的歌词单字所匹配的音调值的数量。其中未匹配到音调值的歌词单字为“只”,若无法通过时间重合度来判断是否发生了时间偏移,则通过搜索获得匹配有至少两个音调值的歌词单字“听”,且在10个歌词单字的预设距离之内,则将“听”所匹配的与“只”时间最接近的音调值平移到与“谁”匹配,“谁”原来匹配的音调值则平移到与“有”匹配,如此逐字地进行平移调整,直至当前获取的歌词单字“只”,使得从“听”到“只”的所有歌词单字都有匹配的音调值。

本实施例中,获取未匹配到音调值的歌词单字后,利用时间重合度来判断出时间偏移的情况,进而通过平移调整来解决时间偏移的问题,使得匹配的结果更加优化,优化的匹配结果更加准确。而且在无法通过时间重合度来判断时间偏移的情况下,如果能够获取到距离当前获取的歌词单字在预设距离之内的匹配有至少两个音调值的歌词单字,也可以通过平移调整来优化匹配结果。

如图6所示,在一个实施例中,提供了一种歌词文件和音调文件对齐装置600,包括文件获取模块601、歌词文件读取模块602、音调文件读取模块603、匹配模块604和时间对齐模块605。

文件获取模块601,用于获取相同歌曲的歌词文件和音调文件。

歌词文件读取模块602,用于根据歌词文件获取歌词单字以及相应的播放时间段。

音调文件读取模块603,用于根据音调文件获取音调值以及相应的播放时间段。

匹配模块604,用于按照歌词单字和音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配。

时间对齐模块605,用于将相匹配的歌词单字和音调值按照相应的音调值的播放时间段进行时间对齐。

上述歌词文件和音调文件对齐装置600,对于相同歌曲的歌词文件和音调文件,按照歌词单字和音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配,从而将歌词文件中的歌词单字和音调文件中的音调值对应起来。由 于用于模拟演奏的音调文件中音调值的播放时间段比歌词文件中的播放时间段更为精确,因此利用音调值的播放时间段将相匹配的歌词单字和音调值进行时间对齐,不仅保证了歌词文件中的歌词单字与音调文件中的音调值的同步,还可以保证同步后歌词文件与其它格式的音频文件也基本是同步的。

如图7所示,在一个实施例中,歌词文件和音调文件对齐装置600还包括:孤立音调值确定模块606。

孤立音调值确定模块606,用于确定与歌词文件中的任意歌词单字在播放时间段上不存在交集的孤立的音调值。

匹配模块604还用于将孤立的音调值匹配到与孤立的音调值相邻且时间连续的音调值所匹配的歌词单字。

如图8所示,在一个实施例中,歌词文件和音调文件对齐装置600还包括:第一判断模块607和第二判断模块608。

第一判断模块607,用于判断孤立的音调值是否与相邻的音调值时间连续。

第二判断模块608,用于若第一判断模块判定时间连续,则判断相邻且时间连续的音调值是否存在匹配的歌词单字。

匹配模块604还用于若第二判断模块判定存在匹配的歌词单字,则将孤立的音调值匹配到与孤立的音调值相邻且时间连续的音调值所匹配的歌词单字。

第二判断模块608还用于若判定不存在匹配的歌词单字,则将时间连续的音调值作为孤立的音调值,并继续判断孤立的音调值是否与相邻的音调值时间连续。

本实施例中,当存在与歌词文件中的任意歌词单字在播放时间段上不存在交集的孤立的音调值时,可通过孤立的音调值是否与相邻的时间连续的判断来处理孤立的音调值,尽量减少人工干预而且保证准确性。

如图9所示,在一个实施例中,歌词文件和音调文件对齐装置600还包括:说唱歌词剔除模块609,用于从获取的歌词单字中按歌词句剔除说唱歌词单字。

如图10所示,在一个实施例中,说唱歌词剔除模块609包括:初步匹配模块609a、统计模块609b、说唱歌词句判断模块609c和说唱歌词处理模块609d。

初步匹配模块609a,用于按照获取的歌词单字和获取的音调值之间播放时 间段的时间重合度将歌词单字和音调值进行匹配。

统计模块609b,用于将歌词单字按歌词句统计歌词字数和歌词句中所有歌词单字所匹配的音调值总数量。

说唱歌词句判断模块609c,用于根据统计的歌词字数和音调值数量识别出歌词句是否为说唱歌词句。

说唱歌词处理模块609d,用于从获取的歌词单字中剔除掉说唱歌词句的歌词单字,并将已进行的匹配清除。

本实施例中,在按照获取的歌词单字和获取的音调值之间播放时间段的时间重合度将歌词单字和音调值进行匹配后,根据确定的匹配识别出说唱歌词句,从而从获取的歌词单字中按歌词句剔除说唱歌词单字,并清除匹配。这样可避免说唱歌词句中的歌词单字在匹配音调值时带来的不准确的匹配结果,为非说唱歌词句中的歌词单字与音调值进行准确的匹配提供了条件。

在一个实施例中,说唱歌词句判断模块609c具体用于判断统计的歌词字数和音调值总数量是否符合说唱歌词句的特征;若符合,则将歌词句识别为说唱歌词句;若不符合,则将歌词句识别为非说唱歌词句。其中,说唱歌词句的特征包括:歌词字数大于音调值总数量。

在一个实施例中,说唱歌词句的特征包括:歌词字数大于等于5,且歌词字数与音调值总数量的差值大于2。

在一个实施例中,说唱歌词句的特征包括:歌词字数大于2且小于5,且歌词字数与音调值总数量的差值大于1。

如图11所示,在一个实施例中,歌词文件和音调文件对齐装置600还包括:歌词单字获取模块610、查找模块611、匹配音调值获取模块612和匹配关系平移模块613。

歌词单字获取模块610,用于获取未匹配到音调值的歌词单字。

查找模块611,用于查找与当前获取的歌词单字在播放时间段上的时间重合度最高的音调值。

匹配音调值获取模块612,用于获取当前查找到的音调值匹配的歌词单字所匹配的音调值的数量。

匹配关系平移模块613,用于若获取的数量多于一个,则将查找到的所有音调值与相应歌词单字的匹配关系向未匹配到音调值的歌词单字的方向进行平移调整。

查找模块611还用于若获取的数量为一个,则获取查找到的音调值所匹配的歌词单字,查找与当前获取的歌词单字在播放时间段上的时间重合度最高的音调值。

在一个实施例中,匹配关系平移模块613还用于若未查找到与当前获取的歌词单字在播放时间段上的时间重合度最高的音调值,则获取距离当前获取的歌词单字在预设距离之内的匹配有至少两个音调值的歌词单字;从寻找到的歌词单字所匹配的与当前获取的歌词单字时间最接近的音调值起,将与相应歌词单字的匹配关系进行平移调整,直至当前获取的歌词单字。

在一个实施例中,时间对齐模块605还用于将仅匹配一个音调值的歌词单字的播放时间段修改为匹配的音调值的播放时间段;对于匹配有至少两个音调值的歌词单字,将匹配的至少两个音调值的播放时间段合并后作为相应的歌词单字的播放时间段。

本实施例中,获取未匹配到音调值的歌词单字后,利用时间重合度来判断出时间偏移的情况,进而通过平移调整来解决时间偏移的问题,使得匹配的结果更加优化,优化的匹配结果更加准确。而且在无法通过时间重合度来判断时间偏移的情况下,如果能够获取到距离当前获取的歌词单字在预设距离之内的匹配有至少两个音调值的歌词单字,也可以通过平移调整来优化匹配结果。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等非易失性存储介质,或随机存储记忆体(randomaccessmemory,ram)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1