TensorFlow +OpenVINO 整合开发CR-A04-熟悉AI的训练流程-以MFCC语音识别为例_第1页
TensorFlow +OpenVINO 整合开发CR-A04-熟悉AI的训练流程-以MFCC语音识别为例_第2页
TensorFlow +OpenVINO 整合开发CR-A04-熟悉AI的训练流程-以MFCC语音识别为例_第3页
TensorFlow +OpenVINO 整合开发CR-A04-熟悉AI的训练流程-以MFCC语音识别为例_第4页
TensorFlow +OpenVINO 整合开发CR-A04-熟悉AI的训练流程-以MFCC语音识别为例_第5页
已阅读5页,还剩204页未读 继续免费阅读

下载本文档

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

文档简介

1.观察事物、提取特征2.认识音讯的特征3.撰写程序,来提取MFCC特征4.熟悉AI的训练流程:以语音识别为例6.优化模型:使用OpenVINO优化器7.测试模型:使用OpenVINO推论引擎从特征出发观察事物,提取特征·科学素养,从<观察>开始。·特征(Feature)是什么?例如,天气特征:乌云密布、霜满天等。观察事物,提取特征·观察是认识现象(如事物)的起点·也是智力活动的泉源。观察的目的主要是为了了解事物外部形态和特征。·包括区分事物的一般特征(Feature)、发现事物的内在本质特征等,并且加以记录,并对结果进行描述和对比分析,以便提出新问题,进行创造性的活动。观察事物,提取特征·所谓特征,就是一件事物或一群事物,其具有与众不同的特色或表征。·例如,人们在辨别其他人的长相时,常常会观察对脸形、眼神、嘴巴、发型等特征来区分和判断,只要记住对方独特的长相特征就可以,不必记忆其他细节了。观察事物,提取特征举例-1·当您一大早从家里出门时,常常会先观察天气的特征:<乌云密布>,或是<阳光普照>。这也是天赋特征萃取能力的表现。·如果您观察到了特征:<乌云密布>和<蜻蜓纷飞>。您就会赶紧采取行动,例如:赶快去收衣服,以免被淋湿·所以这些特征与您的行动之间,具有紧密的关联性。观察事物,提取特征·玩具兔与玩具熊之间,有着明显不相同的特色或表征(即特征),请您说一说。观察事物,提取特征观察到特征如下:BCF12耳朵长度体重3输入特征:456我能识别:789耳长单位:厘米(1cm)体重单位:百克(100g)观察事物,提取特征ABCDEF12耳朵长度体重3输入特征:456我能识别:这是玩具<熊>789耳长单位:公分(1cm)体重单位:百克(100g)观察事物,提取特征让机器向人类学习·由Al向人们学习、领会人们心中的〈特征与分类〉之矢联性。间相矢联的规律。观察事物,提取特征让机器向人类学习ABCEFGH11N乌云密布阳光普照分类210(会下雨)3S01(是晴天)456789学习测试10工作表1工作表2工作表3工作表4工作表5工作表6+让机器向人类学习让机器向人类学习ABCDEFGHI1N乌云密布阳光普照分类2210(会下雨)3S01(是晴天)425C627学习中… 学习测试10工作表1/工作表2/工作表3/工作表4/工作表5/工作表6让机器向人类学习经过几秒钟之后,经过几秒钟之后,Al就学习完成了:ABCEFGHI1N乌云密布阳光普照分类2210(会下雨)3S01(是晴天)425C627完成了!89学习测试10工作表1工作表2工作表3工作表4工作表5工作表6+观察事物,提取特征习、领会人们心中的〈特征与类别〉之矢联性。·换句话说,就是进行的一次<机器学习>的过程。现在已经学习完成了。观察事物,提取特征·接着,来测试一下AI的智慧是不是有成长了:ABCEFGH11N乌云密布阳光普照分类2210(会下雨)3S01(是晴天)425C627完成了!89学习测试10<1>(会下雨)工作表1工作表2工作表3工作表4工作表5工作表6+观察事物,提取特征下<测试>按钮。这两项特征值来判断(又称预测),将其归纳为:<1>(会下雨)”。9学习测试10<1>(会下雨)观察事物,提取特征·刚才,人们萃取了<乌云密布>、<阳光普照>两项特征,并依据特征值来将天气区分为<会下雨>与<是晴天>两大也可能您从不角度而观察到更多项特征,例如增加一个新特征:<蜻蜓纷飞>。展开学习·准备好了新的考卷和答案,就可以按下<学习>按钮,来指示AI展开自我学习了。ABCDEFGHI1N乌云密布有太阳蜻蜓纷飞分类23101(快下雨了)3S010(是晴天)425C627学习中…89学习测试101K工作表工作表2/工作表3/工作表4/工作表5/工作表6分经过几秒钟之后·Al就学习完成了:BCEFGH1J1N乌云密布有太阳蜻蜓纷飞分类23101(快下雨了)3S010(是晴天)425627完成了!89学习测试100工作表1工作表2工作表3工作表4工作表5工作表6工作表7+展开学习智慧。ABCFGH1J1乌云密布有太阳蜻蜓纷飞分类23101(快下雨了)3S010(是晴天)425C627完成了!89学习测试101<1>(快下雨了)工作表1工作表2工作表3工作表4工作表5工作表6工作表7+观察事物,提取特征按下<测试>按钮。后依据它所拥有的智慧,来进行分类,就告诉您:“依据这两项特征值来判断(又称预测),将其归纳为:<1>(快下雨了)”。89学习01<1>(快下雨眼睛观察·人为提取特征/zh-mo//qi/gua/62html音讯的特征声音的三个要素讯的震幅来类比,又称为能量(Energy)。高低,可由基本频率(Frequency)来类比。同的位置和形状,就会产生不同的语音内容,可由波形的周期的变化来类比。音讯的特征声音的主要特征·声波有三重要参数:频率、幅度和相位。也就重要参数,每个音频都是独一无二的。音讯的特征频谱图播放的不同频率及其幅度。音讯的特征·语音是人类用来交流的工具,当空气从肺部进入喉咙并通过声道时,语音信号就由嘴巴产生出来。音讯的特征·于是,通常会将声音先切成多个连续或重迭的小音框(Frame),每个音框的长度大约是20ms左右,再根据音框内的讯号来提取特征。·一般而言,音框必须能够包含数个音讯的基本周期。·然后,对此音框求取特征,如过零率、音量、音高、音讯的特征MFCC倒频谱系数(特征)每个音框通常可以抽出13、26、或39维的MFCC向量。它衍生自音讯片段的倒频谱·在MFCC里,它的前12个MFCC系数用于表示频谱的形状。并且添加了高阶系数来捕捉音高和音调信息。在一般语音识别中,常常使用多达20个倒谱系数来表示其特征。音讯的特征·梅尔频率倒谱系数(MFCC)非常广泛应用于各种语音识别上。它是由Davis和Mermelstein在1980年代所提出的,至今仍是很先进的技术。·例如,当倒谱系数为正值时,就表示声音的大部分频谱能量集中在低频区域。中在高频处。音讯的特征为什么称为<倒频谱系数>·如果将它的前面四个字母顺序颠倒过来,就成为:·为什么取名为<倒频谱>呢?那是因为在计算时,会将原来的讯号频谱进行逆(倒)傅立叶转换,并且把它看成为一种新的讯号。音讯的特征演示范例:·基于上述的基本知识,就来观摩一个简单Al辨识之路。·这个范例是利用librosa套件,从一个音档里提取MFCC特征向量。范例-1范例-1:-.开后一个音档y,sr=librosa,load(filename,sr=None)开后一个音档mfcc=librosa.feature.mfcc(y=y,sr=sr)defgo():deffna="seg01.wav"filename="c:\\oopc\"+fnaprint("\n",filename)mfcc=getMFCC(filename)print("\nfeatureshape:mfcc",print("\n内容:")print(mfcc)范例-1:#sample-A04-01.pyimportlibrosafnafilename="c:\\oopc\"+fnamfccprint("\nfeatureshape:mfcc",mfcc.shape)print("\n内容:")print(mfcc)#-go()输出87个音框的特征:·每一个音框提取20个MFCC系数(特征)。[[-294.36264-296.54807-302.4214-170.75467-170.53532]139.54094131.65576][27.16437528.11264425.1832334.6942196-1.8371544][-1.9710441-4.1959195-2.5808256-11.900834-13.7162075]提取更长*wav音档的MFCC特征范例-2:defgetMFCC(filename):开后一个音档y,sr=librosa.load(filename,sr=None)开后一个音档mfcc=librosa.feature.mfcc(y=y,sr=sr)#-fna="seg02.wav"filename="c:\\oopc\"+fnaprint("\n",filename)mfcc=getMFCC(filenameprint("\nfeatureshape:print("\n内容:")print(mfcc)输出173个音框的特征:·每一个音框提取20个MFCC系数(特征)。[[-338.23212-340,40057-346.26474..,-267.5643-265.965]177.10715][27.17837128.12498525.195915...7.583745[-3.1331363-2.4861245-2.1589599..-2.6384935-14.126394][-1.9738756-4.204292-2.58894..,-4.703537-8.904102][13.7994549.2610565.991479..-3.97647292.0320022]]-277.137从各音框中,计算出特征的平均值范例-2:importnumpyasnpimportlibrosa计算平均值#--计算平均值defgetMFCC(filename):y,sr=librosa.load(filename,sr=None)mfcc=librosa.feature.mfcc(y=y,sr=sr)_fna="seg02.way"filename="c:\\oopc\"+fnamfcc=print("\nfeatureshape:mfcc",mfcc.shape)print("\n内容:")print(mfcc)内容:33.866076.49134-2.6314585-8.5173467.54083633.075771820个平均值进行标准化范例-4:###-.defstandardize(x):np.mean(x))/(np.std(xreturn(xnp.mean(x))/(np.std(x#-------进行标准化进行标准化得到标准化之后的特征:fna="seg02.wav"filename="c:\oopc\"+fnamprint("\nfeatureshape:mfcc",mfcc.shape)print("\n内容:")0.40211833-0.01128235]计算出20个0.6770627-0.02839998-0.048224710.09726492-0.045154560,043943190.524622260.11364901-0.02779708范例-5:·从原来的(20,)形状,变更为(1,20)形状。defstandardize(x):return(x-np.mean(x))/(np.std(x))变更形状变更形状defgetMFCC(filename);dataset=[]toappend=f'{mmfcc[0]}'toappendt=f'{mmfcc[i]}'dataset.append([float(i)foriintoappend.split("")])范例-5:·从原来的(20,)格式,变更为(1,20)格式。#---defstandardize(x):return(x-np.mean(x))/(np.std(x))#------defgetMFCC(filename):mfcc=librosafeaturemfccsrsry,srmfcc=librosafeaturemfccsrsrtoappend=f'{mmfcc[0]}'foriinrange(1,20):toappendt=f'{mmfcc[i]}'dataset.append([float(i)foriintoappend.split("fna="seg02.way"filename="c:\\oopc\"+fnamfccprint("\nfeatureshape:mfcc",mfcc.shape)print("\n内容:")print(mfcc)go()#End新的形状[[-3.74647332.221786540.154407030.67706265-0.028399990.52462224-0.13704140,40211830,12002468-0.048224720.097264920.113649提取多个音档的MFCC特征范例-6:defgetMFCC():dataset=[]S=3forjinrange(S):filena='seg0'+str(1+j)filename,="c:/oopc/"+filena+",wav"print(filename)y,sr=mmfcc=np.mean(mfcc,axis=1)toappend=f'{mmfcc[0]}'foriinrange(1,20):toappendt=f'{mmfcc[i]}dataset.append([float(i)foriintoappend.split("")])提取3个音档范例-6:np.mean(x))/(np.std(xdataset=[]一起进行标准化一起进行标准化toappend=f'{mmfcc[0]}'foriinrange(1,20):toappendt=f'{mmfcc[i]}dataset.append([float(i)foriintoappend.split("")j范例-6:输出的形状是:continuedmprint("\nfeatureshape:mfcc",mfcc.shape)print("\n内容:")mfcc[0]=0.06835691-0.01332975-0.03740378-0.01129435mfcc[1]=[-3.64618801e+002.22470886e+001.91055457e-011.12306591e-025,55231175e-01-9,56384342e-02输出的形状是:-0.093044250.128843050.074348540.458651230.18643160.03874814mfcc[2]=0.00734487-0.016653710.01722693apc11wav白日依山尽更上一层楼黄河入海流欲穷千里目范例-7:importnumpyasnpfrompydubimportAudioSegment#---------------Splittingdefgo():sfa="poet11.wav"filename=path+sfafna=n=len(chunks)print("\nSplited:",n,"segments")从静音处进行分割print("-------------------"从静音处进行分割foriinrange(n):k=startK+iif(k<10):fname=fna+str(0)+str(k)+",wav"chunks[i].export(path+fname,format="wav")else:fname=fna+str(k)+",wav"chunks[i].export(path+fname,format="wav")范例-7:分成为4个小音档c:/oopc/ps01.wavc:/oopc/ps02.wavc:/oopc/ps03,wavc:/oopc/ps04.way范例-8:defstandardize(x):return(x-np.mean(x))/(np.std(x))forjinrange(S):filena='ps0'+str(1+j)filename="c:/oopc/"+filena+",way"toappend=f'{mmfcc[0]}'toappend+=f'{mmfcc[i]}'dataset,append([float(i)foriintoappend.split("")])defgo():print("\n")mfcc=getMFCC()print("\nfeatureshape:mfcc",mfcc.shape)print("\n内容:")print(mfcc)提取4个小音档范例-8:9.42909639e-021.41516387e-019.41084243e-024.67435794e-02[-4.01440012e+004.05678444e-015.21489750e-021.08991705e-01-2.62341449e-032.23414784e+002.87175955e-022,34452425e-018,63538765e-031.36387951e-029.67850873e-025,74175639e-026.05221358e-023.76763349e-025,77626044e-015,35532195e-021,46301702e-016,35044638e-02输出的形状是:1.00221676e-014,48982264e-025.08571406e-029,15563677e-029.01732814e-025.06444062e-02]3,43672884e-015,47829144e-026,15380983e-025,99283995e-023.5Time(s)熟悉AI的训练流程Al模型的训练流程Al模型的训练流程范例程序观摩播音、分割音档、Al模型的训练流程演示范例:操作·按下<播放>,可以听到吟诵”白日依山尽"唐诗3遍。ABAB112234欲穷千里目,更上一层楼。45689演示范例:操作·接下来,可以看到如下Excel画面。·请您按下<分割>,就会针对poet.wav音档,在静默(半秒)的ABCEFG1示范音档的分割认识音档分割2c:/oopc/一个音档(.wav),在静默的位置切开。3poet.wav456一个小音档对映到话里一段词汇。789播放分割ABCDEFGHI1示范音档的分割认识音档分割2一个音档(.wav),在静默的位置切开。3456V一个小音档对映到话里一段词汇。789分割播放 演示范例:操作·然后,将这些音档进行归类。也就是分为4个类别,分别是:<1>类代表:”白日依山尽”字词。<2>类代表:"黄河入海流"字词。<3>类代表:“欲穷千里目”字词。<4>类代表:"更上一层楼"字词。·再依据其分类,而放入到不同的活页夹里。如下:4更上一层楼##阶段-2:展开训练·于是,分割成为12个小音档。接下来,准备利用这12个音档的特征和分类,来训练一个Al模型。如下画面:123412345789演示范例:操作·按下<读取全部资料>,就会汇入刚才所分割出来的12个音档,如下:ABFG1让AI开始学习2(1白日依山尽)3(1白日依山尽)4class45(2黄河入海流)6读取全部资料(2黄河入海流)7(2黄河入海流)8(3欲穷千里目)9ps07.wav(3欲穷千里目)ps11.wav(3欲穷千里目)AI学习(4更上一层楼)(4更上一层楼)(4更上一层楼)卷答案演示范例:操作·其中的T[]就是分类的标注(Label)。其中:<1>代表:”白日依山尽"字词。<2>代表:"黄河入海流"字词。<3>代表:"欲穷千里目"字词。<4>代表:“更上一层楼”字两分钟,就学习完成了。演示范例:操作展开学习了.ABCDEFG1让AI开始学习2c:/oopc/myPoet/(1白日依山尽)34class4(1白日依山尽)5(2黄河入海流)6读取全部资料(2黄河入海流)7(2黄河入海流)8(3欲穷千里目)9(3欲穷千里目)(3欲穷千里目)AI学习ps04.wav(4更上一层楼)(4更上一层楼)(4更上一层楼)学习中..·很快就学习完成了。ABCDEFGH1让AI开始学习2(1白日依山尽)3ps05.wav4class4(1白日依山尽)5(2黄河入海流)6读取全部资料(2黄河入海流)7(2黄河入海流)8(3欲穷千里目)9(3欲穷千里目)ps11.wav(3欲穷千里目)AI学习(4更上一层楼)(4更上一层楼)(4更上一层楼)学习完成了Al模型的训练流程9演示范例:操作9·我们就拿ps05.wav音档来测试。请您按下<Play>,可以听到这音档的声音。再按下<Al分类>,就从这音档提取mfccABCDEFGHI1输入一个音档给AI234567(测试音档)8白日依山尽黄河入海流欲穷千里目更上一层楼9演示范例:操作9征,然后依据特征来判断,而输出如下:ABCDEFGHI1输入一个音档给AI23456(测试音档)(测试音档)780.996380983.95707E-090.0031041690.000514865白日依山尽黄河入海流欲穷千里目更上一层楼开启ps07.wav音档,并提取其MFCC特征,然后判断,而输出如下:ABCDEFGHI1输入一个音档给AI萃取音档的mfcc特征,进行分类23ps07.wav45678(测试音档)90.0021759924.13981E-110.997471330.000352白日依山尽黄河入海流欲穷千里目更上一层楼Al模型的训练流程以上演示了语音Al模型的训练流程。范例实现阶段-1:准备TrainingData操作范例:延续刚才的MFCC范例:mfcc音色特征,成为训练数据。操作范例:延续刚才的MFCC范例:撰写程序:分割音档importnumpyasnpfrompydubimportAudioSegmentfrompydub.silenceimportsplitonsilenceimportlibrosafna=n=len(chunks)print("\nSplited:",n,"segments")print("---------")chunks[i].export(path+fname,k=startK+iif(k<10):从静音处进行分割分成为12个小音档让AI开始学习X[23452345678psO2.wav78psO2.wav9阶段-2:建立、并训练模型撰写程序importtensorflowastfdefgetonehot(a,b):X=np,asarray(a)T=np.zeros((X.size,b))defstandardize(x):return(x-np.mean(x))/(np.std(x))撰写程序print(dirname+fdname)print("")defgetNumClassFiledirnasubfolders=os.NumClass=len(subfolders)NumFile=0returnNumClass,NumFiledefgetMFCC(filename):mmfcc=np.mean(mfcc,axis=1)dataset=[]toappend=f'{mmfcc[0]}'foriinrange(1,20):toappendt=f'{mmfcc[i]}'dataset.append([float(i)foriintoappend.split("")])X=standardize(dataset)提取一个音档撰写程序X=Nonemodel=NoneNumClass,NumFile=,getNumClassFile(dirname)X=np.zeros((NumFile,20))a=np.zeros(NumFile)subfolders=os.listdir(dirname)k=0cc=0forfdnameinlist(subfs):#print(fdname)k+=1T=getonehot(a,NumClass)Class=NumClassN=20S=NumFileEpoch从12个小音档提取特征撰写程序model.add(Dense(256,model.add(Dense(Class,name='result'pile(loss=keras.losses;categoricalcrossentropy,optimizer=keras,optimizers.SGD(lr=1rate),metrics=['accuracy'])model.fit(X,T,4,Epoch,0)print("\n学匀完成了")ables_to_constants(sess,tf.getdefaultgraph(),asgraphdef(),['result/BiasAdd'])tf.io.writegraph(frozengraph,"C:/pb/","mfccmodel.pb",astext=False)tf.io.writegraph(frozengraph,print("--------")showtrainingdata()建立&训练c:/oopc/myPoet/ps01.wavc:/oopc/myPoet/ps05.wavc:/oopc/myPoet/ps09.wavc:/oopc/myPoet/ps02.wavc:/oopc/myPoet/ps06.wavc:/oopc/myPoet/ps10.wav3欲穷千里目c:/oopc/myPoet/ps03,wavc:/oopc/myPoet/ps07,wavc:/oopc/myPoet/ps11.wav4更上一层楼c:/oopc/myPoet/ps04.wavc:/oopc/myPoet/ps08,wavc:/oopc/myPoet/ps12.wav学习完成了Savedtoc:/pb/mfccmodel.pb·刚才已经从TensorFlow汇出*pb档案了,其路径和档OptimizerPytorch→ONNX优化模型:行优化动作。·刚才已经从TensorFlow汇出*pb档案了,其路径和步骤-1:进入优化器的工作区1.1首先从Windows的命令行窗口出发:MicrosoftWindows[版本10.0.16299.2166]1.2输入命令:cd"C:\ProgramFiles(x86)\IntelSWTools\openvino\deploymenttools\modeloptimizer"并且按<Enter>。1.3就进入到模型优化器(ModelOptimizer)的工作区了:管理员:命令提示符MicrosoftWindows[版本10.0.16299.2166]ProgramFilesIntelSWToolsopenvinode步骤-2:展开优化2.1输入命令:C:\ProgramFiles(x86)\IntelSWTools\openvino\deploymenttools\modeloptimizer>pythonmotf.py--inputmodel"C:\\pb\\mfccmodel.pb"--outputdir"C:\\pb\\"--inputshape[1,20]●这指示它:刚才从TensorFlow所产生的*.pb档案是--“C:\\pb\\mfccmode.pb”。●也告诉它:转换出来的IR档案的储存路径(文件夹),例如指定放在”C:\\pb\”里。输入资料的格式是:[1,20]。2.2优化完成了●完成时,会出现画面:SUCCESS]XMLfile:C:\\pb\mfccmodel.xmlSUC

温馨提示

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

评论

0/150

提交评论