声控小车的设计(附源代码)_第1页
声控小车的设计(附源代码)_第2页
声控小车的设计(附源代码)_第3页
声控小车的设计(附源代码)_第4页
声控小车的设计(附源代码)_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信工程本科毕业论文--声控小车的设计目录摘要 IIIAbstract IV引言 1第一章绪论 21.1论文背景 21.2总体设计要求 2第二章凌阳单片机(SPCE061A)简介 42.1芯片总述 42.2芯片最小系统 52.3I/O端口 52.4定时及中断 82.4.1中断系统 82.4.2定时器 82.4.3中断控制 102.5看门狗 11第三章系统软件设计 123.1软件描述 133.1.1音频 133.1.2应用程序接口 143.1.3语音识别原理 153.2软件设计 153.2.1语音压缩编码 153.2.2凌阳音频压缩算法 173.2.3凌阳语音的播放、录制、合成和辨识功能的分析 183.2.4语音播放应用程序接口函数 193.2.5语音播放应用程序接口函数 193.3程序流程图 12第四章硬件电路设计 224.1SPEC016A电源模块 224.1.1SPY0029芯片简介 224.1.2电路原理分析 234.2语音输入模块设计 234.3语音输出模块设计 244.3.1SPY0030芯片简介 254.3.2电路设计 264.4车体控制模块 264.4.1L298芯片功能分析 264.4.2AMS1117芯片功能分析 284.4.3硬件电路设计 28结论 30致谢 31参考文献 31附录 32声控小车的设计摘要:声控是利用语音识别技术来控制相关物体。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。无人驾驶的智能汽车也必将进入实用阶段。本课题的设计更深入的理解单片机及其相关外围器件的原理、应用和编程,对单片机芯片I/O端口构造等有个清晰的认识,对语音压缩算法、语音识别等进行全面的了解以及对硬件电路的设计模块进行实际操作,同时巩固数电、模电和信号等相关知识,并通过设计更清晰更透彻的理解巩固大学几年的电子信息工程专业的相关知识。本系统的主要目的是针对智能无人驾驶汽车系统出音控小车,在智能化车上实现语音控制,避免出现许多大大小小的事故。旨在研究汽车的智能声控系统,让声控进入汽车,提高汽车的智能化和安全系数。关键词:声控;语音识别;凌阳单片机;小车VOICE-CONTROLMODELCARAbstract:Voicecontrol,itisthatusingspeechrecognitiontechnologytocontrolrelatedobjects.Inthepasttwentyyears,thespeechrecognitiontechnologyimprovesignificantly,startfromlabtomarket.Peopleexpected,thenext10years,speechrecognitiontechnologywillentertheindustry,householdelectricalappliances,communications,automotiveelectronics,medical,andfamilyservices,consumerelectronicproducts,andotherfields.Unmannedintelligentvehiclewillalsogiveintothepracticalstage.Thistopicdesignmoreunderstandingofthesinglechipmicrocomputerandrelatedperipheraldevicestheprinciple,applicationandprogrammingtothesinglechipchipI/Oportstructureshaveaclearunderstanding,speechcompressionalgorithm,speechrecognitionandathoroughunderstandingofthedesignofthehardwarecircuitandtheactualoperationmodules,andconsolidateseveralelectricity,mouldelectricityandsignalrelatedknowledge,andthroughthedesignmoreclearlymorethoroughunderstandingofconsolidatingtheelectronicandinformationengineeringuniversityyearsprofessionalknowledge.Thesystem'smainpurposeisforintelligentrobotssystemoutYinKongcar,intheintelligentcarrealizevoicecontrol,avoidmanygreatlysmallaccident.Thecartoresearchintelligentsonicsystem,letsonicintocars,improvethecar'sintelligentandsafetycoefficient.Keywords:Voice-control;Speechrecognition;SunplusSCM;Modelcar引言随着我国经济的高速发展,汽车的保有量不断增加。汽车行驶安全性越来越受到重视,而且早在上个世纪发达国家便提出了智能交通系统—ITS(IntelligentTransportation

Systems,

ITS

)—的概念,其中汽车的智能尤为重要。汽车的智能化程度越高,为驾驶员提供的服务越周密,安全系数越高。语音识别技术是21世纪间信息技术领域十大重要的科技发展技术之一,正逐步成为信息技术中人机接口的关键技术。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。随着经济的增长,个人拥有私家汽车已不再是梦想,伴随着汽车业的发展,无人驾驶的智能汽车也必将进入实用阶段。本系统提出智能声控小车模型,旨在研究汽车的智能声控系统,让声控进入汽车,提高汽车的智能化和安全系数。第一章绪论1.1论文背景随着我国经济的高速发展,汽车的保有量不断增加。汽车行驶安全性越来越受到重视,而且早在上个世纪发达国家便提出了智能交通系统—ITS(IntelligentTrans-portation

Systems,

ITS

)—的概念,其中汽车的智能尤为重要。汽车的智能化程度越高,为驾驶员提供的服务越周密,安全系数越高。语音识别技术是21世纪间信息技术领域十大重要的科技发展技术之一,正逐步成为信息技术中人机接口的关键技术。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。随着经济的增长,个人拥有私家汽车已不再是梦想,伴随着汽车业的发展,无人驾驶的智能汽车也必将进入实用阶段。本系统提出智能声控小车模型,旨在研究汽车的智能声控系统,让声控进入汽车,提高汽车的智能化和安全系数。1.2总体设计要求该系统的声控系统是基于凌阳SPEC016A包括语音的输入、语音的识别、语音的输出及车体控制部分,主要实现人机语音交流及控制:当小车准备好的时候,车说“ok,let’sgo!”。当小车要求人发出命令而人没有发命令的时候,车说“没有听到任何声音”。当外界声音比较嘈杂,小车没有识别出人发出的命令的时候,车说“请再说一遍”;给小车任意取名,当叫到小车的名字的时候,车回答“ok”,小车暂停;人说“前进”,车回答“ok”,小车向前行驶,前进指示灯亮;人说“后退”,车回答“ok”,小车向后退,后退指示灯亮;人说“左前”,车回答“ok”,小车向左拐,左前指示灯亮;人说“右前”,车回答“ok”,小车向右拐,右前指示灯亮;人说“停”,车回答“ok”,小车刹停;人说“左后”,车回答“ok”,小车向左后,左后指示灯亮;人说“左后”,车回答“ok”,小车向左后,左后指示灯亮;总体设计原理如图1.1所示:SPCE016ASPCE016A语音输出语音输出处理语音输出语音输出处理语音输入语音识别语音输入处理语音输入语音识别语音输入处理车体控制控车指令车体控制控车指令图1.1总体设计原理图语音输入,即通过麦克风将语音信号转换成电信号输入SPCE016A内。SPCE016A将其放大,调用SPCE016A相关语音处理函数,SPCE016A会将电信号转换成数字信号;语音识别,通过调用SPCE016A相关语音识别函数,处理语音信号,进行识别;语音输出,将处理后的语音进行功率放大,然后播放出来;车体控制,依据SPCE016A的控车指令,驱动小车的行驶状态。第二章凌阳单片机(SPCE061A)简介2.1芯片总述SPCE061A是台湾凌阳科技公司推出的一款16位SoC(SystemonChip,片上系统)的单片机,它采用高性能的u’nSPTM内核,具有丰富的硬件资源,只内嵌32K字的闪存(FLASH)。2个10位DAC(数-模转换)输出通道;能容纳210秒的语音数据;7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;内置在线仿真电路ICE(In-CircuitEmulator)接口;具有保密能力;具有WatchDog功能。SPCE061A的结构如图2.1所示16位微控制器FLASHRAM锁相环振荡器CUP时钟双16位定时器/计数器/时机中断控制串行输入输出接口双通道10位ADC7通道10为ADC单通道ADC+AGCAUD2AUD1低电压监测/低电压复位/看门狗32引脚通用输入输出端口UART通信接口VcpISE_SDAICE_SCKICE_EN16位微控制器FLASHRAM锁相环振荡器CUP时钟双16位定时器/计数器/时机中断控制串行输入输出接口双通道10位ADC7通道10为ADC单通道ADC+AGCAUD2AUD1低电压监测/低电压复位/看门狗32引脚通用输入输出端口UART通信接口VISE_SDAICE_SCKICE_ENXI/RXI/RXOMIC_INXOMIC_INIOB1(SDA)IOB0(SCK)IOB7(RXD)IOB1(SDA)IOB0(SCK)IOB7(RXD)IOB10(TXD) IOB15-0IOA15-0 IOB15-0IOA15-0图2.1SPCE061A结构2.2芯片最小系统最小系统接线如图2.2所示,在OSC0、OSC1端接上晶振及谐振电容,在锁相环压控振荡器的阻容输入VCP端接上相应的电容电阻后即可工作。其它不用的电源端和地端接上0.1µF的去藕电容提高抗干扰能力。图2.2SPEC061A最小系统2.3I/O端口SPCE061A提供了位控制结构的I/O端口,每一位都可以单独用于数据输入或输出。每个独立的位可通过以下3种控制向量来作设定:(1)数据向量Data(2)属性向量Attribution(3)方向控制向量Direction每3个对应的控制向量组合在一起,形成一个控制字,用来定义相对应I/O端口位的输入输出状态和方式。例如,假设需要IOA0是下拉输入引脚,则相对应的Data、Attribution和Direction的值均被设为“0”。如果需要IOA1是带唤醒功能的悬浮式输入引脚,则Data、Attribution和Direction的值被设为“010”。与其它的单片机相比,SPCE061A除了每个I/O口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再外接。例:设A口为带下拉电阻的输入端口,在连接硬件时不用再外接下拉电路。A口和B口的Data、Attribution和Direction的设定值均在不同的寄存器里,用户在进行I/O端口设置时要特别注意这一点。I/O端口的组合控制设置如表2.1所示:表2.1I/O端口的控制向量组合DirectionAttributionData功能是否带唤唤醒功能功能描述000下拉*是**带下拉电阻的输入引脚001上拉是**带上拉电阻的输入引脚010悬浮是**悬浮式输入引脚011悬浮否悬浮式输入引脚***100高电平输出(带数据反相器)否带数据反相器的高电平输出(当向数据位写入“0”时输出“1”)101低电平输出(带数据反相器)否带数据反相器的低电平输出(当向数据位写入“1”时输出“0”)110低电平输出否带数据寄存器的低电平输出(无数据反相功能)111高电平输出否带数据寄存器的高电平输出(无数据反相功能)注:*:端口位预设为带下拉电阻的输入引脚;**:只有当IOA[7~0]内位的控制字为000,001和010时,相对应位才具有唤醒的功能;***:悬浮输入作为ADCIOA[6~0]的输入。P_IOA_Data(读/写)(7000H)A端口的数据单元,用于向A口写入或从A端口读出数据。当A口处于输入状态时,读出是读A口引脚电平状态;写入是将数据写入A端口的数据寄存器。当A口处于输出状态时,写入输出数据到A端口的数据寄存器。P_IOA_Buffer(读/写)(7001H)A端口的数据向量单元,用于向数据向量寄存器写入或从该寄存器读出数据。当A口处于输入状态时,写入是将A端口的数据向量写入A端口的数据寄存器;读出则是从A端口数据寄存器内读其数值。当A口处于输出状态时,写入输出数据到A端口的数据寄存器。对输出而言,P_IOA_Data与P_IOA_Buffer是一样的.但对输入而言,P_IOA_Data读的是IO的值,P_IOA_Buffer读的是buffer内的值。假设IOA[0]作为输出,并去接LED阳极(LED阴极接地)。若P_IOA_Data的IOA[0]为1。在某些需要较大驱动能力的LED而言,LED会亮,但IOA[0]会被拉到一个很低的值。此时从P_IOA_Data读回为0,但P_IOA_Buffer则为1。读回的意义是是方便做其它的IO运算。P_IOA_Dir(读/写)(7002H)A端口的方向向量单元,用于用来设置A口是输入还是输出,该方向控制向量寄存器可以写入或从该寄存器内读出方向控制向量。Dir位决定了端口位的输入/输出方向:即‘0’为输入,‘1’为输出。P_IOA_Attrib(读/写)(7003H)A端口的属性向量单元,用于A端口属性向量的设置。P_IOA_Latch(读)(7004H)读该单元以锁存A端口上的输入数据,用于进入睡眠状态前的触键唤醒功能的启动。P_IOB_Data(读/写)(7005H)由于本系统未涉及到B口的特殊功能,在此就不作介绍。2.4定时及中断2.4.1中断系统SPCE061A单片机中断系统,可以提供14个中断源,具有两个中断优先级,可实现两级中断嵌套功能。用户可以用关中断指令(或复位)屏蔽所有的中断请求,也可以用开中断指令使CPU接受中断申请。每一个中断源可以用软件独立控制为开或关中断状态,但中断级别不可用软件设置。2.4.2定时器SPCE061A提供了两个16位的计时/计数器:TimerA和TimerB。TimerA为通用计数器;TimerB为多功能计数器。TimerA的时钟源由时钟源A和时钟源B进行“与”操作而形成;TimerB的时钟源仅为时钟源C。定时器发生溢出后,会产生一个溢出信号(TAOUT/TBOUT),它会传送到CPU中断系统以产生定时器中断信号;此外,定时器溢出信号还可以用于触发ADC输入的自动转换过程,和DAC输出的数据锁存。定时器A要启用定时器,要写入一个计数值N到P_TimerA_Data(读/写)(700AH)单元,或是P_TimerB_Data(读/写)(700CH)单元,然后选择一个合适的时钟源,这时,定时器将在所选的时钟频率下,开始以递增方式计数N,N+1,N+2,…0xFFFE,0xFFFF。当计数达到0xFFFF后,计时/计数器溢出,产生中断请求信号,被CPU响应后送入中断控制器进行处理。同时,计数值N值将被重新加载计时/计数器并重新开始计数。P_TimerA_Data(读/写)(700AH)TimerA的数据单元,用于向16位预设寄存器写入数据(预设计数初值)或从其中读取数据。在写入数值以后,计数器便会在所选择的频率下进行加一计数,直至计数到0xFFFF产生溢出。.溢出后P_TimerA_Data中的值将会被复位,再以设置的值继续加一计数。一般说来分为以下几步:1.选择需要的计数频率。2.计算相对应的计数初值。P_TimerA_Ctrl(写)(700BH)TimerA的控制单元如表2.2所示。用户可以通过设置该单元的第0~5位来选择TimerA的时钟源(时钟源A、B)。设置该单元的第6~9位,TimerA将输出不同频率的脉宽调制信号,即对脉宽占空比输出APWMO进行控制。表2.2P_TimerA_Ctrl单元b15–b10b9b8b7b6b5b4b3b2b1b0占空比的设置[1]时钟源B选择位(表2.4)时钟源A选择位(表2.3)注:[1]:本系统未涉及到占空比,在此就不作阐述。表2.3时钟源A选择位b0-b2b2b1b0时钟源A的频率000Fosc/2001Fosc/25601032768Hz0118192Hz1004096Hz10111100*111EXT1表2.4时钟源A选择位b0-b2b5b4b3时钟源B的频率0002048Hz0011024Hz010256Hz011TMB11004Hz1012Hz1101*111EXT2注:*代表默认值为1。若以ClkA作为门控信号,‘1’表示允许时钟源B信号通过,而‘0’则表示禁止时钟源B信号通过,而停止TimerA的计数。如果时钟来源A为‘1’,TimerA时钟频率将取决于时钟来源B;如果时钟来源A为‘0’,将停止TimerA的计数。(二)定时器B。由于本系统未用到定时器B,在此就不作阐述。2.4.3中断控制SPCE061A单片机有多个中断源,为了使每个中断源都能独立地被开放和屏蔽,以便用户能灵活使用,它在每个中断信号的通道中设置了一个中断屏蔽触发器,只有该触发器无效,它所对应的中断请求信号才能进入CPU,即此类型中断开放。否则即使其对应的中断请求标志位置“1”,CPU也不会响应中断,即此类型的中断被屏蔽。同时CPU内还设置了一个中断允许触发器,它控制CPU能否响应中断。SPCE061A对中断源的开放和屏蔽,以及每个中断源是否被允许中断,都受中断允许寄存器P_INT_Ctrl和P_INT_Clear及P_INT_Ctrl_New控制和一些中断控制指令。中断控制单元P_INT_Ctrl(读/写)(7010H)P_INT_Ctrl控制单元(如表2.5所示)具有可读和可写的属性,其读写时的意义是不同的。表2.5P_INT_Ctrl控制单元b7b6b5b4b3b2b1b0IRQ3KEYIRQ44KHzIRQ42KHzIRQ41KHzIRQ54HzIRQ52HzIRQ6TMB1IRQ6TMB2b15b14b13b12b11b10b9b8FIQ_Fosc/1024IRQ0_Fosc1024FIQTMAIRQ1TMAFIQTMBIRQ2TMBIRQ3EXT2IRQ3EXT1当写中断控制单元中的某位为“1”时,即允许该位所代表的中断被开放,并关闭屏蔽中断触发器,此时当有该中断申请时,CPU会响应。否则如果该位被置0则禁止该位所代表的中断。即使有中断申请,CPU也不会响应。当读取中断控制单元时,其主要作为中断标志,因为其每一位均代表一个中断,当CPU响应某中断时,便将该中断标志置“1”,即将P_INT_Ctrl中的某位置“1”可以通过读取该寄存器来确定CPU响应的中断。清除中断标志控制单元P_INT_Clear(写)(7011H)清除中断标志控制单元(如表2.6所示)主要用于清除中断控制标志位,当CPU响应中断后,会将中断标志置位为“1”,当进入中断服务程序后,要将其控制标志清零,否则CPU总是执行该中断。表2.6清除中断标志控制单元P_INT_Clearb7b6b5b4b3b2b1b0IRQ3KEYIRQ44KHzIRQ42KHzIRQ41KHzIRQ54HzIRQ52HzIRQ6TMB1IRQ6TMB2b15b14b13b12b11b10b9b8FIQ_Fosc/1024IRQ0_Fosc1024FIQTMAIRQ1TMAFIQTMBIRQ2TMBIRQ3EXT2IRQ3EXT1因为P_INT_Clear寄存器的每一位均对应一个中断,所以如果想清除某个中断状态标志,只要将该寄存器中对应的中断位置1即可清除该中断状态标志位。该寄存器只有写的属性,读该寄存器是无任何意义的。激活和屏蔽中断控制单元P_INT_Ctrl_New(读/写)($702DH)激活和屏蔽中断控制单元(如表2.7所示)用于激活和屏蔽中断。表2.7激活和屏蔽中断控制单元P_INT_Ctrl_Newb7b6b5b4b3b2b1b0IRQ3IRQ4IRQ4IRQ4IRQ5IRQ5IRQ6IRQ6b15b14b13b12b11b10b9b8FIQIRQ0FIQIRQFIQIRQ2IRQ3IRQ32.5看门狗WatchDog是用来监视系统的正常运作。当系统正常运行时,每隔一定的周期就必须清除WatchDog计数器。如果在限定的时间内,WatchDog计数器没有被清除,CPU就会认为系统已经无法正常工作,将会进行系统复位(reset)。SPCE061A的WatchDog的清除时间周期为0.75秒。因为WatchDog的溢出复位信号WatchDog_Reset是由4Hz时基信号经4分频之后产生的,即每4个4Hz时基信号(1秒)将会产生一个WatchDog_Reset信号。WatchDog功能是上电时自动启动,不能被关闭。因此用户使用时,注意要在0.75秒内,进行清除WatchDog的操作。P_WatchDog_Clear(写)7012H要清除WatchDog,只需要将“xxxxxxxxxxxxxx01b“写入P_WatchDog_Clear单元即可,xx代表任意数值。如果没有在0.75秒内清除WatchDog,或者将不是“xxxxxxxxxxxxxx01b“的数值写入P_WatchDog_Clear单元,CPU将会进行系统复位。当系统处于睡眠模式(sleepmode)时,WatchDog功能将会被关闭。第三章系统软件设计3.1程序流程图程序流程详图3.2软件描述3.2.1音频我们所说的音频是指频率在20Hz~20kHz的声音信号,分为:波形声音、语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础。语音也可以表示为波形声音,但波形声音表示不出语言、语音学的内涵。将模拟的(连续的)声音波形数字元化(离散化),以便利数字计算机进行处理的过程,主要包括采样和量化两个方面。数字音频的质量取决于:采样频率和量化位数这两个重要参数。此外,声道的数目、相应的音频设备也是影响音频质量的原因。WAVE文件使用三个参数来表示声音,它们是:采样位数、采样频率和声道数。在计算机中采样位数一般有8位和16位两种,而采样频率一般有11025Hz(11KHz),22050Hz(22KHz)、44100Hz(44KHz)三种。WAVE格式支持MSADPCM、CCITTALaw、CCITTµLaw和其它压缩算法,支持多种音频位数、采样频率和声道,是PC机上最为流行的声音文件格式,但其文件尺寸较大,多用于存储简短的声音片段。3.2.2应用程序接口单片机对语音的控制如录放音、合成音及辨识广泛应用到生活中。语音处理大致可以分为A/D转换、编码处理、存储、解码处理及D/A转换等(见图3.1)。然而,有扬声器(MIC)输入所生成的WAVE文件占用的存储空间很大,单片机存储容量有限,凌阳SPEC061A的解决方法就是提供SACM-LIB库。该库将A/D转换、编码、存储、解码及D/A转换作为相应的模块,每个模块都有其应用程序接口(API),只需要了解每个模块所要实现的功能及参数,然后调用该API函数即可以实现该模块的功能。SACM-LIB库中模块及算法类型如表3.1所示。表3.1SACM-LIB库中模块及算法类型模块名称(Model-Index)语音压缩编码率类型资料采样率SACM_A200016Kbit/s,20Kbit/s,24Kbit/s16KHzSACM_S480/S7204.8Kbit/s,7.2Kbit/s16KHzSACM_S2402.4Kbit/s24KHzSACM_MS01音乐合成(16Kbits/s,20Kbits/s,24Kbits/s)16KHzSACM_DVR(A2000)16Kbit/s的资料率,8K的采样率,用于ADC通道录音功能6KHz存储喇叭D/A转换A/D转换编码处理麦克风存储喇叭D/A转换A/D转换编码处理麦克风图3.1单片机对语音处理过程3.2.3语音识别原理在前面我们已经介绍过语音识别的一些相关的内容,SPCE061的特定语者辨识SD(SpeakerDependent)即语音样板由单个人训练,也只能识别训练某人的语音命令,而他人的命令识别率较低或几乎不能识别。调用训练模块TrainWord(intWordID,intRespondID)初始化BSR_DeleteSDGroup(0)图3.调用训练模块TrainWord(intWordID,intRespondID)初始化BSR_DeleteSDGroup(0)初始化识别器BSR_InitRecognizer(BSR_MIC)初始化识别器BSR_InitRecognizer(BSR_MIC)启动实时监控BSR_EnableCPUIndicator()辨识处理BSR_GetResult()识别部分识别部分图3.2语音识别原理框图3.3软件设计3.3.1语音压缩编码语音压缩编码中的数据量是指:数据量=(采样频率×量化位数)/8(字节数)×声道数目。压缩编码的目的:通过对资料的压缩,达到高效率存储和转换资料的结果,即在保证一定声音质量的条件下,以最小的资料率来表达和传送声音信息。压缩编码的必要性:实际应用中,未经压缩编码的音频资料量很大,进行传输或存储是不现实的。所以要通过对信号趋势的预测和冗余信息处理,进行资料的压缩,这样就可以使我们用较少的资源建立更多的信息。按照实现的功能来分,语音合成可分两个档次:(1)有限词汇的计算机语音输出(2)基于语音合成技术的文字语音转换(TTS:Text-to-Speech)按照人类语言功能的不同层次,语音合成可分为三个层次:文本到语音的转换过程如图3.3所示。文本输入合成语音输出词典及语言规范韵律处理语音合成文本处理文本输入合成语音输出词典及语言规范韵律处理语音合成文本处理语音数据库语音数据库图3.3文本到语音的转换过程语音辨识:早期只能辨认特定的使用者即特定语者(SpeakerDependent,SD)模式,使用者可针对特定语者辨认词汇(可由使用者自行定义,如人名声控拨号),作简单快速的训练纪录使用者的声音特性来加以辨认。随着技术的成熟,进入语音适应阶段SA(speakeradaptation),使用者只要对于语音辨识核心,经过一段时间的口音训练后,即可拥有不错的辨识率。只要按照你正常说话的速度,直接将要表达的说出来,中间并不需要停顿,这种方式是最直接最自然的,难度也最高,现阶段连续语音的辨识率及正确率,虽然效果还不错但仍需再提高。然而,中文字有太多的同音字,因此目前所有的中文语音辨识系统,几乎都是以词为依据,来判断正确的同音字。可辨认词汇数量:内建的词汇数据库的多寡,也直接影响其辨识能力。图3.4是简化的语音识别原理图,其中实线部分成为训练模块,虚线部分为识别模块。语音模式训练语音匹配复杂声学、言语条件下的语音输入语音模型声学模式训练识别结果理解结果语言模型语音处理语音模式训练语音匹配复杂声学、言语条件下的语音输入语音模型声学模式训练识别结果理解结果语言模型语音处理图3.4语音识别原理简图3.3.2凌阳音频压缩算法不同音频质量等级的编码技术标准(频响)如表3.2所示:表3.2不同音频质量等级的编码技术标准信号类型频率范围(Hz)采样率(KHz)量化精度(位)电话音200-340088宽带音频(AM质量)50-70001616调频广播(FM质量)20-15k37.816高质量音频(CD质量)20-20k44.116凌阳音频压缩算法处理的语音信号的范围是200Hz-3.4KHz的电话话音。凌阳音频压缩算法根据不同的压缩比分为以下几种:SACM-A2000:压缩比为8:1,8:1.25,8:1.5SACM-S480:压缩比为80:3,80:4.5SACM-S240:压缩比为80:1.5按音质排序:A2000>S480>S240凌阳音频形式和压缩算法:(1)波形编码:sub-band即SACM-A2000特点:高质量、高码率,适于高保真语音/音乐。(2)参数编码:声码器(vocoder)模型表达,抽取参数与激励信号进行编码。如:SACM-S240。特点:压缩比大,计算量大,音质不高,廉价!(3)混合编码:CELP即SACM-S480特点:综合参数和波形编码之优点。除此之外,还具有FM音乐合成方式即SACM-MS01。3.3.3凌阳语音的播放、录制、合成和辨识功能的分析凌阳的SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟频率可达到49MHz,具备运算速度高的优势等等,这些都无疑为语音的播放、录放、合成及辨识提供了条件。凌阳压缩算法中SACM_A2000、SACM_S480、SACM_S240主要是用来放音,可用于语音提示,而DVR则用来录放音。对于音乐合成MS01,该算法较繁琐,而且需要具备音乐理论、配器法及和声学知识,所以对于特别爱好者可以到我们的网站去了解相关内容,这里只给出它的API函数介绍及程序代码的范例,仅供参考。对于语音辨识主要有以下两种:(1)特定发音人识别SD(SpeakerDependent):是指语音样板由单个人训练,也只能识别训练人的语音命令,而他人的命令识别率较低或几乎不能识别。(2)非特定发音人识别SI(SpeakerIndependent):是指语音样板由不同年龄、不同性别、不同口音的人进行训练,可以识别一群人的命令。语音识别电路基本结构如图3.5所示:识别结果输出词典模式匹配语音滤除噪音预加重语音分析滤波器组PARCOR系数线性预测系数过零次数能量识别结果输出词典模式匹配语音滤除噪音预加重语音分析滤波器组PARCOR系数线性预测系数过零次数能量相关函数等图3.5语音识别电路基本结构3.3.4语音播放应用程序接口函数凌阳语音压缩算法有SACM_A2000、SACM_S480和SACM_S240三种格式。其中SACM_A2000A音频压缩算法的压缩比较小(8:1),编码速率可选择16kbit/s、20kbit/s、24kbit/s三种之一,具有高质量、高编码速率的特点,适用于高保真音乐和语音;SACM_S480音频压缩算法的压缩比较大(80:3),编码速率可选择4.8kbit/s、7.2kbit/s两种之一,较为节省存储容量,音质介于SACM_A2000和SACM_S240之间,适用于语音播放(如“文曲星”词库等);SACM_S240压缩算法的压缩比较大(80:1.5),价格也最低,编码速率只能选择2.4kbit/s,适用于对保真度要求不高的场合(如电子玩具产品等)。采用以上三种语音压缩算法产生的语音压缩文件都可在初始化时选择自动或手动方式播放,与SACM_A2000、SACM_S480和SACM_S240三种语音压缩算法相关的API各有13个(本系统用到10个)。这些函数的功能和格式等基本相同。本小节就SACM_A2000进行阐述。若用到SACM_S240或SACM_S480,只需将函数中的SACM_A2000更换掉,其它的不变。对于常用的SACM_A2000和SACM_S480两种放音算法要涉及到语音资源的添加问题,即将WAV文件按照我们需要的压缩比进行压缩,变成资源表形式在程序中调用。这里介绍WINDOWS下的压缩方式。语音压缩可以使用凌阳语音压缩工具(CompressTool)完成。该压缩工具支持.wav格式的语音压缩,但要求压缩语音资源属性为8KHz,16位,单声道。CompressTool软件可在凌阳大学计划网站上下载。如果语音属性不是8KHz,16位,单声道,可用Windows自带的录音及软件处理,将其压缩成8KHz,16位,单声道。3.3.5语音播放应用程序接口函数同样语音辨识也将其一些功能作成模块,并通过API调用来实现这些功能,在这里分析一些常用的API函数。初始化:【API格式】C:intBSR_DeleteSDGroup(0);ASM:F_BSR_DeleteSDGroup(0)【功能说明】SRAM初始化。【参数】该参数是辨识的一个标识符,0代表选择SRAM,并初始化。【返回值】当SRAM擦除成功返回0,否则,返回-1。训练部分:1)【API格式】C:intBSR_Train(intCommandID,intTraindMode);ASM:F_BSR_Train【功能说明】训练函数。【参数】CommandID:命令序号,范围从0x100到0x105,并且对于每组训练语句都是唯一的。TraindMode:训练次数,要求使用者在应用之前训练一或两遍:BSR_TRAIN_ONCE:要求训练一次。BSR_TRAIN_TWICE要求训练两次。【返回值】训练成功,返回0;没有声音返回-1;训练需要更多的语音数据来训练,返回-2;当环境太吵时,返回-3;当数据库满,返回-4;当两次输入命令不通,返回-5;当序号超出范围,返回-6。【备注】①在调用训练程序之前,确保识别器正确的初始化。②训练次数是2时,则两次一定会有差异,所以一定要保证两次训练结果接近③为了增强可靠性,最好训练两次,否则辨识的命令就会倾向于噪音④调用函数后,等待2秒开始训练,每条命令只有1.3秒,也就是说,当训练命令超出1.3秒时,只有前1.3秒命令有效。辨识部分:1)【API格式】C:voidBSR_InitRecognizer(intAudioSource)ASM:F_BSR_InitRecognizer【功能说明】辨识器初始化。【参数】定义语音输入来源。通过MIC语音输入还是LINE_IN电压模拟量输入。2)【API格式】C:intBSR_GetResult();ASM:F_BSR_GetResult【返回值】=R1【功能说明】辨识中获取数据。【返回值】当无命令识别出来时,返回0;识别器停止未初始化或识别未活返回-1;当识别不合格时返回-2;当识别出来时返回命令的序号。【备注】该函数用于启动辨识,BSR_GetResult();3)【API格式】C:voidBSR_StopRecognizer(void);ASM:F_BSR_StopRecognizer【功能说明】停止辨识。【备注】该函数是用于停止识别,当调用此函数时,FIQ_TMA中断将关闭。中断部分【API格式】ASM:_BSR_InitRecognizer【功能说明】在中断中调用,并通过中断将语音信号送DAC通道播放。【参数】无。【返回值】无。【备注】=1\*GB3①函数在中断FIQ_TMA中调用②当主程序调用BSR_InitRecognizer时,辨识器便打开8K采样率的FIQ_TMA中断并开始将采样的语音数据填入辨识器的数据队列中。③应用程序需要设置一下程序段在FIQ_TMA中。其中实时监控是用来观察辨识是否正常工作,如果辨识正常则会产生一16ms连续稳定方波如图4.2如果CPU超载则会产生不稳定波形如图4.3需要删除命令,或是优化程序否则会丢失语音数据产生辨识出现错误的信息。16ms16ms16ms16ms16ms16ms图3.6辨识正常产生的方波 图3.7CPU超载产生的波形第四章硬件电路设计本系统涉及到的硬件包括SPEC016A电源模块、语音输入模块、语音输出模块和小驱动模块,有关对应的SPEC016A的接口见图2.1(SPEC061A最小系统)所示。4.1SPEC016A电源模块4.1.1SPY0029芯片简介SPY0029为SOT-223封装,只有三个引脚,其中1号脚接地(GND)、2号脚为电压输入端(Vin)、3号脚为电压输出端(Vout)。SPY0029A是凌阳科技公司设计的电压调整IC,采用CMOS工艺,具有静态电流低、驱动能力强、线性调整出色的特点,为低压稳压器(输出3.3v),带有低电压保护功能。输入电压4.5V-7V,输出电流<=50mA。4.1.2电路原理分析电源电路原理如图4.1所示:图4.1电源电路原理图本系统的电源是由4节干电池(6V)提供。电池提供的6V直流电压经过SPY0029后产生3.3V的电压单片机系统供电。图中的VDDH3为SPEC016ADEI/O电平参考,如果该点接单片机的51脚,可使I/O输出高电平3.3V;VDDP为锁相环电源,接单片机的7脚;VDD和VDDA分别为数字电源和模拟电源,分别接单片机的15脚和36脚;AVSS1是模拟地,接单片机的24脚;VSS是数字地,接单片机的38脚;AVSS2是音频输出电路的AVSS2。4.2语音输入模块设计语音输入模块电路图如图4.2所示:图4.2语音输入模块语音信号由MIC输入,经过C11和C12耦合到AGC(自动增益控制)输入SPCE016A中,AGC关闭后,过前级放大和次级放大,采样、A/D转换后,存储到SPCE016A中。前级放大增益为15V,次级放大增益为60K欧,总增益约为43.3dB。其中图中VMIC是MIC电源,将MIC供电;VCM是ADC参考电压,为A/D转换提供参考电压;C6,R6是AGC外置电路;MICOUT为前级放大增益输出,经过C7耦合,R7间隔到次级增益中(OPI为次级增益输入)。4.3语音输出模块设计该模块的主要功能就是将单片机输出的音频信号放大、播放出来。4.3.1SPY0030芯片简介SPY0030封装如图4.3所示:VDD18SPNVDD18SPNCE27SPPCE27SPP6SPY0030A6SPY0030AVREF3VSSVREF3VSSACIN45INNACIN45INN图4.3SPY0030封装图表4.1SPY0030引脚功能引脚号功能引脚号功能1音频输出负极8电源2音频输出正极7片选3电源地6基准电压4信号负极5信号正极SPY0030为音频功率放大集成电路,它的放大倍率由外接电阻进行调整,最大功放倍数为20倍。适用于凌阳SPCE、SPL、SPF系列芯片。SPY0030A应用简单,也适用于其它类产品芯片。

