




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Matlab基于VQ的語者識別系統(tǒng)(含所有代碼)Matlab基于VQ的語者識別系統(tǒng)(含所有代碼)/Matlab基于VQ的語者識別系統(tǒng)(含所有代碼)Matlab基于VQ的語者識別系統(tǒng)(含所有代碼)SummaryAbstract:語者識別即為判斷說話的人是不是他的使用者。本組用基于VQ的語者識別系統(tǒng)系統(tǒng)模型,通過提取Mel倒譜系數(shù),制作模板碼本與測試者相應(yīng)參數(shù)進行對比,根據(jù)閾值判斷,差別最小的則認為匹配原訓(xùn)練模板,即測試者與訓(xùn)練者為同一人,否則認為不是同一人。通過此過程實現(xiàn)語者識別功能。在功能上分為兩大部分,語者判定以與實施辨別。ContentsIntroduction……………………..31.1語者識別的概念…………….31.2特征參數(shù)的提取…………….41.3用矢量量化聚類法生成碼本……………….41.4VQ的說話人識別………52.TheProgram…………………….62.1函數(shù)關(guān)系…………………….6 2.2代碼說明…………………….62.2.1函數(shù)mfcc……………….62.2.2函數(shù)disteu……………...62.2.3函數(shù)vqlbg……………72.2.4函數(shù)test…………………82.2.5函數(shù)testDB……………...82.2.6函數(shù)train……………….92.2.7函數(shù)melfb……………….93.Results&Discussion…………….104.FurtherWork……………………..121.Introduction關(guān)于語者識別:在生物辨識技術(shù)中,語者辨識是利用人類最自然的口語表達作為辨識身分的依據(jù)。語者辨識一般分為語者識別與語者確認,前者是要辨識說話者是誰,后者則是判斷說話的人是不是他所宣稱的使用者,本項目的研究主題是后者。語者確認常被視為一個假說測定問題,利用似然比例測試方法來解:空假說表示說話者為真正的使用者,替代假說表示其為冒充者。我們可以收集特定使用者的語音數(shù)據(jù)來訓(xùn)練空假說模型,但替代假說牽涉未知的冒充者,較難模型化。針對此點,傳統(tǒng)的作法是收集很多人的語音,訓(xùn)練一個通用背景模型,或是幾位與目標使用者聲音相似的人的語音,訓(xùn)練數(shù)個背景模型,再利用取極大值、取極小值、算數(shù)平均或幾何平均等方法來結(jié)合個別的模型分數(shù)?;赩Q的語者識別系統(tǒng)系統(tǒng)模型基于VQ的說話人識別系統(tǒng),矢量量化起著雙重作用。在訓(xùn)練階段,把每一個說話者所提取的特征參數(shù)進行分類,產(chǎn)生不同碼字所組成的碼本。在識別(匹配)階段,我們用VQ方法計算平均失真測度(本系統(tǒng)在計算距離d時,采用歐氏距離測度),從而判斷說話人是誰。語音識別系統(tǒng)結(jié)構(gòu)框圖如圖1所示。圖1語音識別系統(tǒng)結(jié)構(gòu)框圖1.1語者識別的概念語者識別就是根據(jù)說話人的語音信號來判別說話人的身份。語音是人的自然屬性之一,由于說話人發(fā)音器官的生理差異以與后天形成的行為差異,每個人的語音都帶有強烈的個人色彩,這就使得通過分析語音信號來識別說話人成為可能。用語音來鑒別說話人的身份有著許多獨特的優(yōu)點,如語音是人的固有的特征,不會丟失或遺忘;語音信號的采集方便,系統(tǒng)設(shè)備成本低;利用電話網(wǎng)絡(luò)還可實現(xiàn)遠程客戶服務(wù)等。因此,近幾年來,說話人識別越來越多的受到人們的重視。與其他生物識別技術(shù)如指紋識別、手形識別等相比較,說話人識別不僅使用方便,而且屬于非接觸性,容易被用戶接受,并且在已有的各種生物特征識別技術(shù)中,是唯一可以用作遠程驗證的識別技術(shù)。因此,說話人識別的應(yīng)用前景非常廣泛:今天,說話人識別技術(shù)已經(jīng)關(guān)系到多學(xué)科的研究領(lǐng)域,不同領(lǐng)域中的進步都對說話人識別的發(fā)展做出了貢獻。說話人識別技術(shù)是集聲學(xué)、語言學(xué)、計算機、信息處理和人工智能等諸多領(lǐng)域的一項綜合技術(shù),應(yīng)用需求將十分廣闊。在吃力語音信號的時候如何提取信號中關(guān)鍵的成分尤為重要。語音信號的特征參數(shù)的好壞直接導(dǎo)致了辨別的準確性。1.2特征參數(shù)的提取對于特征參數(shù)的選取,我們使用mfcc的方法來提取。MFCC參數(shù)是基于人的聽覺特性利用人聽覺的屏蔽效應(yīng),在Mel標度頻率域提取出來的倒譜特征參數(shù)。MFCC參數(shù)的提取過程如下:1.對輸入的語音信號進行分幀、加窗,然后作離散傅立葉變換,獲得頻譜分布信息。設(shè)語音信號的DFT為:(1)其中式中x(n)為輸入的語音信號,N表示傅立葉變換的點數(shù)。2.再求頻譜幅度的平方,得到能量譜。3.將能量譜通過一組Mel尺度的三角形濾波器組。我們定義一個有M個濾波器的濾波器組(濾波器的個數(shù)和臨界帶的個數(shù)相近),采用的濾波器為三角濾波器,中心頻率為f(m),m=1,2,3,···,M本系統(tǒng)取M=100。4.計算每個濾波器組輸出的對數(shù)能量。(2)其中為三角濾波器的頻率響應(yīng)。5.經(jīng)過離散弦變換(DCT)得到MFCC系數(shù)。MFCC系數(shù)個數(shù)通常取20—30,常常不用0階倒譜系數(shù),因為它反映的是頻譜能量,故在一般識別系統(tǒng)中,將稱為能量系數(shù),并不作為倒譜系數(shù),本系統(tǒng)選取20階倒譜系數(shù)。1.3用矢量量化聚類法生成碼本我們將每個待識的說話人看作是一個信源,用一個碼本來表征。碼本是從該說話人的訓(xùn)練序列中提取的MFCC特征矢量聚類而生成。只要訓(xùn)練的序列足夠長,可認為這個碼本有效地包含了說話人的個人特征,而與講話的內(nèi)容無關(guān)。本系統(tǒng)采用基于分裂的LBG的算法設(shè)計VQ碼本,為訓(xùn)練序列,B為碼本。具體實現(xiàn)過程如下:1.取提取出來的所有幀的特征矢量的型心(均值)作為第一個碼字矢量B1。2.將當(dāng)前的碼本Bm根據(jù)以下規(guī)則分裂,形成2m個碼字。(4)其中m從1變化到當(dāng)前的碼本的碼字數(shù),ε是分裂時的參數(shù),本文ε=0.01。3.根據(jù)得到的碼本把所有的訓(xùn)練序列(特征矢量)進行分類,然后按照下面兩個公式計算訓(xùn)練矢量量化失真量的總和以與相對失真(n為迭代次數(shù),初始n=0,=∞,B為當(dāng)前的碼書),若相對失真小于某一閾值ε,迭代結(jié)束,當(dāng)前的碼書就是設(shè)計好的2m個碼字的碼書,轉(zhuǎn)5。否則,轉(zhuǎn)下一步。量化失真量和:(5)相對失真:(6)4.重新計算各個區(qū)域的新型心,得到新的碼書,轉(zhuǎn)3。5.重復(fù)2,3和4步,直到形成有M個碼字的碼書(M是所要求的碼字數(shù)),其中D0=10000。1.4VQ的說話人識別設(shè)是未知的說話人的特征矢量,共有T幀是訓(xùn)練階段形成的碼書,表示碼書第m個碼字,每一個碼書有M個碼字。再計算測試者的平均量化失真D,并設(shè)置一個閾值,若D小于此閾值,則是原訓(xùn)練者,反之則認為不是原訓(xùn)練者。(7)2.TheProgram在具體的實現(xiàn)過程當(dāng)中,采用了matlab軟件來幫助完成這個項目。在matlab中主要由采集,分析,特征提取,比對幾個重要部分。以下為在實際的操作中,具體用到得函數(shù)關(guān)系和作用一一列舉在下面。2.1函數(shù)關(guān)系主要有兩類函數(shù)文件Train.m和Test.m在Train.m調(diào)用Vqlbg.m獲取訓(xùn)練錄音的vq碼本,而Vqlbg.m調(diào)用mfcc.m獲取單個錄音的mel倒譜系數(shù),接著mfcc.m調(diào)用Melfb.m將能量譜通過一組Mel尺度的三角形濾波器組。在Test.m函數(shù)文件中調(diào)用Disteu.m計算訓(xùn)練錄音(提供vq碼本)與測試錄音(提供mfcc)mel倒譜系數(shù)的距離,即判斷兩聲音是否為同一錄音者提供。Disteu.m調(diào)用mfcc.m獲取單個錄音的mel倒譜系數(shù)。mfcc.m調(diào)用Melfb.m將能量譜通過一組Mel尺度的三角形濾波器組。2.2具體代碼說明2.2.1函數(shù)mffc:functionr=mfcc(s,fs)m=100;n=256;l=length(s);nbFrame=floor((l-n)/m)+1;%沿-∞方向取整fori=1:nforj=1:nbFrameM(i,j)=s(((j-1)*m)+i);%對矩陣M賦值endendh=hamming(n);%加hamming窗,以增加音框左端和右端的連續(xù)性M2=diag(h)*M;fori=1:nbFrameframe(:,i)=fft(M2(:,i));%對信號進行快速傅里葉變換FFTendt=n/2;tmax=l/fs;m=melfb(20,n,fs);%將上述線性頻譜通過Mel頻率濾波器組得到Mel頻譜,下面在將其轉(zhuǎn)化成對數(shù)頻譜n2=1+floor(n/2);z=m*abs(frame(1:n2,:)).^2;r=dct(log(z));%將上述對數(shù)頻譜,經(jīng)過離散余弦變換(DCT)變換到倒譜域,即可得到Mel倒譜系數(shù)(MFCC參數(shù))2.2.2函數(shù)disteu計算測試者和模板碼本的距離functiond=disteu(x,y)[M,N]=size(x);%音頻x賦值給【M,N】[M2,P]=size(y);%音頻y賦值給【M2,P】if(M~=M2)error('不匹配!')%兩個音頻時間長度不相等endd=zeros(N,P);if(N<P)%在兩個音頻時間長度相等的前提下copies=zeros(1,P);forn=1:Nd(n,:)=sum((x(:,n+copies)-y).^2,1);endelsecopies=zeros(1,N);forp=1:Pd(:,p)=sum((x-y(:,p+copies)).^2,1)';end%%成對歐氏距離的兩個矩陣的列之間的距離endd=d.^0.5;2.2.3函數(shù)vqlbg該函數(shù)利用矢量量化提取了音頻的vq碼本functionr=vqlbg(d,k)e=.01;r=mean(d,2);dpr=10000;fori=1:log2(k)r=[r*(1+e),r*(1-e)];while(1==1)z=disteu(d,r);[m,ind]=min(z,[],2);t=0;forj=1:2^ir(:,j)=mean(d(:,find(ind==j)),2);x=disteu(d(:,find(ind==j)),r(:,j));forq=1:length(x)t=t+x(q);endendif(((dpr-t)/t)<e)break;elsedpr=t;endendend2.2.4函數(shù)testfunctionfinalmsg=test(testdir,n,code)fork=1:n%readtestsoundfileofeachspeakerfile=sprintf('%ss%d.wav',testdir,k);[s,fs]=wavread(file);v=mfcc(s,fs);%得到測試人語音的mel倒譜系數(shù)distmin=4;%閾值設(shè)置處%就判斷一次,因為模板里面只有一個文件d=disteu(v,code{1});%計算得到模板和要判斷的聲音之間的“距離”dist=sum(min(d,[],2))/size(d,1);%變換得到一個距離的量%測試閾值數(shù)量級msgc=sprintf('與模板語音信號的差值為:%10f',dist);disp(msgc);%此人匹配ifdist<=distmin%一個閾值,小于閾值,則就是這個人。msg=sprintf('第%d位說話者與模板語音信號匹配,符合要求!\n',k);finalmsg='此位說話者符合要求!';%界面顯示語句,可隨意設(shè)定disp(msg);end%此人不匹配ifdist>distminmsg=sprintf('第%d位說話者與模板語音信號不匹配,不符合要求!\n',k);finalmsg='此位說話者不符合要求!';%界面顯示語句,可隨意設(shè)定disp(msg);endend2.2.5函數(shù)testDB這個函數(shù)實際上是對數(shù)據(jù)庫一個查詢,根據(jù)測試者的聲音,找相應(yīng)的文件,并且給出是誰的提示functiontestmsg=testDB(testdir,n,code)nameList={'童星程','張亦波','郭嘉','劉滿','嚴岔娟','趙超','孝大宇','郝力男'};%這個是我們組的成員和導(dǎo)師的名單.以便在識別時給出人民fork=1:n%數(shù)據(jù)庫中每一個說話人的特征file=sprintf('%ss%d.wav',testdir,k); %找出文件的路徑[s,fs]=wavread(file);v=mfcc(s,fs);%對找到的文件取mfcc變換distmin=inf;k1=0;forl=1:length(code)d=disteu(v,code{l});dist=sum(min(d,[],2))/size(d,1);ifdist<distmindistmin=dist;%%這里和test函數(shù)里面一樣但多了一個具體語者的識別k1=l;endendmsg=nameList{k1}msgbox(msg);end2.2.6函數(shù)train該函數(shù)就是對音頻進行訓(xùn)練,也就是提取特征參數(shù)functioncode=train(traindir,n)k=16;%numberofcentroidsrequiredfori=1:n%對數(shù)據(jù)庫中的代碼形成碼本file=sprintf('%ss%d.wav',traindir,i);disp(file);[s,fs]=wavread(file);v=mfcc(s,fs);%計算MFCC's提取特征特征,返回值是Mel倒譜系數(shù),是一個log的dct得到的code{i}=vqlbg(v,k);%訓(xùn)練VQ碼本通過矢量量化,得到原說話人的VQ碼本end2.2.7函數(shù)melfb確定矩陣的濾波器functionm=melfb(p,n,fs)f0=700/fs;fn2=floor(n/2);lr=log(1+0.5/f0)/(p+1);%converttofftbinnumberswith0forDCtermbl=n*(f0*(exp([01pp+1]*lr)-1));直接轉(zhuǎn)換為FFT的數(shù)字模型b1=floor(bl(1))+1;b2=ceil(bl(2));b3=floor(bl(3));b4=min(fn2,ceil(bl(4)))-1;pf=log(1+(b1:b4)/n/f0)/lr;fp=floor(pf);pm=pf-fp;r=[fp(b2:b4)1+fp(1:b3)];c=[b2:b41:b3]+1;v=2*[1-pm(b2:b4)pm(1:b3)];m=sparse(r,c,v,p,1+fn2);3.Results&Discussion3.1實驗過程我們的功能分為兩部分:對已經(jīng)保存的語音進行辨別和實時的判斷說話人是否為同一個人.在前者的實驗過程中,先把我們小組成員和tutor的聲音保存成wav的格式,放在一個文件夾中,作為一個檢測的數(shù)據(jù)庫.然后對檢測者實行識別,系統(tǒng)給出提示是誰.這一部我們測得的準確率是87.5%.在第二個功能中,實時的錄取一段說話人的聲音作為模板,提取mfcc特征參數(shù),隨后緊接著進行遇著識別,也就是讓其他人再說相同的話,看是否是原說話者.本系統(tǒng)唯一的不足之處是沒有實現(xiàn)對數(shù)據(jù)庫的跟新,相信在以后不久的將來會實現(xiàn)的.實驗過程與具體功能如下:先打開Matlab使CurrentDirectory為錄音與程序所所在的文件夾再打開文件“enter.m”,點run運行,打開enter界面,點擊“打開”按鈕進入系統(tǒng)。(注:文件包未封裝完畢,目前只能通過此方式打開運行。)(如下圖figure1)在對數(shù)據(jù)庫中已有的語者進行識別模塊:點擊按鈕“錄音-train”,在4秒內(nèi)錄音訓(xùn)練。4秒后,可以點擊按鈕“播放-train”,播放剛剛錄入的聲音。錄音被自動保存在程序文件夾子文件夾“測試”中,命名為“s1.wav”。隨后點擊”語音庫錄制模板”,這一步就是對語音庫里的聲音提取特征值.然后再點擊”語者判定”,這一步是把”測試”文件夾中剛錄制的聲音提取特征值值與數(shù)據(jù)庫中聲音的特征值進行對比,告知誰是語者.在實時語者識別模塊:點擊實時錄制模板
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 庫存油墨轉(zhuǎn)讓合同范本
- 共享酒吧的合同范本
- 農(nóng)村社區(qū)供暖設(shè)施建設(shè)合同
- 給員工打工合同范本
- 牛場建設(shè)合同范本
- 生豬供銷協(xié)議合同范本
- 中介和企業(yè)合同范本
- 冷鏈運輸合同范本
- 車輛托運合同范本
- 車庫位出租合同范本
- 2025至2030年中國奶牛養(yǎng)殖行業(yè)競爭格局分析及投資戰(zhàn)略咨詢報告
- 光伏施工基本知識培訓(xùn)課件
- 創(chuàng)傷性血氣胸的急救與護理
- 2025關(guān)于醫(yī)療平臺與醫(yī)療機構(gòu)合作合同模板
- 福州工會考試試題及答案
- 學(xué)校后勤工作管理培訓(xùn)
- 胰腺炎的營養(yǎng)治療與護理
- 教師校園安全培訓(xùn)課件
- 頭皮健康與頭發(fā)生長關(guān)系的研究
- 財務(wù)結(jié)賬相關(guān)管理制度
- 叉車維修方案(3篇)
評論
0/150
提交評論