基于单片机的语音识别系统设计_第1页
基于单片机的语音识别系统设计_第2页
基于单片机的语音识别系统设计_第3页
基于单片机的语音识别系统设计_第4页
基于单片机的语音识别系统设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

-基于单片机的语音识别系统设计【摘要】:设计了一种由说话者说出控制命令,系统进行识别理解,并执行相应动作的语音识别系统。系统由三个模块语音采集模块、语音处理模块、单片机判断模块组合而成。说话者的指令通过咪头采集并送入语音芯片LD3320中,接着指令信号与标准库中的指令比较后,结果被送入单片机STC11l08x中进行处理。单片机输出判断结果,并驱动外部小灯“亮灭”来显示结果是否正确。该系统与传统相比较,具有结构简单,抗干扰能力强,使用方便等特点,并且系统智能化程度高,性价比好,运行可靠。【关键词】:单片机;语音信号处理;c语言;-i-Abstract:Designofacontrolcommandfromthespeakertosay,theidentificationsystemtounderstandandperformtheappropriateactionbasedspeechrecognitionsystem.Systemconsistsofthreemodules-voiceacquisitionmodule,voiceprocessingmodule,microcontrollerjudgmentmodulecombination.InstructionsthroughthespeakerintothemicrophoneandthevoicechipLD3320collectedforprocessing,thecommandsignalandstandardlibraryinstructioncomparison,theresultsaresenttothemicrocontrollerSTC11l08xforprocessing.Microcontrolleroutputjudgmentresultsanddrivesmallexternallightstoshowofftheresultsarecorrect.Thesystemiscomparedwiththetraditional,simplestructure,stronganti-interferenceability,easytousefeaturesandahighdegreeofintelligencesystems,cost-effective,reliableoperation.Keywords:Microcontroller;speechsignalprocessing;clanguage;-ii-目录前言.2第一章语音识别系统分析.3第1.1节语音识别系统结构.3第1.2节语音设计原理.3第二章语音识别系统硬件电路.9第2.1节基于STC控制电路.9第2.2节基于语音处理电路.11第2.3节基于语音采集模块电路.13第2.4节语音处理系统电路图.13第三章语音识别的实现.15第3.1节与PC机的连接结构.15第3.2节与语音处理模块的连接.16第3.3节语音识别软件设计.17第四章系统测试.22第4.1节检测结果.22第4.2节误差分析.23结论.25参考文献.26致谢.27附录.28附录1:实物照片说明.28附录2:部分源程序.28第0页前言语音识别研究工作开始于20世纪50年代。1952年,当时AT&T的Bell实验室实现了第一个可识别十个英文孤立数字的语音识别系统Audry系统。20世纪60年代,计算机的应用推动了语音识别的发展。这时期的重要成果是提出了动态规划和线性预测分析技术,其中后者较好地解决了语音信号产生模型的问题,对语音识别的发展产生了深远影响。20世纪70年代,语音识别领域取得了突破。在理论上,LP技术得到进一步发展,动态时间归正技术基本成熟,特别是提出了矢量量化和隐马尔可夫模型理论。在实践上,实现了基于线性预测倒谱和DTW技术的特定人孤立语音识别系统。20世纪80年代,语音识别研究进一步走向深入,其显著特征是HMM模型和人工神经元网络在语音识别中的成功应用。HMM模型的广泛应用应归功于ATTBell实验室Rabiner等科学家的努力,他们把原本艰涩的HMM纯数学模型工程化,从而为更多研究者了解和认识。ANN和HMM模型建立的语音识别系统,性能相当。进入20世纪90年代,随着多媒体时代的来临,迫切要求语音识别系统从实验室走向实用。许多发达国家如美国、日本、韩国以及IBM、Apple、ATT、NTT等著名公司都为语音识别系统的实用化开发研究投以巨资。当然现在的研究更加深入,相信不久的将来,会有更多的形形色色的语音应用出现在我们的生活中,为平凡的生活增添更多色彩,帮助人们过上更加美好的生活。第1页第一章语音识别系统分析第1.1节语音识别系统结构语音识别系统可以分为三个模块语音采集模块、语音处理模块、单片机控制模块。如图1-1所示。图1-1语音识别系统框图语音采集模块将声音信号变成电信号,并将电信号送入语音处理模块中。在语音处理模块里,会进行信号取样,频谱分析,特征提取,以及与语音库比较等工作,最后将语音识别结果传到单片机中。在单片机判断后再送到外部显示模块,用灯的“亮灭”显示语音识别是否成功。第1.2节语音设计原理1.2.1语音识别定义自从人类可以制造和使用各种机器以来,人们就有一个理想,那就是让各种机器能听懂人类的语言并能按人的口头命令来行动,从而实现人机的语言交流。随着科学技术的不断发展,语音识别技术的出现,使人类的这一理想得以实现。语音识别技术就是让机器通过识别和理解把语音信号转变为相应的文本或命令的高科技。语音识别是一门交叉学科,语音识别正逐步成为信息技术中人机接口的关键技术。语音技术的应用已经成为一个具有竞争性的新兴高科技产业。当今,语音识别产品在人机交互应用中已经占到越来越大的比例。语音识别简单说就是把含有人发音特征的信息变成逻辑0,1,储存在计算机中,然后利用计算机来进行处理和识别人们所说的话,并且将结果以一种看得见的方式执行显现出来。1.2.2语音识别的方法1.窗函数的选择浊音含有较大的能量,并且带有周期性,清音没浊音那样的特点,它的能量不高,且没周期性,容易被人们当做噪声而误处理掉。声音语音采集模块语音处理模块LD3320控制单元STC11l08x外部显示模块第2页考虑到现实应用性,时域分析并不能很好体现语音的特点,不过频谱分析没有那个问题。它可以表现出其语音特征,于是我们采用频谱分析的方法处理语音信号。信号从时域到频域的转换公式(1-1)jwnnjwkeskes)()(语音信号不是变到频域就结束,我们还要考虑到单片机计算速度与存储空间,所以很明显不可能将全部语音信号转换到频域之中。不过,问题也是有解决方法的,可以选择若干有限多的样本点个数,并且通过这些的样本点,基本上模拟反映出原始样本的语音特点。为了保证样本点的个数最少,且能保证由样本点组合而成的函数与原时域函数相近,这就要考虑到那奎斯特定理的应用。那奎斯特定理即采样的频率至少为采样样本最高频率的两倍。不过同时,我们要明白,理论上所设想的样本点的个数与实际的采样个数是不一致的,因为没有理想的矩形窗,这就会导致有一些原本该采到点落在窗的外面,事实上没进入我们设想中的采样点集合。换句话说,我们并没有选取到足够的样本点数。为了改善这个不足,我们一般会把采样的频率在原设想的基础上再调高一些,多采一些点。这样就算窗函数不是理想的,还是可以用采样得到点去近似模拟原函数。除此之外,现实中我们不可能把整段语音信号一下处理完的,于是操作中,都是对其进行分段处理。语音信号处理会用到FFT,而FFT分析中常常要用到窗函数,所以在FFT分析的时候,选择什么样的窗函数,这个问题就显得十分重要,因为它关系着系统误差。FFT的算法优劣关系着系统设计好坏。如图1-2所示,说明了各种窗的变化特点。我们根据各个窗的特征,比较他们在FFT分析中的优劣,这样可以选取到最合适的窗,最大可能的减少系统误差,使系统的准确率有了较高的保证。图1-2矩形窗,汉宁窗,汉明窗,布莱克曼窗频率响应不过,在我们选择窗函数前,必须要了解一下FFT的工作特点,因为窗函数是由FFT算法的最优解决定出来的。窗函数应最大可能的配合FFT,这样系统才会更有效识别第3页语音。在FFT算法中是假设信号离散化处理后是可以进行周期性延拓的,故含有该离散时间的信号都应当为周期函数,并且周期与样本点的个数无关。但是如果样本点个数的大小不是信号的周期整数倍,那么假设条件就会不成立,同时会产生频谱泄漏的后果。现实环境下所处理的未知信号一般是平稳的,但这也无法保证采样点数恰巧为周期的整数倍。频谱泄漏使给定频率分量的能量泄漏到相邻的频率点,从而在测量结果中引起误差。不过选择合适的窗函数可以减小频谱泄漏效应。根据输入数据通过一个窗函数相当于原始数据的频谱与窗函数频谱的卷积。有了FFT计算需要注意的要求以后,我们可以根据要求来选择窗函数。由上图1-2可以很明显的看到矩形窗主瓣最小,但是旁瓣较多。布莱克曼窗,主瓣最大,旁瓣衰减最快。所以这两个窗都不符合处理语音的要求,所以我们不用。语音处理的对象不仅含有低频的部分,还有高频的部分。汉明窗与汉宁窗相比,其主瓣较小,且旁瓣衰减波动平缓,处理语音的清音时更容易采集到其信息特点,并且损失信号能量较小。由上面的分析,我们可以在理论上得到选择海明窗的结论。另外在现实,我们由前人的经验也可以得到,用的最多是海明窗。基于理论和现实上的考虑,使用海明窗是个我们正确的选择。海明窗:(1-2)其他;010);1*2cos(46.5)(Nnnw选择好窗函数后,我们还有需要注意的地方,就是那个样本点的个数问题。现实中我从理论资料查到下面的结论。窗的衰减与持续时间没有必然的关系,N的加大仅仅为了缩小主瓣的带宽。生活中样本点很少的话,短时能量会大幅度增加,但是样本点如果太多的话,可能会将短时的能量给其平均化,样本的特征可能就给掩盖掉了,不能反映语音的特点,所以识别也就不会成功。这个结论,给我们采样点的个数有了一个提示,不是越多越好。语音识别的对象有男有女,且信号长度一般为10ms到30ms之间。于是考虑到女的音频较高(样本点较少约16个),男的音频较低(样本点较多约250个)所以取男女样本的中位数200个。在具体的操作中,要保证含有至少两个音调周期,既保证频谱会出现周期性的现象。这样能提高系统识别的正确率,不会将信号当成噪声而不进行识别。2.LPC介绍有了上面的基础,可以更加具体深入的探讨处理语音技术的方法,由于采集的样本点个数不多,且识别的精确度要求不是太高,我们就采用LPC分析法。第4页LPC分析中需要注意的有两点。1.用的是短期相关的模型化。2.一个低阶的滤波器来进行过滤。为了更好表述,就用框图来进行理论的说明。清音/浊音开关输出语音GS(n)图1-3LPC处理语音的步骤根据图1-3系统的传递函数为(1-3)NijMjjzabGzXSH1)()(对于上面的公式1-3,如果分母的次数较高,那么我们可以用全极点的模型来代替上面那个公式,简化成一个新的公式1-4。(1-4)PjjzaGzH1)(我们不妨再进一步变化,可以将公式(1-4)变换到时域中。那么便得到公式1-5,(1-5)Pjjnsxns1)()(这个就是LPC的差分的方程。根据这个方程,我们可以知道,当可以得到s(n)的测量值,就可以算的到对应的参量值,然后又可以利用参量值,去反推H(z)的参量。ja另外为了说明误差的大小,可以用平方误差来量化说明。(1-6)Pjjnsasne1)()(误差的公式:(1-7))()()(212PjjssEe对进行求导,是j=1,2,3P为零。我们得到ja音调周期脉冲序列发生器无归噪声发生器时变滤波器LPC系数x(n)u(n)第5页(1-8)0)()(1jnsjansEPj即:(1-9)),(),(1ijinPjn对于i=1,2,p其中(1-)(),(jnsiEjin10)由于公式(1-10)是有限的且稳定的信号,我们可以用有限项求和来替代。到了这里,仔细研究公式(1-10)可以发现它有结构组成上特点,于是很容易想到自相关公式。对于自相关的公式,我们有下面要注意的地方。在波形段在间隔)(msn之外假设为零,样品序列长度为N。那么,对于,要预测样品10NmPN的值,因为实际上不是零,所以过去的不精确的结果,会对未来预测产生影响。自相关的公式:(1-11))(10,1),(),(jiNmnnpjijisji作参量变换:;iim变换得到:(1-12)iPNimnnjisji1)(),(考虑到只能在之内取值,其余的地方为零。所以式(1-12)可)(msn0以改写为:(1-)(),(10jisjinjiNmnpji0,113)公式(1-13)又可以变成短时间自相关函数:对于i=1,pj=0,p(1-14)(),(jiRjinn其中Nmnjs10)(又因为自相关,又可以变成(1-15))(1iRjianPjnPi1在我们的LPC分析公式中,我们假设,如果结果是满意的,那么所估计的参量应ja该等于我们模型的这些参量,也就是,如果两者相同,那么e(n)=Gx(n)=u(n),也就是说j第6页残差就是激励信号。要得到e(n),就可以用传输函数的逆滤波器逆滤波器公式:(1-16)pjjzazH11)(因为S(z)=H(z)U(z),则U(z)=S(z),从上面的表达式中可以看出,误差信号或激励信号是非常有用的。理由之一是由于逆滤波以后,所得到误差信号e(n)和原始信号s(n)相比有比较小的变化。另外我们还发现,由LPC频谱去匹配信号的频谱包络时,在频谱峰值比频谱谷值要更好一些,这是因为我们的模拟传递函数H(z),只有极点模拟共振峰的峰值,没有零点的模拟频谱谷值。第7页第二章语音识别系统硬件电路第2.1节基于STC控制电路2.1.1STC11l08x单片机介绍增强型8051CPU,IT,单时钟机器周期,指令代码完全兼容传统8051。工作电压:3.6V-2.4V2.1V(3V单片机);工作频率范围:035MHz,相当于普通8051的0420MHz。通用I/O口(36/40/12/14/16个)每个I/O口驱动能力均可达到20mA。常温下内部R/C振荡器频率为:4MHz8MHz;精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准。共2个16位定时器(与传统8051兼容的定时器计数器,16位定时器TO和T1)。有1个独立波特率发生器(故必用T2做为波特率发生器)。3个时钟输出口,可由TO的溢出在P3.4/TO输出时钟,可由Tl的溢出在P3.5/TI输出时钟,独立波特率发生器可以在Pl.0口输出时钟。外部中断I/O口5路,传统的下降沿中断或低电平触发中断,PowerDown模式可由外部中断唤醒,INTO/P3.2,INTl/P3.3,INT/TO/P3.4,INT/T1/P3.5,INTINT/RxD/P3.0r或INT/RxD/P1.6。2.1.2单片机的最小系统就51系列单片机而言,最小系统一般应该包括:晶振电路、复位电路,但是本设计采用的STC11l08x是增强型51单片机,它除了上面最基本的部分还有其他部分,如A/D转换等,但这里就只介绍两大部件。4689*VCuF/v?KRP.XDLMTIQ图2-1复位电路第8页复位电路由电容串联电阻构成,如图2-1所示,根据电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。一般教科书推荐C取10u,R取8.2K。当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。至于如何具体定量计算,可以参考电路分析相关书籍。13456790LD-KA_SP.pxXT图2-2晶振电路如图2-2所示,典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的us级时歇,方便定时操作)有了上面的分析,单片机控制系统可以设计出来,如图2-3所示。/INWGEV*omnetuFv?MQ图2-3STC11l08x系统图第9页第2.2节基于语音处理电路2.2.1LD3320介绍LD3320芯片是一款“语音识别”专用芯片,由ICRoute公司设计生产。该芯片集成了语音识别处理器和一些外部电路,包括AD、DA转换器、麦克风接口、声音输出接口等。本芯片在设计上注重节能与高效,不需要外接任何的辅助芯片如Flash、RAM等,直接集成在现有的产品中即可以实现语音识别声控人机对话功能。并且,识别的关键词语列表是可以任意动态编辑的。不需要外接任何辅助的Flash芯片,RAM芯片和AD芯片,就可以完成语音识别功能。真正提供了单芯片语音识别解决方案。每次识别最多可以设置50项候选识别句,每个识别句可以是单字,词组或短句,长度为不超过10个汉字或者79个字节的拼音串。另一方面,识别句内容可以动态编辑修改,因此可由一个系统支持多种场景。芯片内部已经准备了16位A/D转换器、16位D/A转换器和功放电路,麦克风、立体声耳机和单声道喇叭可以很方便地和芯片管脚连接。立体声耳机接口的输幽功率为20mW,而喇叭接口的输出功率为550mW,能产生清晰响亮的声音。支持并行和串行接口,串行方式可以简化与其他模块的连接。电压要求:VDD数字电路用电源输入3.0V-3.3VVDDIO数字1/0电路用电源输入1.65V-VDDVDDA模拟电路用电源输入3.0V-4.0V建议用户可以用统一的3.3v电压输入以简化设计。数字电压和模拟电压进行隔离可以使得芯片有更好的效果。这快芯片非特定人语音识别技术ASR,是对几十G的语音数据,(相当于对数千人采集的数万小时的有效声音数据)经语言学家语音模型分析,科学家建立数学模型,并经过反复训练提取基元语音的细节特征,以及提取各基元间的特征差异。可以得到在统计概率最优化意义上的各个基元语音特征。最后才由资深工程师将算法以及语音模型转化为硬件芯片以应用在嵌入式系统中。芯片是根据人的语音频率共振来判断人的发音字母,于是我们要列出各个音的对应频率来说明,芯片如何识别字母音的。下面通过表2-1,表2-2,与表2-3说明芯片识别原理。表2-1汉语普通话语音的共振频率(hz)和幅度(db)元男声女声第10页F1F2F3F1F2F3音频率幅值频率幅值频率幅值频率幅值频率幅值频率幅值a9000120002900-12110001350+13100-15o5600800-73000-2573001100-33200-23e56001090-73000-297900125003100-12ye50002100-73100-1360002400-43300-12yi31002300-113300-736003000-33500-4zi40001390-132900-1947001750+43100-12r41001800-72800-1544002250+23300-7wu3700540-83400-204600820-23700-19yu30002100-93400-1235002600-13200-14er58001500-63200-2276001700-23200-15表2-2汉语普通话浊辅音共振频率(hz)和幅度(db)F1F2F3浊辅音频率幅值频率幅值频率幅值m28001180-142240-16n32001380-172680-17-n28001480-202830-28-ng32001200-182880-27r34001620-72610-14l31001500-92520-17yi28002200-73400-5yv29002190-63360-13wu3900670-9由现在的资料可以知道,决定元音和浊音的性质不是有共振峰频率的绝对值来决定的,它是各个共振峰频率的相对值来固定的。不过这里还要补充一下,浊音还受发音的部位影响,不过这种的影响不是太大,加上我们用的又是粗略的LRC分析法,所以关于发音部位的问题我们略过。表2-3汉语普通话清音的能量集中区清音能量集中区(hz)强频峰(hz)清音能量集中区(hz)强频峰(hz)b2001600250x250080003000,5000d3006000-h100030001500,2500g250630-z3200800063002500zh200050004000t1508000200j-5000k12060002000c4000800065006300ch25080004000s3000100006300q200080003500sh150080002500,4500由于清音共振的范围较大,且不规则,表2-3就大体表示出清音发声的频率范围。以上的数据可以给我们理解芯片工作机制提供帮助。2.2.2语音控制模块第11页P0/SDI41O2CK398756ARBWTML=HzNV.GEFQU-ext_uf?p图2-4语音处理模块语音处理模块如图2-4,这里的语音模块起着承上启下的作用。将从咪头那里传来的信号再一次进行滤波处理,使信号变得平缓,然后在芯片内会进行信号取样,频谱分析,特征提取,以及与语音库比较等工作,接着将比较后的结果传给单片机。第2.3节基于语音采集模块电路lab图2-5语音采集模块语音采集模块图2-5,是对原始语音信号进行初次滤波,去噪,变成较平缓的波形,并且还会调整语音的幅度,使其适合后面的语音处理模块。第2.4节语音处理系统电路图在上面三个基本模块了解的基础上,可以将他们合理的组合在一起。通过管脚的正确连接,模块会串联起来,这样系统就设计出来了。实际电路如图2-6第12页1234567890P.RST/XDINWALGEVC*ompnet_uFv?K-MQxOB=HzUfilgab图2-6系统电路图第13页第三章语音识别的实现第3.1节与PC机的连接结构首先要找到一个USB接口,插上你的下载器设备。接着右击“我的电脑”,进入如图3-1界面。图3-1我的电脑再然后点击“设备管理器”如图3-2图3-2设备管理器再然后点击“端口”如图3-3所示第14页图3-3端口的属性看到设备正常就可以了,说明端口无问题。上述操作的原因,是因为我们下载器用的电源是USB接口提供的,所以我们要保证其能正常的驱动工作。第3.2节与语音处理模块的连接我们用四根杜邦线将下载器与语音识别模块连接,如图3-4所示。下载器语音识别模块图3-4下载器与语音识别模块连接方式这里需要介绍一下USB(下载器)与TTL(语音识别模块)的连线原理。USB是一种常用的pc接口,他只有4根线,两根电源两根信号,usb2.0的速度可以达到480Mbps。可以满足各种工业和民用需要.USB接口的输出电压和电流是:+5V500mA实际上有误差,最大不能超过+/-0.2V也就是4.8-5.2V。USB接口的4根线一般是下面这样分配的:黑线:gnd红线:vcc绿线:data+白线:data-TTL是数字电子技术中常用的一种逻辑门电路。被利用的最多是因为通常数据表示采用二进制规定,+5V等价于逻辑“1”,0V等价于逻辑“0”,这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。USB控制是一个由硬件组成的处理系统来完成的。TTL只是数字电路。实物如图3-5。5VRXDTXDGND5VTXDRXDGND第15页图3-5实物图完成实物图的连接后,将设备插入USB,如果正常的话,因有一个灯,闪烁三下。这个灯是检验单片机好坏用的。这些看得见的外在调好以后,就要软件调节一下串口。这里我用的是这个软件,如图3-6所示。图3-6串口助手波特率之所起选择9600,是因为人们普遍情况下语音的频率在20hz-4000hz,且采样定理的限制条件,所以采样的频率至少为最高频率的两倍。不过不能过高,因为那样会采集很多的点,会降低系统处理速度,且大量占用不必要的空间,这不合适,所以9600hz为最好。至于数据位为8,则是考虑了数据存储的大小,毕竟单片机的空间有限。第3.3节语音识别软件设计3.3.1keil软件介绍Keil软件是一个很好的软件,可以编译和修改植入单片机中的程序,并且具有提醒第16页错误的功能,可以大大减少我们出错率。如图3-7所示。图3-7keil工作界面3.3.2程序设计过程STC11l08x单片机可以用C语言进行编程。主程序首先进行外部器件的初始化,然后判断口令是否出现,如果没有出现,系统继续等待口令;如果出现,则判断指令是否在指令库中,在,就执行系统中对应的程序;不在,就继续等待新的指令。主程序设计的流程图如图3-8所示。图3-8主程序设计流程开始系统初始化是否是“李明”返回等待N是否是指令库中指令Y返回等待NY执行指令对应程序结束第17页子函数是语音识别函数。首先将语音芯片初始化,然后ASR初始化,接下来是启动中断处理。当LD模块接收到音频信号时,将进入该函数,判断识别是否有结果,如果没有从新配置寄存器准备下一次的识别。进入识别后,运行ASR识别流程。识别顺序如下:1、RunASR()函数实现了一次完整的ASR语音识别流程。2、LD_AsrStart()函数实现了ASR初始化。3、LD_AsrAddFixed()函数实现了添加关键词语到LD3320芯片中。4、LD_AsrRun()函数启动了一次ASR语音识别流程任何一次ASR识别流程,都按照这个顺序,从初始化开始。最后获取识别结果。子函数如图3-9所示。NNNN语音芯片初始化,LD模块是否接收到音频信号运行ASR识别流程YASR初始化输出结果结束N开始图3-9子程序设计框图3.3.3STC-ISP介绍第18页这个软件是将keil软件编译成功后,软件自带产生.hex文件。然后接下来就可以将它烧录进stc单片机中。这个软件配合stc单片机,帮助我们摆脱了以前那种需要烧录机的麻烦方式。它可以简便完成程序传送,只需将硬件电路与pc机连接在一起。现在介绍这个软件要注意的事项,如图3-10所示。图3-10stc-isp软件界面在我们烧程序前,首先实物应连好在电脑上,然后在图3-10这个界面上,我们要选择好正确的单片机的型号,串口号(实物连接的那个USB接口号),在完成上面的步骤后,点击“打开程序文件”,选中你刚才编译成功那个keil文件所属的文件夹,其中应看到.hex文件,选中它,它就是我们所要的程序。其他的保持默认情况,不要改变。最后一步,就是下载。点击“下载编译”,然后拔掉语音模块上的GND线,在插上去应该会出现图3-11,那就是下载成功了。图3-11下载成功的软件界面第19页3.3.4labview软件介绍这是一款虚拟测量的软件,可以在电脑上模拟出现实测量的的物理属性。用图3-12来分析语音的特点的。图3-13为显示界面,表现语音信号的波形。图3-12语音处理的框图绘制图3-13显示波形信息的界面我用这个软件是希望直观的看到,语音处理过程中波形的变化。我们已选择汉明窗,所以想观察在汉明窗下语音处理中的实际情况,这有助于理解芯片中处理波形的实际操作。另外采样频率与采样精度的理解,也可以通过实际的操作行为,获得直接的结果和感性的认识。不过采样的频率与采样的精度,这个不在我们细究的范围内。在最后进行误差分析时,我们还是会在用到这个软件的,这个软件处理波形有很多便利。第20页第四章系统测试第4.1节检测结果由于我用的是口令识别的模式即先喊口令,待其有反映后,再喊指令,观察它是否有变化。下面我通过图片来进行演示。喊口令“李明”再喊开灯图4-1图4-1执行“开灯”后,右上侧的灯会亮再喊指令“关灯”图4-2图4-2执行“关灯”后,右上侧的灯会灭这里可以看到实物是可以识别语音的。接下来我就是重复上述的检验步骤,根据识别的情况列出下列表格。表4-1语音识别情况汇总表第21页人口令指令识别成功次数李明开始结束开灯关灯云南洛阳梅州甲16/2017/2015/2016/2017/2018/2019/2016/20乙16/2015/2014/2013/2012/2012/2011/2018/20丙15/2017/2016/2012/2014/2013/2015/2014/20注:因为我用的是口令模式,要先识别“李明”才可以识别下面的指令。为了直观的看到数据的情况,所以就采用图4-3来表示。这里横坐标1-8分别表示李明、开始、结束、开灯、关灯、云南、洛阳、梅州。这里的纵坐标数值代表在20次命令下,正确识别的次数。三种形式的折线代表着三个人。12345678111213141516171819图4-3测试结果第4.2节误差分析有了上图4-3的数据,就要进行反思,为什么会出现误差?下面有我的几个猜想:1.采集语音信号时失真了,与语音芯片中的字母音标准频率点无法匹配。在labview,这个现象可以较容易的说明。同样说出“李明”三次,我们在图4.4-图4-6中可以发现当我们的发音不是一成不变的,它会受发音者的身体状态影响,产生的声音会不知不觉的改变,而这种改变不是那么的容易的被人们意识到的。实际上每次发音又不能保证一模一样,并且现实中可能波动较大,大到超出芯片识别的冗余值,但我们测量时却假设每一次都是可以被正确检测的,所以误差就产生了。第22页图4-4“李明”波形图4-5李明波形图4-6“李明”波形2.可能是采集声音的喇叭灵敏度的问题这个喇叭的灵敏度与发声者的远近,有着密切的关系,如果要收集较远的声音,那么灵敏度就要调大,但这会让噪声进入系统影响识别。为了减少这种不必要的的误差,发声者应该与咪头保持者近的距离。这样会减少噪声进入系统,提高系统识别率。第23页结论当前市场上卖的语音识别部件很多,不过他们与实际接轨的程度还不是太高,而我的这个设计,就是帮助人们在现实中享受着便利。现在我的语音识别系统可以完成我的设定,即较准确的识别出说话者的指令,并完成指令对应的具体行为。当然我的设计误差部分,现在还无法在削弱,还是有时候无法正确理解命令。对于外界的干扰,自身能抵抗的能力也是不足。在实物方面,现在还是停留在灯的“亮灭”阶段,还是没有做到更进一步的控制外在机器,不能将命令对应的行为多样化。第24页参考文献1.李光飞,李光飞等著.单片机课程设计实例指导M.北京:北京航空航天大学出版社,20052.沈红卫著.单片机应用系统设计实例与分析M.北京:北京航空航天大学出版社,20023.张戬,杨腾飞车载语音识别系统M.上海:佳木斯大学报,20114.马龙华.车载环境下语音识别方法研究D.哈尔滨:哈尔滨工程大学.2008:235.罗俊光,汤荣江.基于DSP的非特人语音识别系统J.微计算机信息,2007,23(4):126.刘晓辉.基于语音识别的车载导航系统研究D.上海:同济大学.2008:37387.王立红,樊铭渠,李芳.基于OMAP3530的音视频采集及传输实现J电脑知识与技术,2010,6(29):128.刘萌,赵建平,刘秋霞,等.基于凌阳SPCE061A的语音识别系统设计J微型电脑应用,2007,23(6):2-39.郭天祥.新概念51单片机C语言教程M.北京:电子工业出版社,201010.赵力.语音信号处理(第2版)M.北京:机械工业出版2009.第25页致谢在我的毕业设计期间,我首先要感谢我的指导老师彭静玉,是她给我提了很多宝贵的建议和意见。在中期检查的时候老师对我的论文做出了细心的指点,对我论文完善提供了很大的帮助。特别是在开学后,老师经常提醒我论文的进度,督促我学习相关的知识,不让我有偷懒的机会。其次我要感谢我的同学,正是有了他们,我才在遇到问题时,有了可以依靠的肩膀。当然,我还有可靠助手书,是它帮助我理解许多概念上的东西。正是因为有了他们的帮助和支持下我才最终解决了问题,圆满的完成自己的毕业设计。第26页附录:中英文文献翻译名称语音识别第27页附录1:实物照片说明附录2:部分源程序源程序1;#includeconfig.h/*/nAsrStatus用来在main主程序中表示程序运行的状态,不是LD3320芯片内部的状态寄存器/LD_ASR_NONE:表示没有在作ASR识别/LD_ASR_RUNING:表示LD3320正在作ASR识别中/LD_ASR_FOUNDOK:表示一次识别流程结束后,有一个识别结果/LD_ASR_FOUNDZERO:表示一次识别流程结束后,没有识别结果/LD_ASR_ERROR:表示一次识别流程中LD3320芯片内部出现不正确的状态/*/uint8idatanAsrStatus=0;voidMCU_init();voidProcessInt0();/识别处理函数voiddelay(unsignedlonguldata);voidUser_handle(uint8dat);/用户执行操作函数voidLed_test(void);/单片机工作指示voidDelay200ms();uint8_tG0_flag=DISABLE;/运行标志,ENABLE:运行。DISABLE:禁止运行sbitLED=P42;/信号指示灯/应用IO口定义(模块标注P2)sbitPA1=P41;/对应板上标号P4.1sbitPA2=P27;/对应板上标号P2.7sbitPA3=P26;/.第28页sbitPA4=P25;/.sbitPA5=P24;/.sbitPA6=P23;/.sbitPA7=P33;/对应板上标号IT1sbitPA8=P34;/对应板上标号T0sbitLED2=P10;sbitLED3=P12;sbitLED4=P14;sbitLED5=P15;sbitLED6=P16;/*名称:voidmain(void)*功能:主函数程序入口*入口参数:*出口参数:*说明:*调用方法:*/voidmain(void)uint8idatanAsrRes;uint8i=0;Led_test();MCU_init();LD_Reset();UartIni();/*串口初始化*/nAsrStatus=LD_ASR_NONE;/初始状态:没有在作ASR#ifdefTESTPrintCom(一级口令:李明rn);/*text.*/PrintCom(二级口令:1、开始rn);/*text.*/PrintCom(2、结束rn);/*text.*/PrintCom(3、开灯rn);/*text.*/PrintCom(4、关灯rn);/*text.*/PrintCom(5、云南rn);/*text.*/PrintCom(6、洛阳rn);/*text.*/PrintCom(7、梅州rn);/*text.*/#endifwhile(1)switch(nAsrStatus)caseLD_ASR_RUNING:caseLD_ASR_ERROR:第29页break;caseLD_ASR_NONE:nAsrStatus=LD_ASR_RUNING;if(RunASR()=0)/*启动一次ASR识别流程:ASR初始化,ASR添加关键词语,启动ASR运算*/nAsrStatus=LD_ASR_ERROR;break;caseLD_ASR_FOUNDOK:/*一次ASR识别流程结束,去取ASR识别结果*/nAsrRes=LD_GetResult();/*获取结果*/User_handle(nAsrRes);/用户执行函数nAsrStatus=LD_ASR_NONE;break;caseLD_ASR_FOUNDZERO:default:nAsrStatus=LD_ASR_NONE;break;/switch/while/*名称:LED灯测试*功能:单片机是否工作指示*入口参数:无*出口参数:无*说明:*/voidLed_test(void)LED=LED;Delay200ms();LED=LED;Delay200ms();LED=LED;Delay200ms();LED=LED;第30页Delay200ms();LED=LED;Delay200ms();LED=LED;/*名称:voidMCU_init()*功能:单片机初始化*入口参数:*出口参数:*说明:*调用方法:*/voidMCU_init()P0=0xff;P1=0xff;P2=0xff;P3=0xff;P4=0xff;LD_MODE=0;/设置MD管脚为低,并行模式读写IE0=1;EX0=1;EA=1;/*名称:延时函数*功能:*入口参数:*出口参数:*说明:*调用方法:*/voidDelay200us()/22.1184MHzunsignedchari,j;_nop_();_nop_();i=5;j=73;dowhile(-j);while(-i);第31页voiddelay(unsignedlonguldata)unsignedintj=0;unsignedintg=0;while(uldata-)Delay200us();voidDelay200ms()/22.1184MHzunsignedchari,j,k;i=17;j=208;k=27;dodowhile(-k);while(-j);while(-i);/*名称:中断处理函数*功能:*入口参数:*出口参数:*说明:*调

温馨提示

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

评论

0/150

提交评论