引言
语音作为自然的人机接口,可以使车载导航系统实现更安全、更人性化的操作。通过国内外车载导航系统的功能对比可知,支持语音交互是车载导航系统的一个发展趋势。另外,市场信息服务公司J.D Power and Associates的调研数据也表明,56%的消费者更倾向于选择声控的导航系统。因此,开发车载语音导航系统是很有意义的。目前,国内已经具备开发车载语音导航系统的技术基础,特别是文语转换TTS技术和基于中小词汇量的语音命令识别技术已经达到比较实用的程度。本文在课题组的车载导航系统和国内两款语音引擎的基础上,开发了一套支持语音交互的车载导航系统。
车载语音导航系统结构
车载语音导航系统从功能上分为车载导航和导航语音交互两方面。其中车载导航功能包括GPS卫星导航定位、电子地图浏览查询、智能的路径规划、车辆地理位置和速度等导航信息的实时显示;导航语音交互功能分为语音操作和语音提示两部分。
语音导航系统和用户之间的人机交互接口由触摸屏、按钮、话筒、显示屏和扩音器等五个交互设备组成。该硬件框架可实现常规的手动交互方式,也可以实现语音交互方式。整个系统划分为三个子系统:导航子系统、语音识别子系统和语音合成子系统,各子系统间通过接口进行通信,协调完成语音导航任务。
车载导航人机语音交互系统对话模式设计
导航系统的状态转换网络
整个导航系统是一个复杂的人机交互系统,为便于语音交互对话模式的设计,首先对系统作状态划分,然后从人机交互的角度描述整个系统的状态转换网络。将系统划分为地图浏览、功能选择等六个功能状态和一个退出状态。 图中的节点代表系统的各个状态,带箭头的连线代表从源状态到目标状态的转换。状态转换网络接收用户的操作作为驱动事件,完成从一个状态到另一状态的转换,网络中的一条路径便代表着特定的交互过程。
导航系统各状态节点对话模式设计
为便于描述各状态节点内部的对话模式,将状态节点按图所示编号为S1~S7,用Tmn表示状态节点Sm到状态节点Sn的转换。另外,借鉴状态流 stateflow模型的表示方法,提出用于描述车载导航人机语音交互系统中的对话模型。重新定义转换的描述方式,用四个属性来描述状态节点内的一次转换:
T={P1,P2,P3,P4} (1)
其中,t用于表示一个转换,P1~P4为转换的属性:P1为语音事件;P2为语音输出;P3为附加条件;P4为转换动作。
这样,一个转换t便描述了一次对话中用户的语音输入、系统的语音输出、对话受到的限制条件以及系统执行的动作。
以地图浏览状态为例,说明对话模式设计的过程。地图浏览状态由两个互斥的子状态组成:地图漫游状态和车辆引导状态。这两种子状态的人机交互大部分相同,所以将二者统一划分在地图浏览状态下。对于区分对待这两个子状态的交互过程,可以通过附加条件来判断当前子状态,再作不同的处理。
人机语音交互系统的实现
语音控制命令的实现
根据对话模式的设计,将系统分为地图浏览状态、功能选择状态、路径规划状态等7个状态节点,每个状态节点内部均存在各自的语音对话模式,对话模式由若干内部转换组成。因此,整个语音导航系统是一个两层结构的状态转换网络,其内部转换由语音事件驱动。语音事件由导航子系统的接口模块根据语音识别子系统发送的用户意图而产生。
语音控制命令的实现过程分为以下四个步骤:
*语音识别引擎根据当前命令词表识别用户语音,得到识别结果。
*管理窗口获取到识别结果,通过查询“识别词-控制命令”映射,得到识别结果对应的控制命令,并将控制命令作为用户意图发送至导航子系统的接口模块。
*接口模块响应用户意图,通过语音事件改变语音导航系统的状态。
*接口模块根据语音导航系统的状态判断是否需要更改当前命令词表,若需要则通过管理窗口更改当前命令词表。
POI名称的识别方法
识别子系统除了要识别控制命令以外,还需要识别POI(兴趣点、标志点)名称。POI名称识别与控制命令识别最大的区别在于其候选集合在规模上的差异。在本系统中,进行控制命令识别时候选集合的规模最大约为30个,但进行POI名称识别时,以所用的北京电子地图为例,其POI点的个数为20,172个,此时其候选集合的规模比控制命令识别时大几个数量级。
利用命令词识别引擎进行识别时,必须为引擎提供一个当前词表,需要先将候选集合中的词条转化为词表,才能真正地进行识别。同时,基于中小词表的ASR识别引擎不能生成规模达2万多的词表,所以对于POI名称识别,采取了不同于控制命令识别的方案。在对控制命令进行识别时,因为候选集合可以用一个词表来表示,采取了在线识别的方法。而对POI名称进行识别时,单个词表无法容纳所有的POI名称,由此提出了利用识别引擎离线识别功能的离线遍历识别方案。该方案利用多个词表来描述整个候选集合。
以地图浏览状态为例,说明对话模式设计的过程。地图浏览状态由两个互斥的子状态组成:地图漫游状态和车辆引导状态(参见图2)。这两种子状态的人机交互大部分相同,所以将二者统一划分在地图浏览状态下。对于区分对待这两个子状态的交互过程,可以通过附加条件来判断当前子状态,再作不同的处理。
人机语音交互系统的实现
语音控制命令的实现
语音控制命令的实现方案如图4所示。图中左边方框代表整个语音导航系统对话模式的状态转换网络STN。根据对话模式的设计,将系统分为地图浏览状态、功能选择状态、路径规划状态等7个状态节点,每个状态节点内部均存在各自的语音对话模式,对话模式由若干内部转换组成。因此,整个语音导航系统是一个两层结构的状态转换网络,其内部转换由语音事件驱动。语音事件由导航子系统的接口模块根据语音识别子系统发送的用户意图而产生。
语音控制命令的实现过程分为以下四个步骤:
*语音识别引擎根据当前命令词表识别用户语音,得到识别结果。
*管理窗口获取到识别结果,通过查询“识别词-控制命令”映射,得到识别结果对应的控制命令,并将控制命令作为用户意图发送至导航子系统的接口模块。
*接口模块响应用户意图,通过语音事件改变语音导航系统的状态。
*接口模块根据语音导航系统的状态判断是否需要更改当前命令词表,若需要则通过管理窗口更改当前命令词表。
POI名称的识别方法
识别子系统除了要识别控制命令以外,还需要识别POI(兴趣点、标志点)名称。POI名称识别与控制命令识别最大的区别在于其候选集合在规模上的差异。在本系统中,进行控制命令识别时候选集合的规模最大约为30个,但进行POI名称识别时,以所用的北京电子地图为例,其POI点的个数为20,172个,此时其候选集合的规模比控制命令识别时大几个数量级。
利用命令词识别引擎进行识别时,必须为引擎提供一个当前词表,需要先将候选集合中的词条转化为词表,才能真正地进行识别。同时,基于中小词表的ASR识别引擎不能生成规模达2万多的词表,所以对于POI名称识别,采取了不同于控制命令识别的方案。在对控制命令进行识别时,因为候选集合可以用一个词表来表示,采取了在线识别的方法。而对POI名称进行识别时,单个词表无法容纳所有的POI名称,由此提出了利用识别引擎离线识别功能的离线遍历识别方案。该方案利用多个词表来描述整个候选集合。实现的具体流程如图5所示。