北交大DSP课程设计报告_第1页
北交大DSP课程设计报告_第2页
北交大DSP课程设计报告_第3页
北交大DSP课程设计报告_第4页
北交大DSP课程设计报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、 DSP课程实验报告 语音识别学 院: 电 子 信 息 工 程 学 院指导教师: 周航老师学 生: 潘刚 王时檬 北京交通大学电工电子教学基地2014年7月21日目录DSP语音识别课程报告3一、设计任务书31. 1实验目的31.2 技术指标及设计要求31.3 设计思路31.4要求完成的任务3二、设计方案、算法原理说明42.1语音识别概述42.2硬件构成42.3语音识别算法软件实现5三、设计与调试的体会93.1测试结果:93.2实验感想13四、参考文献14附录:源程序14DSP语音识别课程报告一、设计任务书语音识别(Speech Recognition)是指让机器听懂人说的话,即在各种情况下,准

2、确的识别语音的内容,从而根据其信息,执行人的各种意图或执行特定的任务,其最终目标是实现人与机器进行自然语言通信。利用DSP可以对语音信号进行实时采集、提取语音特征向量、进行语音识别。语音识别系统对语音特征参量的提取可以采用FFT等算法,不同的参数表示不同的频谱包络。本设计要求利用DSP的DMA方式进行信号采集和信号处理,对语音信号进行实时识别。1. 1实验目的掌握利用DSP 进行语音信号采集的方法,利用DSP 对语音信号进行特征提取,从而实现语音信号的识别。学会A/D、D/A 的工作原理和使用,学会A/D、D/A 转换器的编程方法。以语音信号处理为依托,深入理解信号的抽样和重建的基本方法,提高

3、学生系统地思考问题和解决实际问题的能力。通过调用DSP CSL 库对McBSP 接口的编程,学会DSP 片上外设的使用方法。1.2 技术指标及设计要求(1)对DMA进行初始化;(2)对A/D、D/A进行初始化;(3)编写DMA中断服务程序,实现语音信号的实时识别;(4)根据识别系统的类型选择一种识别方法,采用语音分析方法分析出这种识别方法所要求的语音特征参数,作为标准模式由机器存储起来,形成标准模式库。(5)对语音进行特征参数的分析,语音信号经过相同的通道得到语音参数,生成测试模板;(6)将测试模板与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果,从而实现语音的识别。1.3 设计思路首

4、先利用DSP对语音信号进行分析,提取语音的特征参数,形成“模板”。语音识别系统对特征参量的提取可采用FFT算法。语音识别和说话人识别中的LPC倒谱和MEL倒谱,都与语音的频谱包络密切相关,不同的参数表示不同的频谱包络。识别时,对其进行特征参数的分析,识别参数可以选择平均能量、过零数或平均过零数、频谱、倒谱、线性预测系数,音长,音调,声调等超音段信息函数。最后将语音参数和模板进行比较,从而实现语音的识别。1.4要求完成的任务(1)掌握CCS的安装、设置,工程的建立、打开以及编译运行和调试方法(2)编写C语言程序实现设计要求,并在CCS集成开发环境下调试通过,利用DSP进行语音的训练和识别,实现设

5、计所要求的各项功能。(3)按要求撰写课程设计报告。二、设计方案、算法原理说明2.1语音识别概述语音识别系统的典型实现方案如图1所示。输入的模拟语音信号首先要进行预处理,包括预滤波、采样和量化、加窗、断点检测、预加重等。语音信号经过预处理后,接下来重要的一环就是特征参数提取,其目的是从语音波形中提取出随时间变化的语音特征序列。然后建立声学模型,在识别的时候将输入的语音特征同声学模型进行比较,得到最佳的识别结果。2.2硬件构成在本次实验中,我们用到的实验板是SEED-VC5502 DSK,它采用的语音处理模块是TI公司的TMS320VC5502,其主要特点包括:采用改进的哈佛结构,内部独立总线:1

6、2组:程序地址总线(PAB):1组,24位,程序数据总线(PB):1组,32位,数据读地址总线(BAB、CAB、DAB):3组,24位,数据读总线(BB、CB、DB):3组,16位,数据写地址总线(EAB、FAB):2组,24位,数据写总线(EB、FB):2组,16位。BJTU-DSP5502实验板主要包括:DSP芯片1枚(U1):TMS320VC5502300MHzSDRAM 1枚(U5):2M32bit(8Mbytes) HY57VCTFLASH 1枚(U4):256K16bit(512Kbytes) SST39VF400A-70CPLD 1枚(U2):CY37064VP100通信接口3个

