APP下载

基于语音识别的智能车系统

2020-02-05毛艳岭艾月赵明君

电子技术与软件工程 2020年7期
关键词:循迹语音单片机

毛艳岭 艾月 赵明君

(曲阜师范大学工学院 山东省日照市 276826)

1 绪论

近些年来,语音识别准确率和处理能力不断上升,实现了从单个词的识别到关键词的识别再到连续时间内的语音识别的伟大飞跃,进而语音识别的应用也不断增加,使人们的生活变得更加丰富多彩和更加便利。语音识别和其他控制技术结合,从而实现智能家居、智慧交通等现代化设计。本设计就是想实现能够通过语音指令实现控制小车运动,除了能够简单控制语音小车实现前进、左转、后退、右转等操作之外,还能够实现循黑线行走和规避周围环境中的障碍物的功能。

2 智能车系统设计方案

本次设计方案主要分为三部分:硬件平台的搭建和设计、语音识别算法的研究和具体实现、智能车系统的软件的设计。其中硬件平台的搭建和设计主要包括总体硬件结构、硬件平台搭建过程、语音模块硬件设计三部分。

3 硬件平台的搭建和设计

3.1 总体硬件结构

硬件组成主要包括STM32F103C8T6 单片机系统、LM358 双运算放大器和四个红外对管组成的四路循迹模块、超声波测距模块加SG90 舵机组成的避障模块、LD3320 语音识别芯片配备STC11L08XE 单片机组成的语音识别模块、L298N 双H 桥电机驱动模块。总体硬件设计框图如图1 所示。

(1)控制元件:本设计使用的STM32F103C8T6 单片机是拥有ARM 内核的32 位的CPU,其工作电压为2V~3.6V,最高工作频率为72MHZ,它因为低功耗、能够提供优越的计算性能和杰出的中断系统响应而被广泛应用在医疗、工业等领域。考虑到本设计电机驱动模块输出电压为5V,本设计在单片机系统上加了一个稳压芯片,可以实现将驱动提供的5V 电压转换为单片机所需的3.3V 工作电压。

(2)SWD 仿真烧写接口:电脑可通过JLINK 仿真器利用其对STM32 单片机系统下载编写好的程序。

(3)晶振:晶振与单片机的某些内部电路共同工作可以为整个单片机系统提供统一的时钟频率,并由此使整个系统可以同步工作,系统的工作速度随着时钟频率的增加而加快。其一般包括有源晶振和无源晶振两部分,有源晶振较稳定,成本较高。在本设计中:主晶振为8MHZ 的有源晶振,可以为系统提供工作频率;备用RTC 晶振为32.768KHZ 的无源晶振,可以为RTC 时钟提供时钟频率。

(4)复位电路:可以使单片机回到初始状态,在刚接通电源的瞬间,电容器C6 会发生短路,GND 直接加到了RESET 端,该低电平可以马上使STM32 单片机回到初始状态;电容C6 饱和后处于断开状态时,RESET 端接高电平,STM32 单片机则进入正常工作状态。若按动SW1 按钮,可直接把GND 加到RESET 端,实现复位以使单片机系统重新执行程序。

图1:总体硬件设计框图

图2:语音识别算法原理图

(5)BOOT 模式选择模块:使用者通过在程序中设置BOOT1和BOOT0 引脚的值,来决定STM32 单片机在初始状态时的启动位置。

(6)循迹模块:使用两个LM358 模块和四个红外对管,拓展外围电路之后组建成四路循迹模块,其中四个红外对管负责检测对应位置是否有黑线,LM358 模块负责处理红外对管得到的数据,最终结合其他模块可以实现循黑线的功能。

(7)超声波避障模块:TRIG 引脚负责接收单片机发出的10US 以上的触发信号,模块根据ECHO 引脚的电平信号变化情况来计算障碍物距离。本设计还为超声波模块配备了一个SG90 舵机,在将超声波模块连接到舵机上并调试好程序之后,若语音车在运动过程中检测到正前方存在障碍物,舵机就能够工作以带动超声波模块转动,实现多角度避障。

