微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于嵌入式Linux的语音识别系统硬软件设计

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

时间:07-02 来源:RF技术社区 点击:

识别模式,系统处理器反复启动语音识别过程。如果有识别结果,则根据识别作相应处理后(比如播放某个声音作为应 答)再启动下一个识别过程。处理器通过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.结语

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top