背景技术
目前,GPS导航系统是GPS定位系统重要应用方向之一。GPS导航系统的GPS天线接收来自环绕地球的24颗GPS卫星中的至少3颗所传递的数据信息,结合储存在车载导航终端内的电子地图,通过GPS卫星信号确定的位置坐标与此相匹配,确定导航对象在电子地图中的准确位置,并进行该位置附近的路线引导。
图1示出了现有的车用导航系统的结构组成:所述的车用导航系统包括:扬声器1、卡盘装置2、输入装置3、与扬声器1连接的声音输出装置4、显示装置5、分别控制卡盘装置2、输入装置3及声音输出装置4的控制装置6、和与控制装置6连接的GPS接收装置16。
控制装置6为微机,由用户接口控制模块7、地图数据管理模块8及导航模块9构成。导航模块9由导航控制模块10、地图显示模块11、路径引导模块12、路径搜索模块13、信息点检索模块14、自车位置检测模块15构成。
卡盘装置2可以对插入其中的记录有地图数据、控制程序数据等的记录媒体中的记录内容还原成数字数据,并送至送到控制装置6。其记录媒体可以采用例如SD卡(Secure Digital Card),TF卡(Trans Flash Card),CF卡(Compact Flash Card),DVD(Digital Versatile Disc)等。
输入装置3可采用按键、摇杆、旋钮、触摸板等。输入装置3用于输入用户的各种要求。输入装置3将用户的输入信号送到控制装置6的用户接口控制模块7中。
用户接口控制模块7中设有专门用于对语音播报指令进行处理的语音播报装置70,所述的语音播报装置70为语音指令播报模块,所述语音指令播报模块可采用TTS(即Text-to-Speech,从文本到语音)转换模块实现,TTS转换模块接收路径引导模块12或自车位置检测模块15生成的语音播报指令,其中,路径引导模块12处理各式与当前GPS位置相关的诱导提示音及位置状态提示音,处理相应的提示音事件,生成语音播报指令;自车位置检测模块15判断GPS状态是否变化,处理GPS状态变化提示事件,生成语音播报指令。其生成的语音播报指令仅包括采用文本文件的格式保存的播报内容,由TTS转换模块通过TTS技术,将文本文件读出成为声音数据。声音输出装置4将从TTS转换模块发送来的声音数据转化为声音信号,送到扬声器1。扬声器1将声音输出装置4送来的声音信号转换成声音并输出,这样,扬声器1就可以配合控制装置6的需要,发出各种操作通知及路径引导的语音。
显示装置5可以为LCD(Liquid Crystal Display)液晶显示器、投影仪、CRT(Cathode Ray Tube)显示器之一,它根据控制装置6送来的显示数据,显示其对应的图像。例如,显示装置5可以显示地图、自车位置标记、已规划路径及用户输入界面。
GPS接收装置16接收来自GPS卫星的信号,检测车辆的现在位置及移动方向,并将检测到的结果转换成协议数据,这些协议数据进一步被送到控制装置6的导航模块9内的自车位置检测模块15。
控制装置6的用户接口控制模块7接收输入装置3的输入,生成与输入所要求的内容对应的控制指令,送到导航模块9内的一个或多个子模块之中。此外,用户接口控制模块7响应控制指令,并把从导航模块9返回的处理结果,送到声音输出装置4、显示装置5之中。
控制装置6的地图数据管理模块8响应导航模块9的要求从卡盘装置2读出地图数据。
导航模块9的导航控制模块10控制并调用导航模块9的其余子模块。
导航模块9的地图显示模块11根据从地图数据管理模块8读出的地图数据信息,生成地图显示用的显示数据,送到用户接口控制模块7。
导航模块9的路径引导模块12从地图数据处理模块8取得地图数据,对其进行路径诱导处理,并把诱导处理结果返回给地图数据管理模块11,以便于地图数据管理模块11进行预测读取。另还将诱导时的界面、导航语音等数据传送给用户接口控制模块7。
导航模块9的路径搜索模块13从地图数据管理模块8取得地图数据,并对其实行路径探索处理,并将路径探索结果返回路径引导模块12。
导航模块9的信息点检索模块14从地图数据管理模块8取得待过滤数据,检索出输入装置3输入的信息点检索指令,将检索结果返回给地图数据管理模块8、地图显示模块11、路径引导模块12。
导航模块9的自车位置检测模块15将从GPS接收装置16得到的表示现在位置的数据,送到地图数据管理模块8、地图显示模块11、路径引导模块12。
现有的GPS导航系统在播报语音时,其工作步骤如下:
1)语音播报装置70检测导航系统中是否有新的语音播报指令产生,若没有,则继续执行步骤1)进行检测,若有,将当前产生的新的语音播报指令发送至语音播报装置70,继续执行步骤1)进行检测;
2)语音播报装置70检测到导航系统产生了新的语音播报指令,直接执行新的语音播报指令的播报动作;声音输出装置4立即将控制装置6送来的声音数据转化为声音信号,送到扬声器1进行播报。
从上面的工作步骤可以看出,现有的GPS导航系统,存在着播报语音会被截断的问题。这是由于在设计此语音播报功能时,仅考虑到应当将语音播报指令及时播报,却没有考虑到,当一条语音播报指令尚未播报完成时,导航系统有可能又生成了新的语音播报指令,而此时,当前的语音播报装置会立即截断前一正在播报的语音播报,转而直接播报新的语音播报指令。例如正在播报诱导语音“前方300米请左转”,但是只播报完语音的“前方300”部分后,新的GPS定位信号到达,并产生一条播报内容为“请注意,前方有加油站”的语音播报指令,于是前一语音播报过程被拦腰截断了,用户听起来,整个播报过程的受讯就是“前方300请注意,前方有加油站”。
这些现象的存在,导致了GPS导航系统语音信息的播报不通畅,不完全,语音播报会被截断,影响用户的使用体验,并可能致使用户因语音信息不全而不能及时做出诸如相应的车辆转向控制等动作。
发明内容
为克服上述缺陷,本发明所要解决的技术问题是提供一种不会截断当前语音播报的语音播报装置、使用了此语音播报装置的导航系统及其所采用的语音播报方法。
本发明的目的是通过以下技术方案来实现的:
一种用于导航系统的语音播报装置,包括语音指令播报模块,其中,还包括用于接收并保存导航系统生成的包括有播报内容的语音播报指令的播报集合缓冲区,所述语音指令播报模块从播报集合缓冲区中得到语音播报指令,将其转化为声音数据,发送至导航系统的声音输出装置。
一种使用了上述语音播报装置的导航系统,包括语音播报指令生成模块、声音输出装置,及将语音播报指令生成模块生成的包括有播报内容的语音播报指令进行处理并输出至声音输出装置的语音播报装置,其中,语音播报装置包括语音指令播报模块,其特征在于,所述的语音播报装置还包括用于接收并保存语音播报指令的播报集合缓冲区,所述语音指令播报模块从播报集合缓冲区中得到语音播报指令,将其转化为声音数据,发送至导航系统的声音输出装置。
所述的设置播报集合缓冲区的容量设置为可保存2~6个的语音播报指令。若将容量设置的过小,很有可能因语音播报指令多于播报集合缓冲区的容量,因容量不足,而将一些重要的语音播报指令提示删去;而若容量设置的过大,当信息量很大时,由于语音播报指令本身有最迟播报时限的要求,可能保存的信息大都超过了最迟播报时限,也是没有意义的。其中,将播报集合缓冲区的容量设置为5,可兼顾上述两方面的要求。
所述的语音播报指令还包括根据播报内容的类型确定的语音簇属性参数;所述的语音播报指令的语音簇属性参数为替换、抵消或互不影响中的一种;所述的语音播报指令分别对应有一个或一个以上的不同的播报方案。语音簇属性参数的设置,使得一些可以提前处理的语音播报指令在加入播报集合缓冲区时即进行预处理,诸如替换或抵消,减少了播报集合缓冲区中的语音播报指令的数量,大大简化了后续的程序的复杂度。而不同的播报方案的着重点不同。如,有的播报方案更文明、柔和、委婉动听,携带的信息量更大,但播报时间较长;有的简单明了,播报时间短,其携带的信息量较少,且显语气生硬。
所述的语音指令播报模块为TTS转换模块,所述的语音播报装置中还包括当播报集合缓冲区中有新加入的语音播报指令时,可从播报集合缓冲区中取出所有的语音播报指令进行排列生成播报队列的播报队列生成模块,及对上述生成的播报队列进行求权筛选,以得到播报队列的播报队列求权筛选模块;TTS转换模块根据播报队列求权筛选模块将筛选出的播报队列,依次播报语音播报指令的播报内容。通过上述播报队列生成模块及播报队列求权筛选模块,在进行播报之前,能先行对播报集合缓冲区中的语音播报指令进行计算,从而选择出一个较好的播报队列顺序,进行播报。
一种上述导航系统所采用的语音播报方法,包括以下步骤:
A:将导航系统的语音播报指令生成模块生成的语音播报指令加入语音播报装置中的播报集合缓冲区中;
B:语音播报装置中的语音指令播报模块依次从播报集合缓冲压中得到语音播报指令,通过导航系统的声音输出装置转换成语音输出。
所述的步骤A中,语音播报指令生成模块根据其生成的语音播报指令的播报内容的性质设置语音簇属性参数,生成语音播报指令;对应的,在将语音播报指令加入播报集合缓冲区中时,执行根据其语音簇属性参数进行同簇处理的步骤;当新生成的语音播报指令的语音簇属性参数为替换时,在同簇处理步骤中,若在播报集合缓冲区中检测到其语音簇属性参数也为替换的语音播报指令时,执行将此在先的语音播报指令替换为新生成的语音播报指令的步骤;当新生成的语音播报指令的语音簇属性参数为抵消时,在同簇处理步骤中,若在播报集合缓冲区中检测到其语音簇属性参数也为抵消的语音播报指令时,将新生成的语音播报指令抛弃,同时执行将在先的语音播报指令从播报集合缓冲区中删除的步骤。
所述的步骤A中,在将新生成的语音播报指令加入播报集合缓冲区中时,先检测播报集合缓冲区是否已满,若未满,则新生成的语音播报指令直接加入播报集合缓冲区中;若已满,则根据预设的删除标准在播报集合缓冲区中选择一个语音播报指令将其删除;删除后,再将新生成的语音播报指令加入播报集合缓冲区中;所述的步骤A中,语音播报指令生成模块根据其生成的语音播报指令的播报内容的性质设置语音播报指令的优先级别属性参数;在语音播报指令的时间属性参数内记载当前语音播报指令加入播报时间缓冲区时刻;对应的,当播报集合缓冲区已满时,其预设的删除标准为:在播报集合缓冲区内选择一个优先级别最低的语音播报指令进行删除;当优先级别最低的语音播报指令为两个或两个以上时,选择其中加入时间最早的语音播报指令进行删除。这样的设计尤其适用于容量较小的播报集合缓冲区。
所述的步骤B中,语音指令播报模块为TTS转换模块,TTS转换模块依次从播报集合缓冲区中读取语音播报指令的步骤中,包括以下步骤:
B1:播报队列生成模块从播报集合缓冲区中取出所有的语音播报指令,对其进行排序后,生成播报队列;
B2:TTS转换模块读取播报队列的队首的语音播报指令的内容进行播报;播报完成后,当前播报的语音播报指令从播报队列中出队,并将当前播报的语音播报指令从播报集合缓冲区中删除,检测播报集合缓冲区中是否有新的语音播报指令加入,若有,跳转步骤B1;若没有,继续执行步骤B2。
所述的步骤A中,语音播报指令生成模块根据其生成的语音播报指令的播报内容的性质设置语音播报指令的优先级别属性参数;每个优先级别的语音播报指令分别设有不同的权重基值,优先级别较高的语音播报指令的权重基值较高;为各个优先级别的语音播报指令的不同播报方案按播报时长从长到短进行排序,分别为不同的播报方案设置附加权值:每个优先级别中播报时长较长的播报方案的附加权值不大于播报时长较短的播报方案的附加权值,较高优先级别中播报时长最短的播报方案的附加权值大于较低优先级别中播报时长最长的播报方案的附加权值,且其中,优先级别最低的低级指令的权重基值仍是大于优先级别最高的高级指令的附加权值的绝对值;
所述的步骤B1中,排序的过程包括以下步骤:
列出播报集合缓冲区中的所有的语音播报指令的所有播报方案的所有组合,并对上述组合分别进行全排列;
根据当前时间及各语音播报指令中的播报完毕时限属性参数进行计算,在上述全排列得到的排列顺序中选择所有播报方案都能在其播报完毕时限属性参数要求的播报完毕时限内播报完成,且排列中所有的播报方案涉及到的语音播报指令的权重基值之和加上排列中所有的播报方案的附加权值之和最大的排列顺序;
生成播报队列;并在播报集合缓冲区中删除在播报队列中的未出现的语音播报指令。
这种权值计算方案针对具有多种不同的播报方案的语音播报指令,且在语音播报指令少时,播报较长的播报方案;在语音播报指令多时,播报较短的播报方案。设置更加人性化,且很好的兼顾了语音播报指令的及时性要求,使用更加方便实用。
本发明由于在导航系统的语音播报装置中设置了用于接收并保存语音播报指令生成模块生成的语音播报指令的播报集合缓冲区,语音指令播报模块从播报集合缓冲区中得到语音播报指令进行播报,因此,在语音指令播报模块正在播报语音播报指令时,新生成的语音播报指令会先送入播报集合缓冲区中进行缓冲存放,待语音指令播报模块播报完成当前的语音播报指令后,再对下一个语音播报指令进行播报,因而避免了出现语音播报会被截断的情况。
具体实施方式
下面结合附图和较佳的实施例对本发明作进一步说明。
在语音播报装置中设置可缓冲存储语音播报指令的播报集合缓冲区后,就解决了原先语音播报可能被截断的问题,可是这又带来了新的问题。比如,我们可以将播报集合缓冲区设置为一个队列,新生成的语音播报指令按其生成的先后顺序从队尾入队;语音播报装置从队首读取语音播报指令;读取后的语音播报指令出队删除。这种技术方案虽然解决了语音播报可能被截断的问题,但却有可能出现生成的语音播报指令不能及时播报的情况。由于播报集合缓冲区中积压的语音播报指令过多,而播报的队列是按照语音播报指令生成的先后顺序排列的,可能一些不重要的、或是对播报完成时限要求较松的语音指令堵在一些重要的、播报完成时限很近的语音播报指令之前,导致后者不能得到及时播报。
为了更好的实现本发明的目的,图2示出了本发明车用导航系统的一个实施例的局部结构:本发明车用导航系统包括导航模块、与导航模块连接的用户接口控制模块7、及与用户接口控制模块7连接的声音输出装置4等。其中,用户接口控制模块7中设置有专门用于对语音播报指令进行处理的语音播报装置70,声音输出装置4与语音播报装置70相连接,对语音播报装置70提供的语音进行播报。
其中,所述的语音播报装置70包括:用于接收并保存导航模块中由自车位置检测模块15和路径引导模块12生成的语音播报指令实例的播报集合缓冲区71、与播报集合缓冲区71连接的,用于监控播报集合缓冲区71状态变化,并对其进行维护的播报集合缓冲区状态维护模块73、当播报集合缓冲区中有新加入的语音播报指令时,可从播报集合缓冲区中取出所有的语音播报指令进行排列生成播报队列的播报队列生成模块72,及对上述生成的播报队列进行求权筛选,以得到播报队列的播报队列求权筛选模块74、用于对流程进行控制的播报驱动模块75、及与播报驱动模块75相连接的语音指令播报模块,所述语音指令播报模块可采用TTS转换模块实现,也可采用预录语音播报模块实现;其中,本实施例中采用的是将文本文件读出成为声音数据的TTS转换模块76。
其中,播报集合缓冲区状态维护模块73负责向用户接口控制模块7的其他子模块提供操作播报集合缓冲区的接口,而其他如播报队列生成模块、播报驱动模块通过播报集合缓冲区状态维护模块73提供的播报集合缓冲区操作接口来操作播报集合缓冲区。
播报队列生成模块72对播报集合缓冲区中的各语音播报指令实例排序出所有播报队列。每个播报队列的语音播报指令的播报顺序确定,各语音播报指令采用的播报方案也确定。其中,一个播报队列不必使用上播报集合缓冲区中的所有语音播报指令。
用户接口控制模块7的其他子模块可以通过播报集合缓冲区状态维护模块73来观察播报集合缓冲区是否有新加指令、把指令实例从播报集合缓冲区中删除等。播报队列求权筛选模块74对播报队列生成模块72生成的每一个播报队伍进行求权,并筛选出其中权值最高的队列。
播报驱动模块75在权值最高的队列也存在超时的时候,不执行任何播报,同时把播报集合缓冲区清空。播报驱动模块75在权值最高的队列不存在超时的时候,把不在该最高权值队列中的其他语音播报指令实例借助播报队列生成模块72提供的接口从播报集合缓冲区中删除,然后开始逐一播报队列中的语音播报指令实例。每播报完一条队伍中的语音播报指令实例,就把相应的语音播报指令实例从播报集合缓冲区中删除。在播报音隙中,一旦发现播报集合缓冲区被加入了新的语音播报指令实例,则结束播报,把运行控制权交给播报队列生成模块72。
这样,播报集合缓冲区的生产与消费是属于两个不同的子系统的,它们协同在一起工作。播报驱动模块75根据播报队列求权筛选模块筛选出的播报队列,依次将播报语音播报指令的播报内容发送至TTS转换模块76中进行播放。
导航模块中的自车位置检测模块15用于判断GPS状态是否变化,处理GPS状态变化提示事件,生成GPS状态变化语音播报指令实例,并把语音播报指令实例加入到播报集合缓冲区71中。导航模块中的路径引导模块12用于处理各式与当前GPS位置相关的诱导提示音及位置状态提示音,处理相应的提示音事件,生成相应的语音播报指令实例,并把语音播报指令实例加入到播报集合缓冲区71中。
播报集合缓冲区71中存储有语音播报指令实例,语音播报指令实例为实例化的语音播报指令,其中,语音播报指令,和实例化的语音播报指令实例中包括:播报内容、优先级别属性参数、根据播报内容的类型确定的语音簇属性参数、用于记载其在何时播报才有意义的播报完毕时限属性参数、用于记载加入播报时间缓冲区时刻的加入时间属性参数。其中,也可以通过设置播报开始时限与语音播报指令的播报时长达到与播报完毕时限属性参数同样的效果。
导航系统产生语音播报事件时不会直接调用播报接口,而是在产生播报事件时,根据语音播报指令生成一个对应的语音播报指令实例。其中,一个语音播报指令设置为可以有多个具不同播报内容的播报方案,该语音播报指令实例可通过TTS转换模块76获取并记录各播报方案内容的播报时间长度,然后把它加入到播报集合缓冲区中,并记录下加入播报集合缓冲区时的时刻。不同的播报方案的播报时长也是不同的。这样设置是希望达到在语音播报指令少时,播报较长的播报方案;在语音播报指令多时,播报较短的播报方案。这样的设置更加人性化,贴合用户需要。
上述导航系统所采用的语音播报方法,包括两个阶段:生产阶段及消费阶段。其中,生产阶段包括以下步骤:
步骤1:导航系统的语音播报指令生成模块生成的语音播报指令:语音播报指令生成模块根据其生成的语音播报指令的播报内容的性质设置语音簇属性参数及优先级别属性参数,在语音播报指令的时间属性参数内记载当前语音播报指令加入播报时间缓冲区时刻,生成语音播报指令;
步骤2:检测播报集合缓冲区是否已满,若已满,按照预设的删除标准在播报集合缓冲区中选择一个语音播报指令将其删除,再转步骤3;若未满,直接转步骤3;
步骤3:将生成的语音播报指令加入语音播报装置中的播报集合缓冲区中,检查新的语音播报指令所在的语音簇是否有相同的语音簇,是否有同簇处理,并进行同簇处理;若不存在相同的语音簇,直接加入。
步骤2中,其预设的删除标准为:在播报集合缓冲区内选择一个优先级别最低的语音播报指令进行删除;当优先级别最低的语音播报指令为两个或两个以上时,选择其中加入时间最早的语音播报指令从播报集合缓冲区内删除。当然,针对不同的导航系统可设置不同的删除标准,如,所述的删除标准还可为:在播报集合缓冲区内选择一个优先级别最低的语音播报指令进行删除;或在播报集合缓冲区内选择一个选择加入时间最早的语音播报指令进行删除。
在其消费阶段,语音播报装置中的TTS转换模块依次从播报集合缓冲区中读取语音播报指令,通过导航系统的声音输出装置转换成语音输出;TTS转换模块在播报完成了一条语音文本后,检测播报集合缓冲区中是否有新指令的添加;若没有,则继续播报其临时队列中的下一条指令,而若临时队列中没有下一条指令,则等待并检测播报集合缓冲区中是否有新指令的添加;若有变化,则重新对播报集合缓冲区中的语音播报指令进行权值计算和排序,再取出当前队列中最前的一条指令进行播报。由于现今计算机的计算速度很高,因此,虽然TTS是在播报两条语音文本之间进行计算,可是权值计算和排序的时间极短,用户几乎是感觉不到的,完全不影响用户的使用。
附图3是在上述消费阶段播报所述播报集合缓冲区中各语音播报指令的工作流程。
在步骤S302中,播报队列生成模块通过播报集合缓冲区状态维护模块的接口判断播报集合缓冲区是否为空:如播报集合缓冲区为空,则等待下一次判断;如果播报集合缓冲区不为空,执行步骤S303;
在步骤S303中,播报队列生成模块排列出播报集合缓冲区中的各语音播报指令的所有可能播报队列,先根据当前时间及各语音播报指令中的播报完毕时限属性参数进行计算,若当前排列顺序中选择所有语音播报指令有任意一个不能在其播报完毕时限属性参数要求的播报完毕时限内播报完成,将权值设为-1;若能在其播报完毕时限属性参数要求的播报完毕时限内播报完成,则播报队列求权筛选模块计算各队列权值,选择出权值为最大的一个队列;其中,权值计算的具体方法在后面详述;
在步骤S304中,播报驱动模块判断最大权值队列的权值是否为-1;如是,则执行步骤S305,否则执行步骤S306;
在步骤S305中,播报驱动模块通过播报集合缓冲区状态维护模块的接口去掉播报集合缓冲区中所有的语音播报指令,然后返回到步骤S302;
在步骤S306中,播报驱动模块通过播报集合缓冲区状态维护模块的接口把与最大权值队列无关的语音播报指令从播报集合缓冲区中删除;
在步骤S307中,播报驱动模块播报最大权值队列中排在第一个播报方案内容,并等待其播报完毕,然后通过播报集合缓冲区状态维护模块的接口把相应的语音播报指令从播报集合缓冲区中删除;
在步骤S308中,播报驱动模块判断最大权值队列中所有涉及到的播报方案是否已全部播报完毕:如是,则返回执行步骤S302,否则执行步骤S309;
在步骤S309中,播报驱动模块通过播报集合缓冲区状态维护模块的接口判断播报集合缓冲区是否有新增加的语音播报指令:如是,则返回执行步骤S302,否则执行步骤S310;
在步骤S310中,播报驱动模块播报最大权值队列中下一个方案内容,等待其播报完毕,然后通过播报集合缓冲区状态维护模块的接口把相应的语音播报指令从播报集合缓冲区中删除,接着返回到步骤S308继续执行。
下面以一个具体实例来进一步说明本发明的数据结构及其数据实例。
为了实现已播报的语音不被截断,本实施例建立了一个容量为5的播报集合缓冲区,在语音播报事件发生时生成相应的语音播报指令,并加入到该播报集合缓冲区中。导航系统等待正在播报的语音播报指令播报完成后,再播报集合缓冲区中其余的指令。若将容量设置的过小,很有可能因语音播报指令多于播报集合缓冲区的容量,因容量不足,而将一些重要的语音播报指令提示删去;而若容量设置的过大,当信息量很大时,由于语音播报指令本身有最迟播报时限的要求,可能保存的信息大都超过了最迟播报时限,也是没有意义的;而且会使后续的求权排序筛选的过程更加的复杂。将播报集合缓冲区的容量设置为5,兼顾了上述两方面的要求。
当播报集合缓冲区中同时存在好几个指令,但无法全部都能在各自的播报时限内播报完成,这时就需要建立一个取舍的标准。如果语音播报指令被加入到播报集合缓冲区中,发现播报集合缓冲区已满,不得不选择语音播报指令舍弃时,则在播报集合缓冲区内选择一个优先级别最低的语音播报指令进行删除;当优先级别最低的语音播报指令为两个或两个以上时,选择其中加入时间最早的语音播报指令从播报集合缓冲区内删除。
根据导航系统的特点,一些相关的诱导语音可以认为是作用等效的,例如产生时间相近,针对同一路口的两个诱导语音播报指令,一个是“前方300米后右转”,和“前方250米后右转”,如果同时出现在播报集合缓冲区中则没有必要,只需要保留“前方250米后右转”即可。再如一对相配合的“GPS接收异常”和“GPS接收正常”,如果正在播报一个较长耗时的语音播报指令途中产生这两个语音播报指令,则它们的作用是抵消的,两者都不应播报出来。这是因为,当正在播报的那个语音播报指令播报完成后,此时的GPS状态在播报之前和播报结束时是一致的,此时的GPS状态音对用户没有任何作用。
本发明所述的语音播报指令的数据结构及生成的数据实例的结构参见表1:
表1:
语音播报指令ID |
优先级 |
语音簇 |
同簇处理 |
播报内容 |
播报完毕时限 |
C0001 |
高 |
簇1 |
替换 |
右转提示 |
动态计算 |
C0002 |
中 |
簇1 |
替换 |
直行提示 |
20秒 |
C0003 |
高 |
簇1 |
替换 |
左转提示 |
动态计算 |
C0004 |
高 |
簇1 |
替换 |
掉头提示 |
动态计算 |
C0005 |
中 |
簇2 |
抵消 |
GPS状态出现异常提 |
10秒 |
|
|
|
|
示 |
|
C0006 |
中 |
簇2 |
抵消 |
GPS状态恢复正常提示 |
10秒 |
C0007 |
低 |
(NULL) |
互不影响 |
经过信息点附近提示 |
10秒 |
C0008 |
低 |
(NULL) |
互不影响 |
因偏离路径而重新规划提示 |
10秒 |
表1中的各个数据项描述如下:
1.语音播报指令ID:标识一个语音播报指令,同时也用于在附图6中与播报方案建立关联。
2.优先级:分为高、中、低级。
3.语音簇:有一定的相关性的语音,在加入到播报集合缓冲区中会相互影响的归为同一簇。
4.同簇处理:加入到播报集合缓冲区中时,如果已存在同簇的语音时的处理情况。分为替换、抵消、互不影响等。替换的意思是指后加入到播报集合缓冲区的同簇语音会把先加入的同一簇其他语音挤掉;抵消的意思是指如果加入语音播报指令到播报集合缓冲区时发现已有同簇的其他语音,则去掉所有该簇的语音包括欲加入的该语音;互不影响是指语音播报指令加入到播报集合缓冲区时,不用考虑同簇语音影响。其中,语音簇及同簇处理共同构成了语音播报指令的语音簇属性参数。
5.播报内容:描述该语音的存在目的,与现有技术中的语音播报指令相同,为文本格式。
6.播报完毕时限:用于记载其在何时完成播报才有意义,如,转弯诱导语音,它只有在一个有限的时间范围内被播报出来才有实际意义(例如,该语音播报完的时刻,应不超过到达路口的时刻)。此时限为在生成播报内容时,由时限计算装置,根据当前的定位的位置、车速、与相关建筑物的距离等参数计算得到的时限。其中,把语音播报指令加入到集合中时,会记录下加入时刻,该加入时刻加上最迟播报完毕时限得到的新时刻,就是该语音播报指令理应播报完毕的最迟时刻。当然,播报完毕时限也可以采用最迟播报开始时限与语音播报指令的播报时长配合实现,其效果与采用播报完毕时限相同。
播报方案数据结构及数据实例参看表2。
表2:
播报方案ID |
播报内容 |
P0001 |
前方%L米后,请右转,进入%P |
P0002 |
%L米后,请右转,进入%P |
P0003 |
前方%L米后,请右转 |
P0004 |
%L米后,请右转 |
P0005 |
前方请右转 |
P0006 |
请右转 |
… |
… |
其数据项描述如下:
1.播报方案ID:标识一个播报方案,同时也用于在附图6中与语音播报指令建立关联。
2.播报内容:最终用户应该听到的播报语音内容。播报内容中含有距离替换符“%L”,及地点替换符“%P”。例如“前方%L米后,请右转,进入%P”,替换距离及地点后可得“前方300米后,请右转,进入深南大道”。这是在装置内部存储的原始的模式;当加入到缓冲区中后,都是替换成具体数值及具体文本。
播报方案与语音播报指令的关联数据结构及数据实例参看表3。
表3:
语音播报指令ID |
播报方案ID |
C0001 |
P0001 |
C0001 |
P0002 |
C0001 |
P0003 |
C0001 |
P0004 |
C0001 |
P0005 |
C0001 |
P0006 |
… |
… |
在本实施例中,一个语音播报指令可以有至多9个具不同播报内容的播报方案。如表3中所示,其数据结构的各数据项描述如下:
1.语音播报指令ID:播报方案与语音播报指令关联中的语音播报指令的ID。
2.播报方案ID:播报方案与语音播报指令关联中的播报方案的ID。
播报集合缓冲区的数据结构及数据实例参看表4。
表4:
加入时刻 |
语音播报指令 |
2006-12-05 16:30:13 |
{右转提示} |
2006-12-05 16:30:15 |
{经过公司附近} |
… |
… |
该播报集合缓冲区最多只能缓存9个语音播报指令,其中各数据项的说明如下:
1.加入时刻:是指语音播报指令产生后,加入到播报集合缓冲区中的时刻。
2.语音播报指令:加入到播报集合缓冲区中的语音播报指令。要注意的是,加入到集合中的语音播报指令不单只是语音播报指令的ID,而是整个语音播报指令的数据实例,其中,该语音播报指令数据实例中的播报方案中,如有转义符“%L”及“%P”,则皆已转换成距离及地点名称。
本实施例通过将语音播报指令分为不同的优先等级,以及为语音播报指令提供好几种不同时长的播报方案以便于灵活排列组合,以便在时限要求、人性化、实际效用方面取得平衡。而其各种排列组合的优选方式是通过权值估评法来实施的。前面的数据结构的设置,都是为了能有效采用权值计算方案。权值计算方案是用来计算播报集合缓冲区中各个语音播报指令及其播报方案的某个排列组合的权值的。
而播报集合缓冲区中各个语音播报指令及其播报方案的排列组合过程,先列出播报集合缓冲区中的所有的语音播报指令的所有组合,并对上述组合分别进行全排列(即排列时不要求用上所有语音播报指令)。
对于各个语音播报指令仅对应一个播报方案的情况,可先对播报集合缓冲区中的所有的语音播报指令进行全排列,根据当前时间及各语音播报指令中的播报完毕时限属性参数进行计算,若存在所有语音播报指令都能在其播报完毕时限属性参数要求的播报完毕时限内播报完成的排列顺序,将语音播报指令按此顺序排列,生成播报队列;若不存在上述排列顺序,则从播报集合缓冲区中删去一个优先级别最低的语音播报指令,重新执行上述步骤。
具体的,可通过下述方法实现。分别为上述每个优先级别的语音播报指令设置权重基值,优先级别较高的语音播报指令的权重基值较高;所述的步骤B1中,排序的过程包括以下步骤:
列出播报集合缓冲区中的所有的语音播报指令的所有组合,并对上述组合分别进行全排列;根据当前时间及各语音播报指令中的播报完毕时限属性参数进行计算,在上述全排列得到的排列顺序中选择所有语音播报指令都能在其播报完毕时限属性参数要求的播报完毕时限内播报完成,且排列中所有的语音播报指令的权重基值相加后最大的排列顺序,将语音播报指令按此顺序排列,生成播报队列;并在播报集合缓冲区中删除在播报队列中的未出现的语音播报指令。
由于有的语音播报指令有不止一个的播报方案,则列出播报集合缓冲区中的所有的语音播报指令的所有播报方案的所有组合,并对上述组合分别进行全排列。例如播报集合缓冲区中有两个语音播报指令,其中一个语音播报指令为【直行提示】,具有2个播报方案,分别为:
1.〖请沿当前道路行驶〗;
2.〖请直行〗;
另一个语音播报指令为【经过公司附近提示】,具有1个播报方案:
1.〖经过公司附近〗;
那么,先考虑到语音播报指令层次的排列有四个,列举如下:
1、{【直行提示】}
2、{【经过公司附近提示】}
3、{【直行提示】,【经过公司附近提示】}
4、{【经过公司附近提示】,【直行提示】}
再考虑上各语音播报指令的播报方案的组合,共有组合7个,列举如下:
1.1、{〖请沿当前道路行驶〗}
1.2、{〖请直行〗}
2.1、{〖经过公司附近〗}
3.1、{〖请沿当前道路行驶〗,〖经过公司附近〗}
3.2、{〖请直行〗,〖经过公司附近〗}
4.1、{〖经过公司附近〗,〖请沿当前道路行驶〗}
4.2、{〖经过公司附近〗,〖请直行〗}
对上面的7个播报方案的排列组合采用权值计算方案进行权值计算,可以获取得到权值最大的排列组合,该排列组合就是我们的优选组合。
下面是针对具有不同的播报方案的语音播报指令,在语音播报指令少时,播报较长的播报方案;在语音播报指令多时,播报较短的播报方案的实施例,本实施例采用的权值方案的具体设置如下:此方案适用于播报方案的数量少于10个的情况。
1.高级指令的权重基值为100000;
2.中级指令的权重基值为10000;
3.低级指令的权重基值为1000;
4.高级语音播报指令的各个播报方案按播报时长从长到短排序,第n长(最长的n=1,次长的n=2,…)的播报方案的附加权值计算公式为100-100*n;
5中级语音播报指令的各个播报方案按播报时长从长到短排序,第n长(最长的n=1,次长的n=2,…)的播报方案的附加权值计算公式为10-10*n;
6.低级语音播报指令的各个播报方案按播报时长从长到短排序,第n长(最长的n=1,次长的n=2,…)的播报方案的附加权值计算公式为1-1*n;
7.播报集合缓冲区中由各个语音播报指令的播报方案组成的组合队列的具体的权值,由组合队列中涉及到的所有语音播报指令的基值和,加上组合队列中涉及到的全部播报方案的附加权值和;
8.如果通过推演计算发现某个语音播报指令的播报方案在该语音播报指令的播报时限内无法播报完毕,这时该组合队列的最终权值是-1。
先计算当前队列中,各播报方案在播报时限内是否能播报完毕,在能播报完毕的情况下,再计算当前队列中的语音播报指令的权值;若不能播报完毕,直接将当前队列的最终权值设为-1。
在本实施例中,对播报集合缓冲区中的语音播报指令的各个播报方案组合队列按照上面的权值方案进行求权,就可以得到具有最高权值的那个播报方案。这个播报方案就是我们的优选队列。
但是,在求权筛选的过程中,有可能存在多个队列的权值并列最高。如发现两个队列A、B的权值一样,且权值就为-1,则保留先进行求值的那个队列。如果A、B的权值一样大并且不为-1,则对该两队列从队头开始,逐一对各位置的元素的优先级别比较:一旦发现A队列的某位置上元素的优先级比B队列的相应位置的元素的优先级别要高,则保留A队列,舍弃B队列,反之则保留B队列,舍弃A队列;如果A、B队列的各元素的优先级别都一致,再对两队列从队头开始,逐一对各位置的元素的加入时刻比较,一旦发现A队列的某位置上元素的加入时刻比B队列的相应位置的元素的加入时刻要高,则保留A队列,舍弃B队列,反之则保留B队列,舍弃A队列。如果A、B队列的权值都为-1,则保留先进行求值的队列即可。
如果所有队列的权值都为-1,则表示所有的播报队列都存在超时情形,因此不用播报任何队列,且将播报集合缓冲区中的所有语音播报指令全部删除。
下面举例求前面出现过的播报队列{〖经过公司附近〗,〖请沿当前道路行驶〗}的权值。
设该队列涉及的语音播报指令【经过公司附近提示】的优先级为低级,加入时间为2007-12-05 16:30:13,语音播报指令播报时限为7秒,其播报方案〖经过公司附近〗的播报耗时为3秒。
该队列另一涉及的语音播报指令【请直行】的优先级为中级。加入时间为2007-12-05 16:30:14,语音播报指令播报时限为10秒,其播报方案〖请沿当前道路行驶〗的播报耗时为4秒。
如果队列的开始播报时间为2007-12-05 16:30:16,则播报方案〖经过公司附近〗的开始播报时间为2007-12-05 16:30:16,播报方案〖请沿当前道路行驶〗的开始播报时间为〖经过公司附近〗的播报结束时间,而〖经过公司附近〗的播报结束时间为它的开始播报时间加上它的播报耗时,即2007-12-05 16:30:16+3=2007-12-05 16:30:19。
播报方案〖经过公司附近〗的最迟有效播报结束时刻为其指令【经过公司附近提示】的加入时间加上该指令的播报时限,即2007-12-05 16:30:13+7=2007-12-05 16:30:20。播报方案〖请沿当前道路行驶〗的最迟有效播报结束时刻为其指令【请直行】的加入时间加上该指令的播报时限,即2007-12-05 16:30:14+10=2007-12-05 16:30:24。
播报方案〖经过公司附近〗实际结束时刻为它的实际开始时间,加上它的播报耗时,即2007-12-05 16:30:16+3=2007-12-05 16:30:19。播报方案〖请沿当前道路行驶〗的实际结束时刻为〖请沿当前道路行驶〗的实际开始时间(即〖经过公司附近〗的实际结束时刻),加上它的播报耗时,即2007-12-05 16:30:19+4=2007-12-05 16:30:23。
对比播报方案〖经过公司附近〗的最迟有效播报结束时刻2007-12-0516:30:20及实际结束时刻2007-12-05 16:30:19,可知该方案的播报没有超时情形。
对比播报方案〖请沿当前道路行驶〗的最迟有效播报结束时刻2007-12-05 16:30:24及实际结束时刻2007-12-05 16:30:23,可知该方案的播报没有超时情形。
由于〖经过公司附近〗及〖请沿当前道路行驶〗都能及时播报完成,没有超时情形发生,因此,该播报队列的值不为-1,而是各自级别的基值加上其播报方案的附加权值。【请直行】的优先级别为中级,权重基值为10000,【经过公司附近提示】的优先级别为低级,权重基值为1000。〖请沿当前道路行驶〗是【请直行】的第1长的播报方案,其附加权值为:100-100×1=0;〖经过公司附近〗是【经过公司附近提示】的第1长的播报方案,其附加值为10-10×1=0;该播报队列的权值和为10000+1000+0+0=11000。
对播报集合缓冲区中的所有排列组合依权值方案进行求值,求值过程类似于上面的举例,必定可以筛选得到一个权值最高的队列(如果存在多个权值最高的队列,按本实施例前面所述的同权值队列的取舍规则进行取舍)。如果该队列的值为-1,则不用播报任何指令,并把所有语音播报指令从集合中删除。如果该队列的值不为-1,则从播报集合缓冲区中删除掉与队列无关的语音播报指令,然后开始逐一播报该队列。
上述权值方案的设计构思为:当时间允许的情况下,不论语音指令优先级别的高低,一概用各自的播报时长较长的播报方案;当时间不允许时,优先级别较低的语音指令率先采用时长较短的播报方案,在时间仍不够的情况下,再对先级别较低的语音指令逐次采用时长较短的播报方案。而当所有的语音播报指令的播报方案都选择了最短的播报方案的情况下仍超时时,才选择将优先级别最低的语音播报指令舍弃,以保证尽可能的按时播报更多的语音播报指令,且播报效率更人性化,更理想。这是通过设置的权重基值实现的:即使是优先级别最低的低级指令的权重基值仍是大于优先级别最高的高级指令的附加权值的绝对值的,因此,在不同的排列中选择时,不舍弃语音播报指令的播报方案的权值永远高于舍弃了较低优先级的语音播报指令的权值。
此实施例中,语音播报指令中候选的播报方案不能超过10个。若上述的播报方案超过10个,则可能出现以下的情况:
由于优先级较高的最短播报方案的附加权值在权重基值的基础上减去后的权值大于优先级较低的语音播报指令增加的权重基值,也就是说,当选择高优先级别中较长的语音播报方案,出现超时的情况时,有可能存在这样的情况,即,在下述两种方案都不超时的情况下,在高优先级的语音播报指令中选择较短的播报方案,加优先级别较低的播报组合的权值,反而小于高优先级的语音播报指令中选择较长的播报方案的权值,而舍弃了优先级别较低的播报组合的权值。这种情况不适合我们当前的选择标准。因此,我们的设计避免了出现明明可以使用短的播报方案,而将所有的语音播报指令全部播报出来的情况下,却反而舍弃了优先级别较低的播报组合的情况。
而若语音播报指令的播报方案的个数更多,则需对每个优先级别的权重基值进行调整,如播报方案为20个时,则其权值方案可调整如下:
高级指令的权重基值为200000;
中级指令的权重基值为20000;
低级指令的权重基值为2000;
高级语音播报指令的各个播报方案按播报时长从长到短排序,第n(最长的n=1)长的播报方案的附加权值计算公式为100-100*n;
中级语音播报指令的各个播报方案按播报时长从长到短排序,第n(最长的n=1)长的播报方案的附加权值计算公式为10-10*n;
低级语音播报指令的各个播报方案按播报时长从长到短排序,第n(最长的n=1)长的播报方案的附加权值计算公式为1-1*n。
上述实施例设计了高、中、低三个优先级别,针对不同的具体情况,可以将优先级别设计的更多或更少,如对于将优先级别设置为0、1、2、3的系统,
则其权值方案可调整如下:
优先级别=0的权重基值为10000000;
优先级别=1的权重基值为1000000;
优先级别=2的权重基值为100000;
优先级别=3的权重基值为10000;
优先级别=0的语音播报指令的各个播报方案按播报时长从长到短排序,第n(最长的n=1)长的播报方案的附加权值计算公式为1000-1000*n;
优先级别=1的语音播报指令的各个播报方案按播报时长从长到短排序,第n(最长的n=1)长的播报方案的附加权值计算公式为100-100*n;
优先级别=2的语音播报指令的各个播报方案按播报时长从长到短排序,第n(最长的n=1)长的播报方案的附加权值计算公式为10-10*n;
优先级别=3的语音播报指令的各个播报方案按播报时长从长到短排序,第n(最长的n=1)长的播报方案的附加权值计算公式为1-1*n。
当然,也可以有其他的实施例:如,针对只选择简短播音的用户,可根据本发明的发明构思相应的方案。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。