图3:总体流程图

图4:语音识别部分程序

(8)电机驱动模块:整个设计的供电电压由两节3.7V 的干电池来提供,而避障、循迹模块和STM32 单片机系统的工作电压都为5V,故此需要在两部分之间添加稳压芯片以确保各部分正常工作。考虑到可靠性、抗干扰能力和驱动能力等因素,本设计以L298N 为驱动芯片。本设计的7.4V 供电电压能够使能板载的5V供电,之后可以引出5V 电压供STM32 单片机和其他需要5V 工作电压的模块使用,模块的两个马达输出连接了两个电机,进而实现了模块可以控制电机工作。

(9)语音识别芯片:LD3320 芯片把语音识别处理器和其他的外部电路集成在了一个模块上,所以直接在已有的集成芯片中就能够完成语音识别和其他的拓展性设计。除此之外,芯片中识别的关键词语列表是能够根据使用者需求随时修改的。在本设计中,MICP 和MICN 引脚连接了一个咪头,用来收集周围环境的语音信息,再通过LD3320 芯片识别出有用的语音指令,转化为对应的识别码,传送给STC11 单片机,这样STC11 单片机可通过USART通信将识别码传送给STM32 单片机,从而控制小车根据语音指令运动,实现题目要求。

(10)STC11 单片机:为了节省所用引脚数,用STC11 单片机通过USART 通信给主单片机STM32 单片机传送LD3320 语音识别芯片的识别结果,使主单片机可以按识别码控制小车状态。

3.2 硬件平台搭建过程

硬件设计主要分为以下几步:首先根据要实现的题目要求,了解相关知识,绘制硬件原理图;然后选择适合的元件以实现要求:将STM32F103C8T6 单片机用做整个设计的主要控制元件,主要负责状态控制、串口通信、控制电机输出等等,是整个设计的核心;循迹模块采用两个LM358 双运算放大器和四个红外对管组成四路循迹模块作为红外检测模块,实现了采集黑线功能;避障模块采用一个搭配了SG90 舵机的超声波测距模块,可以实现多角度多方位检测障碍物;语音识别模块依靠LD3320 语音识别芯片实现语音指令的检测和识别以得到对应的识别码,配备的STC11L08XE 单片机可以通过USART 通信将识别码传送给STM32 单片机;电机驱动方面使用L298N 电机驱动模块以用来给单片机和各模块提供5V的工作电压。最后根据原理图搭建好硬件系统,进行仿真测试,调整不合理的地方,实现了硬件平台的搭建。

3.3 语音模块硬件设计

为了节省所用引脚数,用STC11 单片机通过USART 通信给主单片机STM32 单片机传送LD3320 语音识别芯片的识别结果,使主单片机可以按识别码控制小车状态。在本设计中,MICP 和MICN 引脚连接了一个咪头,用来收集周围环境的语音信息,再通过LD3320 芯片识别出有用的语音指令,转化为对应的识别码,传送给STC11 单片机,这样STC11 单片机可通过USART 通信将识别码传送给STM32 单片机,从而控制小车根据语音指令运动,实现题目要求。

4 语音识别算法的研究和具体实现

语音识别的工作步骤主要分为三步:首先,语音处理器对通过麦克风接口收集的语音数据进行初步处理。然后,对经过初步处理的语音数据提取一些可以概括语音数据特点的参数。最后,分成两个阶段来处理提取之后的参数:先是系统训练,主要是建造参数对应库,人类语音数据中的词和参考对应库中的项一一对应;后是识别,将经过两步处理后得到的参数和对应库中的项进行比较,得到与各项之间的相似度,其中检测到相识度最高的就是识别结果。只有在以下两种情况下,语音识别芯片才会结束相似度识别,得到结果:当语音识别达到设定的时间限的时候,芯片会分析匹配设定时间内的语音信息,结束后就可得到识别结果;开始检测之后,芯片会一直监测到背景音,当芯片检测到背景音和人声时,把此时视为检测人声开始的时间点,之后当再检测到设定时间的背景音时,即认为人声结束,将这段时间的数据进行处理就可得到识别结果。语音识别算法示意图如图2 所示。

