(2)训练部分:训练部分完成的工作就是建立语音模型。程序一开始判断小车是否被训练过,如果没有训练过则要求对其进行训练,整个训练过程共有 5 次,依次为:名称—前进—倒车—左拐—右拐。在训练成功之后将训练的模型存储到 FLASH,在以后使用时不需要重新训练;如果已经训练过会把存储在 FLASH 中的模型调出来装载到辨识器中。
(3)识别部分:在识别环节当中,如果辨识结果是名字,停止当前的动作并进入待命状态,然后等待动作命令。如果辨识结果为动作指令,小车会语音告知相应动作,并执行该动作,在运动过程中可以通过呼叫小车的名字使小车停下来。
(4)重训操作:考虑到有重新训练的需求,设置了重新训练的按键(61 板的 KEY3),循环扫描该按键,一旦检测到此键按下,则将擦除训练标志位(0xe000 单元),并等待复位。复位后,程序重新执行,当检测到训练标志位为 0xffff 时会要求重新对其进行训练。小车训练流程图如图5所示[5]。
2. 2系统的软件设计流程图
系统的软件设计流程如图6所示。本设计采用C语言和汇编语言联合编程的方法。其中,C语言作为主程序编程,可以充分利用C语言的优点,调用其他程序模块。汇编语言主要用在子程序的模块中,利用它的中断、延时等方面的优点。汇编语言的主要优点是占用硬件资源少、程序直接对硬件操作加快了处理速度。本设计的所有程序均在凌阳单片机集成开发环境IDE中进行。本系统的软件部分采用模块化程序结构,其软件设计主要包括初始化、系统主程序、语音提示程序、小车微调程序等部分。
本文设计并制作的小车以凌阳单片机为控制核心,完成了语音辨识功能,并在实现语音控制的基础上扩展了SPCE061AI/O接口,实现了紧急避障微调功能,能够按照语音指令很好地完成前进、倒车、左转、右转以及倒库。能够识别人的语音命令,并根据命令的含义执行相应的动作。整个部分设计合理,小车运行正常。