智能小车的语音辨识系统在SPCE061A上的实现过程可分为以下五个阶段,如图6所示。
(1)初始化RAM
语音命令的特征模型被保存在SPCE061A的内部
RAM中,如果所需的RAM空间被旧的特征模型数据占满,新特征模型则无法保存到RAM中,利用BSR_DeleteS-DGroup(0)函数可以把 RAM空间中所有的特征模型删除,释放出所需的空间。当RAM擦除成功BSR_DeleteS-DGroup(0)函数返回0,否则返回-1。
(2)调用训练模块
语音训练过程通过调用函数im BSR_Train(int Corn-mandID,int TraindMode)来完成,CommandID为命令序号,范围从0x100到0x105,并且对于每组训练语句都是唯一的。TraindMode为训练次数,为1表示使用者训练一次,为2表示训练者训练两次。为了增强可靠性,最好训练两次,否则辨识的命令就会倾向于噪音,训练次数是2时,两次一定会有一些差异,所以一定要保证两次训练结果尽量接近。当int BSR_Train返回0时表明语音训练成功。
(3)初始化辨识器
用来定义语音输入来源,可以通过调用函数void BSR_InitRecognizer(int AudioSource)完成,其中参数Audio-Source为0时表示MIC语音输入,为1时表示LINE_IN模拟电压输入。当主程序调用该函数时,语音辨识器便打开8kHz采用频率的FIQ_TMA中断,并将采样得到的语音数据填入语音辨识器的数据队列中。
(4)启动实时监控
实时监控是用来观察语音辨识是否正常工作,如果辨识正常则会产生脉宽为16ms连续稳定方波,否则会产生不稳定的波形,此时需要删除命令或优化程序,否则将会丢失语音数据,产生辨识出错信息。完成此功能可以通过调用BSR_EnableCPUIndicator()函数来完成。
(5)辨识处理
由函数int BSR_GetResult()完成语音辨识处理,当无命令辨识出来时,函数返回0;辨识器停止未初始化或辨识未激活返回-1;当辨识不合格时返回-2;当辨识出来时返回命令的序号。
4 实验与结论
实验中智能小车的正确辨识率在90%以上,实验过程中发现影响小车正常辨识的因素主要包括周围环境的噪音、人与小车的距离等,这些需要在今后的工作改正。需要说明的是在训练过程中中,每条语音命令的长度不要超过13 s,训练后得到的语音模型保存在RAM中,每条命令占用96Word。由于RAM空间有限,同时可辨识的语音命令为5条,为了运行复杂的辨识程序,必须通过扩展必要的存储芯片完成系统的功能。
这种语音控制的智能小车机器人不仅可以将来为人服务,稍加扩展,就可以在多种不适合人作业的场合替代人执行任务,因此这种语音控制小车机器人具有重要的学术研究价值。