车载导航人机语音交互系统的实现
扫描二维码
随时随地手机看文章
引言
语音作为自然的人机接口,可以使车载导航系统实现更安全、更人性化的操作。通过国内外车载导航系统的功能对比可知,支持语音交互是车载导航系统的一个发展趋势。另外,市场信息服务公司J.D Power and Associates的调研数据也表明,56%的消费者更倾向于选择声控的导航系统。因此,开发车载语音导航系统是很有意义的。目前,国内已经具备开发车载语音导航系统的技术基础,特别是文语转换TTS技术和基于中小词汇量的语音命令识别技术已经达到比较实用的程度。本文在课题组的车载导航系统和国内两款语音引擎的基础上,开发了一套支持语音交互的车载导航系统。
车载语音导航系统结构
车载语音导航系统从功能上分为车载导航和导航语音交互两方面。其中车载导航功能包括GPS卫星导航定位、电子地图浏览查询、智能的路径规划、车辆地理位置和速度等导航信息的实时显示;导航语音交互功能分为语音操作和语音提示两部分。在系统的设计中,根据人机交互的需求,设计语音导航系统的硬件框架如图1所示。
语音导航系统和用户之间的人机交互接口由触摸屏、按钮、话筒、显示屏和扩音器等五个交互设备组成。该硬件框架可实现常规的手动交互方式,也可以实现语音交互方式。整个系统划分为三个子系统:导航子系统、语音识别子系统和语音合成子系统,各子系统间通过接口进行通信,协调完成语音导航任务。
车载导航人机语音交互系统对话模式设计
导航系统的状态转换网络
整个导航系统是一个复杂的人机交互系统,为便于语音交互对话模式的设计,首先对系统作状态划分,然后从人机交互的角度描述整个系统的状态转换网络。将系统划分为地图浏览、功能选择等六个功能状态和一个退出状态。图2描述了这些状态之间的状态转换网络。
图中的节点代表系统的各个状态,带箭头的连线代表从源状态到目标状态的转换。状态转换网络接收用户的操作作为驱动事件,完成从一个状态到另一状态的转换,网络中的一条路径便代表着特定的交互过程。
导航系统各状态节点对话模式设计
为便于描述各状态节点内部的对话模式,将状态节点按图2所示编号为S1~S7,用Tmn表示状态节点Sm到状态节点Sn的转换。另外,借鉴状态流 stateflow模型的表示方法,提出用于描述车载导航人机语音交互系统中的对话模型。重新定义转换的描述方式,用四个属性来描述状态节点内的一次转换:
T={P1,P2,P3,P4} (1)
其中,t用于表示一个转换,P1~P4为转换的属性:P1为语音事件;P2为语音输出;P3为附加条件;P4为转换动作。
这样,一个转换t便描述了一次对话中用户的语音输入、系统的语音输出、对话受到的限制条件以及系统执行的动作。
以地图浏览状态为例,说明对话模式设计的过程。地图浏览状态由两个互斥的子状态组成:地图漫游状态和车辆引导状态(参见图2)。这两种子状态的人机交互大部分相同,所以将二者统一划分在地图浏览状态下。对于区分对待这两个子状态的交互过程,可以通过附加条件来判断当前子状态,再作不同的处理。地图浏览状态节点的对话模式设计如图3所示。
人机语音交互系统的实现
语音控制命令的实现
语音控制命令的实现方案如图4所示。图中左边方框代表整个语音导航系统对话模式的状态转换网络STN。根据对话模式的设计,将系统分为地图浏览状态、功能选择状态、路径规划状态等7个状态节点,每个状态节点内部均存在各自的语音对话模式,对话模式由若干内部转换组成。因此,整个语音导航系统是一个两层结构的状态转换网络,其内部转换由语音事件驱动。语音事件由导航子系统的接口模块根据语音识别子系统发送的用户意图而产生。
语音控制命令的实现过程分为以下四个步骤:
*语音识别引擎根据当前命令词表识别用户语音,得到识别结果。
*管理窗口获取到识别结果,通过查询“识别词-控制命令”映射,得到识别结果对应的控制命令,并将控制命令作为用户意图发送至导航子系统的接口模块。
*接口模块响应用户意图,通过语音事件改变语音导航系统的状态。
*接口模块根据语音导航系统的状态判断是否需要更改当前命令词表,若需要则通过管理窗口更改当前命令词表。
POI名称的识别方法
识别子系统除了要识别控制命令以外,还需要识别POI(兴趣点、标志点)名称。POI名称识别与控制命令识别最大的区别在于其候选集合在规模上的差异。在本系统中,进行控制命令识别时候选集合的规模最大约为30个,但进行POI名称识别时,以所用的北京电子地图为例,其POI点的个数为20,172个,此时其候选集合的规模比控制命令识别时大几个数量级。
利用命令词识别引擎进行识别时,必须为引擎提供一个当前词表,需要先将候选集合中的词条转化为词表,才能真正地进行识别。同时,基于中小词表的ASR识别引擎不能生成规模达2万多的词表,所以对于POI名称识别,采取了不同于控制命令识别的方案。在对控制命令进行识别时,因为候选集合可以用一个词表来表示,采取了在线识别的方法。而对POI名称进行识别时,单个词表无法容纳所有的POI名称,由此提出了利用识别引擎离线识别功能的离线遍历识别方案。该方案利用多个词表来描述整个候选集合。实现的具体流程如图5所示。
该方案将候选POI集合划分为n个子集,并生成各子集的词表,然后以各词表为当前词表进行离线识别,并将这些局部的识别结果汇总形成一个临时词表,最后在这个临时词表中进行识别,得出全局的最优识别结果。该过程遍历了各个子集,相当于在整个候选集合中匹配出最优识别结果,所以识别正确率得到了保证。同时由于识别次数的增加,导致识别时间相应地变长。
导航系统语音提示的实现方案
导航系统的语音提示由专门的语音合成子系统完成。将语音提示的实现过程分为提出请求和执行请求两步。请求的提出方和执行方构成客户/服务器(C/S)模型,其中,语音合成子系统充当服务器。由于语音合成引擎通常不能同时输出多线合成的语音,所以会遇到请求冲突的情况。发生请求冲突时,最直接的处理策略是:中止正在进行的合成转而进行下一个合成,或者维持正在进行的合成而忽略新的合成请求。为此在语音合成子系统中设计了管理模块用于决定发生合成冲突时的处理方式。
对于语音合成子系统,合成请求的提出是一个随机事件,将这类随机事件记为Qi。每个合成请求Qi都具有优先级的属性,其优先级的高低取决于请求的提示信息的重要程度,见表1。管理模块的处理流程见图6。如果下一请求Qi+1的优先级高于当前请求Qi,则优先合成Qi+1。
车载语音导航系统的试验验证
图7为本文的车载语音导航系统的实物照片。对本系统进行了语音导航的验证试验,通过语音交互完成了表2中所示的车载导航功能。试验表明,系统的状态能够完全正确地按照设计的对话模式进行转换,并能正确完成各种导航功能的人机对话过程;同时,系统的语音提示也能正确工作。
另外测试了系统正确响应语音控制命令的能力。测试中,用清晰平稳的语音,对地图浏览状态所有语音控制命令的49个识别词进行了测试,共测试49×3=147次,成功132次,失败15次,成功率为89.8%。可见,系统语音控制命令的有效性较好。
在海量POI名称识别的试验中,对字数为2至10的POI名称进行了测试。对于每一长度的POI名称,分别取10个进行测试。其中每个POI名称最多做两次测试,当且仅当第一次测试失败才继续第二次测试。试验结果如表3所示。
可见,离线遍历识别方案的一次识别正确率为86.7%,二次识别正确率为93.3%。其正确识别的平均耗时为6.1s至10.4s之间,按POI名称的字数统计分布计算加权的平均耗时为8.3s。以上数据说明,该方案能够利用小词汇量的关键词识别引擎实现大词汇量POI名称的识别,并且获得了满意的识别正确率,但是耗时较长。
结语
本文主要完成了车载导航人机语音交互系统的设计和实现,并在实验室环境中对系统进行了实验验证。
证明利用合成的语音,可以实现丰富灵活的语音提示,使用户可以在不分散过多精力的前提下使用导航系统。进一步的工作是提高识别正确率和降低正确识别的平均耗时。