EDN China > 设计实例 > 嵌入式系统 > 参考设计 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于嵌入式Linux的语音识别系统硬软件设计

钟豪?? 张常年?? 徐成波?? 北方工业大学 电脑与电信?? 2015年07月01日 ?? 收藏2

4.软件设计方案

系统软件基于嵌入式Linux 操作系统,实现了语音识别、语音播放、超声波测距和舵机控制等任务,使用fock 机制为每项任务分配独立的进程,使系统可以进行多任务处理。针对不同功能模块编写了相应的底层驱动程序,为上层应用程序提供了调用接口。

系统工作流程如下:处理器通过SPI 总线对语音识别芯片LD3320 进行通用初始化,使语音识别芯片进入循环识别模式,系统处理器反复启动语音识别过程。如果有识别结果,则根据识别作相应处理后(比如播放某个声音作为应答)再启动下一个识别过程。处理器通过SPI 总线读取C5 寄存器的识别结果并分析,将语音命令转换为超声波测距和舵机的控制信号,完成多方位测距任务,如图5 所示。

图5 软件流程图
图5 软件流程图

4.1 语音识别功能程序设计

语音识别芯片LD3320 的特色是兼有语音识别和MP3播放的两项功能,在功能切换的时候,必须进行通用初始化,对芯片进行一系列的设置。

语音识别功能的驱动程序工作流程为通用初始化à语音识别用初始化→写入识别列表→开始识别→响应识别中断。为了提高识别成功率,在识别列表中增加了“垃圾关键词”以吸收错误的识别。上层应用程序为语音识别功能分配了单独的进程,通过ioctl()函数控制LD3320 的工作状态,read()函数可以读取识别结果。程序中使用select 机制实现read()函数的非阻塞访问。同时,设定select 监控超时时间,在超时后,重新初始化语音识别芯片LD3320,为下一次语音识别做准备,如图6 所示。

图6 语音识别功能程序流程图
图6 语音识别功能程序流程图

4.2 语音播放功能程序设计

LD3320支持MP3数据播放,程序中操作顺序为:通用初始化à播放模式初始化à音量调节à开始播放,并准备好中断响应函数,打开中断允许位。在程序中,首先将数字0~9、“十”、“百”、“点”的语音MP3数据分别转换为标准C语言数组格式文件,将该文件添加到工程中进行统一编译。然后把需要播放的距离数据进行拆分,并对每一位进行查表操作,得到相应的语音数据。例如,将距离数据12.5 拆分为:“1”、“十”、“2”、“点”、“5”。最后将查表得到的语音数据按从左到右的顺序组合,并存储到LD3320的播放数据存储器,在即将播放完毕时,芯片会发出中断请求,在中断响应函数中连续写入播放数据,直到声音数据播放完毕。

4.3 超声波测距和云台控制程序设计

超声波测距功能的驱动程序属于Linux 字符型驱动,利用ioctl()函数对相应GPIO进行时序控制,完成超声波的发射和接收。在接收端口输出高电平脉冲信号时,触发系统中断并使用定时器计算得到高电平持续时间△T,根据公式(1)完成距离S 的测量。式中V为超声波的传播速度,常温下超声波在空气中的传播速度是340 米/秒。在应用程序中,可以通过read()函数读取到所测量的距离值。

S =V X ΔT/ 2 (1)

两自由度云台由两个舵机组成,分别控制云台水平和垂直方向的旋转角度。在驱动程序中,首先打开定时器PWM功能并设置定时周期,然后映射定时器中断函数,最后使能定时器,使定时器开始运行。程序中根据实验者发出的语音指令,利用ioctl()函数控制定时器输出两路PWM信号,分别控制两个舵机的旋转角度,最后将运动合成为云台的位姿。

5.结语

本文介绍了嵌入式语音识别技术在超声波测距系统中的一种应用以及实现方式,实验人员可以通过预先定义好的语音指令(例如:“开始测量”、“左上方”、“前方”)实现对系统的控制,并利用超声波进行距离测量。测量完成后,系统通过语音播放的方式将测量结果反馈给实验人员,完成人机交互,提高了用户体验度。本系统具有易扩展的优点,可以将其应用到其它嵌入式控制系统中。

【分页导航】


上一页123下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

三星? 智能家居? 超声波测距?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