王欣,崔佩璋,陶杰
(陆军工程大学 石家庄校区,河北 石家庄 050003)
在信息化战场中,面对高速、快捷的战场态势的变化,人机交互是信息化装备向智能化发展的必然趋势。这种快节奏的战争作战体系下,指挥控制作为战场的“神经中枢”,其无线通信装备之一——电台的参数修改、接口类型转换、身份识别等方面操作可以用人机交互的语音识别代替键盘、旋钮和按键等传统方式,更能适应现代战争的需求。
语音识别模块获取语音并进行识别,发送到主控芯片,根据不同的指令[1]发送不同的协议来控制电台的不同操作。与此同时,为了便于测试,将主控芯片识别的语音芯片通过串口发送至上位机,用于观察发送的正确与否,总体设计如图1 所示。根据语音识别的基本原理,咪头采集的语音流通过语音识别模块进行频谱分析、特征提取,与语音库中已经训练好的语音进行模板匹配,主控芯片得到识别结果,去控制电台的操作,在实验中可通过串口调试助手观察是否收到正确的指令,以便调试。
硬件设计主要包括语音识别系统载体和LD3320 语音识别芯片两个组成部分,其中语音识别系统载体为STM32F4 开发板,并承载主控芯片负责控制语音识别芯片与PC 用户终端之间的信息传递[2]。用户首先需要通过LD3320 语音识别芯片上的MIC 接口输入一个可以识别的模拟语音信号。紧接着系统装置将模拟语音信号和数字语音数字信号通过模数转换器和数模转换器进行相应转换,并最终由PC 终端通过主控芯片对LD3320 进行一系列操控从而实现语音识别功能[3]。
内核采用32 位高性能ARM Cortex-M4 处理器,时钟高达168 MHz,实际还可以超屏,支持FPU(浮点运算)和DSP 指令。I/O 口采用STM32F407ZGT6,具有144 引脚、114 个I/O,大部分I/O 口(模拟通道除外)都耐5 V,且支持SWD 和JTAG调试,SWD 只要2 根数据线。存储 器为1 024 KB Flash、192 KB SRAM。
LD3320 芯片是一种基于非特定人语音识别(Speaker-Independent Automatic Speech Recognition,SI-ASR)技术的语音识别芯片。LD3320 芯片内部集成了高精度的A/D和D/A 接口,不用外接存储器就可以实现人机交互,在语音识别的过程中,识别的关键词语列表是以字符串的形式存储在芯片中,并且可以动态编辑[4]。
为了与主控芯片有效地通信,LD3320 语言识别芯片外围电路如图2 所示。引脚连接:RST-PB15,CS-PA4,IRQ-PB12,WR-PB13,MISO-PA6,MOSI-PA7,SCK-PA5。
其中RSTB 为LD3320 芯片上的复位引脚,其与主控芯片上的Pin15 引脚相连接,采取“高-低-高”的设置使得LD3320 语音芯片复位。LD3320 上的CS 引脚与主控芯片上的Pin4 引脚相连,表示是否可以对LD3320 语音芯片进行操作,其中0 表示可以操作,1 表示不可以操作。
电台交互采用语音识别技术,其本质就是将语音序列转换为文本[5],首先是预处理,将输入的语音信号滤波、端点检测、语音分帧以及预加重等[6];然后进行特征提取,对语音声学参数特征提取并计算,降低维数便于后续处理;训练阶段是经过特征提取后建立参考模型库;最后将输入语音的特征矢量参数与模型库参数比较,作为识别的结果[7],其基本的框图如图3 所示。
STM32F4 控制芯片可将要识别的语音内容以拼音的方式存储到LD3320 芯片中,每个拼音对应一个识别码,用来区分不同的指令,不同的识别码对应不同的编号,以便于计算机进行识别[8]。语音识别时,根据咪头采集到的语音,与存储在LD3320 中的语音进行比对,如果与某个字符串相同,则找到对应的编码,进而用主控芯片控制相应的电台操作。关键词列表见表1。
表1 关键词列表
在识别过程中,有声音输入则进入语音识别中断,如果指令有效,与存储的语音列表内容进行匹配识别;如果没有声音,不进行语音识别,如图4 所示。
在进入语音识别中断时,如图5 所示,先将检查语音识别是否空闲,并且是否为正常的一次中断,如果两个条件都满足,即可进入语音识别,与语音识别列表匹配。在匹配过程中进行打分,根据不同得分得到语音识别(ASR 识别)候选,将最高分作为最优识别结果,因此为了提高识别率,在语音识别添加关键词列表时,差别尽量大,这样会降低识别差错。如果为方言或英语,可通过相似的普通话拼音列表作为关键词列表。其进入语音中断,关键程序如下:
采取循环识别的方式进行语音识别,即在整个识别过程中一直检测是否有声音输入,如果有声音输入,则进入语音识别流程。这势必会出现误识别的问题,可能在进行其他交流时,也会误认为语音识别指令,导致识别率降低。为了提高识别率,采用按键或指令触发的方式开启识别,如图6 和图7 所示,这两种识别方式区别仅在于其不同的触发方式[9-11]。
如果有按键按下,则进入中断,之后消抖,确认是按下按键,语音识别标记Flag 置1,确定开始语音识别,之后进入图4 识别流程图。在识别的过程中,开启定时,在5 s 内完成语音识别,如果按下按键不说话则为无效识别,因此按下按键或发出指令后间隔时间不能超过5 s,若超过5 s 再发出声音,则视为无效语音,直接结束。
当语音识别完成后,主控芯片根据识别到的指令发送不同的指令协议,电台接收到后即可执行相应的操作。如发送数组buf1={0xaa,0x01,0x11}为打开电台的协议,当电台接收到此协议后,就立刻打开电台。同样地,电台收到改信道等协议,即可更改信道。主要关键程序如下:
本系统为非特定人的语音识别系统,根据自己所需要识别的指令分别选用了简单的短语和短句两种不同类型的文字内容,并进行了识别和实验,从而检测出该识别系统在其认知过程中的识别准确度。为此,本文对不同语音识别指令文本进行了实验,指令库如表2 所示,并以这些命令为识别指令进行之后的其他实验。
表2 指令库
在安静环境下以循环识别、按键识别和指令触发识别的方式分别进行测试,识别率非常高,均为97%。但在有噪声或外界有语音等干扰的情况下,再分别进行测试,测试表如表3 所示。
表3 不同识别系统的识别率 (%)
从表3 中可以看出,按键方式识别率最高,这是因为只有按键触发了,才开始识别,被外界干扰的概率较小;而循环方式识别,系统则在不断地识别,不管是不是有效指令,都在作为有声音输入,再进行判断,并且有外界输入语音的话,识别到相似的指令,则认为是指定的识别指令,在内部进行评分判断时得到较高的识别分值,导致其误识别,从而造成识别率降低;指令识别识别率也较高,在交互方式较多的场合应用较广,但是在军用场合,操作并不是太多,为了更好地识别,按下按键开始识别有更高的识别率。
本系统采用按键识别的方式进行非特定人语音识别,指令可以通过串口调试助手进行实验效果的观察。具体测试情况如图8 所示。
本文推出的基于人机交互的智能电台系统是以STM32F4 为主控芯片[12-15],用于读取语音识别模块LD3320所获取的语音指令,并根据不同的指令发送不同的协议,从而控制电台状态的改变。通过在安静环境和有外界干扰的环境中分别以循环方式、按键方式和指令触发方式进行人机交互,发现交互识别准确率最高的为按键方式,指令触发方式适合于民用的交互次数较多的场合,但是为了得到更高的识别率,在交互次数较少的军用近场语音识别中,采用按键触发识别的方式具有更好的识别效果。