性能特点:

1.宽电压工作范围2.4V~6V

2.双输出模式

3.低失真:THD+N=0.55%(typ)。(ForVDD=5.0v,R1=8Ω&Pout=500mW)

4.最低工作电流1.0µA

SPY0030A为音频功率放大集成电路,它的放大倍率由外接电阻进行调整,最大功放倍数为20倍。适用于凌阳SPCE、SPL、SPF系列芯片。SPY0030A应用简单,也适用于其它类产品芯片。4.3.2电路设计语音输出模块的电路图如图4.4所示:图4.4语音输出模块音频信号由单片机DAC2通道输出,接R8将语音信号转换为电压信号后,由C9进行滤波,再由R9、C12耦合接到音频功放SYP0030音频输入端(五号脚)进行功率放大,再由一号脚和二号脚接到扬声器上将声音播放出来。其中调整电位器R9的大小,可以改变声音的大小;电源由C10滤波,C11稳压接入SYP0030八号脚;SYP0030的片选(七号脚)接电源置高,即SYP0030选通;SYP0030的4、3、6和1号脚由C13滤波接地(单片机的AVSS2脚,见图2.3)。4.4车体控制模块该模块的主要功能就是根据单片机输出的小车控制命令,提供适当的功率驱动小车行驶。4.4.1L298芯片功能分析L298芯片封装如图4.5所示:图4.5L298封装图表4.2L298的引脚功能引脚号功能引脚号功能1信号A的参考电流9逻辑电平2通道1输出10通道3输入3通道2输出11信号B的使能端4电源12通道4输入5通道1输入13通道3输出6信号A的使能端14通道4输出7通道2输入15信号A的参考电流8地散热片接地L298是SGS公司的产品,比较常见的是15脚Multiwatt封装,内部同样包含4通道逻辑驱动电路,为恒压恒流桥式2A驱动芯片,可以方便的驱动两个直流电机,或一个两相步进电机。该芯片输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46V。输出电流可达2.5A,可驱动电感性负载。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。其中EnA位通道1和通道2的使能端,EnB为通道3和通道4的使能端。L298的功能逻辑如表4.3所示:表4.3L298功能逻辑EnAIn1In2运动状态EnBIn3In4运动状态0--停止0--停止110正转110正转101反转101反转111刹停111刹停100停止100停止4.4.2AMS1117芯片功能分析AMS1117为SOT-223封装,只有三个引脚。其中1号脚接地(GND)、2号脚为电压输出端(Vout)、3号脚为电压输入端(Vin)。AMS1117系列稳压器有可调版与多种固定电压版,设计用于提供1A输出电流且工作压差可低至1V。在最大输出电流时,AMS1117器件的压差保证最大不超过1.3V,并随负载电流的减小而逐渐降低。

