陈景达 郭丽霞
(上海航空电器有限公司 上海市 200040)
语音识别处理软件的主要功能是飞行员通过油门杆上的DOI选择开关控制语音采集使能开关,启动或关闭机载语音识别处理设备;机载语音识别处理设备启动后,飞行员说出语音指令,机载语音识别处理设备将识别的结果通过相应的总线将识别结果上报给飞行的各个设备,飞行员通过显示结果判断识别结果的正确并进行相应的处理。目前飞机上在语音识别使用的指令为信息调显调类和状态变更类的短指令如“引导”、“降级”、“机场”等,该类短指令只需要飞行员在使能开关时说出相应的指令,松开开关时上报识别结果即可。
随着语音识别控制功能在飞机上的持续应用,系统对语音指令的需求量不断的加大,语音指令的种类也随之增加,因此除了信息调显调类和状态变更类的短指令外,增加了数据变更和计划类长指令。这些指令需要飞行员确认识别结果的有效性,目前的语音识别处理软件已经无法满足新增的该类长指令的语言识别需求。
本文在语音识别处理软件中增加语音识别分段识别功能模块来完成对长指令的识别优化。同时完成了对整个分段识别的整体设计和验证。以确保识别长指令的及时性和有效性。
飞行员进行音频输入时,如长指令“飞行计划XX航路点XX(东/西)经XXX度XX分XX秒输入完毕”,无法保证其能一口气说完该指令。因此语音识别处理软件对该指令的识别结果可能是该指令中的部分词的结果。为此对语音识别结果处理中增加了分段识别设计,以满足长指令的语音识别需求,其语音识别的整体流程中增加了分段识别功能模块如图1所示。
图1:机载语音识别处理流程图
图2:分段识别功能模块结构图
分段识别功能模块的主要功能是将语音识别结果进行相应的分段识别,将分段识别结果进行组合并判断其正确性,最后给出其相应的指令代号和完整的识别结果。例如短指令“自飞控”进行识别时无需进行分段识别,其语音识别模块输出的结果即为“自飞控”,相应的指令代码为1。根据研究表明人们在朗读时,因内容以及生理需求,一般在词与词之间会出现短暂的停顿。因此在进行长指令的识别时,需要处理语音识别结果为多个词的情况。比如飞行员说 “飞行计划1航路点1西经20度20分20秒输入完毕”该条指令时,语音识别结果可能是“飞行计划1”,“航路点1”,“西经”,“20度20分20秒”的组合。
语音识别处理软件的开发平台为嵌入式开发平台,使用的芯片是TI的TMS320C6678,并通过标准的C语言进行编写。语音识别模块识别的结果是字符串类型的,使用C语音处理字符串类型时相对复杂并且容易出错。因此分段识别设计的核心思想是将字符串类型的识别结果进行数字化。
分段识别的主要设计思路是将所有的语言指令包括(短指令、长指令)进行原子指令的提取,并进行相应的数字化,最终形成原子指令编码表和语音指令编码表。并通过原子指令编码表和语音指令编码表完成语音指令获取、原子指令表遍历匹配、语音指令码组合匹配和分段识别结果形成这四个功能模块,最终形成完整正确的识别结果。该方法有效的降低了语音识别软件处理逻辑的复杂度,同时提高软件可读性、可维护性和扩展性,并提升对长指令的识别率和用户的体验感。
指令编码表的设计主要用于在分段识别中能够快速的匹配到语音指令,同时能够及时的剔除不符合规则的语言指令。其包括原子指令的提取,原子指令的数字ID设计和指令编码表设计这三个方面。
3.1.1 原子指令的提取
原子指令表示的是组成该指令的基础词,根据当前的机载语音识别指令,可分为三类语音指令:
Ⅰ类指令代码范围为1~32的画面控制指令和相关的特殊指令如:“自飞控”、“确认”、“前翻页”等。
Ⅱ类指令代码范围为201~214的调显画面类指令如:“(调显/显示/进入)武器(画面)”等。
Ⅲ类指令代码范围为1005~1013的修改类指令如:“飞行计划XX航路点XX(东/西)经XXX度XX分XX秒输入完毕”。
提取上述三类指令中的原子指令。Ⅰ类指令其本身即为原子指令。Ⅱ类指令如“(调显/显示/进入)武器(画面)”提取的原子指令可分为“调显”,“显示”,“进入”,“武器”和“画面”这5个。Ⅲ类指令如“飞行计划XX航路点XX(东/西)经XXX度XX分XX秒输入完毕”提取出来的原子指令可分为“飞行计划”,“航路点”,“东经”,“西经”,“输入完毕”。
原子指令同样可以分为关键原子指令和辅助原子指令两类。如“调显”,“显示”,“进入”,“画面”为辅助原子指令,是可有可无,而“武器”则为关键原子指令,是必不可少的。
3.1.2 原子指令的数字ID设计
原子指令数字ID设计是用32位的无符号整型来表示不同的原子指令。将32无符号整形分为4*8表示如表1所示。
规定高8位为完整指令标识码部分,当将识别结果中的原子指令组合成一个完整的指令时必须保证其高8位累加的结果为0xFF,若出现其他值则表明其不是一个正确的指令。
规定次高8位为指令识别码1,次低8位为指令识别码2,低8位为指令识别码3。指令识别码用来区别具体的指令。例如在Ⅱ类指令中“(调显/显示/进入)武器(画面)”指令。其原子指令为“武器”,其辅助原子指令包括“调显”、“显示”、“进入”、“画面”。其完整的指令可以是单纯的“武器”或者是“武器画面”又或者是“进入武器画面”。因此可通过指令识别码部分来区分有效指令。
3.1.3 指令编码表设计
通过提取语音指令中的原子指令并进行分析设计,形成原子指令编码表。选取Ⅰ类指令“自飞控”、“前翻页”、“确认”,Ⅱ类指令“(调显/显示/进入)程序(画面)”,Ⅲ类指令“飞行计划XX航路点XX(东/西)经XXX度XX分XX秒输入完毕”作为编码表的设计对象,形成如下原子指令编码表如表2所示。
根据原子指令编码表,针对现有的机载语音识别词条,选取上述的语音指令形成的语音指令编码表如表3所示。
表1:原子指令32位数字ID信息表
表2:原子指令编码表
表3:语音指令编码表
表4:语音识别处理软件识别结果对比表
分段识别功能模块可分为语音指令获取、原子指令表遍历匹配、语音指令码组合匹配、分段识别结果形成四个功能处理模块,如图2所示。
3.2.1 语音识别获取
该模块的主要功能是提取语音指令和数字信息。语音识别模块识别结果包含语音指令集和数字信息,如语音识别模块给出的识别结果可能是“飞行计划1航路点2”,该语音指令需要将其去数字后形成语音指令为“飞行计划航路点”。即语音指令“飞行计划航路点”由“飞行计划”,“航路点"两个原子指令的组成作为后续原子指令表遍历匹配的输入条件。
3.2.2 原子指令表遍历匹配
该模块主要的功能是通过遍历原子指令编码表,查找与语音指令相匹配的原子指令,获取该条语音指令的标识码并初步判断是否符合语音指令要求。如“飞行计划航路点”通过遍历匹配获取的标识码为0x80和0x40,组合为0b11000000,其高2位均为1则初步满足编码要求。其不符合编码规则的包括以下三种:
应该认识到一体化教学模式的重点是教学资源的同步呼应。一体化教学场所建设,不是课桌椅和实训设备放到一间教室的改革,简单地认为一体化就是“一起放”,不是科学的一体化,是形式主义的一体化。一体化教学场所建设应该注重理论教学场所和实训教学场所内在功能上的相互呼应。一体化教师的培养任重道远,不能把一体化教师简单机械地理解为一个人,达到理论教学和实习教学在内容和进度方面的有机结合,就实现了一体化教学。■
(1)标识码中出现不连续的1,如语音指令为“飞行计划西经”,其标识码为0x80和0x30,组合为是0b10110000。
(2)标识码中出现重复位,如语音指令“飞行计划”后出现指令“程序”,其标识码为0x80和0xあ,其高位出现重复的1。
(3)标识码中首次出现的指令最高位不是1。如语音指令“航路点西经”,其标识码为0x40和0x30,组合为0b01110000。
3.2.3 语音指令码组合匹配
该模块主要的功能是判断当前语音指令是否完整,并通过获取的语音指令中每个原子指令中的识别码进行组合形成完整的语音指令码,通过遍历语音指令编码表的来判定该指令是否是完整的有效的语音指令。如语音指令“飞行计划/航路点/经度/西经/输入完毕”其标识码组合为0xあ符合编码要求,组合得到的语音指令码0xFF00D201也在指令编码表中,表明该条语音指令是符合要求的。其不符合要求的包括以下两方面:
(1)标识码不是0xあ,如“飞行计划/航路点/西经”其标识码为0xf0缺少后续的0x0f即(输入完毕),表明该指条语音指令未输入完成。
(2)语音指令码不在语音指令编码表中。如“飞行计划/航路点/经度/北维/输入完毕”,其语音指令码为0xFF00D401,该指令不在语音编码表中,表明该指令无效。
3.2.4 分段识别结果形成
该模块的主要功能是将语音指令模块中的提取的数字信息重新填充回正确完整的语音指令中,形成完整的分段识别结果,同时赋予相应的指令代码。
根据研究表明79%的韵律短语间停顿时集中在200~900ms之间。因此根据上述的三类语言指令进行相关的实验设计用于验证分段识别效果。
根据采集的语音样本并在每个短指令之间随机增加(200ms~900ms)的延迟,并进行播放。针对优化后使用分段识别的语音识别处理软件和未优化的语言识别处理软件进行了验证对比,其实验结果如表4所示。
实验结果表明,采用优化后使用分段识别方式进行语音识别的方式明显的提高了语音识别的识别率。
对相关的数据进行分析。优化前Ⅱ类和Ⅲ类的语言识别率低的主要原因是在于,语音停顿时语音识别超过了静音的判断条件,从而得出的识别结果未查询到对应的语言指令。
根据上述问题分析的原因,采用增加静音的判断时间的方法看能否解决。通过实验发现在静音时间判断增加到900ms时,发现使用上述的两种方式识别率基本保持一致。但引入了新的问题,即对语音指令识别时,响应时间慢,有明显的延迟感,无法满足飞行员对语音识别的响应的要求。
为了解决目前飞机上飞行员对数据变更和计划类语音指令识别时出现的识别率偏低和响应不及时的问题,本文提出了分段识别的设计方案。基于识别结果数字化的原则,完成了原子指令编码表和语音指令编码表的设计,并增加了分段识别功能模块。实验结果表明,该设计方案能有效的解决目前对长指令识别所遇到的问题。针对后续语音词条的不断增加,下一步将优化相关的遍历算法,进一步提高性能。同时由于国产化的需求,下一步将语音识别处理软件移植到国防科技大学的FT-6678M芯片上。