5 智能车系统的软件设计

5.1 总体软件设计

总体软件方案为:首先进行系统初始化,随后检测周围环境中是否有语音指令以及语音指令是否有效,若没检测到语音指令或者检测到无效语音指令,系统会一直检测直到检测到有效的语音指令,之后LD3320 芯片会将检测到的语音指令转化为对应的语音识别码,并将其通过USART 通信传送给STM32 单片机,单片机根据各识别码对应的指令来实现循迹、避障、前进、后退、左转、右转、停止等操作。软件流程图如图3 所示。

5.2 语音识别部分软件设计

本设计通过keil 软件编写了程序,通过改变程序中的关键字来实现不同语音指令的识别。然而,实际生活中包含的语音信息量比较大,使得要实现全方位的语音识别难度大,因此本设计采用唤醒词加指令词的形式,通过对唤醒词特征参数的提取和训练,降低了误动作的发生率,提高了识别水平。除此之外,本设计还采用了垃圾词处理,当系统接收到垃圾词指令时,不作任何操作,借此来防止周围环境中的其他人声对设计造成的不良影响。程序如图4 所示。

在程序设计成功之后,借助STC-ISP 软件调试了语音识别模块。首先当发出语音指令“滴滴”时,控制LED 灯亮,表示唤醒词识别成功。然后,通过发出语音指令“循迹”、“避障”、“左转”、“右转”、“前进”、“后退”、“停车”可以分别控制串口发送对应的文字,当发出垃圾词时控制串口输出字符(如图5 所示),在接受到控制指令的同时,控制LED 灯灭,表示成功识别控制指令。

6 系统调试

整个设计的总体调试方案包括以下七部分:根据题目要求,选择合适的元器件;在了解了各元器件的工作原理和使用方法之后,绘制系统整体电路图;在具备一定焊接能力和专业能力的基础上,焊接电路板,搭建好硬件平台;分别根据各模块需要实现的功能,编写并调试各模块的程序;将各模块程序整合统一,编写主程序;将编写好的总程序下载到检查无误的硬件平台中,进行整体调试;发现整体调试中硬件和软件存在的问题,解决问题得到最终成功的系统设计。其中较困难的就是解决调试中出现的问题这部分。

在系统调试的时候,出现并解决了一些问题:有时检测不到语音指令,在调整了语音识别模块的位置之后,明显改善了语音识别效果;循迹模块不能正常工作,通过修改程序和进行仿真解决了此问题。

7 总结与展望

本次设计实现了能够通过语音指令实现控制运动状态的小车,在加了唤醒语令和垃圾词处理后,语音识别效果有了较大提高。本设计应用性较强:在医疗领域,可以用于做智能轮椅和智能病床等医疗设备;在生活领域,可以用来做各种可活动的智能家居和的车辆。但本设计也存在一些可以完善之处,在今后的学习生活将会加以深入研究:像市面上的能够识别特定人的语音产品那样,本设计也可以设计实现识别特定人的声音;模块在热闹环境中语音识别效果较差,可以尝试用手机等通讯设备录入语音指令;适当拓展设计的功能,比如承重等,借此提高设计的使用价值,拓宽设计的应用范围。

图5:语音部分调试图

图6:总体硬件系统图

猜你喜欢

循迹语音单片机
基于DFT算法的电力巡检无人机循迹检测系统设计
基于单片机的SPWM控制逆变器的设计与实现
魔力语音
基于单片机的层次渐变暖灯的研究
基于MATLAB的语音信号处理
基于MQ3与MP3的价廉物美的酒驾语音提醒器
基于单片机的便捷式LCF测量仪
对方正在输入……
基于单片机的智能循迹小车的设计
智能差分循迹小车设计