7、:仿真器JTAG接口(J1)、连接到PC机USB接口(J4)和UART接口(J2)信号采集和输出端口:立体音输入接口line-in(J5,直接接电脑的语音输出端口)/麦克风输入接口(J7)/耳机音频输出接口(J6)扩展板接口(J9,J10)2.3语音识别算法软件实现2.3.1 端点检测端点检测是语音识别系统中至关重要的一步,其算法的优劣在某种程度上也直接决定了整个语音识别系统的成败作为一个完整的语音识别系统,其最终实现及使用的效果不仅仅取决于识别的算法,许多相关因素都直接影响着应用系统的成功与否。端点检测的目的就是在复杂的应用环境下的信号流中分辨出语音信号和非语音信号,并确定语音信号的开始及结

8、束。好的端点检测方法能改变语音识别软件存在的检测效果不理想、识别率低等问题。用短时能量短时过零率结合的方法,此方法实现简单,在噪声干扰不大的环境中可以取得较好的识别效果,但在实时性上还有提高的空间,采用动态窗长短时能量的方法可以在识别的实时性和识别率上有所提高。为了减小语音帧的截断效应,需要加窗处理;本实验采用hamming窗,因为矩形窗的主瓣宽度最小,旁瓣高度最高,会导致泄漏现象,哈明窗的主瓣最宽,旁瓣高度最低,可以有效的克服泄漏现象,具有更平滑的低通特性,应用更广泛。(1) 短时能量定义为:语音信号强度的度量参数短时平均能量的主要用途:可以从语音中区别出浊音来,因为浊音时短时平均能量的值要

9、比清音时短时平均能量的值大很多;可以用来区别声母和韵母的分界、无声和有声的分界等最为一种超音段信息,用于语音识别中。(2) 短时过零率:波形穿过横轴(零电平)的次数短时过零可以看作信号频率的简单度量:浊音时能量集中于较低频率段内,具有较低的过零率,而清音时能量集中于较高频率段内,具有较高的过零率。(3)短时平均幅度:短时能量对高电平非常敏感(因为计算时用的是信号的平方),为此可以用另一种度量语音信号幅度值的变化函数。即“短时平均幅度M0”定义为:这里用计算加权了的信号的绝对值之和替代平方和,因而短时处理的方法比较简单,硬件更易实现。因此本实验采用短时平均幅值和短时过零率相结合的双门限端点检测法

10、双门限端点检测顾名思义需要两级检测,即短时平均幅值检测和短时平均过零率检测。首先用短时平均幅值进行第一次判别,然后用短时平均过零率进行第二次判别。开始检测之前,为计算整体平均幅值pn,当3倍的短时平均幅值大于的整体平均幅值pn或者第m+1帧的短时过零率大于5倍的第m帧的短时过零率即Zm+15*Zm就进入语音段。当4倍短时平均幅值小于的整体平均幅值pn则认为进入结束。两种可能会引起端点检测的误判,一是短时噪音引起的误判,此时则需要引入最小语音长度门限进行噪声判定,即语音段时间小于一定数值则认定为是噪声二是语音中字与字的时间空隙引起的误判,此时需要设定最大静音长度门限来降低识别的错误率。这种双门限

11、端点检测是最常用的孤立词识别所采用的端点检测方法,其方法物理意义明确,计算量小,在安静的环境中有较好的识别率,但它也有很多不足,例如门限值需要由经验来设定,更换实验环境,则效果不理想等可以采用的改进方法:采用动态窗长短时能量检测语音端点。检测时首先要对语音信号进行加窗分帧处理,如果窗的长度过大,在提高检测速度的同时导致识别率的下降,如果窗的长度过短,在提高检测识别率的同时增加了检测的时间考虑此种情况,采用动态窗长短时能量端点检测方法,在静音段使用大窗长,进入过度段后,改用小窗长,进入语音段则使用正常窗长。短时能量主要起到的作用有以下几个方面:首先利用短时能量可以区分清音和浊音,因为浊音的能量要

