基于嵌入式Linux的语音识别系统硬软件设计
别功能程序设计
本文引用地址:https://www.eepw.com.cn/article/278135.htm语音识别芯片LD3320的特色是兼有语音识别和MP3播放的两项功能,在功能切换的时候,必须进行通用初始化,对芯片进行一系列的设置。
语音识别功能的驱动程序工作流程为通用初始化à语音识别用初始化→写入识别列表→开始识别→响应识别中断。为了提高识别成功率,在识别列表中增加了“垃圾关键词”以吸收错误的识别。上层应用程序为语音识别功能分配了单独的进程,通过ioctl()函数控制LD3320的工作状态,read()函数可以读取识别结果。程序中使用select机制实现read()函数的非阻塞访问。同时,设定select监控超时时间,在超时后,重新初始化语音识别芯片LD3320,为下一次语音识别做准备,如图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.结语
本文介绍了嵌入式语音识别技术在超声波测距系统中的一种应用以及实现方式,实验人员可以通过预先定义好的语音指令(例如:“开始测量”、“左上方”、“前方”)实现对系统的控制,并利用超声波进行距离测量。测量完成后,系统通过语音播放的方式将测量结果反馈给实验人员,完成人机交互,提高了用户体验度。本系统具有易扩展的优点,可以将其应用到其它嵌入式控制系统中。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)linux相关文章:linux教程
评论