break;
case COMMAND_GO_ID: //识别出第一条命令
GoAhead(); //执行动作一:直走
break;
case COMMAND_BACK_ID://识别出第二条命令
BackUp(); //执行动作二:倒车
break;
case COMMAND_LEFT_ID: //识别出第三条命令
TurnLeft(); //执行动作三:左转
break;
case COMMAND_RIGHT_ID://识别出第四条命令
TurnRight(); //执行动作四:右转
break;
default:
break;
}
}
}
(13)实现中断服务的程序
void IRQ5(void)__attribute__((ISR)); //运动定时控制
void IRQ5(void)
{
if(uiTimecont++ == uiTimeset)
{
*P_IOB_Data = 0x0000;
}
*P_INT_Clear = 0x0004;
}
4.2 模块设计
4.2.1中断流程图部分
SPCE061单片机有两个外部中断,分别为EXT1和EXT2,两个外部输入脚分别为B口的IOB2和IOB3的复用脚。EXT1(IOB2)和EXT2(IOB3)两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断以负跳沿触发方式来输入中断请求信号。EXT1(IOB2)为黑线检测,确定小车位置,EXT2(IOB3)为轮子转数检测用于计算路程。IRQ4用做整个行程的时间计数。
图15 中断服务流程图
4.2.2语音识别部分
在这里我们用的是SPCE061的特定语者辨识SD(Speaker Dependent),SD即语音样板由单个人训练,也只能识别训练某人的语音命令,而他人的命令识别率较低或几乎不能识别。
(1) 语音的准备:
可利用计算机进行录音,选择录音效果一般的MIC比较好,因为小车跑动时要受环境的影响,效果一般的MIC录制的音更加接近凌阳单片机上的MIC所录制的。录制语音可为:“yeah”,“烦不烦”,“前进”,“倒退”,“拐就拐”。分别保存名称为:yeah.48k、qj.48k、dt.48k zg.48k、yg.48k.
语音录制时,注意录制属性设置,最好选择为8Khz, 16位,单声道。语音录制好后,保存格式为“.wav”,利用凌阳单片机光盘内目录“\TOOLS\s480\”下的工具进行语音压缩后放在程序目录“\voice”下边,然后修改配置文件“Makefile”中的OBJFILES的值以及对应的语音文件的目录地址值和“clean”的值 ,并且配置值顺序必须对应于语音训练的过程。
该程序模块包括三部分:训练样本、识别、语音提示。具体程序见主程序。见下图整体框图。
图16 语音辨识整体框图
在程序中我们通过五条语句的训练演示特定人连续音识别,其中第一条语句为触发名称。另外四条为命令,训练完毕开始辨识当识别出触发名称后,开始发布命令,则会听到自己设置的应答,具体流程图如图22。
- 上一篇:轨道电路MATLAB仿真及应用+源码
- 下一篇:51单片机电话远程控制系统设计+源码+流程图
-
-
-
-
-
-
-
高警觉工作人群的元情绪...
现代简约美式风格在室内家装中的运用
g-C3N4光催化剂的制备和光催化性能研究
巴金《激流三部曲》高觉新的悲剧命运
浅析中国古代宗法制度
C++最短路径算法研究和程序设计
江苏省某高中学生体质现状的调查研究
上市公司股权结构对经营绩效的影响研究
中国传统元素在游戏角色...
NFC协议物理层的软件实现+文献综述