12、比清音的能量大得多。2.3.2特征参数的提取临界带特征矢量:临界带特征矢量是指:将一帧信号的功率谱按频率高低分成若干个临界带,对每个临界带中的功率谱求和,即可得到相应的临界带特征矢量。把它作为每一个语音信号的特征矢量,最后对比不同语音信号的临界带特征矢量即可得到相似度。每一帧信号都对应一个若干维的临界带特征矢量,因此,无论参考帧与待测帧都对应于不同的临界带特征矢量。计算方法是:(1)第一步,求出每一帧的加窗语音Xn(m):m=0(N-1),的DFT的模平方值| Xn(k)|2此即为功率谱。做DFT变换,采样频率 为8kHz, | Xn(k)|2 与原始加窗语音信号的频谱模平方|Xn (exp(

13、 jwk)|2具有下列关系:| Xn(k)|2=|Xn (exp( jwk)|2(2)第二步,划分临界带。确定若干个临界带分割点,确定的方法是将i=1,2,3代入式: ,算出相应的 。由此可以求出f1 f2.并且,由f1与f2构成第一临界带,f2与f3构成第二临界带,以此类推。在实验数据中需要安排了12个临界带。(3)第三步,求临界带特征矢量。将每一个临界带的功率谱 求和,即可得到相应的临界带特征矢量。2.3.3特定人语音识别算法在孤立词语音识别中,最为简单有效的方法是采用DTW动态时间规整算法,设参考模板特征矢量序列为A=a1,a2,aj),输入语音特征矢量序列为B=b1,b2,bk),jk

14、。DTW算法就是要寻找一个最佳的时间规整函数,使得语音输入B的时间轴k映射到参考模板A的时间轴j上总的累计失真最小。 将己经存入模板库的各个词条称为参考模板,一个参考模板可以表示为R(1),R(2),R(M),m为训练语音帧的时序标号,m=1为起点语音帧,m=M为终点语音帧,因此M为该模式包含的语音帧总数,R(m)为第m帧语音的特征矢量。所要识别的一个输入词条语音称为测试模板,可表示为T(1),T(2),T(N),n为测试语音帧标号,模板中共包含N帧音,T(n)为第n帧音的特征矢量。为了比较它们的相似度,可以计算它们之间的失真DT,R,这里采用欧氏距离中的中的绝对平均误差:此失真度的主要优点是

15、计算简单、硬件容易实现。失真越小相似度越高。为了计算这一失真,应从T和R中各个对应帧之间的失真算起。将各个对应帧之间的失真累计起来就可以得到两模式间的总失真。很容易想到的办法是当两模式长度相等时,直接以相等的帧号相匹配后累加计算总失真,而当两个模式长度不等时则利用线性扩张或线性压缩的方法使两模式具有相等长度,随后进行匹配计算失真度。但由于人类发音具有随机的非线性变化,这种方法效果不可能是最佳的。为了达到最佳效果,可以采用动态时间规整的方法。如图所示,横坐标对应“1”这个字音的一次较短的发音,经过分帧和特征矢量计算后共得到一个长度为43帧的语音序列,而纵坐标对应“1”这个字音的一次较长的发音,该

16、语音特征序列共有56帧。为了找到两个序列的最佳匹配路径,现把测试模式的各个帧号n=1N(N=43)在一个二维直角坐标系中的横轴上标出,把参考模式的各帧号m=1M(M=56)在纵轴上标出。 通过这些表示帧号的整数坐标画一些纵横线即可形成一个网格,网格中何一个节点(n,m)表示测试模式中的某一帧和参考模式中的某一帧的交汇点。动态时间规整算法可以归结为寻找一条通过此网格中若干交叉点的路径,路径通过的交叉点即为参考模式和测试模式中进行失真计算的帧号。路径不是随意选择的,首先任何一种语音的发音快慢可能有变化,但是各部分的先后顺序不可能改变,因此所选的路径必定从左下角出发,在右上角结束。其次为了防止漫无目

