1、目 录摘要.1关键词.1Abstract.1Key words.1引言.21 语音识别概念.21.1 语音识别概述.2111 语音识别系统.2112 语音识别的步骤.2113 语音识别的原理.32 核心微处理器的论述.321 芯片的选择.3211 SPCE061A芯片特性简介3212 SPCE061A指令系统422 SPCE061A单片机强大的语音功能4221 凌阳音频处理过程.43 系统硬件电路构成.531 系统架构.532 系统主控制器.633 话筒录音输入及AGC电路.634 硬件系统工作过程.74 系统软件设计.841 系统软件结构.842 主程序流程.8421 主程序流程图.8422
2、 A/D转换9423 数字滤波.9424 端点检测.9425 特征参数提取.10426 放宽端点限制的DTW算法.1243 编程语言的实现.135 系统功能检测.135.1 系统功能检测.13511 调试设备.13512 硬件调试.13513 软件调试.13514 联机调试.14致谢:.14参考文献:.14附录1:151基于单片机的智能家居系统的设计10电气工程及其自动化专业学生 XXX指导教师 XXXX摘要:在对语音识别研究分析的基础上,设计了一种基于SPCE061A单片机的智能家居系统。该系统主要由软件和硬件两部分组成,其中硬件由SPCE061A单片机、电话接口,扬声器等模块构成主控制器,
3、其作用是采集,分辨声音信号。由ST7537作为调制器,89C51单片机及传感器等组成的分控制器,其作用是执行命令。软件部分采用Proteus实现了声音信号的产生及处理功能的仿真。该智能家居系统结构简单、功能完善并且具有较高的性价比。关键词:SPCE061A 89C51 智能家具 语音识别DesignofSmartHomeSystemBasedonSingleChipMicrocomputerStudentmajoringinelectricalengineeringanditsautomationNameXXXXXTutor Name XXXXXXAbstract:Basedonthestud
4、yandanalysisofthespeechrecognition,designedakindofsmarthomesystemwhich using SPCE061A as the core. The system consists of hardware and software, the main controllercomprise with the hardware such as SPCE061A chip microcomputer,telephone interface,loudspeaker,thefunction of those are collect and dist
5、inguish the sounds. ST7537 as the modulator , auxiliary controllermakes of 89C51 chip microcomputer and sensor,the function of which is executive command. UsingProteus,thesoftwareachievesthefunctionofsimulationgenerationandsoundsignalprocessing.Thekindofsmarthomesystemwithasimpleconstructioncomprehe
6、nsionfeaturesandhighcostperformance.Key words:SPCE061A; 89C51; smarthome; speechrecognition2引言:随着人们生活水平的提高,对生活环境方便快捷的要求越来越高,智能家居系统应运而生。智能家居是电子技术、通信技术及自动化相结合的产物。通过语音控制,可以对家电设备进行调控、安全检测等,能够为用户提供安全舒适、高效便利的生活环境。语音识别技术是实现人机通信的一种重要的技术手段,语音识别与语音合成技术的结合使人们能够摆脱键盘,通过语音命令实现控制功能。语音技术的应用已经成为一个具有竞争性的新型高技术产业,语音识别产
7、品在人机交互应用中已经占到越来越大的比例。目前,语音识别技术主要有两个发展方向,即大词汇量的语音识别系统和小型化、便携式的语音识别系统。其中,大词汇量的语音识别系统算法复杂,实现难度大,主要用于听写机等设备;小型的语音识别系统,尤其是基于特定人孤立词的语音识别系统,在很多行业中已经有了广泛的应用本文介绍一种以凌阳16位SPCE061A单片机为平台的嵌入式特定人语音识别系统。利用SPCE061A丰富的语音处理功能,在已有的电力线和电话线的基础上,设计了一套智能家居系统,该系统结构简单、功能完善并且具有较高的性价比。1 语音识别概念1.1 语音识别概述111 语音识别系统语音识别系统本质上是一种模
8、式识别系统,它的基本结构如图1所示。语音信号是一个时间慢变化信号,可以将语音信号分为若干帧来提取语音的短时特征,在帧内按固定信号分析处理。在“特征提取”部分将数字语音信号按短时段(长度820毫秒,邻段可重叠)将数据分组,按拟定的特征提取程序算出每短时段的特征量,并将他们组成序列予以存储,称为模板。图1语音识别基本结构图112 语音识别的步骤语音识别过程主要分为两个阶段。第一阶段为“训练”,先对系统进行训练,得出特征参数作为参考样本,存放在由Flash存储构成的模版库中。第二个阶段为“识别”,把待测的语音信号和模板库中的各个参考模板进行比较,看其与哪个模板最相似,从而判决其属于何种信号,进行相应
9、的操作。若发现与各个样板偏离均较大,可要求重新输入。3113 语音识别的原理(1)待识别语音各训练语音包括预加重、加窗分帧、端点检测等处理过程,在预处理之前还有语音信号的数字化处理过程,其中包括反混叠滤波,模/数转换、自动增益等用以去除声门激励、口鼻辐射、高于1/2采样率高频和噪声信号的影响,实现语音信号的数字化。(2)特征提取经过预处理之后的语音信号,要对其进行特征提取,即特征参数分析。该过程就是从原始语音信号中抽取能够反映语音本质的特征参数,形成特征矢量序列。目前语音识别所用的特征参数主要有两种类型:线性预测倒谱系数(LPCC)和美尔频标倒普系数(MFCC)。嵌入式语音识别系统中一般都选用
10、LPCC系数。语音特征提取是分帧提取的,每帧特征参数一般构成一个矢量,因此,语音特征是一个矢量序列。该序列的数据率可能很高,不便于其后的进一步处理,为此,有必要采用很有效的数据压缩技术对数据进行压缩处理,其中,矢量化就是一种很好的数据压缩技术。(3)参考模板库参考模式库试讲一个或多个说话者的多次重复的语音参数进行训练得到。它是声学参数模板。建立参考模式库是在系统使用前获得并存贮起来。参考模式库的建立过程称之为训练过程。(4)模式匹配识别判断模式匹配是将输入的待识别的语音特征参数同时训练得到的参数语音模式进行逐一比较分析,获得最佳匹配的参考模式作为识别结果。目前常用的语音识别算法主要有:动态事件
11、规整、离散隐马尔科夫模型,连续隐马尔科夫模型、人工神经网络。2 核心微处理器的论述21 芯片的选择211 SPCE061A芯片特性简介SPCE061A是一款基于nSP内核的16位单片机,其芯片特性如下: 工作电压:内核工作电压VDD 为3.0-3.6V(CPU),I/O 口工作电压VDDH 为2.45.5V(I/O);CPU时钟:0.32MHz49.152MHz;内置2K字RAM 和32K闪存ROM;系统处于备用状态下(时钟处于停止状态),耗电小于2A,3.6V;具备触键唤醒的功能;32位通用可编程输入/输出端口;2个16位可编程定时器/计数器(可自动预置初始计数值);7通道10位电压模/数转
12、换器(ADC)和单通道声音模-数转换器;2个10位DAC(数-模转换)输出通道;14个中断源可来自定时器A/B,2个外部时钟源输入,HOME键唤醒;具备串行设备借口;低电压复位(LVR)功能和低电压监测(LVD)功能;内置在线仿真(ICE,In-Circuit Emulator)接口。SPCE061A 的内部结构框图如图2所示。4图2SPCE061A内部结构图212 SPCE061A指令系统SPCE061A指令系统的指令格式紧凑,以字为单位,指令执行迅速快,并提供了对高级语言的支持和对数字信号处理89C51运算的支持,功能更强大。这可以大大缩产品的开发时间。此外,SPCE06IA的指令比一般单
13、片机指令系统更接近C语言。SPCE061A单片机的指令按其功能划分,可分为:1数据传送指令,包括立即数到寄存器、寄存器到寄存器、寄存器到存储器、存储器到寄存器的数据传送操作;2算术运算,包括加、减、乘、n项内积运算指令、比较运算等运算;3逻辑运算,包括与、或、异或、位测试、移位等操作;4转移指令,包括条件转移、无条件转移、中断返回、子程序调用等操作;5控制指令,如开中断、关中断、FIR滤波器的数据的自由移动等操作。这5大类指令中共有立即数寻址寄存器寻址直接寻址,变址寻址PC相对寻址6种寻址方式。22 SPCE061A单片机强大的语音功能221 凌阳音频处理过程自己录取一段不大于4Kb的WAV语
14、音文件或者从原有WAV语音文件中截取一段不大于4KB的语音。然后用凌阳语音压缩工具压缩,再将压缩后的文件添加到凌阳公司提供的开发环境中,程序经过单片机处理后,语音通过喇叭播放出来,如图下图3所示:5图3凌阳SPCE061A音频识别过程3 系统硬件电路构成31 系统架构系统主要由主控制器、分控制器(89C51)、电话接口和电力线载波通信等几部分组成。本系统使用了大量的硬件电路来完成部分功能模块,其目的就是充分利用硬件电路的可靠性和稳定性以使系统达到较高的性能。系统的总体结构如下图4所示。图4系统硬件原理图主控制器模块:主要完成语音指令的识别和发送控制信号,语音指令由麦克风或者是电话接口上的语音通
15、路输入。分控制器模块:该模块分布于室内的各个房间,主要完成报警信号的接收和发送家用电器控制信号。电话接口模块:由DTMF 编解码电路、振铃检测电路、模拟摘挂机电路以及语音通路组成。DTMF编解码电路主要用来完成DTMF 信号的接收和发送,在本系统中主要是用来完成自动拨号和按键识别;振铃检测电路是用来检测是否有电话呼叫以及振铃的次数以便判断是不是需要进行模拟摘挂机;语音通路是语音提示和电话语音命令的通道。电力线载波通信模块:主要用来完成控制信号在电力线上的传输。632 系统主控制器系统主控制器主要由MIC 输入模块、控制模块、存储模块、功放和喇叭输出模块四部分组成,其结构如下。(1)控制单元与语
16、音识别:由SPCE061A 单片机完成。(2) MIC 输入模块:SPCE061A 的A/D 转换器有8个通道,其中有一个通道是MIC_IN 输入,专门对语音信号进行采样。选用驻极体话筒,其偏压由SPCE061A 的VMIC脚提供。该模块电路比较简单,只需外接三个电阻和电容对电流信号进行滤波就可以了。(3)功放和喇叭输出模块:SPCE061A 提供双通道10位的D/A 输出AUD1、AUD2,每个通道的输出能力是30mA。为了能驱动扬声器放音,我们将输出电路设计为由负载电阻和三极管8050组成的功放电路。(4) 存储模块:由于芯片内置的存储空间有限,为了运行复杂的识别程序,必须通过扩展必要的存
17、储芯片来完成系统的功能。在本系统中我们采用SPBA01B 和W29C040 来对SPCE061A 进行Memory 扩展。图5系统原理仿真图33 话筒录音输入及AGC电路麦克风电路如图6所示。凌阳的SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟可达到49M,具备运算速度高的优势等等,这为语音的播放、录放、合成及辨识提供了条件。本系统接入MIC电路如下图6所示,MIC为录制语音辨识命令服务。7图6话筒录音输入及AGC仿真电路图34 硬件系统工作过程当用户通过远方任何一部电话拨打家中的电话时,系统检测到电话线上出现的振铃信号并开始计数。如果五次振铃无人接听,主控制器
18、则发出摘机信号, 实现模拟摘机,并播放语音提示。用户根据语音提示输入密码,DTMF 电路将接收到的DTMF信号进行解码,并将解码后的数字信号送入CPU 验证密码是否正确, 三次输入密码错误则系统自动挂机。如果密码正确,则进一步提示用户输入控制命令,这时用户可以通过按键或者直接用口令对家用电器进行控制。如果采用口令来控制,则口令经电话线,以及电话接口的语音通道进入,SPCE061A 单片机则将采集到的话音与预先存储的模板进行比较,进行语音识别并判断出用户的指令,然后发送相应的控制信号。控制信号被送入电力线调制解调器调制后,通过电力线接口电路耦合到电力线上进行传输,控制信息也就以广播形式发送出去。
19、由电力线传送的被调制信号由分控制器系统的电力线接口电路接收并被送入ST7537 进行解调,解调后的信号被送入分控制器。每个分控制器都有自己的固定地址,分控器读取解码后的地址信息,并判断与自己的固有地址是否一致,若一致则接收数据信息并执行相应的操作,从而实现了对相应家电的控制。操作完成后,分控制器向主控制器发回确认信息,再由主控制器控制语音提示电路发出操作完成或失败的语音提示,通知电话遥控者。如果采用按键控制,用户发出的按键信(DTMF)经解码后送入CPU,CPU接收到信号后从中分析出地址信息和控制信息并发出控制信号。控制信号经ST7537 调制后通过电力线传输到分控制器,由分控制器执行相应的操
20、作。当传感器检测到警情时,就会发出报警信号,分控制器接收到报警信号,则将报警信号耦合到电力线上。中心控制器接收到报警信号后则自动拨打用户预先设置的电话号码, 电话接通后延迟两秒,系统自动播放语音报警信息。8图7工作过程图4 系统软件设计41 系统软件结构正是因为语音识别系统的硬件电路比较简单,所以语音识别系统功能的实现大部分就由软件完成。图8是主程序流程图,其系统的软件主要包括一个主程序和四个子程序,其总体结构、流程图如下:图8系统软件结构图42 主程序流程421 主程序流程图主程序流程图,如下图9所示:9图9主程序流程图422 A/D转换A/D转换的目的是将模拟语音信号转换成为数字信号,为以
21、后对语音信号进行分析处理做准备从前面对SPCE061A单片机A/D转换的原理可以知道,SPCE061A单片机对语音输入信号进行A/D转换具有其专门的通道。并对较弱的语音信号还设计了带自动增益控制的放大器。然后放大信号经采样保持模块被送至比较器参与A/D转换值的确定。为此,在A/D转换的软件设计中,采用执行速度快、占用存储空闻小的汇编语言编程。这样,可以实现语音信号的实时的数字化处理。423 数字滤波数字滤波目的是滤去音频信号(3003400Hz)频段以外的信号,减少其它信号对音频信号的干扰。滤波可以用模拟的方法实现,也可以用数字的方法实现。模拟滤波一般采用Rc电路组成免源滤波,或加上运放构成有
22、源滤波,不管用哪种方法,都需要增加硬件成本而且,随着阶数的增加,模拟滤波器的调试将越来越困难。数字滤波的好处在于没有硬件成本,当然,不包括因MCU的速度不够而必须更换MCU引起的成本增加。另外,高阶(比如100阶)滤波器对模拟滤波器来说是很难想象的,而用数字滤波器就可以实现。敷字滤波器是对数字信号实现滤波的线性时不变系统。424 端点检测测目的是检测有无语音信号的存在,确定出语音的起始点和终止点。有效的端点检测不仅能使处理时间减到最小,而且能排除无声断的噪声干扰, 从而使识别系统具有良好的识别性能。这里采用两极判别法实现,依据环境噪声的能量和过零率都低于语音信号的短时能量和短时过零率的原则,
23、首先用短时能量作为第一级判别, 然后再次基础上用短时过零率作第二级判别。环境噪声的能量和过零率获得实验获得, 过程是:先将系统上电,然后采集无语音输入时环境噪声的数据, 采样率为8KHz, 帧长为20ms(每帧包含160个采样点),采集2s的环境噪10声数据,最后将采到的数据通过单片机的串口送到PC机上进行处理,具体如下图10:图10语音端点检测图(1)语音端点判决的准确率高,尤其强调对于清音段端点的正确判决;(2)检测算法必须具有对绝大多数噪声的鲁棒性,抗干扰能力强;(3)判决准则应具有自适应性,而不是简单的固定门限判决;(4)检测算法应较简单,且运算量较小,易于硬件实现。以上特征分别是从语
24、音端点检测的准确性、稳定性、自适应性和运算量上对算法提出要求。425 特征参数提取音识别的关键问题,特征参数选择的好坏直接影响语音识别的精度。本识别系统提取线性预测倒谱系数LPCC 为特征矢量, LPCC 通过简单的递推公式由线性预测系数LPC 求得。在设计中实验表明,当选择LPC 分析阶数值为12时,对绝大多数语音信号的声道模型可以足够近似地逼近。阶数值选得过大虽然可以略微改善逼近效果, 但会加大计算量, 并可能增添一些不必要的细节, 因此本系统采用LPC 分析阶数值为12。线性预测倒谱系数LPCC 的求取采用自相关解法杜宾(Durbin)算法。具体LPC预测参数提取方法如下:采用全极点模型
25、,辐射、声道以及声门激励的组合谱效应的传输函数为: 11 P iiiS z G GH z E z A za z (1)其中P是预测器阶数,一般取10;G是声道滤波器增益。由此,语音抽样 )(ns 和激励信号 )(ne 之间的关系可以用下列的差分方程来表示:1( ) ( ) ( )P iis n Ge n a s n i (2)11即语音样点间有相关性,可以用过去的样点值预测未来样点值。对于浊音,激励 )(ne 是以基因周期重复的单位冲激;对于清音, )(ne 是稳衡白噪声。)(ZA 称作逆滤波器,传输函数为: 1( ) 1 p jjj E zA z Z S z (3)预测误差 ( )n 为:
26、1( ) ( ) ( )p jjn s n a s n j (4)要解决的问题是:给定语音序列,求预测系数的最佳估值 ja 。现在以最小均方误差作为估计模型参数的准则求 ja 。短时平均预测误差定义为: pj j jnsansEnE 1 22 )()()( (5)对 ia 求偏导,并令其为零,有 pj j insjnsansE 1 0)()()( , pi ,1 (6)上式表明采用最佳预测系数时,预测误差 )(n 与过去的语音样点正交。记 (, )n i j 为:)()(),( jmsimsEji nnn 则有: pj nnj ijia1 )0,(),( , pi ,1 (7)希望找到一种有效
27、的方法求解这组包含P个未知数的P个方程,就可以得到在语音段 ns上使均方预测误差为最小的预测系数 ja , pj ,1 。利用式(5)和(6),最小均方预测误差可以表示成: pj jn jnsnsansEE 12 )()()( (8) pj njnn jaE 1 ,00,0 (9)12语音信号具有短时平稳性,可分帧处理(540ms)。从n时刻开窗选取N个样点,分析本帧的预测系数 ja 。用于解自关方程的杜宾的递推解法窗函数在 10 Nm 之外为零,即只用 )1(,),( Nnsns 个语音样点,因此:)()(1),( 1 0 jiN m nnn jimsmsNji (10)成为自关函数,即:
28、)(),( jiRji nn (11)因此有: pj nnj iRjiRa1 )()( , pi ,1或写成: )( )2( )1()0()2()1( )2()0()1( )1()1()0( 21 pRRRaaaRpRpR pRRR pRRR nnnpnnn nnn nnn (12)简写为: ppp faR (13)求解 pia 就是对自相关矩阵 pR 求逆。一般 pR 是非奇异矩阵,它的逆矩阵存在: IRRpp 1 (14) ppp fRa 1 (15)pR 是Toeplitz矩阵。它不但对称,而且其沿着各轴向的元素值都相等。可以用Durbin迭代算法求解 pia 。426 放宽端点限制的D
29、TW算法模式匹配为系统设计中重点。目前有很多针对各种特征参数提出的模式匹配方法,如矢量量化方法、隐马尔可夫模型方法、动态时间规整DTW方法和人工神经网络方法。相对于其它算法, 虽然DTW算法对于较长语音的识别, 模板匹配运算量太大, 但对短语音(有效语音长度低于3s)的识别既简单又有效, 而且并不比其他方法识别率低,因此特别适用于短语音、特定人识别系统。但是传统固定端点匹配的DTW 算法对声头和结13尾的判断会存在较大的误差,因此本系统采用放宽端点限制的DTW算法。放宽端点限制引起的计算量增加并不大,还可以放松对端点检测的精度要求。经过这样的改进,在识别结果上有明显的改进,如图11所示:表1D
30、TW识别率比较表正确率 高效DTW算法 传统DTW算法实验一 100% 100%实验二 96% 98.90%虽然区域限制的DTW算法识别率稍低于传统的DTW算法,但是在识别率接近的识别速度明显优于传统DTW算法。在实验一中用区域限制的DTW算法识别出一个待测模式大概需要2秒,而普通的DTW算法大概需要3倍的时间。实验验证整体路径约束的DTW算法能够减少匹配算法的计算量,提高了识别速度,提高了系统的实用性。43编程语言的实现主程序见附录(1)。5 系统功能检测5.1 系统功能检测软件设计之后,我们对各个功能进行了检测和试验。在试验中,到了晚上,本系统自动关闭所有门窗,饮水机等,打开周界防范设备如
31、门磁、双鉴式探头等。到了早上六点以后,只要发现房间内有人走动,就自动开启相应房间内的窗帘,开启预定的电源开关。若家中无人并设防后,系统自动关闭所有预设电源,启动所有安防探测器。在电话监视中,一旦发现电话线路处于工作状态,就启动栓音频检测工作,实时监视线路上主人的密码,若无密码则无不执行任何动作,若有,则要求输入语音口令核对身份并执行相应的操作,整个系统设计简单可靠,成本低廉,人机接口友好,保密性好。相比与市面上普通的智能家居控制系统而言,具有性价比高,可靠性高的优点,可以说是下一代智能家居的雏形。511 调试设备根据控制系统调试的需要,准备了一些调试设备。(1)5V直流稳压电源 一台(2)万能
32、表 一个(3)PC机 一台(4)电话机 一部512 硬件调试虽然本系统主要采用单片机程序控制,但是硬件的调试工作依然是非常重要的。硬件的调试主要按照以下几部进行:第一步,检查实验电路的焊接是否正确,用万能表检查是否有短路呵断路的地方。第二步,连接好电源,检查c51单片机和SPCE061A芯片的电源和地线是否正常,是否能检测到信号。第三步,把调试程序载入单片机,利用相并联的电话发送信号,看是否成功的解码,不断的检测硬件和程序,找出原因,并及时的解决问题。513 软件调试对于本系统而言,软件所实现的功能比较多,并且该系统同时使用了89C51和SPCE061A两种单片机,采用C语言和汇编程序语言混合
33、编程,因此软件调试显得相当繁14琐。软件调试是在实验室计算机上完成的。根据控制系统的要求编写了软件后,经单片机仿真软件仿真,修改一些错误后,在与硬件一起调试。514 联机调试联机调试是系统成功完成的关键,是调试过程中非常重要的部分。虽然分模块进行调试已经顺利完成,但是由于实验室条件有限,把每个模块都做成了单面板,这样在连接起来难免会出现这样那样的问题。最后在老师和同学的帮助下,大大小小的各种问题都得到了解决,远程控制采用按键控制时,系统能够正确地执行命令。致谢:在论文完成之际,我要特别感谢我的指导老师XXXXX的热情关怀和悉心指导。在撰写论文的过程中,花费了王老师很多的宝贵时间和精力,他以渊博
34、的学识,严谨的治学态度从论文的选题,方案的确定,以及到最后完成,都给予了我详尽的指导使我不但学习了知识和技能,也学习了做人,这一切将使我受益无穷。在论文完成过程中,也得到了许多同学的宝贵建议,同时还得到许多工作过程中许多同事的支持和帮助,在此一并致以诚挚的谢意。感谢所有的关心、支持、帮助过我的良师益友。参考文献:1易克初,田斌等.语音信号处理M.北京:国防工业出版社,2000.6:128-1322谢锦辉.线性预测HMM在语音识别、压缩和增强中的应用D.华中理工大学博士文,1990:11-133赵力.语音信号处理M.北京:机械工业出版社,2003.3:100-1034何强.MATLAB扩展编程M
35、.北京:清华大学出版社,2002.7:136-1395张雄伟,陈亮等.现代语音处理技术及应用M.北京:机械工业出版社,2006.8:89-196符聪.基于定点单片机的语音控制系统研究与设计D.湖南大学硕士论文,2008.2:233-2357李峰,浦剑涛,李成荣孤立词语音识别系统的研究M.机械工业出版社,2007.7:122-1248李胜,李永新,李尚荣,笋岗,张恩东.语音控制应用系统设计J.机械工程报,2002,38:235-2379吴黎明.语音信号及单片机处理M北京:科学出版社,2007.6:136-13810WPicone.Signalmodelingtechniquesinspeechr
36、ecognitionC.Proc.ofIEEE,April199379(4):460-47512AtalB.S.EffectivenessofLinearPredictionCharacteristicsoftheSpeechWaveforAutomaticspeakerIdentificationandVerificationJ.theJournaloftheAcousticalSocietyofAmerican, 1974.5 :1304-131113D.YWong,B.H.Juang,A.H.GrayJr.An800bpsLPCVectorQuantizationVocoderJ.IEE
37、ETrans.ASSP.1999.30(5):770-78015附录1:部分程序代码:/=Result=BSR_GetResult();/ 获得识别结果if(Result0)/ 有识别结果?if(Result=NAME_ID)/ 名称PlaySnd(S_RDY,3);/ 播放待命提示音Ready=1;/ 进入待命状态if(Ready=1)/ 待命状态?switch(Result)caseCOMMAND_GO_ID:/ 识别出第一条命令GoAhead();/ 执行动作一Ready=0;break;caseCOMMAND_BACK_ID:/ 识别出第二条命令BackUp();/ 执行动作二Read
38、y=0;break;caseCOMMAND_LEFT_ID:/ 识别出第三条命令TurnLeft();/ 执行动作三Ready=0;break;caseCOMMAND_RIGHT_ID:/ 识别出第四条命令TurnRight();/ 执行动作四Ready=0;break;default:break;16主控制源程序:/=/ Theinformationcontainedhereinistheexclusivepropertyof/ SunnnorthTechnologyCo.Andshallnotbedistributed,reproduced,/ ordisclosedinwholeinpa
39、rtwithoutpriorwrittenpermission./ (C)COPYRIGHT2003 SUNNORTHTECHNOLOGYCO./ ALLRIGHTSRESERVED/ Theentirenoticeabovemustbereproducedonallauthorizedcopies./=/=/ 工程名称: Car_Demo/ 功能描述: 基于单片机的语音识别系统的实现/ 涉及的库: CMacro1016.lib/ bsrv222SDL.lib/ sacmv26e.lib/ 组成文件: main.c/ Flash.asm,hardware.asm,ISR.asm/ hardwa
40、re.h,s480.h,hardware.inc/ 维护记录: 2014-01-12v1.0/=#include“s480.h“#include“bsrsd.h“#define P_IOA_Data (volatileunsignedint*)0x7000#defineP_IOA_Dir (volatileunsignedint*)0x7002#defineP_IOA_Attrib (volatileunsignedint*)0x7003#defineP_IOB_Data (volatileunsignedint*)0x7005#defineP_IOB_Dir (volatileunsigne
41、dint*)0x7007#defineP_IOB_Attrib (volatileunsignedint*)0x7008#defineP_TimerA_Data (volatileunsignedint*)0x700A#defineP_TimerA_Ctrl (volatileunsignedint*)0x700B#defineP_TimerB_Data (volatileunsignedint*)0x700C#defineP_TimerB_Ctrl (volatileunsignedint*)0x700D#defineP_Watchdog_Clear (volatileunsignedint
42、*)0x7012#defineP_INT_Mask (volatileunsignedint*)0x702D#defineP_INT_Clear (volatileunsignedint*)0x7011#defineNAME_ID 0x100#defineCOMMAND_GO_ID 0x101#defineCOMMAND_BACK_ID 0x102#defineCOMMAND_LEFT_ID 0x103#defineCOMMAND_RIGHT_ID 0x104#defineS_NAME#defineS_ACT1#defineS_ACT2#defineS_ACT317#defineS_ACT4#
43、defineS_RDY#defineS_AGAIN#defineS_NOVOICE#defineS_CMDDIFF#defineS_NOISY#defineS_START /准备就绪,开始辨识#defineS_GJG#defineS_DCZYextern unsignedintBSR_SDModel100; /外部变量BSR_SDModel100,辨识器自带externvoidF_FlashWrite1Word(unsignedintaddr,unsignedintValue);externvoidF_FlashErase(unsignedintsector);unsignedintuiTim
44、eset=3;unsignedintuiTimecont;/=/ 语法格式:voidDelay();/ 实现功能:延时/ 参数: 无/ 返回值: 无/=voidDelay() unsignedinti;for(i=0;i0) /有语音触发? *P_IOB_Data=0x0000;switch(Result)caseNAME_ID: /识别出名称命令Stop();caseCOMMAND_GO_ID: /识别出第一条命令GoAhead(); /执行动作一:直走break;caseCOMMAND_BACK_ID:/识别出第二条命令BackUp();break;caseCOMMAND_LEFT_ID:
45、/识别出第三条命令TurnLeft();break;caseCOMMAND_RIGHT_ID:/识别出第四条命令TurnRight();break;default:break;/=/ 语法格式:voidIRQ5(void);/ 实现功能:中断服务子函数/ 参数: 无/ 返回值: 无/=voidIRQ5(void)_attribute_(ISR); /运动定时控制voidIRQ5(void) if(uiTimecont+=uiTimeset) *P_IOB_Data=0x0000;*P_INT_Clear=0x0004;/=23/ 语法格式:intmain(void);/ 实现功能:主函数/ 参
46、数: 无/ 返回值: 无/=intmain(void) unsignedintBS_Flag; /Train标志位*P_IOA_Dir=0xff00; /初始化IOA,IOA07下拉输入*P_IOA_Attrib=0xff00;*P_IOA_Data=0x0000;*P_IOB_Dir=0x0f00; /初始化IOB,IOB811同向输出*P_IOB_Attrib=0x0f00;*P_IOB_Data=0x0000;BSR_DeleteSDGroup(0); /初始化存储器RAMBS_Flag=*(unsignedint*)0xe000; /读存储单元0xe000if(BS_Flag=0xffff) /没有经过训练(0xe000内容为0xffff) TrainSD(); /训练StoreSD(); /存储训练结果(语音模型)else /经过训练(0xe000内容为0x0055) LoadSD()