版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)字信號(hào)處理B課程項(xiàng)目終期報(bào)告題 目: 數(shù)字音效處理器 組 號(hào): 14 號(hào) 任課教師: 組 長(zhǎng): 成 員: 成 員: 成 員: 成 員: 聯(lián)系方式: 二0一五 年 10月 24日目錄一 項(xiàng)目介紹二 項(xiàng)目原理三 項(xiàng)目完成過(guò)程四 項(xiàng)目結(jié)果與分析五 工作分配六 參考文獻(xiàn)一 項(xiàng)目介紹本次項(xiàng)目要求設(shè)計(jì)一個(gè)數(shù)字音效處理器,通過(guò)一系列相關(guān)算法以及借助相關(guān)工具(MATLAB),對(duì)聲音信號(hào)進(jìn)行處理,要求具備語(yǔ)音識(shí)別以及降除噪聲的功能,另外我們又加入了語(yǔ)音均衡器,豐富了數(shù)字音效處理器的功能。最后加入GUI界面設(shè)計(jì),方便了用戶的使用。二 項(xiàng)目原理本部分主要分為三部分,分別是語(yǔ)音識(shí)別,噪聲降除以及語(yǔ)音均衡器的相關(guān)原理
2、。語(yǔ)音識(shí)別:1.1項(xiàng)目大體步驟我們主要采用基于VQ的說(shuō)話人識(shí)別,我們采用的識(shí)別結(jié)構(gòu)框圖如下,提取特征函數(shù)預(yù)處理語(yǔ)音信號(hào)VQ碼本匹配計(jì)算VQ碼本訓(xùn)練碼本庫(kù)識(shí)別結(jié)果1.2 語(yǔ)音信號(hào)的預(yù)處理預(yù)處理包括:預(yù)加重,端點(diǎn)檢測(cè),分幀以及加窗。預(yù)加重的目的是將更為有用的高頻部分頻譜進(jìn)行提升,使信號(hào)的頻譜變得平坦,保持在低頻到高頻的整個(gè)頻帶中,能用同樣的信噪比求取頻譜,以便于進(jìn)行頻譜分析或聲道參數(shù)分析。端點(diǎn)檢測(cè)即是對(duì)輸入語(yǔ)音信號(hào)的起始點(diǎn)與結(jié)束點(diǎn)的判定。分幀:由于語(yǔ)音信號(hào)的準(zhǔn)平穩(wěn)特性,使得其只有在短時(shí)段上才可被視為一個(gè)平穩(wěn)過(guò)程,所以需要把一定長(zhǎng)度的語(yǔ)音分為很多幀來(lái)分析。加窗:為了減少語(yǔ)音幀的截?cái)嘈?yīng),降低幀兩端的
3、坡度,使語(yǔ)音幀的兩端不引起急劇變化而平滑過(guò)渡到零,需要將語(yǔ)音幀乘以一個(gè)窗函數(shù)。1.3 MFCC特征函數(shù)的提取Mel頻率倒譜系數(shù)(MFCC)的分析與傳統(tǒng)的線性倒譜系數(shù)(LPCC)不同,它的分析是著眼于人耳的聽(tīng)覺(jué)機(jī)理,因?yàn)槿祟?lèi)在對(duì)1000Hz以下的聲音頻率范圍的感知遵循近似的線性關(guān)系;對(duì)1000Hz以上的聲音頻率范圍的感知不遵循線性關(guān)系,而是遵循在對(duì)數(shù)頻率坐標(biāo)上的近似線性關(guān)系,所以Mel倒譜系數(shù)獲得了較高的識(shí)別率和較好的魯棒性。實(shí)現(xiàn)上,Mel倒譜系數(shù)是將語(yǔ)音頻率劃分成一系列三角形的濾波器序列,這組濾波器在頻率的Mel坐標(biāo)上是等待寬的。MFCC參數(shù)的提取過(guò)程為:1. 對(duì)輸入的語(yǔ)音信號(hào)進(jìn)行分幀、加窗,
4、然后作離散傅立葉變換,獲得頻譜分布信息。 設(shè)語(yǔ)音信號(hào)的DFT為: *(1)2. 再求頻譜幅度的平方,得到能量譜。 3. 將能量譜通過(guò)一組Mel尺度的三角形濾波器組。 我們定義一個(gè)有M個(gè)濾波器的濾波器組(濾波器的個(gè)數(shù)和臨界帶的個(gè)數(shù)相近),采用的濾波器為三角濾波器,中心頻率為f(m),m=1,2,3,M,本系統(tǒng)取M=100。4. 計(jì)算每個(gè)濾波器組輸出的對(duì)數(shù)能量。 *(2)其中為三角濾波器的頻率響應(yīng)。 5. 經(jīng)過(guò)離散弦變換(DCT)得到MFCC系數(shù)。*(3) MFCC系數(shù)個(gè)數(shù)通常取2030,常常不用0階倒譜系數(shù),因?yàn)樗从车氖穷l譜能量,故在一般識(shí)別系統(tǒng)中,將稱為能量系數(shù),并不作為倒譜系數(shù),本文選取2
5、0階倒譜系數(shù)。與線性預(yù)測(cè)倒譜分析相比,MFCC的優(yōu)點(diǎn)是不依賴全極點(diǎn)語(yǔ)音信號(hào)產(chǎn)生模型的假定,因而在噪聲環(huán)境下表現(xiàn)出更強(qiáng)的魯棒性,在非特定人說(shuō)話人識(shí)別方面有利于減小因說(shuō)話人不同的差異可能帶來(lái)的影響。1.4矢量量化矢量量化是將若干個(gè)幅度連續(xù)取值的時(shí)域采樣信號(hào)分成一組,則構(gòu)成矢量,然后用若干離散數(shù)字值,來(lái)表示各種矢量,其有效地利用了矢量中各分量的四種相關(guān)的性質(zhì),因此在量化過(guò)程中最大限度地消除數(shù)據(jù)之間的冗余,從而實(shí)現(xiàn)高效的熵壓縮碼。其基本原理為:將一幀語(yǔ)音數(shù)據(jù)中提取的矢量特征在多維空間給予整體量化。首先把信號(hào)序列的每隔K個(gè)連續(xù)點(diǎn)分成一組,形成K維歐氏空間中的一個(gè)矢量,然后對(duì)此矢量進(jìn)行量化。本文中矢量量化
6、有兩個(gè)作用,在訓(xùn)練階段,把每個(gè)說(shuō)話者所提取的特征參數(shù)進(jìn)行分類(lèi),產(chǎn)生不同碼子組成的碼本;在識(shí)別階段,我們用VQ方法計(jì)算平均失真測(cè)度,以此進(jìn)行說(shuō)話人識(shí)別。VQ碼本的設(shè)計(jì)主要采用LBG算法,該算法是一種遞推算法,從一個(gè)事先選定的初始碼本進(jìn)行迭代,直到系統(tǒng)性能滿足要求或不再有明顯的改進(jìn)為止。具體LBG算法如下:設(shè) 為訓(xùn)練序列,B為碼本。 1. 取提取出來(lái)的所有幀的特征矢量的型心(均值)作為第一個(gè)碼字矢量B1。2. 將當(dāng)前的碼本Bm根據(jù)以下規(guī)則分裂,形成2m個(gè)碼字。 *(4)其中m從1變化到當(dāng)前的碼本的碼字?jǐn)?shù),是分裂時(shí)的參數(shù),本文=0.01。 3. 根據(jù)得到的碼本把所有的訓(xùn)練序列(特征矢量)進(jìn)行分類(lèi),然
7、后按照下面兩個(gè)公式計(jì)算訓(xùn)練矢量量化失真量的總和以及相對(duì)失真(n為迭代次數(shù),初始n=0,=,B為當(dāng)前的碼書(shū)),若相對(duì)失真小于某一閾值,迭代結(jié)束,當(dāng)前的碼書(shū)就是設(shè)計(jì)好的2m個(gè)碼字的碼書(shū),轉(zhuǎn)。否則,轉(zhuǎn)下一步。 量化失真量和: 相對(duì)失真: *(6)4. 重新計(jì)算各個(gè)區(qū)域的新型心,得到新的碼書(shū),轉(zhuǎn)3。 5. 重復(fù) , 和步,直到形成有M個(gè)碼字的碼書(shū)(M是所要求的碼字?jǐn)?shù)),其中D0=10000。1.5說(shuō)話人識(shí)別在匹配階段,VQ用來(lái)計(jì)算未知說(shuō)話人特征矢量和已經(jīng)訓(xùn)練說(shuō)話人碼本之間的平均量化失真D,并設(shè)置一個(gè)閾值,若D小于此閾值,則是原訓(xùn)練者,反之則認(rèn)為不是原訓(xùn)練者。注: *(7)2噪聲降除我們使用了維納法和L
8、MS自適應(yīng)濾波法來(lái)降除噪聲。2.1 維納法(Wiener Scalart Method)維納是用來(lái)解決從噪聲中提取信號(hào)的一種過(guò)濾(或?yàn)V波)方法。這種線性濾波問(wèn)題,可以看做是一種估計(jì)問(wèn)題或一種線性估計(jì)問(wèn)題。 一個(gè)線性系統(tǒng),如果它的單位樣本響應(yīng)為h(n),當(dāng)輸入一個(gè)隨機(jī)信號(hào)x(n) 且x(n)=s(n)+v(n) *(8)其中x(n)表示信號(hào),v(n)表示噪聲,則輸出y(n)為 yn=mh(m)x(n-m) *(9)我們希望x(n)通過(guò)線性系統(tǒng)h(n)后得到的y(n)盡量接近于s(n),因此稱y(n)為s(n)的估計(jì)值,用s(n)表示,即 yn=s(n). *(10) 則維納濾波器的輸入輸出關(guān)系可
9、用下面圖1表示。 實(shí)際上,式 (9) 所示的卷積形式可以理解為從當(dāng)前和過(guò)去的觀察值x(n),x(n-1),X(n-2)x(n-m).來(lái)估計(jì)信號(hào)的當(dāng)前值 s(n)。因此,用h(n) 進(jìn)行過(guò)濾問(wèn)題實(shí)際上是一種統(tǒng)計(jì)估計(jì)問(wèn)題。 一般地,從當(dāng)前的和過(guò)去的觀察值x(n),x(n-1),x(n-2)估計(jì)當(dāng)前的信號(hào)值Y(n)=s(n)成為過(guò)濾或?yàn)V波;從過(guò)去的觀察值,估計(jì)當(dāng)前的或者將來(lái)的信號(hào)值 yn=s(n+N).稱為外推或預(yù)測(cè);從過(guò)去的觀察值,估計(jì)過(guò)去的信號(hào)值 yn=s(n-N) 稱為平滑或內(nèi)插。因此維納濾波器又常常被稱為最佳線性過(guò)濾與預(yù)測(cè)或線性最優(yōu)估計(jì)。這里所謂的最佳與最優(yōu)是以最小均方誤差為準(zhǔn)則的。 如果我
10、們分別以s(n) 與 s(n) 表示信號(hào)的真實(shí)值與估計(jì)值,而用e(n) 表示他們之間的誤差,即 en=sn-s(n) *(11)顯然e(n)可能是正值,也可能是負(fù)值,并且它是一個(gè)隨機(jī)變量。因此,用它的均方誤差來(lái)表達(dá)誤差是合理的,所謂均方誤差最小即它的平方的統(tǒng)計(jì)期望最?。?n=Ee2n=min* (12)采用最小均方誤差準(zhǔn)則作為最佳過(guò)濾準(zhǔn)則的原因還在于它的理論分析比較簡(jiǎn)單,不要求對(duì)概率的描述。 為了按 (12) 式所示的最小均方誤差準(zhǔn)則來(lái)確定維納濾波器的沖激響應(yīng)h(n),令n對(duì)h(j)的導(dǎo)數(shù)等于零,即可得 Rxsm=hiRxxm-1,m * (13)式中,Rxsm 是s(n)與x(n)的互相關(guān)函
11、數(shù),Rxxm是x(n)的自相關(guān)函數(shù),分別定義為 Rxs=Exxsn+m Rxx=Ex(x)x(n+m)式 (13) 稱為維納濾波器的標(biāo)準(zhǔn)方程或維納霍夫方程。如果已知 Rxsm 和 Rxxm,那么解此方程即可求的維納濾波器的沖激響應(yīng)。式 (13) 所示標(biāo)準(zhǔn)方程右端的求和范圍即i的取值范圍沒(méi)有具體標(biāo)明,實(shí)際上有三種情況:(1) 有限沖激響應(yīng)(FIR)維納濾波器,i從0到N-1取得有限個(gè)整數(shù)值;(2) 非因果無(wú)限沖激響應(yīng)(非因果IIR)維納濾波器,i從到取所有整數(shù)值;(3) 因果無(wú)限沖激響應(yīng)(因果IIR)維納濾波器,i從0到取正整數(shù)值。上述三種情況下標(biāo)準(zhǔn)方程的解法不同,本文只描述FIR維納濾波器的求
12、解。設(shè)濾波器沖激響應(yīng)序列的長(zhǎng)度為N,沖激響應(yīng)矢量為 h=h0h1hN-1T * (14)濾波器輸入數(shù)據(jù)矢量為 xn=xnxn-1x(n-N+1)T *(15)則濾波器的輸出為 yn=sn=xTnh=hTx(n) *(16)這樣,式 (13) 所示的維納-霍夫方程可寫(xiě)成 PT=hTR or P=Rh * (17)其中 P=Ex(n)s(n) * (18)是s(n) 與x(n) 的互相關(guān)函數(shù),它是一個(gè)N維列矢量;R是x(n)的自相關(guān)函數(shù),是N階方陣R=Ex(n)xT(n) * (19)利用求逆矩陣的方法直接求解式 (19),得 hopt=R-1P *(20)這里opt表示“最佳”,這就是FIR維納
13、濾波器的沖激響應(yīng)。2.2 LMS自適應(yīng)濾波法自適應(yīng)濾波器是能夠根據(jù)輸入信號(hào)自動(dòng)調(diào)整性能進(jìn)行數(shù)字信號(hào)處理的數(shù)字濾波器。作為對(duì)比,非自適應(yīng)濾波器有靜態(tài)的濾波器系數(shù),這些靜態(tài)系數(shù)一起組成傳遞函數(shù)。對(duì)于一些應(yīng)用來(lái)說(shuō),由于事先并不知道所需要進(jìn)行操作的參數(shù),例如一些噪聲信號(hào)的特性,所以要求使用自適應(yīng)的系數(shù)進(jìn)行處理。在這種情況下,通常使用自適應(yīng)濾波器,自適應(yīng)濾波器使用反饋來(lái)調(diào)整濾波器系數(shù)以及頻率響應(yīng)??偟膩?lái)說(shuō),自適應(yīng)的過(guò)程涉及到將代價(jià)函數(shù)用于確定如何更改濾波器系數(shù)從而減小下一次迭代過(guò)程成本的算法。價(jià)值函數(shù)是濾波器最佳性能的判斷準(zhǔn)則,比如減小輸入信號(hào)中的噪聲成分的能力。隨著數(shù)字信號(hào)處理器性能的增強(qiáng),自適應(yīng)濾波
14、器的應(yīng)用越來(lái)越常見(jiàn),時(shí)至今日它們已經(jīng)廣泛地用于手機(jī)以及其它通信設(shè)備、數(shù)碼錄像機(jī)和數(shù)碼照相機(jī)以及醫(yī)療監(jiān)測(cè)設(shè)備中。下面圖示的框圖是最小均方濾波器(LMS)和遞歸最小平方(Recursive least squares filter,RLS,即我們平時(shí)說(shuō)的最小二乘法) 這些特殊自適應(yīng)濾波器實(shí)現(xiàn)的基礎(chǔ)。框圖的理論基礎(chǔ)是可變?yōu)V波器能夠得到所要信號(hào)的估計(jì)。1.輸入信號(hào)是所要信號(hào)d(n) 和干擾噪聲v(n) 之和: x(n)=d(n)+v(n) 2.可變?yōu)V波器有有限脈沖響應(yīng)結(jié)構(gòu),這樣結(jié)構(gòu)的脈沖響應(yīng)等于濾波器系數(shù)。p階濾波器的系數(shù)定義為 Wn=n0,n1,npT *(21)3.誤差信號(hào)或者叫作代價(jià)函數(shù),是所要
15、信號(hào)與估計(jì)信號(hào)之差en=dn-d(n) *(22)可變?yōu)V波器通過(guò)將輸入信號(hào)與脈沖響應(yīng)作卷積估計(jì)所要信號(hào),用向量表示為 dn=wn*x(n) *(23)其中x(n)=x(n),x(n-1),x(n-p)T是輸入信號(hào)向量。另外,可變?yōu)V波器每次都會(huì)馬上改變?yōu)V波器系數(shù) wn+1=wn+wn *(24)其中wn是濾波器系數(shù)的校正因子。自適應(yīng)算法根據(jù)輸入信號(hào)與誤差信號(hào)生成這個(gè)校正因子,LMS 和 RLS 是兩種不同的系數(shù)更新算法。3語(yǔ)音均衡器我們所設(shè)計(jì)的數(shù)字均衡器包括以下功能:1 音頻文件(.wav)的獲取;2 八段數(shù)字均衡器設(shè)定;3 濾波;4 播放,播放均衡過(guò)后的語(yǔ)音信號(hào),并顯示相關(guān)波形。此設(shè)計(jì)的關(guān)鍵是
16、設(shè)計(jì)出滿足一定性能指標(biāo)的各個(gè)數(shù)字濾波器,構(gòu)成一個(gè)覆蓋音頻頻段的濾波器組。3.1數(shù)字濾波器數(shù)字濾波器的功能是把輸入序列通過(guò)一定的運(yùn)算,變換成輸出序列。數(shù)字濾波器分為兩類(lèi):無(wú)限沖激響應(yīng)(IIR)以及有限沖激響應(yīng)(FIR)(1) IIRIIR濾波器的最大特點(diǎn)是:?jiǎn)挝粵_激響應(yīng)h(n)是無(wú)限長(zhǎng)的;系統(tǒng)函數(shù)H(z)在有限長(zhǎng)Z平面內(nèi)有極點(diǎn)存在;結(jié)構(gòu)上存在輸出到輸入的反饋,即結(jié)構(gòu)上是遞歸的;穩(wěn)定的IIR濾波器其全部極點(diǎn)一定在單位圓內(nèi)。(2) FIRFIR濾波器最大的特點(diǎn)是:系統(tǒng)的單位沖激響應(yīng)h(n)是個(gè)有限長(zhǎng)序列;系統(tǒng)函數(shù)|H(z)|在|z|0處收斂,極點(diǎn)全部在z=0處,即FIR一定為穩(wěn)定系統(tǒng);結(jié)構(gòu)上是非遞歸
17、的,沒(méi)有輸出到輸入的反饋。對(duì)于數(shù)字均衡器,一方面用于處理語(yǔ)音信號(hào),另一方面需要用到頻率特性分段的帶通濾波器,因此本文選用IIR濾波器。3.2 IIR濾波器設(shè)計(jì)(1)設(shè)計(jì)模擬濾波器。根據(jù)實(shí)際需要確定濾波器的參數(shù),利用的濾波器的設(shè)計(jì)公式設(shè)計(jì)模擬濾波器并得到其傳遞函數(shù)H(s);(2)將濾波器轉(zhuǎn)化為數(shù)字濾波器。利用沖激響應(yīng)不變法或雙線性變法將H(s)轉(zhuǎn)化成H(z);(3)頻率變換。上述得到的是低通濾波器,利用變換公式作頻率變換得到高通、帶通濾波器。3.3均衡器的原理均衡器的基本功能是調(diào)節(jié)各個(gè)頻段內(nèi)的信號(hào)的強(qiáng)弱,設(shè)計(jì)過(guò)程如下:(1) 設(shè)計(jì)出八個(gè)頻段的對(duì)應(yīng)的帶通濾波器;(2) 把語(yǔ)音信號(hào)分8路用八個(gè)帶通濾
18、波器進(jìn)行濾波;(3) 將八個(gè)濾波器的輸出結(jié)果進(jìn)行加權(quán)求和,yn=i=1Nkiyin *(25) ki表示第i路的權(quán)值,第i路的輸出為 yi(n),y(n)表示均衡器的輸出。三 項(xiàng)目完成過(guò)程1. 語(yǔ)音識(shí)別以下為語(yǔ)音識(shí)別過(guò)程所用到的相關(guān)函數(shù)介紹,具體關(guān)系為:VQ.m調(diào)用mfcc.m獲取單個(gè)錄音的mel倒譜系數(shù),接著mfcc.m調(diào)用melfb.m,完成語(yǔ)音信號(hào)從普通頻譜到mel頻譜的轉(zhuǎn)換。在train.m文件調(diào)用VQ.m,即該文件用于訓(xùn)練碼本,從而獲得碼本庫(kù);在test.m文件調(diào)用distance.m計(jì)算訓(xùn)練錄音與測(cè)試錄音的mel倒譜系數(shù)的歐氏距離,如果最小距離小于一個(gè)閾值,則可判斷該說(shuō)話人是否在碼
19、本庫(kù)內(nèi)以及說(shuō)話人是誰(shuí)。1.1 VQ函數(shù)function r = VQ(d,k)e = .01;r = mean(d, 2);dpr = 10000;for i = 1:log2(k) r = r*(1+e), r*(1-e); while (1 = 1) z = distance(d, r); m,ind = min(z, , 2); t = 0; for j = 1:2i r(:, j) = mean(d(:, find(ind = j), 2); x = distance(d(:, find(ind = j), r(:, j); for q = 1:length(x) t = t + x(
20、q); end end if (dpr - t)/t) e) break; else dpr = t; end endend1.2 mfcc函數(shù)function r = mfcc(s, fs)m = 100;n = 256;l = length(s);nbFrame = floor(l - n) / m) + 1; for i = 1:n for j = 1:nbFrame M(i, j) = s(j - 1) * m) + i); endendh = hamming(n); /加窗函數(shù)M2 = diag(h) * M;for i = 1:nbFrame frame(:,i) = fft(M2
21、(:, i); /逐幀進(jìn)行快速傅立葉變換endt = n / 2;tmax = l / fs;m = melfb(20, n, fs); /通過(guò)Mel濾波器組得到Mel頻譜n2 = 1 + floor(n / 2); / 求每幀要進(jìn)行變換的數(shù)據(jù)的行數(shù)z = m * abs(frame(1:n2, :).2; /求矩陣絕對(duì)值和的平方并與原始矩陣相乘。r = dct(log(z); / dct變換1.3 melfb函數(shù)function m = melfb(p, n, fs)f0 = 700 / fs;fn2 = floor(n/2);lr = log(1 + 0.5/f0) / (p+1);bl
22、= n * (f0 * (exp(0 1 p p+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:b4 1:b3 + 1;v = 2 * 1-pm(b2:b4) pm(1:b3);m = sparse(r, c, v, p, 1+fn2);1.
23、4 train函數(shù)function code = train(traindir, n)k = 16; for i = 1:n / 對(duì)數(shù)據(jù)庫(kù)中的代碼形成碼本 file = sprintf(%svoice%d.wav, traindir, i); disp(file); s, fs = wavread(file); v = mfcc(s, fs); / 計(jì)算 MFCCs 提取特征特征,返回值是Mel倒譜系數(shù),是一個(gè)log的dct得到的 codei = VQ(v, k); / 訓(xùn)練VQ碼本 通過(guò)矢量量化,得到原說(shuō)話人的VQ碼本end1.5 distance函數(shù)function d = distanc
24、e(x, y)M, N = size(x);M2, P = size(y); /音頻y賦值給M2,Pif (M = M2) error(不匹配!) /兩個(gè)音頻時(shí)間長(zhǎng)度不相等endd = zeros(N, P);if (N P) /在兩個(gè)音頻時(shí)間長(zhǎng)度相等的前提下 copies = zeros(1,P); for n = 1:N d(n,:) = sum(x(:, n+copies) - y) .2, 1); endelse copies = zeros(1,N); for p = 1:P d(:,p) = sum(x - y(:, p+copies) .2, 1); end /成對(duì)歐氏距離的兩個(gè)
25、矩陣的列之間的距離endd = d.0.5;1.6 test函數(shù)function finalmsg = test(testdir, n, code) nameList=胡程勇,周軼軒,劉楊雨,騰飛,夏文杰; file = sprintf(%stest.wav, testdir);s, fs = wavread(file); v = mfcc(s,fs); / 計(jì)算MFCCdistmin = inf; /無(wú)窮k1 = 0;for i = 1:length(code) / code的最大長(zhǎng)度,對(duì)于每個(gè)訓(xùn)練碼書(shū),計(jì)算失真d=distance(v,codei); dist = sum(min(d,2)
26、 / size(d,1); /size(d,1): 列的長(zhǎng)度即行數(shù) / min(A,dim),dim取1或2,取1時(shí),與max(A)完全相同,取2時(shí),該函數(shù)返回一個(gè)列向量, / min第i個(gè)元素是A矩陣的第i行上的最小值 if dist distmin distmin = dist; k1=i; end enddisp(distmin);if(distmin 4.5) xianshi = sprintf( 說(shuō)話者為 %s !, nameListk1);else xianshi = 說(shuō)話者不在數(shù)據(jù)庫(kù)中! ;endmsgbox(xianshi);上述diatance.m函數(shù)中,閾值4.5是通過(guò)將碼
27、本庫(kù)里的語(yǔ)音分別作為測(cè)試音,與碼本庫(kù)里的碼本計(jì)算得到的最小距離,另外再用兩個(gè)不是碼本庫(kù)里的測(cè)試音與碼本庫(kù)的碼本計(jì)算得到最小距離,取這些最小距離的平均值作為此次識(shí)別的閾值,如果小于閾值,則可說(shuō)明該說(shuō)話者是碼本庫(kù)中的一個(gè),并進(jìn)一步可以判斷出是碼本庫(kù)中的哪一個(gè)。2. 噪聲降除Wiener Scalart:NoiseCounter=0; % 初始化NoiseCounterNoiseLength=9; % 設(shè)置噪聲平滑區(qū)間長(zhǎng)度G=ones(size(N); % 初始化譜估計(jì)器Gamma=G;X=zeros(size(Y); % 初始化Xfor i=1:numberOfFrames SpeechFlag=
28、SF(i); if i=NIS % 若iNIS判斷是否為有話幀 %NoiseFlag, SpeechFlag, NoiseCounter, Dist=vad(Y(:,i),N,NoiseCounter); end if SpeechFlag=0 % 在無(wú)話段中平滑更新噪聲譜值 N=(NoiseLength*N+Y(:,i)/(NoiseLength+1); LambdaD=(NoiseLength*LambdaD+(Y(:,i).2)./(1+NoiseLength);%更新和平滑噪聲方差 end gammaNew=(Y(:,i).2)./LambdaD; % 計(jì)算后驗(yàn)信噪比 xi=alpha
29、*(G.2).*Gamma+(1-alpha).*max(gammaNew-1,0); % 計(jì)算先驗(yàn)信噪比 Gamma=gammaNew; G=(xi./(xi+1); % 計(jì)算維納濾波器的譜估計(jì)器X(:,i)=G.*Y(:,i); % 維納濾波后的幅值LMS adaptive filter:s=s/max(abs(s); % 幅值歸一化N=length(s); % 求出信號(hào)長(zhǎng)度global time;time=(0:N-1)/fs; % 設(shè)置時(shí)間ns=1.5*cos(2*pi*50*time); % 計(jì)算出50Hz工頻信號(hào)global x;x=s+ns; % 語(yǔ)音信號(hào)和50Hz工頻信號(hào)疊加s
30、nr1=SNR_singlech(s,x); % 計(jì)算疊加50Hz工頻信號(hào)后的信噪比x1=cos(2*pi*50*time); % 設(shè)置x1和x2x2=sin(2*pi*50*time);w1=0.1; % 初始化w1和w2w2=0.1;e=zeros(1, N); % 初始化e和yy=zeros(1, N);mu=0.05; % 設(shè)置mufor i=1: N % LMS自適應(yīng)陷波器濾波 y(i)=w1 * x1(i)+ w2 * x2(i); e(i) =x(i)-y(i); w1=w1+mu * e(i) * x1(i); w2=w2+mu * e(i) * x2(i);endglobal
31、 outputoutput=e; % 陷波器輸出snr2=SNR_singlech(s,output); % 計(jì)算濾波后的信噪比 snr=snr2-snr1;3. 語(yǔ)音均衡器該部分GUI界面如下,主要分成4個(gè)部分,音頻選擇及播放,音感特征調(diào)節(jié)以及均衡,均衡后音頻播放,以及相關(guān)的波形圖顯示。3.1音頻選擇這里既可以選擇音頻文件,也可以現(xiàn)場(chǎng)錄制一段語(yǔ)音進(jìn)行均衡處理;3.2 音感特征調(diào)節(jié)及均衡音感特征調(diào)節(jié)實(shí)質(zhì)是調(diào)節(jié)八個(gè)控件,從而改變對(duì)應(yīng)濾波器的權(quán)值;濾波器類(lèi)型選擇,用戶可以選擇4種濾波器,分別為巴特沃斯濾波器,切比雪夫1濾波器,切比雪夫2濾波器以及橢圓濾波器。均衡器的功能的實(shí)現(xiàn),其實(shí)質(zhì)就是生成帶通濾
32、波器,并對(duì)原信號(hào)進(jìn)行濾波。首先進(jìn)行頻段劃分handles.fband=20 100 200 500 1000 2000 4000 8000 16000;接著便是產(chǎn)生濾波器,該過(guò)程我們?cè)诖_定選擇按鈕的回調(diào)函數(shù)中實(shí)現(xiàn), for i= 1:8 if get(handles.popufilter,Value) = 2 b a=butter(order,2*fband(i:i+1)/handles.Fs); /巴特沃斯濾波器(階數(shù),3db截止頻率的歸一化值) elseif get(handles.popufilter,Value) = 3 b a=cheby1(order,0.5,2*fband(i:i
33、+1)/handles.Fs);/切比雪夫一型(階數(shù),通帶最大衰減,通帶截止頻率歸一化值) elseif get(handles.popufilter,Value) = 4 b a=cheby2(order,20,2*fband(i:i+1)/handles.Fs);/切比雪夫二型(階數(shù),阻帶最小衰減,通帶截止頻率歸一化值) elseif get(handles.popufilter,Value) = 5 b a=ellip(order,0.5,20,2*fband(i:i+1)/handles.Fs); /橢圓濾波器 end eval(sprintf(k = get(handles.band
34、%d,Value);,i); /獲取相應(yīng)的權(quán)值y =(9k-1)/8*filter(b,a,handles.y); /對(duì)語(yǔ)音信號(hào)進(jìn)行濾波 handles.yy = handles.yy + y; /將濾波后的輸出波形疊加 y =(9k-1)/8*filter(b,a,handles.y);的作用是加權(quán)以便下一句的求和,因?yàn)橐舾刑卣髡{(diào)節(jié)所獲得的值在(0,2)之間,而需要的權(quán)值是(0,10)之間,所以令w為需要的權(quán)值,由于實(shí)際需要w為指數(shù)變化,故設(shè)代入w=0,k=0;w=1,k=1;w=10,k=2,可以解得a=1/8,b=9,c=-1,從而得到上述的公式。3.3 均衡后播放對(duì)均衡過(guò)后的語(yǔ)音信號(hào)進(jìn)
35、行播放;3.4 相關(guān)波形的顯示該部分主要顯示均衡之前的語(yǔ)音信號(hào)的時(shí)域波形圖,以及均衡之后的時(shí)域波形圖,方便用戶進(jìn)行比較。4. GUI界面設(shè)計(jì)本項(xiàng)目通過(guò)MATLAB的GUI設(shè)計(jì)界面,使用戶更加方便的運(yùn)用這些功能,設(shè)計(jì)出來(lái)的主界面如下,分為三個(gè)功能,語(yǔ)音識(shí)別,降噪以及均衡器。語(yǔ)音識(shí)別界面如下:訓(xùn)練部分我們?cè)O(shè)計(jì)了用戶可以自由選擇碼本訓(xùn)練的數(shù)量,也可以現(xiàn)場(chǎng)進(jìn)行碼本錄制,然后進(jìn)行碼本訓(xùn)練;識(shí)別部分主要進(jìn)行測(cè)試音的錄制以及識(shí)別;界面的右部分主要是錄音波形的顯示。降噪界面如下: 我們分別對(duì)音頻信號(hào)加入工頻噪聲(這里的工頻噪聲是一個(gè)50Hz的余弦信號(hào))和白噪聲,并且針對(duì)這兩種噪聲使用不同的去噪方法進(jìn)行解決,并
36、且我們可以現(xiàn)場(chǎng)錄音,將現(xiàn)場(chǎng)的錄音中帶有的噪聲用維納濾波器除去??梢钥吹轿覀兘o出了原始音頻信號(hào)頻譜,加噪信號(hào)頻譜和去噪信號(hào)頻譜,以此給讀者一個(gè)更加直觀的去噪過(guò)程。均衡器界面部分已在第三部分介紹,這里不再敘述。四 項(xiàng)目結(jié)果與分析1. 語(yǔ)音識(shí)別識(shí)別結(jié)果顯示如下,該部分設(shè)計(jì)過(guò)程中,我們發(fā)現(xiàn)利用VQ矢量量化的方法存在一些問(wèn)題,如果錄音的時(shí)候不說(shuō)話,那么識(shí)別判斷出來(lái)的結(jié)果并不是顯示“說(shuō)話人不在語(yǔ)音庫(kù)中”,而是上一次的判斷結(jié)果,即如果上一次判斷是庫(kù)中的“胡程勇”,那么下一次錄音時(shí)無(wú)人說(shuō)話,則判斷出來(lái)的還是庫(kù)中的“胡程勇”。我們?cè)诙啻螌?shí)驗(yàn)中發(fā)現(xiàn),一般將庫(kù)中的語(yǔ)音作為測(cè)試音,所得到的最小距離都比較大,大概在4-5之間,但是如果是空白的錄音,其測(cè)試所得到的最小距離一般都比較小,大概在2-3附近,所以我們將最小距離設(shè)置一個(gè)下限,即
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 能源企業(yè)安全生產(chǎn)責(zé)任培訓(xùn)方案
- 運(yùn)動(dòng)會(huì)臨時(shí)食材配送方案
- 高校食堂財(cái)務(wù)管理制度優(yōu)化方案
- 學(xué)校實(shí)驗(yàn)樓維修施工方案
- 在線教育平臺(tái)接口對(duì)接方案
- 娛樂(lè)場(chǎng)所經(jīng)營(yíng)合同協(xié)議書(shū)
- 數(shù)據(jù)中心設(shè)備減震施工方案
- 初中學(xué)校工會(huì)促進(jìn)師生關(guān)系工作總結(jié)
- 工程承包合同協(xié)議書(shū)(2篇)
- 七年級(jí)新生班級(jí)建設(shè)方案
- 四川省成都市2023-2024學(xué)年高一上學(xué)期語(yǔ)文期中考試試卷(含答案)
- 少兒美術(shù)幼兒園課件- 4-6歲 《秋梨》
- 小學(xué)六年級(jí)數(shù)學(xué)計(jì)算題100道(含答案)
- 大班綜合《要是你給老鼠玩手機(jī)》課件
- 液壓管道沖洗方案
- PON網(wǎng)絡(luò)組網(wǎng)安全問(wèn)題研究
- 趕工措施施工方案(完整版)
- 絲網(wǎng)花初級(jí)教材
- 情境7庫(kù)存管理技術(shù)
- 干部廉潔自律情況征求意見(jiàn)表
- [語(yǔ)言類(lèi)考試復(fù)習(xí)資料大全]北京成人本科英語(yǔ)真題2020年11月
評(píng)論
0/150
提交評(píng)論