17、的的搜索,可以删去那些向n轴方向或者m轴方向过分倾斜的路径(例如,过分向n轴倾斜意味着R(m)压缩很大而T(n)扩张很大,而实际语音中这种压、扩总是有限的)。为了引入这个限制,可以对路径中各通过点的路径平均斜率的最大值和最小值予以限制。通常最大斜率定为2,最小平均斜率定为12。路径的出发点可以选择(n,m)=(1,1)点,也可以选择(n,m)=(1,2)或(1,3)或(2,1)或(3,1)点出发。前者称为固定起点,后者称为松弛起点。同样,路径可在(n,m)=(N,M)点结束,也可以在(n,m)=(N,M-1)或(N,M-2)或(N-1,M)或(N-2,M)点结束。前者称为固定终点,后者称为松弛

18、终点。 D=min(i)i=1MdTi,R(i)式中,dTi,R(i) 是第i帧测试矢量Ti和第j帧模板矢量Rj之间的距离测度,D则是处于最有时间规整情况下两矢量之间的匹配路径。实际中采用动态规划技术来加以具体实现的。动态规划是一种最优化算法。总代价函数的计算式为Dc(k)=dc(k)+min Dc(k-1)式中,dc(k)为匹配点c(k) 本身的代价,min Dc(k-1)是在c(k)以前所有允许值(由路径限制而定)中的最小的一个。一次总代价函数是该点本身的代价与达到改点的最佳路径的代价之和。由于DTW不断地计算两矢量的距离以寻找最优的匹配路径,所以得到的是两矢量匹配时积累距离最小的规整函数

19、,这就保证了它们之间存在最大的声学相似特性。使用DTW算法为核心直接构造识别系统十分简单,首先通过训练得到词汇表中各参考语音的特征序列,直接将这些序列存储为模板。在进行识别时,将待识语音的特征序列依次与各参考语音特征序列进行DTW匹配,最后得到的总失真度最小且小于识别阈值的就认为是识别结果。该方法最显著的优点是识别率极高,大大超过目前多数的HMM语音识别系统和VQ语音识别系统。但其最明显的缺点是由于需要对大量路径及这些路径中的所有节点进行匹配计算,导致计算量极大,随着词汇量的增大其识别过程甚至将达到难以接受的程度,因此无法直接应用于大、中词汇量识别系统。三、设计与调试的体会3.1测试结果:由于

20、,程序要求说话人一秒中要把话说完,因此,对实验结果有重大影响的是语音信号是否完整的输入进来了,能否完整的被提取。对此问题的最好的解决办法是直接看输入语音波形是否完整,提取语音波形是否占语音信号足够的比例。通过CCS软件的view中的Graph选项,即CCS的视图工具,我们可看到输入波形。如下图:训练样本1,2,0: 测试结果及分析:识别1,2,0:通过多次数据的采集及结果分析:据实际测试数据,系统识别率大约在90%左右。识别率较高,但还未达到理想状态100%,分析原因可能有以下几点:1、程序中端点检测的门限是由经验所得,不能完整获得语音的起点和终点,同时,不确定的外界噪音干扰也会影响端点的检测

21、。2、特征提取算法不够完善及提取特征比较单一,只是语音信息提取不够完整,致使语音的比较产生较大误差。3、DTW算法本身在噪声比较小的环境中才会用较高的识别效果,实验室环境中噪声相对较大,因此,在一定程度上降低了识别率。4、模板的录入也是经过此算法,因此,录入模板过程和测试过程,外界环境和说话者发音不可能一样,这也会造成最后结果产生偏差。3.2心得体会潘刚:这次实验,我们从一开始对软件都不熟悉到最后把实验完成,收获十分巨大。起初面对语音识别这样一个题目,我们几乎无从下手,只能把老师发的课件从头到尾仔细看了好几遍,然后才开始行动起来。首先我们从pudn下载了一份语音识别的源程序,结果发现他是用于5

22、402开发板的,我们便根据他的程序找到了我们自己程序的思路,然后,我们开始编写自己的程序。程序的编写过程并不轻松,我们遇到了各种各样的问题,单是主程序就有20多处编译错误。最后我们通过组内合作乃至组间合作,终于完成了编译。编译完成后就是调试了,在调试中,总觉得自己特别傻,整个下午或晚上一直在对着机器说“0”“1”“2”,他就是不听话。小小一个实验都要这样,可见科研的成功需要的是怎样的一种坚持不懈的精神。必须不断培养坚持不懈的精神。通过此次试验,我不但了解、学习了很对关于语音识别方面的知识,同时,还使我更加深入的理解了DSP的原理及其在电子制作过程中所起的重要的作用。训练了短短两节课中所讲的内容

