(2) 关于语音识别库函数的算法分析:
众所周知,嵌入式语音识别最大难点在于如何在硬件资源相对有限(相对与PC机而言)的情况下,实现大量数据处理的语音识别算法。特别的,SPCE061A自带2K字的RAM,这样小容量的RAM空间是如何存储数据量较大的语音命令,是值得探讨的问题。
时域分析中,语音信号作为缓慢时变的信号,在一小段时间里,例如10ms~20ms,语音信号的特性基本不变,这些短段具有固定特性,短段间经常有一定的重叠,组合成一段语音,我们把语音信号分成这样的小段(称为“帧”)作为提取语音信号特性的单元,这样的方法称为“短时”处理法。
当以8K/S的速率采集语音信号时,假设以20ms为帧周期,加上12ms的帧移,帧长32ms,即每帧包括256个语音采集点,一个帧的特性参数占用1个字RAM,则存储一条2S长的语音命令信号占用
2s/20ms*1=100字,与直接存储采样的语音数据相比更能节省嵌入式系统有限的硬件资源。 在外界噪音的干扰下,对语音起止点的判别非常重要,若声音指令信号提取的不恰当,那么所得到的声音指令信号和我们发出的指令信号就会有很大的出入,不但会延迟语音识别的时效性,甚至会降低对
这些语音信号的识别率。对语音信号的提取,主要是确定音头和音尾的位置,即端点识别。常用的方法有短时能量和过零率等几种。
短时能量表示了语音信号的幅度,其定义式为:
(公式1) 图17 语音辨识具体流程图
短时平均过零率为一帧语音信号穿越零电平的次数,表示了短时信号的频率,其定义如下:
(公式2)
两式中的N为一帧语音的采集点数。
语音采集过程中,计算当前一帧或多帧数据的能量或过零率数值,当大于预先设定的阈值时,即认为找到了语音命令的起始点,结束点的确定方法类似。
在截取音头音尾间的信号并分帧后,我们就可以以帧为单位进行特征参数的提取,如线性预测倒谱系数法。选择合适的特征参数,与语音样板参数通过动态时间弯折算法匹配,即可得出相应的识别结果。
5连接和操作说明
5.1 硬件模块连接图
图18 连线图
5.1.1功能说明
1. 小车运动控制:
通过SPCE061A的I/O端口,驱动控制板的H桥电路,进而控制前轮电机和后轮电机。
2. 声控功能:
利用特定人语音识别实现小车的名称和动作训练,并根据相应的语音指令输入执行前进、后退、左转、右转、停车等动作。
3. 定时控制功能:
利用时基定时器设定运行时间,小车运行同时启动定时器,时间到小车停止运行。
5.1.2代码下载
硬件连接完成之后,检查无误,接下来就可以下载程序了。具体的步骤为:
第一步:打开集成开发环境,打开“CarDemo.spj”文件,编译链接。(注意:如果看不到CarDemo.spj,请在弹出的对话框中选择打开类型为spj或者所有文件)
第二步:点击菜单Project->Select Body,或者直接点击 图标打开如图 3-2所示的对话框:
图 19 Select Body对话框
第三步:在弹出的对话框中选择Body Name为SPCE060A_061A,选择Probe为Auto,点击OK按钮确定。
第四步:点击IDE工具栏上的图标 选择Use ICE模式。
第五步:按F8快捷下载按钮,下载代码。
5.1.3训练小车
成功下载程序以后,去掉下载线并复位系统(如果使用EZ-Probe还应将Probe选择跳线S5拔去),小车就会提示对它进行训练。训练采用应答式训练,每条指令的训练次数为两次,每一条命令的训练过程都是一样的,以“前进”为例说明: SPCE061A语音控制小车设计+源代码(12):http://www.youerw.com/tongxin/lunwen_1001.html