基于IDL通用接口的人机语音交互协同控制系统设计研究
2021-09-22王开宇张弘瑞王献昌
王开宇,张弘瑞,李 聪,王献昌
(1.吉林大学计算机科学与技术学院,长春 130012;2.吉林大学软件学院,长春 130012; 3.吉林大学符号计算与知识工程教育部重点实验室,长春 130012;4.成都凯斯人工智能研究院,成都 611730)
1 引 言
语音识别技术在近年来得到了广泛的应用并逐渐趋于成熟。在民用方面,语音识别与控制广泛应用于家用电器中,目前小米已有了一个较为完善的具有语音识别的家用电器生态。在军用方面,语音识别技术也在控制系统中占据着一席之地。在未来战场中,无人战场将会成为未来战争的主流形式。无人战斗机、无人装甲车、无人运输车、无人舰队等将会成为未来战场中的主角。由此将会引申出一系列的协同问题,不同的无人机、无人车有着不同的指令输入系统,在战场实际操作中,将会有多种不同型号的作战单位协同作战。如此繁多的系统控制,对作战控制人员提出了极高的要求,首先要求控制人员具有对多种不同型号的无人作战单位收发、处理命令信息的能力;其次,繁杂的控制系统会导致参与命令下达的控制人员人数较多,命令传递产生的偏差,以及个体之间对语言理解的不同产生的指令的改变,都严重影响着无人作战系统的协同配合;最后,在作战的极端环境下,当某个单位的指令员因故不能再发布指令时,其他的人员无法代替其控制的作战单位导致部分瘫痪。
本文将研究一种基于接口描述语言(Interface Description Language, IDL)通用接口的跨平台协同语音控制作战系统,目的在于将自然语言进行分词、匹配,最终转换为通用的IDL,从而控制各种无人设备。
IDL 是对象管理组织(Object Management Group,OMG)提出的CORBA(Common Object Request Broker Architecture)规范的一部分,是一种与平台无关的顶层描述语言,用于描述对象中接口的声明[1],在跨平台应用开发领域有着广泛的应用。IDL 描述了接口或结构类型,其语法结构定义用客户、对象、运行时刻三部分[2]。IDL提供了一套通用的规范数据类型,并可用此数据类型定义更为复杂的数据类型,从而映射到实现语言中,实现跨平台应用的开发[2]。基于IDL 语言接口描述的通用性,将本系统的落脚点设计为IDL 命令控制语言,从而控制异构设备,实现跨平台异构设备的协同控制。
2003年, 美国国防预先研究计划局(DARPA)和美国空军组织联合开展了软件使能控制(Software Enabled Control,SEC)研究计划,并通过验证。波音首次验证开放式控制平台OCP转换软件用于无人机控制以及F-15E 与无人战机协同飞行。研究完成了有人机和无人机的通信接口设计并进行了试验,选用F-15E 有人战斗机与无人机进行通信,二者最终通过自然语言(英语)成功传达和接收了控制指令,完成了控制任务,最终实现有人机/无人机协同编队飞行[3]。
目前,江苏自动化研究所邢向向等在面向作战指挥的语音智能交互技术研究中,提出了一种面向作战指挥的语音智能交互模式,采用基于M-UserCF 的协同过滤算法计算作战场景相似度,利用情景语义建模获得作战过程上下文信息,通过基于内容的推荐算法,将战场实时指挥情况与核心知识库中已经过验证的作战过程进行比较,检索出相似的最优指挥过程集作为推荐集合[4]。但并未实现异构设备间的控制。在对基于跨平台异构控制的语音指控系统的研究中,尚未有合适的解决方案。
在过去两年,我们采用CORBA 规范下的接口描述语言,规范、定义了异构无人系统在地面编队中的通用互操作需求、描述、落地、测试和评估。针对混合超过四类异构无人系统(含机器人、后台控制)的动态协同编队案例,展开了基于平台无关的通用集群互操作合规性测试和评估[5]。本项目基于已有的工作,提出了一套基于IDL 通用接口的跨平台协同语音控制作战系统,实现人机交互的扩展。
2 IDL 的选择使用
2.1 软件复用
在NATO 的软件工程会议上,Mallroy 第一次提出了软件复用的概念,1983年,Freeman 对软件复用给出了详细的定义[2]“在构造新的软件系统的过程中,对已存在的软件人工制品的使用技术”[6]。软件复用是成熟工程领域的一个基本特征,是实现系统通用性的基本要求,只有软件可被复用才能体现其通用性。本文的语音控制系统,是基于IDL 的通用性可复用系统,任何可以解析IDL 命令的系统都可复用语音控制接口。软件复用可以提高系统间的互操作性[6],这个特性完美契合跨异构互操作无人系统的需求,因此我们基于IDL 命令来实现。
2.2 集群系统协同
群体智能是人工智能自主性的高级阶段[7],集群系统协同是一类重要的群体智能,是人工智能未来发展的必然趋势,也是新一代人工智能的核心研究领域[8]。任务的复杂性与环境的不确定性决定了集群系统协同控制势必朝着智能化和自主化的方向发展,作为新一代人工智能的核心研究领域,集群协同控制技术已成为世界各国经济和国防发展的强大驱动力。美国《2011—2036年无人机系统综合路线图》中明确把有人机/无人机编队飞行技术列入未来重点发展技术,《2017— 2042年无人系统综合路线图》对互操作性、人机协作等协同技术进行了深入的探讨和规划,协同作战的能力等级逐渐提升,牵引着技术更加向前发展[9]。区别于当前大多数机构研究对单一物体实现的语音控制,本文的语音控制系统面向集群系统协同控制,通过控制台实现、调度协同作战。基于本文所述语音控制系统的通用性,其应用范围可扩展到所有基于IDL 命令交互的集群协同系统中。随着集群协同系统的涌现,语音控制系统将得到广泛应用。
2.3 IDL 的选择
使用IDL 标准化指令进行无人协同设备的控制,其特点概括如下:一是IDL 对于设备控制的通用性;二是IDL 在适应不同控制场景下的可扩展性。IDL 作为一种标准化的接口描述语言,对跨平台异构的无人设备有着规范的接口要求,凡是符合IDL 接口标准的设备,均可接受IDL 指令。因此通过定义规范的IDL 接口,实现跨平台异构设备的协同控制。IDL 有着较为完善的指令控制集,基本可以满足在异构设备的命令控制需求。IDL 的可扩展性主要表现在基于一个标准化的指令库,每一条IDL 的指令都能映射到一条标准化的控制命令,而控制命令可以使用不同种类的语言,按照同一标准规范化后获得。基于这样的架构,命令控制语言将可以扩展到世界各种语言,而不仅仅囿于单类语言的束缚。
在本项目中,IDL 的基本边界是对无人系统的控制需求,而无人系统的指令来源又由IDL 规范进行约束,这就形成了一个闭环。基于IDL 的规范,定义了一个面向跨平台异构协同系统的标准化指令库,用于与IDL 标准化指令库进行匹配。与标准化指令库相对应的是一个命令库,命令库中包含有在IDL 边界内有定义的自然语言词汇语句,每个标准化指令库中的指令词汇都映射一个语言支撑集数据库的同义词集,在该同义词集中,将命令分词后与命令库进行匹配,映射到标准化指令库后,生成一条标准化词语的命令,再进行相似度匹配,从而匹配到相似度最高的标准指令语句。
3 语音控制系统的整体架构
构建协同作战语音控制系统,需要实现自然语言的识别、文本断句分析、词库词法匹配、IDL匹配、语音合成。语音控制系统的运行具体包括以下步骤:指令唤醒,语音输入命令,语音命令识别,文本命令的断句与分析,命令规范化,标准命令匹配,指令员确认标准命令,IDL 标准命令匹配与发布。具体运行模式如图1 所示。
图1 语音控制系统运行模式Fig.1 Operation mode of voice control system
根据属性与组成系统的作用,语音控制系统主要分为三层结构:应用层、支撑层和基础层。
应用层:为用户提供语音控制服务,主要包括语音采集、语音唤醒、指令接收的人机交互设备。
支撑层:为整个系统提供所需的支撑,包括语音传递、文本分词、词法分析、指令传递,主要承担应用层与基础层的信息加工与信息传递的工作。
基础层:为系统提供网络通信,并有规范化数据库支持,包括命令词库、标准化指令词库、标准化IDL 库等。
语音控制系统组成如图2 所示。
图2 语音控制系统组成Fig.2 Composition of voice control system
4 自然语言命令识别与处理
4.1 自然语言命令定义
汉语语句主要是由词和短语构成,能表达一个相对完整的意思,完成一次简单的交际任务,在语音上有语调,表示陈述、疑问、祈使、感叹的语气,在书面上用句号、问好、感叹号表示,句子结构一般为:(定)主+[状]谓<补>+(定)宾[10-11]。
在协同作战语音控制系统中,通常下达的命令主要以祈使句为主,句子的结构主要为“代号名词+行动命令”,“代号名词+行动命令+代号名词”或“行动命令+代号名词”的形式,在词法分析的过程中,将运用ddpaser python 包将名词与动词进行分词解析,将解析后的不同类型的词汇分别与语言支撑集数据库中的词语进行匹配。
4.2 自然语言-IDL 标准化匹配技术的实现
自然语言-IDL 标准化匹配技术是实现自然语言控制无人系统的关键性步骤。本技术分为三个阶段,第一个阶段将输入的文本进行预处理,分词及词性标注,分析命令的预参数以及动作指令。第二个阶段将动作指令经过处理得到标准化指令,同时检查上一步得到的预参数数量以及类型是否正确。第三个阶段得到标准化指令在IDL中对应的函数调用以及预参数在无人系统内部的IDL 语言表达。最后将得到的IDL 函数以及参数返回给控制台,由控制台调用函数完成对无人系统的控制,实现协同作战。
4.2.1 指令数据库系统设计
指令数据库系统是本系统设计的核心工程,自顶向下地构建了三个重要的数据库。顶层为语言支撑集数据库,中层为标准化指令数据库,底层为IDL 标准化接口语言指令数据库。自顶向下的三层指令数据库设计如图3 所示。
图3 自顶向下的三层指令数据库设计Fig.3 Top-down three-tier instruction database design
语言支撑集数据库指令集主要针对特定场景,进行指令集的构建,并随着适用场景的改变进行指令集扩充。在协同作战系统中,主要由设备名词与指令动词构成,每种设备名词与指令动词将会有等价词汇集与其相对应。
标准化指令数据库是连接语言支撑集数据库与标准化IDL 指令数据库的核心。标准化指令数据库接收由语言支撑集数据库发送的标准指令流,一条指令流中包含了多个匹配的标准化的名词与动词,系统将运用此字符流与标准化指令集中的指令进行匹配,匹配到相似度最高的标准化指令进行输出。
标准化IDL 指令数据库(后文简称IDL 指令库),主要存储的是界定范围之内的标准化IDL指令,用于向无人设备发布指令。
4.2.2 DDParser 依存句法分析技术介绍
依存句法分析是自然语言处理的核心技术之一,旨在通过分析句子中词语之间的依存关系来确定句子的句法结构[12],其分析实例如图4 所示(分析句子:“设置A 点为目标点”)。对文本进行依存句法分析,可以对文本进行断句,并且得到句子成分之间的修饰关系以及单词词性。
图4 DDParser 的词法分析Fig.4 Lexical analysis of DDParser
4.2.3 命令文本预处理
预处理针对已转换为命令文本所存在的发音不准导致识别不准,指令噪声词较多等情况,进行的命令词纠错、剔除噪声词。指令噪声词指在语音命令中出现的频率较高但含义或区分能力较低的词,如“那么”“吧”“儿”等,过滤掉这些噪声词有助于提高解析精度和效率[4]。
对于预处理,采用利用正则表达式进行字符串匹配的方法,找到噪声词将其过滤,并将因指挥员口音不标准或识别系统不完善导致的多次识别错误的词汇修改为正确的表达方式。
4.2.4 分词及语言支撑集数据库匹配
将预处理后的命令文本利用依存句法分析技术分词并且进行词性标注,如命令文本“让一车跟着二车”,其分词结果是“让/一/车/跟着/二/车”,词性标注的结果是[v,m,n,v,m,n],其中v 代表动词,m 代表数字,n 代表名词。将分词得到的单词序列分别在语言支撑集数据库中匹配,相应的单词对应为语言支撑集数据库中的标准词。这一过程可以实现近义词的标准化,如将一系列近义词“跟着”“尾随”“跟从”“追随”等全部匹配成标准动作指令“跟随”,以及将表示数字的汉字标准化为数字,例如“一”匹配成为“1”。除了上面举例的标准动作指令,语言支撑集数据库中还拥有名词库,亦可将句中的名词匹配成为标准名词,作为参数输出。对于上文的文本命令例子,其匹配结果是“设置1 车跟随2 车”。由于指令言简意赅,结构相对简单,因此匹配到标准动作指令后,取其两侧的名词(若存在)以及修饰名词的数字(若存在)等,作为预参数。随后对预参数进行处理,匹配成无人系统内部相应的参数标识符并与标准动作指令相对应的IDL 函数调用返回给无人系统。
4.2.5 模糊匹配及正确性检测
在一个系统中,拥有一定的纠错机制是必不可少的,以期达到让人感到舒适的人机交互体验。在语音识别、文本解析以及匹配中,难免会出现错误,如语音识别出现的文本错误、解析出的参数类型错误或者数量错误等,都会造成系统无响应的问题。
将标准动作指令在标准化指令库中进行模糊匹配,匹配到相似度最高的标准化指令进行输出。采用Levenshtein 距离算法计算两字符串的相似度,通过计算从原字符串S转换到目标字符串T所需要的最少的插入、删除和替换的数目即Levenshtein 距离来计算相似度[13]。
文本相似度计算[14]:L_Distance 为两字符串之间的Levenshtein 距离,Length1 与Length2 分别表示两字符串长度,Max 指取较大值,则
相似度阈值设置为80%,如果最高相似度低于阈值,则认为匹配失败。如果匹配失败则表明标准化指令库中不存在该指令,标准化指令生成错误,语音合成模块提示命令无效,需重新等待命令下达。标准化指令库中还为每个标准指令指明了参数的数量以及参数的类型,如果匹配成功则得到一个规范化的标准指令,判断一阶段得到的预参数是否数量符合、类型符合。若不符合,则语音合成模块提示命令无效,需重新等待命令下达。
如果均没有出现问题,语音合成模块发出语音重复整条命令,等待指令员确认。若确认正确,则执行下一步;若确认错误,需等待命令重新下达。
4.2.6 标准指令与参数的IDL 转化
只有将指令以及参数转化为无人系统接口所支持的IDL 指令,才能做到直接对无人系统的控制。IDL 指令库中,标准化自然语言指令与IDL指令是一一映射的关系。IDL 指令库需要接收两个指令才能进行指令调用与指令发布,一个是中层模块的标准化指令,另一个是用户的指令确认信息,当两个指令成功输入时,标准化指令将映射到IDL 指令库的指令集,得到指令所对应的IDL 函数。同样地,将参数转换成为无人系统内部的标识符,等待返回给系统。
4.2.7 返回函数及其参数
将IDL 函数以及参数的IDL 表示返回给无人系统控制台,控制台进行函数调用以实现对于无人系统的控制,实现协同作战。
5 应用实例
5.1 语音唤醒功能与语音文本转化的实现
LD3320 提供的语音识别技术,基于“关键词语列表”的识别技术,语音识别芯片完成的工作就是[15]:把通过MIC 输入的声音进行频谱分析→提取语音特征→和关键词语列表中的关键词语进行对比匹配→找出得分最高的关键词语作为识别结果输出,系统的主控MCU 反复启动识别过程[15]。
囿于LD3320 模块有限的存储能力,该模块只能存储50 条预先设置好的指令进行识别,根据其简单准确快速且能在不同平台环境下离线稳定识别的特点,将这个模块使用作为整个系统的唤醒装置。为LD3320 模块通电后,该模块将处于待机状态,对外界语音进行实时循环识别,当收到约定唤醒指令时,模块向控制台主程序以字符串的形式发送指令识别信号,并进入循环等待结束信号。当指令发布完毕时,以一个单片机约定词如“OVER”结束,单片机将会向主程序发送终止信号,主程序终止录音功能并开始连接网络,对录音频段进行语音识别。
主程序在录制音频结束后,将会通过科大讯飞提供的API,将录音文件传递到科大讯飞语音识别平台上,科大讯飞语音识别平台将把识别后的文档传入主程序中。
5.2 标准化指令应用实例
基于本项目的应用场景,设定了指令边界,以下是部分指令边界定义:
名词类:当前,位置,目标,车头,尾号,速度,米,秒,时间,前,后,左,右
动词类:设置,移动,跟踪
指代类:当前,上一个,下一个
环境类:地面,室内地面,操场,野外,点,路线
对象类:车,单元,(具体的车)车号,前车,后车
角色类:跟随者,领队者
后台:控制,自主,编队
命令类:加入,撤出,暂停,恢复,设置
序号类:N号(N=1,2,3…)字母集A(A=A,B, C…)
直接选取识别后的指令进行分词及匹配过程。
实例一:
假定已经有命令“设置目标点为A”,
识别指令“设置目标点为A”
分词后指令“[‘设置’,‘目标点’,‘为’,‘A’]”
匹配语言支撑集数据库“[‘设置’,‘目标点’, ‘A’]”
匹配标准化指令数据库“设置A 点为目标点”
匹配 IDL 命令数据库 “consoleObject.set-GoalPoint(consoleObject.getUnitPoint("A"))”
实例二:
识别指令“设置当前编队为目标跟踪模式”
分词后指令“[‘设置’,‘当前’,‘编队’,‘为’,‘目标’,‘跟踪’,‘模式’]”
匹配语言支撑集数据库“[‘设置’,‘当前’,‘编队’, ‘目标’,‘跟踪’]”
匹配标准化指令数据库“设置当前编队跟踪模式为目标跟踪”
匹配IDL 命令数据库
“consoleObject.setTrackMode(SRIO_Console:: TrackMode.ObjectTrack)”
6 结束语
协同作战将会成为未来战场的主要形式,而协同作战指令下达的简化,将极大地简化指令员的指令下达过程,并将指令标准化、精准化下达到跨平台跨系统的无人设备上。本文提出了一种基于IDL 通用接口,面向协同作战系统的中文语言控制平台的解决方案,让语言指挥跨平台设备协同作战成为可能。本文基于自然语言向标准化接口语言转化的思路,也将为自然语言编程提供基础。
后续仍需继续完善的工作包括两个方面:一是语音识别系统的本地化处理,即在极端网络条件下,离线语音的识别处理;二是词库数据库的完善与扩充,在应对不同场合下对词库边界的重定义,对上层词库语言类型进行扩展等。