23、,并通过实地的实验设计、操作极大地补充了课堂内容,实现了学习和实践的互通。王时檬:通过本次课程设计,我了解到对于语音识别所需要的最基本的理论需求,由于之前用过一些音频的处理软件,对于语音信号的处理也仅仅停留在调整音调高低的情况,也不明白其中的原理,通过本次的课程设计了解到对语音信号的识别是通过对于声音频谱的获取以及分析,从而达到对于语音信号识别的目的。 在课程设计开始之前也接触过CCSV5的开发环境,但是由于我只使用过CCSV5的图形化编程的功能,并且CCSV5的工程与CCSV3的工程并不兼容,因此在实验最初中也遇到了不少的问题,在经过上网查找相关资料和参考程序,以及整理大体思路及框架后,才按

24、照题目的要求逐渐一步一步的实现了所需的功能。通过本次课程设计,我不但学习了语音信号处理的相关原理及步骤,同时还进一步了解了数字信号处理的相关应用以及具体流程,我认为应多开展这样的课程,让我们用所学的理论指导我们的实际操作,在实践中结合相关理论,进一步深化应用层面的知识,从实践中来,到实践中去。四、参考文献1 高海林,钱满义 .DSP技术及其应用自编讲义,20052 谭浩强.C程序设计(第二版)清华大学出版社,2003 3 邹鲲等.MATLAB 6.x信号处理清华大学出版社,20024 常丹华,郑春蕾. 基于DSP的语音识别智能控制系统B电子测量技术,20085 何翔,刘大健. 孤立词语音识别系

25、统的DSP实现A自动化技术,2009附录:源程序#include #include #include #include #include #include #include #include #include #include #include #include #include 5502_FLASH.h#include E2PROM_Function.h#include CODEC.h/#undef MCBSP_DRR1_ADDR/#define MCBSP_DRR1_ADDR 0x1A#undef CODEC_ADDR #define CODEC_ADDR 0x1A/ 定义McBSP的句柄

26、MCBSP_Handle hMcbsp;#define VOICELEN 8000 /声音的长度#define SHIFT 160 /每帧的样本点数#define WINDOW 256 /窗的长度#define WEISHU 16 /维数#define CEPBUFFERLEN 16*16 #define MAXREAL 0.0#pragma DATA_SECTION (jf,.input) /自定义数据段 DATA jfWINDOW;/* Define and initialize the GPT module configuration structure */ GPT_Config My

27、GptConfig = 0, /Emulation management register0, /GPIO interrupt control register0, /GPIO enable register0, /GPIO direction register0, /GPIO data register;/* Create a TIMER_Handle object for use with TIMER_open */GPT_Handle hGpt;Uint16 i = 0;Uint16 j = 0;/* 通过定义宏来控制两个外围存储器映射的寄存器,从而实现对GPIO口的控制 */#defi

28、ne GPIODIR (*(volatile ioport Uint16*)(0x3400)#define GPIODATA (*(volatile ioport Uint16*)(0x3401)/*/* Function Prototypes */*/void tezheng(DATA *fan); /提取特征向量的函数的声明 void checkstart(); /断点检测的函数声明 void recvoice(); /语音识别的函数声明void train(); /训练或学习的函数声明void delay(signed int period); /延时子程序float dtw(DATA

29、*cep,DATA *rcep); /dtw算法的函数声明 DATA min(DATA a,DATA b,DATA c);float lmin(float a,float b,float c);/*/* Global Variables */*/HANDLE hHandset; /MCBSP_Handle hHandset; signed int dataVOICELEN;DATA tempdataWINDOW;int begin=0; int end=0; int start=0; /int t=3;int count=0; unsigned int num_frame=0; unsigne

