CN101127210A - 实现歌曲播放过程中歌词同步的方法和装置 - Google Patents
实现歌曲播放过程中歌词同步的方法和装置 Download PDFInfo
- Publication number
- CN101127210A CN101127210A CNA2007101537729A CN200710153772A CN101127210A CN 101127210 A CN101127210 A CN 101127210A CN A2007101537729 A CNA2007101537729 A CN A2007101537729A CN 200710153772 A CN200710153772 A CN 200710153772A CN 101127210 A CN101127210 A CN 101127210A
- Authority
- CN
- China
- Prior art keywords
- lyrics
- time
- chained list
- content
- text
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明公开一种实现歌曲播放过程中歌词同步的方法和装置,主要包括:解析歌词文件,将得到的歌词时间信息与歌词文本内容对应地保存为歌词链表;歌曲播放过程中,获取当前播放的时间,查询歌词链表通过时间信息与歌词文本的对应关系,确定当前时间对应的歌词文本内容;显示所确定的歌词文本内容。本发明不依赖高端的解码芯片支持,能够在普通数字终端上实现歌曲播放过程中歌词同步。
Description
技术领域
本发明涉及数字终端数字音视频文件的播放技术,特别是指一种在数字终端上进行歌曲播放时的歌词同步方法和装置。
背景技术
在过去的几年内,以多媒体手机为代表的多媒体数字终端技术发展突飞猛进。在传统通信业务以外,移动终端(即手机)厂商向用户提供了播放多媒体文件的功能以提高自身产品的吸引力。支持mp3歌曲的播放就是其中之一,而歌词文件的出现,进一步提高了mp3歌曲的娱乐性,它向终端提供某一首mp3歌曲的歌词信息与时间信息,使数字终端在播放mp3歌曲的同时同步显示歌词成为可能。
现有技术中,在数字终端上的歌词同步播放一般都是通过具有同步歌词文件的解析与显示能力的解码芯片来完成,由于采用硬件实现代价较高,对数字终端对成本的要求较高,并且一些低端的数字终端产品一般不会使用功能比较强大的芯片。
发明内容
有鉴于此,本发明提出一种实现歌曲播放过程中歌词同步的方法和装置,不依赖高端的解码芯片支持,能够在普通数字终端上实现歌曲播放过程中歌词同步。
基于上述目的本发明提供的一种实现歌曲播放过程中歌词同步的方法,包括:
A.解析歌词文件,将得到的歌词时间信息与歌词文本内容对应地保存为歌词链表;
B.歌曲播放过程中,获取当前播放的时间,查询歌词链表,通过时间信息与歌词文本的对应关系,确定当前时间对应的歌词文本内容;
C.显示所确定的歌词文本内容。
该方法步骤A所述解析过程包括:
识别歌词文件中的时间标签,将时间标签转换为时间信息值;
识别歌词文件中的文本内容,获得歌词的文本内容。
该方法步骤A所述解析过程进一步包括:根据文件格式,识别歌词文件是字同步文件还是句同步文件。
该方法所述歌词链表的每个节点中至少包含:一句歌词开始时间和该句歌词的文本内容。
该方法步骤B所述确定当前时间对应歌词文本内容的过程包括:每间隔一段时间即获取当前播放时间,在歌词链表中找出与当前时间匹配的开始时间,确定该开始时间对应节点中包含的歌词文本内容为显示内容。
该方法所述在歌词链表中找出与当前时间匹配的开始时间的过程包括:将当前时间与下一节点中的开始时间进行比较,如果下一节点歌词的开始时间小于等于当前播放时间,则确定下一节点中的歌词文本内容为显示歌词内容,否则,仍然确定当前节点中的歌词文本内容为显示内容。
该方法步骤B所述确定当前时间对应歌词文本内容的过程包括:
将下一个节点歌词的开始时间减去当前歌词的开始时间得到当前这句歌词的持续时间;
设置一个定时器,歌曲播放开始时,当前播放字符的指针指向歌词链表的表头,设置定时器的时长为上述持续时间,定时器启动;定时器结束时,发送通知消息,将指针指向下一个节点,返回上一步为定时器重新设置时长,并重新启动定时器。
该方法所述歌词文件为句同步文件,所述时间信息为每句歌词的开始时间;
所述歌词链表的每个节点中包含:一句歌词开始时间和该句歌词的文本内容。
该方法所述歌词文件为字同步文件,所述时间信息包括每句歌词的开始时间、以及句子中每个字的开始时间和持续时间;
所述歌词链表的每个节点中包含:一句歌词的开始时间、该句歌词的文本内容、以及时间轴链表;时间轴链表中包含该句歌词中每个字的开始时间和持续时间。
该方法所述歌词文件为字同步文件,所述步骤C还包括:从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;每次间隔一段时间,获取当前时间,根据每个字的开始时间和持续时间判断当前歌曲唱到了那个字符,以及这个字符当前已经被歌唱了的百分比,计算出颜色滚动的坐标,用预先设定的颜色填充坐标对应的文字区域。
该方法所述歌词文件为字同步文件,所述时间信息包括每句歌词的开始时间、以及句子中每个字的开始时间和持续时间;所述歌词链表的每个节点中包含:一句歌词的开始时间、该句歌词的文本内容、以及时间轴链表;时间轴链表中包含该句歌词中每个字的开始时间和持续时间;
步骤B所述确定当前时间对应歌词文本内容的过程包括:
从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;
歌曲开始播放时,当前播放字符的指针指向歌词链表的表头,并从其中的时间轴链表的表头取出第一个字的持续时间,设置定时器的时长为该持续时间,启动定时器;定时器结束时,发送通知消息,将当前播放字符指针指向歌词链表的下一个字,并从时间轴链表的下一个节点取出下一个字的持续时间,再次启动定时器。
该方法所述步骤C还包括:所述定时器每隔一段时间还发送第二通知消息,每次第二通知消息到来时,判断这个字符当前已经被歌唱了的百分比,计算新的颜色滚动坐标,用预先设定的颜色填充对应的文字区域。
该方法所述第二通知消息的步长可以是分色显示时的时间片长度。
该方法进一步设置二级缓存,步骤C中,将步骤B中确定歌词文本内容拷贝到二级缓存中执行对该文本内容在显示前的处理,然后复制到播放设备的显存中。
该方法可应用于移动终端中。
基于上述目的本发明还提供了一种实现歌曲播放过程中歌词同步的装置,包括:
歌词文件解析模块501,用于解析歌词文件,并将解析得到的歌词时间信息与歌词文本内容对应地保存在存储模块502中;
存储模块502,用于将歌词时间信息和歌词文本内容以时间链表的形式保存;
歌词内容同步获取模块503,用于在歌曲播放过程中,获取当前播放的时间,查询存储模块502中的歌词链表,通过时间信息与歌词文本的对应关系确定当前时间对应的歌词文本内容;
歌词同步显示模块504,用于对当前时间下歌词内容同步获取模块503所确定的歌词文本内容进行同步显示。
该装置所述歌词文件解析模块501的歌词解析过程包括:识别歌词文件中的时间标签,将时间标签转换为时间信息值;识别歌词文件中的文本内容,获得歌词的文本内容。
该装置所述歌词链表的每个节点中至少包含:一句歌词开始时间和该句歌词的文本内容。
该装置还包括定时器;所述歌词内容同步获取模块503每间隔一段时间从定时器获取当前播放时间,在存储模块502的歌词链表中找出与当前时间匹配的开始时间,将该开始时间对应节点中包含的歌词文本内容确定为显示内容。
该装置所述歌词内容同步获取模块503找出与当前时间匹配的开始时间的过程为:歌词内容同步获取模块503将当前时间与歌词链表下一节点中的开始时间进行比较,如果下一节点歌词的开始时间小于等于当前播放时间,则确定下一节点中的歌词文本内容为显示歌词内容,否则,仍然确定当前节点中的歌词文本内容为显示内容。
该装置还包括定时器;所述歌词内容同步获取模块503将下一个节点歌词的开始时间减去当前歌词的开始时间得到当前这句歌词的持续时间;
歌词内容同步获取模块503在歌曲播放开始时,将当前播放字符的指针指向存储模块502中歌词链表的表头,设置定时器的时长为上述持续时间,定时器启动;定时器结束时,向歌词内容同步获取模块503发送通知消息,歌词内容同步获取模块503将指针指向下一个节点,歌词内容同步获取模块503为定时器重新设置时长,并重新启动定时器。
该装置所述歌词文件为句同步文件,所述时间信息为每句歌词的开始时间;
所述歌词链表的每个节点中包含:一句歌词开始时间和该句歌词的文本内容。
该装置所述歌词文件为字同步文件,所述时间信息包括每句歌词的开始时间、以及句子中每个字的开始时间和持续时间;
所述歌词链表的每个节点中包含:一句歌词的开始时间、该句歌词的文本内容、以及时间轴链表;时间轴链表中包含该句歌词中每个字的开始时间和持续时间。
该装置所述歌词文件为字同步文件,所述歌词同步显示模块504从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;每次间隔一段时间获取当前时间,根据每个字的开始时间和持续时间判断当前歌曲唱到了那个字符,以及这个字符当前已经被歌唱了的百分比,计算出颜色滚动的坐标,用预先设定的颜色填充坐标对应的文字区域。
该装置所述歌词文件为字同步文件,所述时间信息包括每句歌词的开始时间、以及句子中每个字的开始时间和持续时间;所述歌词链表的每个节点中包含:一句歌词的开始时间、该句歌词的文本内容、以及时间轴链表;时间轴链表中包含该句歌词中每个字的开始时间和持续时间;
所述歌词内容同步获取模块503从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;歌曲开始播放时,当前播放字符的指针指向歌词链表的表头,并从其中的时间轴链表的表头取出第一个字的持续时间,设置定时器的时长为该持续时间,启动定时器;定时器结束时,发送通知消息,将当前播放字符指针指向歌词链表的下一个字,并从时间轴链表的下一个节点取出下一个字的持续时间,再次启动定时器。
该装置所述定时器每隔一段时间还发送第二通知消息,每次第二通知消息到来时,所述歌词同步显示模块504判断这个字符当前已经被歌唱了的百分比,计算新的颜色滚动坐标,用预先设定的颜色填充对应的文字区域。
该装置所述第二通知消息的步长可以是分色显示时的时间片长度。
该装置进一步设置二级缓存,歌词同步显示模块504将确定的歌词文本内容拷贝到二级缓存中执行对该文本内容在显示前的处理,然后复制到播放设备的显存中。
该装置设置于移动终端中。
从上面所述可以看出,本发明提供的实现歌曲播放过程中歌词同步的方法和装置,通过对歌词文件的解析并建立歌词链表,根据当前时间查询歌词链表确定当前应显示的歌词内容等简单的技术手段实现了歌曲播放过程中歌词同步显示,具体包括有以下优点:
由于不依赖具有同步歌词文件的解析与显示能力的高端解码芯片支持,本发明为数字终端的低端产品,比如个人无绳市话系统(PHS)终端、非智能的低端手机等,提供了词曲同步的解决方案,克服了长期以来低端机型无法同步显示歌词的缺陷;
现有数字终端的词曲同步技术只能实现句同步,本发明方案在此基础上还实现了歌词显示的字同步,可以配合语音输入实现卡拉OK效果,大大加强了产品的娱乐性。
附图说明
图1为本发明实施例针实现歌词同步的流程示意图;
图2为本发明实施例对句同步文件采用通知方式指示歌词的示意图;
图3为本发明实施例对字同步文件采用通知方式指示歌词的示意图;
图4为本发明实施例进行KOK文件歌词显示时对显存的填充示意图;
图5为本发明实施例实现歌曲播放过程中歌词同步装置的结构示意图。
具体实施方式
下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。
本发明实现歌曲播放过程中歌词同步的方法主要包括:解析歌词文件,将得到的歌词时间信息与歌词文本内容对应地保存为歌词链表;歌曲播放过程中,获取当前播放的时间,查询歌词链表通过时间信息与歌词文本的对应关系,确定当前时间对应的歌词文本内容;显示所确定的歌词文本内容。
参见图1所示,下面以句同步的LRC歌词文件和字同步的KOK歌词文件为例,对本发明的较佳实施方式进行描述。
步骤101,对歌词文件进行解析,建立歌词链表。
具体包括:
a,依照LRC文件和KOK文件的格式解析文件头,获取文件名、歌手名、文件作者、时间偏移量等信息备用。
建立时间轴的过程包括:
b、根据文件格式,识别是字同步文件还是句同步文件。具体来说,句同步文件中,每句歌词,两个时间标签之间,没有字符,而字同步文件中,时间标签和一个汉字/英文交替出现;
c、解析每句歌词;
1)识别时间标签,LRC文件的时间标签根据生成文件的软件的不同,有[分:秒:毫秒]和[分:秒]两种,KOK文件仅有[分:秒:毫秒]一种,将时间标签转换为时间值备用;
2)识别文本,将这句歌词的文本内容保存下来;
3)用一定的数据结构保存时间值和文本内容,建立一个歌词链表;
其中,句同步的链表的每个节点包括这句句子的文本和开始时间;
字同步的链表包括一个句子中每个字开始时间、持续时间的链表和这句句子的文本。
d.文件解析完成,保存的数据结构备用。
LRC文件的格式举例如下:
[ti:千里之外]
[ar:周杰伦]
[al:依然范特西]
[by:lizaixing]
[offset:500]
[00:11.26][04:13.12]词:方文山唱:周杰伦.费玉清
[00:18.69][04:04.68]www.51lrc.com★lizaixing制
[00:22.77]QQ:114951191
[00:24.53]屋檐如悬崖
[00:26.45]风铃如沧海
[00:28.42]我等燕归来
.
.
.
.
按照LRC文件的格式规范对文件中每行行首的11个字节数据进行匹配,从而来判断这行数据是属于合法数据还是非法数据,如果是合法数据,再判断是歌词数据还是属性数据。
属性字段:
符合[ti:XX....XX]的为歌曲名称
符合[ar:XX....XX]的为歌手名称
符合[al:XX....XX]的为专辑名称
符合[by:XX....XX]的为LRC文件作者名称
符合[offset:XXX]为数据字段的时间偏移量,单位毫秒
数据字段:
符合[mm:SS.ss]或者[mm:SS.sss]格式的为合法的一句歌词,从下一个字节开始到行尾即为这句歌词的内容。
然后,按照以上的判定规则,对整个文件依次进行解析,建立对应的数据结构,一个歌词文件对应的数据结构是一个链表,链表的节点可按时间轴排列,每一个节点对应一句歌词,节点的成员为这句开始的时间和歌词的内容。
关于持续时间,可以以毫秒为单位进行保存,也可以转换为相应的时间单位,比如定时器以50毫秒为间隔,则可以设置以50毫秒为一个时间单位。
KOK文件的格式举例如下:
[ar:凤凰传奇]
[ti:月亮之上]
[al:]
[by:]
[00:41.87]我[00:42.11]在[00:42.38]遥[00:42.75]望[00:43.38]
[00:44.34]月[00:44.60]亮[00:44.91]之[00:45.27]上[00:45.90]
[00:46.81]有[00:47.101多[00:47.40]少[00:47.75]梦[00:48.27]想[00:48.71]
[00:48.71]在[00:49.01]自[00:49.28]由[00:49.46]的[00:49.91]飞[00:50.28]翔[00:50.89]
[00:51.81]昨[00:52.09]天[00:52.41]以[00:52.78]往[00:53.39]
[00:54.29]风[00:54.61]干[00:55.03]了[00:55.19]忧[00:55.50]伤[00:56.18]
.
.
.
对属性字段的解析与LRC文件相同,但是KOK文件的一句歌词中,每一个字都有一个时间信息,每句歌词的行尾还有一个时间信息,标志这句歌词的结束时间。一个字的时间信息中,字前的时间信息是它开始的时间,字后的时间信息是它结束的时间,这两个时间信息之差即是这个字持续的时间。
对每一句歌词的解析,必须获得每一个字的起始时间,持续时间。一个KOK文件解析完成,也会形成一个链表,每一个节点是一句歌词,这个节点包含这一句的开始时间(用于每句歌词之间的切换)、歌词的内容、以及一个时间轴链表,这个时间轴链表的每个节点是句子中每个字的开始时间和持续时间。
关于持续时间,可以以毫秒为单位进行保存,也可以转换为相应的时间单位。由于在显示时,字同步的文件需要进行颜色的滚动,标志当前歌唱的进度,颜色的滚动必定以一定的时间片段起定时器,持续时间可以保存为这个定时器的时间单位,比如上述例子中第一句话的第一个字“我”,持续时间是42110-41870=240毫秒,如果颜色滚动的定时器以50毫秒为间隔,那么这个字的时间单位可以保存为5。
步骤102,歌曲播放过程中,获得精确的当前时间信息,参照歌词链表,获得当前显示的歌词内容。
播放过程中,可以采取两种方式获得歌词,查询方式和通知方式。
1)查询方式:每间隔一段时间即获取当前播放时间,在歌词链表中找出与当前时间匹配的开始时间,确定该开始时间对应节点中包含的歌词文本内容为显示内容。
具体可以设置一个用于计算播放时间的定时器,定时器每隔一段时间发送一次查询消息,该消息可以是一个简单的中断信号;
开始播放时,在收到查询消息后,根据定时器获取当前的播放时间,按照该时间遍历歌词链表,找到该时间下的歌词链表节点,然后取出该节点的歌词字符串备用。以后每次查询消息来到时,对比当前时间和下一个节点句子的开始时间,如果下一句的开始时间等于或小于定时器当前时间,则取出该节点的歌词字符串备用;否则保持当前节点的歌词字符串。
其中,所述定时器主要是用来计算当前播放时间的,也用于数字终端音乐播放器界面的相关时间显示。歌曲播放开始时定时器启动,播放结束时停止。定时器查询消息到来时对比当前时间和下一句句子的开始时间,如果下一句句子的开始时间等于或小于定时器当前时间,则需要更新屏幕,将新的句子显示到屏幕上。
定时器精度根据软硬件平台的性能不同可以取不同的值,在查询方式下,由于需要在下句句子到来时比较及时地更新屏幕,因此需要对显示的误差进行评估,比如,下句句子开始的时候,新的定时器消息尚未到来,而歌曲中已经开始唱出下一句歌词,如果这个间隔较长,用户就可以感觉到屏幕显示的歌词和音乐失步了。这个时间,根据经验,300毫秒以下几乎没有感觉,500毫秒时可以感觉到失步。由于每次定时器消息到来时都会进行运算,如果设置过高的定时器精度,将会加重CPU的负担,严重的情况,甚至可能干扰歌曲本身的解码(mp3软解码解决方案),因此,需要根据软硬件性能和用户体验设置合理的定时器精度,在本发明较佳的实施例中,使用的是200毫秒的精度。
以上过程对于句同步文件和字同步文件都适用。
2)通知方式:
对于句同步文件:
将下一个节点歌词的开始时间减去当前歌词的开始时间得到当前这句歌词的持续时间,设置一个定时器,其时长为该持续时间的长度;
歌曲播放开始时,当前播放字符的指针指向歌词链表的表头,设置定时器的时长为上述持续时间,定时器启动;定时器结束时,发送通知消息,将指针指向下一个节点,返回上一步(将下一个节点歌词的开始时间减去当前歌词的开始时间得到当前这句歌词的持续时间,其时长为该持续时间的长度),为定时器重新设置时长,并重新启动定时器。参见图2所示,歌曲播放开始时,指针指向第一个节点对应的第一句歌词,定时器结束后指针指向第二句歌词,以后依此类推。
对于字同步文件:
从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;
歌曲开始播放时,当前播放字符的指针指向歌词链表的表头,并从其中的时间轴链表的表头取出第一个字的持续时间,设置定时器的时长为该持续时间,启动定时器;定时器结束时,发送通知消息,将当前播放字符指针指向歌词链表的下一个字,并从时间轴链表的下一个节点取出下一个字的播放持续时间,再次启动定时器。参见图3所示,歌曲播放开始时,指针指向第一句歌词的第一个字,定时器启动,当定时器结束后,指针指向第二个字,以后依此类推。
步骤103,歌词的显示。
对于句同步文件:
如果步骤102采用查询方式,显示当前取出的歌词字符串;
如果步骤102采用通知方式,显示当前指针指向的歌词。
对于字同步文件:
如果步骤102采用查询方式,显示取出的当前句歌词的字符串;另外,还从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;每次定时器的查询消息来到时,获取当前时间,根据每个字的开始时间和持续时间判断当前歌曲唱到了那个字符,以及这个字符当前已经被歌唱了多少百分比,从而计算出颜色滚动的坐标,用预先设定的颜色填充对应的文字区域。
如果步骤102采用通知方式,显示当前指针指向字所在句的歌词,即当前指针指示的歌词链表节点的歌词文本;另外,定时器每隔一段时间还发送第二通知消息,其步长可以是分色显示时的时间片长度,这个第二通知消息到来,意味着一个时间片的结束,判断这个字符当前已经被歌唱了的百分比,需要计算新的坐标,用预先设定的颜色填充对应的文字区域,进行分色显示。
另外,上述步骤也可以采用另一个定时器来完成,该定时器在每个字的开始时间到来时,定时器启动,持续时间结束时第二定时器关闭,定时器的步长可以是分色显示时的时间片长度。
在运算速度并不是很快的嵌入式系统中,画屏是一个非常消耗系统资源的操作。例如:在PHS系统中,画屏是通过GUI层实现的,一般的做法,需要将显示的内容传给GUI层,再由GUI层经过处理后调用BIOS的接口操作显存。这个过程有大量的运算,而且,最关键的一点是,在KOK格式的字同步显示中,通常的GUI不存在一个字符可以分色显示的函数,设备上下文(DC)只能设置一个前景色。
为了解决这个问题,本发明实施例采用了二级显存的方式。显示一句歌词之前,将当前句的字符串,连同屏幕的背景一起,拷贝到二级显存当中,在显示这句歌词时,因为在解析KOK文件时,为这句歌词也建立了一个时间轴,这个关于字符的时间轴已经包含了每个字符的起始时间、持续时间片数量,因此,可以由当前时间计算得出当前歌曲歌唱到了这句话的哪个字符,以及这个字符当前已经被歌唱了多少百分比。
以上述例子中第一句第一个字“我”为例说明,“我”这个字开始时间为41870ms,持续时间为240ms,假设播放器为字同步颜色滚动设置的第二定时器时间为50ms,那么,这个字持续的时间片数量就是5个,那么,第一个时间片结束时,这个字被唱了1/5,第二个时间片结束时,这个字被唱了2/5......,直到5个时间片结束后开始显示“在”字。
当每个时间片结束时,由计算出的百分比计算出颜色滚动的坐标,假设“我”字的横坐标是10,使用16×16的字体,那么在第一个时间片结束时,颜色需要覆盖的坐标就是10+16*1/5=13;第二个时间片结束时,这个坐标就是10+16*2/5=16......
求得这个坐标以后,在开辟的二级显存中用预先设定的颜色填充对应的文字区域,参见图4所示,然后调用BIOS的接口复制到终端的显存中,即可达到同步滚动的卡拉OK效果。
这样做的好处是,效率较高--省去了不少中间环节;机动灵活--因为不同平台的能力不同,通过调节时间片的长度,可以获得最佳的显示效果。
基于上述方法本发明还提供了一种实现歌曲播放过程中歌词同步的装置,其较佳实施方案参见图5所示,包括:
歌词文件解析模块501,用于解析歌词文件,并将解析得到的歌词时间信息与歌词文本内容对应地保存在存储模块中。其中歌词解析过程主要包括:识别歌词文件中的时间标签,将时间标签转换为时间信息值;识别歌词文件中的文本内容,获得歌词的文本内容。
存储模块502,用于将歌词时间信息和歌词文本内容以时间链表的形式保存。其中,歌词链表可以是由按时间顺序排列的节点组成,每个节点中的内容可以是一句歌词的开始时间和该句歌词的文本内容。
歌词内容同步获取模块503,用于在歌曲播放过程中,获取当前播放的时间,查询存储模块502中的歌词链表,通过时间信息与歌词文本的对应关系确定当前时间对应的歌词文本内容。
歌词同步显示模块504,用于对当前时间下歌词内容同步获取模块503所确定的歌词文本内容进行同步显示。
另外,还可以在该装置中增加定时器,分别与歌词内容同步获取模块503、歌词同步显示模块504等模块相连,来满足上述歌词内容同步确定和歌词显示等功能的需求。
本发明的以上方法和装置都可应用于数字终端,特别是移动终端中。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (29)
1.一种实现歌曲播放过程中歌词同步的方法,其特征在于,包括:
A.解析歌词文件,将得到的歌词时间信息与歌词文本内容对应地保存为歌词链表;
B.歌曲播放过程中,获取当前播放的时间,查询歌词链表,通过时间信息与歌词文本的对应关系,确定当前时间对应的歌词文本内容;
C.显示所确定的歌词文本内容。
2.根据权利要求1所述的方法,其特征在于,步骤A所述解析过程包括:
识别歌词文件中的时间标签,将时间标签转换为时间信息值;
识别歌词文件中的文本内容,获得歌词的文本内容。
3.根据权利要求1或2所述的方法,其特征在于,步骤A所述解析过程进一步包括:根据文件格式,识别歌词文件是字同步文件还是句同步文件。
4.根据权利要求1所述的方法,其特征在于,所述歌词链表的每个节点中至少包含:一句歌词开始时间和该句歌词的文本内容。
5.根据权利要求4所述的方法,其特征在于,步骤B所述确定当前时间对应歌词文本内容的过程包括:每间隔一段时间即获取当前播放时间,在歌词链表中找出与当前时间匹配的开始时间,确定该开始时间对应节点中包含的歌词文本内容为显示内容。
6.根据权利要求5所述的方法,其特征在于,所述在歌词链表中找出与当前时间匹配的开始时间的过程包括:将当前时间与下一节点中的开始时间进行比较,如果下一节点歌词的开始时间小于等于当前播放时间,则确定下一节点中的歌词文本内容为显示歌词内容,否则,仍然确定当前节点中的歌词文本内容为显示内容。
7.根据权利要求4所述的方法,其特征在于,步骤B所述确定当前时间对应歌词文本内容的过程包括:
将下一个节点歌词的开始时间减去当前歌词的开始时间得到当前这句歌词的持续时间;
设置一个定时器,歌曲播放开始时,当前播放字符的指针指向歌词链表的表头,设置定时器的时长为上述持续时间,定时器启动;定时器结束时,发送通知消息,将指针指向下一个节点,返回上一步为定时器重新设置时长,并重新启动定时器。
8.根据权利要求5至7任意一项所述的方法,其特征在于,所述歌词文件为句同步文件,所述时间信息为每句歌词的开始时间;
所述歌词链表的每个节点中包含:一句歌词开始时间和该句歌词的文本内容。
9.根据权利要求5或6所述的方法,其特征在于,所述歌词文件为字同步文件,所述时间信息包括每句歌词的开始时间、以及句子中每个字的开始时间和持续时间;
所述歌词链表的每个节点中包含:一句歌词的开始时间、该句歌词的文本内容、以及时间轴链表;时间轴链表中包含该句歌词中每个字的开始时间和持续时间。
10.根据权利要求9所述的方法,其特征在于,所述歌词文件为字同步文件,所述步骤C还包括:从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;每次间隔一段时间,获取当前时间,根据每个字的开始时间和持续时间判断当前歌曲唱到了那个字符,以及这个字符当前已经被歌唱了的百分比,计算出颜色滚动的坐标,用预先设定的颜色填充坐标对应的文字区域。
11.根据权利要求4所述的方法,其特征在于,所述歌词文件为字同步文件,所述时间信息包括每句歌词的开始时间、以及句子中每个字的开始时间和持续时间;所述歌词链表的每个节点中包含:一句歌词的开始时间、该句歌词的文本内容、以及时间轴链表;时间轴链表中包含该句歌词中每个字的开始时间和持续时间;
步骤B所述确定当前时间对应歌词文本内容的过程包括:
从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;
歌曲开始播放时,当前播放字符的指针指向歌词链表的表头,并从其中的时间轴链表的表头取出第一个字的持续时间,设置定时器的时长为该持续时间,启动定时器;定时器结束时,发送通知消息,将当前播放字符指针指向歌词链表的下一个字,并从时间轴链表的下一个节点取出下一个字的持续时间,再次启动定时器。
12.根据权利要求11所述的方法,其特征在于,所述步骤C还包括:所述定时器每隔一段时间还发送第二通知消息,每次第二通知消息到来时,判断这个字符当前已经被歌唱了的百分比,计算新的颜色滚动坐标,用预先设定的颜色填充对应的文字区域。
13.根据权利要求12所述的方法,其特征在于,所述第二通知消息的步长可以是分色显示时的时间片长度。
14.根据权利要求1所述的方法,其特征在于,设置二级缓存,步骤C中,将步骤B中确定歌词文本内容拷贝到二级缓存中执行对该文本内容在显示前的处理,然后复制到播放设备的显存中。
15.根据权利要求1、2、4~7、14任意一项所述的方法,其特征在于,该方法应用于移动终端。
16.一种实现歌曲播放过程中歌词同步的装置,其特征在于,包括:
歌词文件解析模块(501),用于解析歌词文件,并将解析得到的歌词时间信息与歌词文本内容对应地保存在存储模块502中;
存储模块(502),用于将歌词时间信息和歌词文本内容以时间链表的形式保存;
歌词内容同步获取模块(503),用于在歌曲播放过程中,获取当前播放的时间,查询存储模块(502)中的歌词链表,通过时间信息与歌词文本的对应关系确定当前时间对应的歌词文本内容;
歌词同步显示模块(504),用于对当前时间下歌词内容同步获取模块503所确定的歌词文本内容进行同步显示。
17.根据权利要求16所述的装置,其特征在于,所述歌词文件解析模块(501)的歌词解析过程包括:识别歌词文件中的时间标签,将时间标签转换为时间信息值;识别歌词文件中的文本内容,获得歌词的文本内容。
18.根据权利要求16所述的装置,其特征在于,所述歌词链表的每个节点中至少包含:一句歌词开始时间和该句歌词的文本内容。
19.根据权利要求18所述的装置,其特征在于,该装置还包括定时器;
所述歌词内容同步获取模块(503)每间隔一段时间从定时器获取当前播放时间,在存储模块(502)的歌词链表中找出与当前时间匹配的开始时间,将该开始时间对应节点中包含的歌词文本内容确定为显示内容。
20.根据权利要求19所述的装置,其特征在于,所述歌词内容同步获取模块(503)找出与当前时间匹配的开始时间的过程为:歌词内容同步获取模块(503)将当前时间与歌词链表下一节点中的开始时间进行比较,如果下一节点歌词的开始时间小于等于当前播放时间,则确定下一节点中的歌词文本内容为显示歌词内容,否则,仍然确定当前节点中的歌词文本内容为显示内容。
21.根据权利要求18所述的装置,其特征在于,该装置还包括定时器;
所述歌词内容同步获取模块(503)将下一个节点歌词的开始时间减去当前歌词的开始时间得到当前这句歌词的持续时间;
歌词内容同步获取模块(503)在歌曲播放开始时,将当前播放字符的指针指向存储模块(502)中歌词链表的表头,设置定时器的时长为上述持续时间,定时器启动;定时器结束时,向歌词内容同步获取模块(503)发送通知消息,歌词内容同步获取模块(503)将指针指向下一个节点,歌词内容同步获取模块(503)为定时器重新设置时长,并重新启动定时器。
22.根据权利要求19至21任意一项所述的装置,其特征在于,所述歌词文件为句同步文件,所述时间信息为每句歌词的开始时间;
所述歌词链表的每个节点中包含:一句歌词开始时间和该句歌词的文本内容。
23.根据权利要求19或20所述的装置,其特征在于,所述歌词文件为字同步文件,所述时间信息包括每句歌词的开始时间、以及句子中每个字的开始时间和持续时间;
所述歌词链表的每个节点中包含:一句歌词的开始时间、该句歌词的文本内容、以及时间轴链表;时间轴链表中包含该句歌词中每个字的开始时间和持续时间。
24.根据权利要求23所述的装置,其特征在于,所述歌词文件为字同步文件,所述歌词同步显示模块(504)从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;每次间隔一段时间获取当前时间,根据每个字的开始时间和持续时间判断当前歌曲唱到了那个字符,以及这个字符当前已经被歌唱了的百分比,计算出颜色滚动的坐标,用预先设定的颜色填充坐标对应的文字区域。
25.根据权利要求18所述的装置,其特征在于,所述歌词文件为字同步文件,所述时间信息包括每句歌词的开始时间、以及句子中每个字的开始时间和持续时间;所述歌词链表的每个节点中包含:一句歌词的开始时间、该句歌词的文本内容、以及时间轴链表;时间轴链表中包含该句歌词中每个字的开始时间和持续时间;
所述歌词内容同步获取模块(503)从当前歌词链表节点中获取时间轴链表,从中获取每个字的开始时间和持续时间;歌曲开始播放时,当前播放字符的指针指向歌词链表的表头,并从其中的时间轴链表的表头取出第一个字的持续时间,设置定时器的时长为该持续时间,启动定时器;定时器结束时,发送通知消息,将当前播放字符指针指向歌词链表的下一个字,并从时间轴链表的下一个节点取出下一个字的持续时间,再次启动定时器。
26.根据权利要求25所述的装置,其特征在于,所述定时器每隔一段时间还发送第二通知消息,每次第二通知消息到来时,所述歌词同步显示模块(504)判断这个字符当前已经被歌唱了的百分比,计算新的颜色滚动坐标,用预先设定的颜色填充对应的文字区域。
27.根据权利要求26所述的装置,其特征在于,所述第二通知消息的步长可以是分色显示时的时间片长度。
28.根据权利要求16所述的装置,其特征在于,设置二级缓存,歌词同步显示模块(504)将确定的歌词文本内容拷贝到二级缓存中执行对该文本内容在显示前的处理,然后复制到播放设备的显存中。
29.根据权利要求16~21、28任意一项所述的装置,其特征在于,该装置设置于移动终端中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101537729A CN101127210A (zh) | 2007-09-20 | 2007-09-20 | 实现歌曲播放过程中歌词同步的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101537729A CN101127210A (zh) | 2007-09-20 | 2007-09-20 | 实现歌曲播放过程中歌词同步的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101127210A true CN101127210A (zh) | 2008-02-20 |
Family
ID=39095222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101537729A Pending CN101127210A (zh) | 2007-09-20 | 2007-09-20 | 实现歌曲播放过程中歌词同步的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101127210A (zh) |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101808162A (zh) * | 2010-04-09 | 2010-08-18 | 青岛海信移动通信技术股份有限公司 | 移动终端播放歌曲的方法及可播放歌曲的移动终端 |
CN101867656A (zh) * | 2010-06-23 | 2010-10-20 | 深圳市五巨科技有限公司 | 一种移动终端歌曲播放的方法和装置 |
CN101931763A (zh) * | 2010-06-25 | 2010-12-29 | 深圳创维-Rgb电子有限公司 | 一种嵌入式操作系统中的歌词处理方法 |
CN102013265A (zh) * | 2010-08-19 | 2011-04-13 | 上海酷吧信息技术有限公司 | 一种解析歌词并使其与歌曲同步播放的装置及方法 |
CN102148048A (zh) * | 2011-05-12 | 2011-08-10 | 北京瑞信在线系统技术有限公司 | 歌词显示方法及装置 |
CN101656792B (zh) * | 2009-08-31 | 2012-09-12 | 青岛海信移动通信技术股份有限公司 | 移动终端播放歌曲的方法及相关装置 |
CN102737683A (zh) * | 2011-04-01 | 2012-10-17 | 腾讯科技(深圳)有限公司 | 音乐播放器歌词显示的方法和装置 |
CN102881309A (zh) * | 2012-09-24 | 2013-01-16 | 广东欧珀移动通信有限公司 | 歌词文件生成、校对方法及装置 |
CN103324413A (zh) * | 2013-06-13 | 2013-09-25 | 青岛海信移动通信技术股份有限公司 | 一种移动终端及其处理备忘信息的方法 |
CN104091609A (zh) * | 2013-05-22 | 2014-10-08 | 腾讯科技(深圳)有限公司 | 音乐播放器的歌词预览方法和装置 |
CN104142989A (zh) * | 2014-07-28 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 一种匹配检测方法及装置 |
CN104244065A (zh) * | 2014-09-04 | 2014-12-24 | 无锡天脉聚源传媒科技有限公司 | 一种字幕处理的方法及装置 |
CN104347097A (zh) * | 2013-08-06 | 2015-02-11 | 北大方正集团有限公司 | 即点即播式歌曲播放方法及播放器 |
CN104506957A (zh) * | 2014-12-08 | 2015-04-08 | 广东欧珀移动通信有限公司 | 一种显示字幕的方法及装置 |
CN105592232A (zh) * | 2016-03-01 | 2016-05-18 | 广东欧珀移动通信有限公司 | 一种歌词的同步方法及装置 |
CN106098088A (zh) * | 2016-06-01 | 2016-11-09 | 广州酷狗计算机科技有限公司 | 一种显示歌词的方法和装置 |
CN108538309A (zh) * | 2018-03-01 | 2018-09-14 | 杭州趣维科技有限公司 | 一种歌声侦测的方法 |
CN109543064A (zh) * | 2018-11-30 | 2019-03-29 | 北京微播视界科技有限公司 | 歌词显示处理方法、装置、电子设备及计算机存储介质 |
CN109558510A (zh) * | 2018-12-06 | 2019-04-02 | 北京微播视界科技有限公司 | 歌词解析方法、装置、电子设备及计算机存储介质 |
CN109949813A (zh) * | 2017-12-20 | 2019-06-28 | 北京君林科技股份有限公司 | 一种将语音转换为文字的方法、装置及系统 |
CN110489726A (zh) * | 2019-07-09 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种lrc格式处理方法、装置、介质和电子设备 |
CN110570834A (zh) * | 2019-09-27 | 2019-12-13 | 广州市迪声音响有限公司 | 实现歌曲播放过程中歌谱同步显示的方法和装置以及设备 |
WO2020224294A1 (zh) * | 2019-05-06 | 2020-11-12 | 北京字节跳动网络技术有限公司 | 用于处理信息的系统、方法和装置 |
CN112347298A (zh) * | 2020-11-13 | 2021-02-09 | 广州酷狗计算机科技有限公司 | 文字信息显示方法、装置、终端及存储介质 |
CN113515334A (zh) * | 2021-05-07 | 2021-10-19 | 广州酷狗计算机科技有限公司 | 文本数据显示方法、装置、计算机设备及存储介质 |
-
2007
- 2007-09-20 CN CNA2007101537729A patent/CN101127210A/zh active Pending
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656792B (zh) * | 2009-08-31 | 2012-09-12 | 青岛海信移动通信技术股份有限公司 | 移动终端播放歌曲的方法及相关装置 |
CN101808162A (zh) * | 2010-04-09 | 2010-08-18 | 青岛海信移动通信技术股份有限公司 | 移动终端播放歌曲的方法及可播放歌曲的移动终端 |
CN101808162B (zh) * | 2010-04-09 | 2012-08-01 | 青岛海信移动通信技术股份有限公司 | 移动终端播放歌曲的方法及可播放歌曲的移动终端 |
CN101867656A (zh) * | 2010-06-23 | 2010-10-20 | 深圳市五巨科技有限公司 | 一种移动终端歌曲播放的方法和装置 |
CN101931763B (zh) * | 2010-06-25 | 2012-11-14 | 深圳创维-Rgb电子有限公司 | 一种嵌入式操作系统中的歌词处理方法 |
CN101931763A (zh) * | 2010-06-25 | 2010-12-29 | 深圳创维-Rgb电子有限公司 | 一种嵌入式操作系统中的歌词处理方法 |
CN102013265A (zh) * | 2010-08-19 | 2011-04-13 | 上海酷吧信息技术有限公司 | 一种解析歌词并使其与歌曲同步播放的装置及方法 |
CN102737683A (zh) * | 2011-04-01 | 2012-10-17 | 腾讯科技(深圳)有限公司 | 音乐播放器歌词显示的方法和装置 |
CN102148048A (zh) * | 2011-05-12 | 2011-08-10 | 北京瑞信在线系统技术有限公司 | 歌词显示方法及装置 |
CN102881309A (zh) * | 2012-09-24 | 2013-01-16 | 广东欧珀移动通信有限公司 | 歌词文件生成、校对方法及装置 |
CN102881309B (zh) * | 2012-09-24 | 2016-08-24 | 广东欧珀移动通信有限公司 | 歌词文件生成方法及装置 |
CN104091609A (zh) * | 2013-05-22 | 2014-10-08 | 腾讯科技(深圳)有限公司 | 音乐播放器的歌词预览方法和装置 |
CN103324413A (zh) * | 2013-06-13 | 2013-09-25 | 青岛海信移动通信技术股份有限公司 | 一种移动终端及其处理备忘信息的方法 |
CN104347097A (zh) * | 2013-08-06 | 2015-02-11 | 北大方正集团有限公司 | 即点即播式歌曲播放方法及播放器 |
CN104142989A (zh) * | 2014-07-28 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 一种匹配检测方法及装置 |
CN104142989B (zh) * | 2014-07-28 | 2017-10-17 | 广州酷狗计算机科技有限公司 | 一种匹配检测方法及装置 |
CN104244065A (zh) * | 2014-09-04 | 2014-12-24 | 无锡天脉聚源传媒科技有限公司 | 一种字幕处理的方法及装置 |
CN104244065B (zh) * | 2014-09-04 | 2017-08-08 | 无锡天脉聚源传媒科技有限公司 | 一种字幕处理的方法及装置 |
CN104506957A (zh) * | 2014-12-08 | 2015-04-08 | 广东欧珀移动通信有限公司 | 一种显示字幕的方法及装置 |
CN105592232A (zh) * | 2016-03-01 | 2016-05-18 | 广东欧珀移动通信有限公司 | 一种歌词的同步方法及装置 |
CN105592232B (zh) * | 2016-03-01 | 2019-05-24 | Oppo广东移动通信有限公司 | 一种歌词的同步方法及装置 |
CN106098088B (zh) * | 2016-06-01 | 2018-09-04 | 广州酷狗计算机科技有限公司 | 一种显示歌词的方法和装置 |
CN106098088A (zh) * | 2016-06-01 | 2016-11-09 | 广州酷狗计算机科技有限公司 | 一种显示歌词的方法和装置 |
CN109949813A (zh) * | 2017-12-20 | 2019-06-28 | 北京君林科技股份有限公司 | 一种将语音转换为文字的方法、装置及系统 |
CN108538309A (zh) * | 2018-03-01 | 2018-09-14 | 杭州趣维科技有限公司 | 一种歌声侦测的方法 |
CN108538309B (zh) * | 2018-03-01 | 2021-09-21 | 杭州小影创新科技股份有限公司 | 一种歌声侦测的方法 |
CN109543064A (zh) * | 2018-11-30 | 2019-03-29 | 北京微播视界科技有限公司 | 歌词显示处理方法、装置、电子设备及计算机存储介质 |
WO2020107626A1 (zh) * | 2018-11-30 | 2020-06-04 | 北京微播视界科技有限公司 | 歌词显示处理方法、装置、电子设备及计算机可读存储介质 |
CN109558510A (zh) * | 2018-12-06 | 2019-04-02 | 北京微播视界科技有限公司 | 歌词解析方法、装置、电子设备及计算机存储介质 |
WO2020224294A1 (zh) * | 2019-05-06 | 2020-11-12 | 北京字节跳动网络技术有限公司 | 用于处理信息的系统、方法和装置 |
CN110489726A (zh) * | 2019-07-09 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种lrc格式处理方法、装置、介质和电子设备 |
CN110570834A (zh) * | 2019-09-27 | 2019-12-13 | 广州市迪声音响有限公司 | 实现歌曲播放过程中歌谱同步显示的方法和装置以及设备 |
CN112347298A (zh) * | 2020-11-13 | 2021-02-09 | 广州酷狗计算机科技有限公司 | 文字信息显示方法、装置、终端及存储介质 |
CN113515334A (zh) * | 2021-05-07 | 2021-10-19 | 广州酷狗计算机科技有限公司 | 文本数据显示方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101127210A (zh) | 实现歌曲播放过程中歌词同步的方法和装置 | |
US10237595B2 (en) | Simultaneously rendering a plurality of digital media streams in a synchronized manner by using a descriptor file | |
KR101454950B1 (ko) | 스트리밍 미디어에 연관된 딥 태그 클라우드 | |
US20230308730A1 (en) | Subtitle editing method and apparatus, and electronic device | |
US10777096B2 (en) | System for assisting in foreign language learning | |
US10805111B2 (en) | Simultaneously rendering an image stream of static graphic images and a corresponding audio stream | |
CN1987850A (zh) | 一种实现ajax网页的方法 | |
CN102957809A (zh) | 一种在智能手机上对应用程序进行优化的方法 | |
CN103744670A (zh) | 弹窗展示方法和装置 | |
CN103167008B (zh) | 一种多终端同步阅读的方法 | |
CN112230838A (zh) | 一种文章处理方法、装置、设备及计算机可读存储介质 | |
CN103796181A (zh) | 一种发送消息的播放方法、系统及相关设备 | |
CN107423012B (zh) | 一种数据显示方法、装置及电子设备 | |
CN110134410A (zh) | 冷启动用户的个性化信息关联方法、装置及存储介质 | |
CN107145322A (zh) | 组态串口屏及其实现方法 | |
CN114020197A (zh) | 跨应用的消息的处理方法、电子设备及可读存储介质 | |
CN112990173B (zh) | 阅读处理方法、装置及系统 | |
CN103702168A (zh) | 一种显示视频列表的方法及视频客户端 | |
CN113411517B (zh) | 视频模板的生成方法、装置、电子设备及存储介质 | |
CN112114770A (zh) | 基于语音交互的界面引导方法、装置及设备 | |
CN114925656A (zh) | 富文本显示方法、装置、设备和存储介质 | |
CN104683398B (zh) | 跨浏览器的语音告警实现方法及系统 | |
CN112533054B (zh) | 在线视频的播放方法、装置及存储介质 | |
CN112837678B (zh) | 私有云识别训练方法和装置 | |
JP2002024235A (ja) | 広告配信システムおよび伝言システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20080220 |
|
C20 | Patent right or utility model deemed to be abandoned or is abandoned |