AMS1117的片上微调把基准电压调整到1.5%的误差以内,而且电流限制也得到了调整,以尽量减少因稳压器和电源电路超载而造成的压力。4.4.3硬件电路设计小车硬件驱动电路如图4.6所示:图4.6小车硬件驱动电路图单片机控制信号由IOA0-5输出到L298中,由L298将信号放大,向负载(直流电机)提供适当的功率,供小车行驶。其中AMS1117保证了L298的逻辑电平(+5V);二极管D1-D8也具有稳压作用,保证输出线路上的电压供电机使用。小车左边两个轮由电机LEFT带动,右边两个轮由电机RIGHT带动。小车前进,两电机同时正转,指示灯D10和D12亮;小车左拐,左电机停转右电机正转,指示灯D12亮;小车右拐,右电机停转左电机正转,指示灯D10亮;小车后退,两电机同时反转,指示灯D9和D11亮。结论本系统利用凌阳单片机APCE061A实现语音控制,结合L298驱动小车,实现语音交流、控制小车的目的。如:给小车任意取名,当叫到小车的名字的时候,车回答“ok”,小车暂停;当小车准备好的时候,车说“ok,let’sgo!”;当小车要求人发出命令而人没有发命令的时候,车说“没有停到任何声音”;当外界声音比较嘈杂,小车没有识别出人发出的命令的时候,车说“请再说一遍”;当人说“前进”,车回答“ok”,小车向前行驶,前进指示灯亮;当人说“后退”,车回答“ok”,小车向后退,后退指示灯亮,同时车说“倒车请注意”;当人说“左拐”,车回答“ok”,小车向左拐,左拐指示灯亮;当人说“右拐”,车回答“ok”,小车向右拐,右拐指示灯亮;当人说“ok”,车回答“ok”,小车刹停。这样,人机同过语音交流,实现智能声控小车。通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是C语言程序设计)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。致谢参考文献[1]AdelS.SedraandKenethC.Smith.MicroelectronicCircuits.4thed.NewYork:Oxford[2]卢胜利.基于凌阳SPCE016A设计实现平台的专业综合设计教程.北京:机械工程出版社2006.12[3]徐铭泽,武明西,范展.遥控启停电动车[Z].哈尔滨:哈尔滨工程大学,2004.[4]陈伯时,电力拖动自动控制系统,第二版,北京:机械工业出版社,2000.6[5]何希才,新型实用电子电路400例,电子工业出版社,2000年,60~65[6]于平,移动机器人核心控制系统研制开发[D]哈尔滨理工大学,2005[7]张现军,基于全区覆盖自主移动机器人驱动控制与导航定位技术的研究[D]南京理工大学,2004[8]陈全福,智能移动机器人平台控制系统设计[D]哈尔滨理工大学,2006[9]赵亮,单片机应用系统设计与产品开发[M].北京:人民邮电出版社,2004[10]罗亚洲,凌阳16位单片机应用基础[M].北京:北京航空航天大学出版社,2003[11]李学海,PIC单片机实践[M].北京:北京航空航天大学出版社,2004附录主函数#include"bsrSD.h"#include"Car.h"externvoidCarSystemInit(void);externunsignedintIsFirstDownLoad(void);externvoidFormatFlash(void);externvoidTrainFiveCommand(void);externvoidSaveFiveCommand(unsignedintuiAddr);externvoidImportFiveCommand(unsignedintuiAddr_Import);externunsignedintTrainWord(unsignedintWordID,unsignedintSndIndex);externvoidPlaySnd(unsignedintSndIndex);externvoidCar_DanceAgain(unsignedintn);externvoidCar_Dance(unsignedintn);externvoidCar_Go(unsignedintn);externvoidCar_Backup(unsignedintn);externvoidCar_TurnLeft(unsignedintn);externvoidCar_TurnRight(unsignedintn);externvoidCar_Turnback(unsignedintn);externvoidF_FlashWrite1Word(unsignedint,unsignedint);externvoidF_FlashErase(int);externvoidDelay(unsignedint);intmain(void){ unsignedintuiFlagFirst; //是否为第一次下载 unsignedintuiRes; //识别结果 unsignedintuiActivated; //是否出于待命状态 unsignedintuiTimerCount; //时间是否超时 unsignedintuiBS_Team; //用于标识现在是第几组命令在内存当中 unsignedintuiKey; //存储键盘值,按下将重新训练 CarSystemInit(); uiActivated=0; uiFlagFirst=IsFirstDownLoad(); //判断是否为第一次下载程序 if(uiFlagFirst==1) { FormatFlash(); //格式化需要存储命令的存储器 TrainFiveCommand(); //训练需要的五条命令(一组) SaveFiveCommand(0xf700); //存储五条命令 PlaySnd(OK); //播放Ok,Let'sgo,表示一组命令存储结束 PlaySnd(LETUSGO); TrainFiveCommand(); SaveFiveCommand(0xf900); PlaySnd(HO); PlaySnd(HOO); PlaySnd(HOO); PlaySnd(HOOO); PlaySnd(HO); PlaySnd(HOO); PlaySnd(HOO); PlaySnd(HOOO); uiFlagFirst=0xaaaa; F_FlashWrite1Word(0xfd00,0xaaaa); } ImportFiveCommand(0xf700); uiBS_Team=0;Loop: BSR_InitRecognizer(BSR_MIC); //初始化识别器 while(1) { *(unsignedint*)0x7012=1; //清看门狗 //开始识别命令 uiRes=BSR_GetResult(); //取得识别结果 if(uiRes>0) { if(uiActivated) { uiTimerCount=0; switch(uiRes) { ca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论