30、d int dest=0x8000; int checkresult=-535; DATA cepCEPBUFFERLEN=0; DATA rcep0CEPBUFFERLEN=0; DATA rcep1CEPBUFFERLEN=0; DATA rcep2CEPBUFFERLEN=0; /*/* MAIN */*/ void main()unsigned int i=0;unsigned int j=0;/int t=3; float hammingWINDOW; DATA fanCEPBUFFERLEN; for(i=0;iWINDOW;i+) hammingi=0.54-0.46*cos(2

31、*i*3.14159/(WINDOW-1); /汉明窗 CSL_init(); PLL_setFreq(1, 0xC, 0, 1, 3, 3, 0); Emif_Config(); / hGpt = GPT_open(GPT_DEV0, GPT_OPEN_RESET);/* Write configuration structure values to Timer control regs */ GPT_config(hGpt, &MyGptConfig); /* Config GPIO7 in order to ignite led D5*/ GPIODIR = 0x80;/ config

32、the GPIO7 as output pin hMcbsp=MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET); Mcbsp_Config(hMcbsp); I2C_cofig(); inti_AIC(); while(1) i=0;printf(ONEn);delay(6000);printf(TWOn);delay(6000);printf(THREEn);delay(6000); printf(开始录音n); /delay(6000); while (iVOICELEN) /* 左通路数据 */while(!MCBSP_rrdy(hMcbsp);datai

33、 = MCBSP_read16(hMcbsp);datai/=10; i+; checkstart(); /检测开始 fan0=num_frame; /将帧数放入fan0函数中 printf(语音起点:%dn,start); printf(语音终点:%dn,end); printf(有效语音数目:%dn,end-start); printf(有效帧数目:%dn,num_frame); if(num_frame!=0) for(i=start-1;iend-1;i=i+SHIFT) for(j=0;j=4) recvoice(); num_frame=0; else; begin=0; end=

34、0; start=0; delay(10000); /延时后 重新开始接收数据 /*/*端点检测*/void checkstart() int i,j,m=0,k=0,zSHIFT=0,zeroVOICELEN/SHIFT=0; float en=0,pn=0; double shorten,shortpn;for(i=0;iVOICELEN;i+) en=en+abs(datai); pn=en/VOICELEN; /计算所有取样信号的平均幅值for(j=0;jSHIFT;j+) zj=0.5*abs(dataj+1/abs(dataj+1)-dataj/abs(dataj);/z存一帧语音

35、的过零点数 zero0=zero0+zj; /zerom存第m段的过零点率for(i=0;iVOICELEN;i=i+SHIFT) shorten=0; shortpn=0; for(j=0;jpn)|(zerom-1*5pn或者过零率检测到语音段开始 if(start=0)start=i;begin=1;if(begin=1)&(shortpn*4pn)/当shortpn*5=4) count=4; end=i;break; if(begin=0) printf(没有语音输入n); if(end=0&begin!=0) printf(语音信号太长n);begin=0;k=(end-start

36、)/SHIFT;if(k0) num_frame=k;else num_frame=0;/*printf(%dn,num_frame);*/void tezheng(DATA *fan) /特征提取函数 int i,j,k,m=1;float ff18,jjWINDOW,teWEISHU=0;for(j=0;jWINDOW;j+)jfj=tempdataj; cbrev(jf,jf,WINDOW/2); /输入序列jf倒序,倒序后存入jf中 rfft(jf,WINDOW,SCALE); /就算实序列FFT,将频谱存放在jf中for(i=0;iWINDOW+1;i=i+2) jjm=jfi*jf

37、i+jfi+1*jfi+1; m+; for(j=1;j=17;j+) ffj=1960*(j+0.53)/(26.28-j);/划分临界带for(j=1;jWEISHU+1;j+)for(k=WINDOW*ffj/8000+1;k=WINDOW*ffj+1/8000;k+)tej=tej+jjk; /求临界带内频率带功率谱叠加for(i=0;iWEISHU;i+)fani=tei;/特征赋给fanvoid train(DATA *fan) int i;if(count=4)if(count=1)for(i=0;iCEPBUFFERLEN;i+)rcep0i=fani;if(count=2)for(i=0;iCEPBUFFERLEN;i+)rcep1i=fani; if(count=3)for(i=0;iCEPBUFFERLEN;i+)rcep2i=fani; if(count=4) for(i=0;iCEPBUFFERLEN;i+)cepi=fani; /*语音对比识别*/ void recvoice() / int j;float dist3; printf(开始识别!n); printf(n); dist0=dtw(cep,rcep

温馨提示

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

评论

0/150

提交评论