侯昶宇
【摘要】 本文主要討論java實(shí)現(xiàn)聲音識(shí)別程序,采用mfcc參數(shù)提取以及混合高斯模型方法。使用mfcc處理聲音得到音頻的特征參數(shù)后,通過混合高斯模型建模實(shí)現(xiàn)對(duì)音頻的判別。最終通過JNI方法將windows下程序移植到Android端下運(yùn)行。
【關(guān)鍵詞】 梅爾倒譜系數(shù) 混合高斯模型 目標(biāo)識(shí)別
一、背景及應(yīng)用
對(duì)于聲音識(shí)別技術(shù)來(lái)說(shuō),由于不需要過多接觸以及實(shí)體間交互模式的認(rèn)證,因此,它在使用中比其他種類的識(shí)別技術(shù)更加便利。而在配置過程中,由于當(dāng)前多數(shù)電子數(shù)碼產(chǎn)品都已經(jīng)安裝了聲卡和話筒,因而構(gòu)架上也可以節(jié)約更多的成本。此外,對(duì)于使用環(huán)境來(lái)說(shuō),由于不需要如視頻監(jiān)控設(shè)備那樣對(duì)角度有著較高的要求,所以聲音識(shí)別系統(tǒng)的使用環(huán)境無(wú)疑也會(huì)更加的隨意和隱蔽。這些都是聲音識(shí)別系統(tǒng)與其他安防設(shè)施相比更加獨(dú)特的優(yōu)勢(shì)。
除了常見的安防系統(tǒng)應(yīng)用以外,其實(shí)日常生活中一些身份識(shí)別也采用聲音識(shí)別模式。現(xiàn)在,很多銀行都采用了聲音識(shí)別的模式進(jìn)行保險(xiǎn)箱的控制;或者在一些遠(yuǎn)程的服務(wù)中,也采用聲音識(shí)別的模式,對(duì)客戶的身份進(jìn)行定位。此外,作為智能化技術(shù)的重要一環(huán),聲音識(shí)別同樣可以用于智能家電。盡管這種全新的模式在短時(shí)間之內(nèi)普及,無(wú)論是在技術(shù)上還是理念上都會(huì)遇到不小的阻力。但從長(zhǎng)遠(yuǎn)來(lái)看,這種技術(shù)的出現(xiàn)以及民用化的普及,對(duì)于未來(lái)實(shí)現(xiàn)個(gè)人信息的全方位保護(hù)將起到標(biāo)志性作用。
二、聲音識(shí)別程序概述
首先將音頻文件讀作浮點(diǎn)數(shù)數(shù)組指針采樣點(diǎn),之后將數(shù)組建立混合高斯模型,再將讀取的結(jié)果和已經(jīng)保存的混合高斯模型做比較,從而得出與高斯模型中最接近的結(jié)果。
2.1高斯模型
高斯模型就是用高斯概率密度函數(shù)(正態(tài)分布曲線)精確地量化事物,將一個(gè)事物分解為若干基于高斯概率密度函數(shù)(正態(tài)分布曲線)形成的模型。
2.2統(tǒng)計(jì)學(xué)習(xí)模型
我們常用所謂統(tǒng)計(jì)模型的學(xué)習(xí)分為概率模型和非概率模型。概率模型指的是模型訓(xùn)練方式為P=(Y|X)的類型。輸入X后得到的不是具體值,而是一系列的概率,我們選取概率最大的作為判決對(duì)象。與之相對(duì)的,非概率模型的形式是y=f(x)。輸入x后得到唯一結(jié)果y,并以其作為判決對(duì)象。
2.3梅爾頻率倒譜系數(shù)
由于不同的人有不同的特異性特征,所以先采用預(yù)加重技術(shù),即插入一個(gè)高通濾波器,從而加強(qiáng)聲道部分特征。高通濾波的傳遞函數(shù)如下:
H(Z)=1-αZ-1
因聲音在短時(shí)間內(nèi)呈現(xiàn)平穩(wěn)性,所以之后進(jìn)行分幀和加窗。同時(shí)為了避免丟失信息,相鄰幀之間還應(yīng)存在重疊。
再對(duì)分幀加窗后的各幀信號(hào)進(jìn)行FFT變換得到各幀的頻譜。并對(duì)語(yǔ)音信號(hào)的頻譜取模平方得到語(yǔ)音信號(hào)的功率譜。
最終通過濾波和離散余弦變換得到的Ci即為所需提取的特征參數(shù)。
2.4混合高斯模型的建立
建立混合高斯模型,及對(duì)樣本的概率密度分布進(jìn)行估計(jì),估計(jì)采用的模型是幾個(gè)高斯模型的加權(quán)和,每個(gè)高斯模型作為一個(gè)類,將樣本數(shù)據(jù)分別投影到幾個(gè)高斯模型時(shí),就能得到在各個(gè)類上的概率。最終選取概率最大的類作為判決結(jié)果
上式中,K衛(wèi)模型個(gè)數(shù),πk為第k個(gè)高斯模型的權(quán)重,p為第k個(gè)高斯模型的概率密度。求出p(x)后,求和的各項(xiàng)結(jié)果分別代表x屬于各個(gè)類的概率。
通過上述方法,可以進(jìn)行訓(xùn)練在資料庫(kù)中加入新的聲音訓(xùn)練得到的gmm模型,還可以通過與已知的gmm模型進(jìn)行比對(duì)從而識(shí)別聲音種類。
三、Android實(shí)現(xiàn)
Android上層的Application和Application Framework都是使用Java編寫,底層包括系統(tǒng)和使用眾多的LIiraries是C/C++編寫的。所以上層Java要調(diào)用底層的C/C++函數(shù)庫(kù)必須通過Java的JNI來(lái)實(shí)現(xiàn)。
在進(jìn)行JNI操作時(shí),首先,使用eclipse得到一個(gè)app文件,此處,eclipse會(huì)自動(dòng)編譯此java文件。編譯后的文件在bin目錄下,通過javah命令生成一個(gè)c++的頭文件。在根據(jù)這個(gè)頭文件編寫c++程序。將windows下運(yùn)行成功的程序中的函數(shù)編譯為.so文件作為java編譯時(shí)的庫(kù)函數(shù)。在進(jìn)行java編程時(shí),只需要對(duì)c++函數(shù)進(jìn)行合理調(diào)用即可。
四、實(shí)驗(yàn)結(jié)果
通過六次迭代后得到gmm模型并添加進(jìn)數(shù)據(jù)庫(kù),見圖1。
得到gmm模型后與數(shù)據(jù)空內(nèi)已有模型進(jìn)行比較,從而選出最接近的聲音是已有聲音模型中的一個(gè),見圖2。
在Android端實(shí)現(xiàn)聲音識(shí)別, 見圖3。
四、總結(jié)
一個(gè)完整的聲音識(shí)別模塊應(yīng)該有一下幾部分組成:前段處理、聲音建模、聲音數(shù)據(jù)庫(kù)、匹配判決。根據(jù)以上流程,本文所設(shè)計(jì)的聲音識(shí)別程序從過mfcc對(duì)聲音進(jìn)行處理,之后建立高斯混合模型,在添加足夠的聲音種類進(jìn)入數(shù)據(jù)庫(kù)后可以對(duì)聲音進(jìn)行識(shí)別。通過JNI方式移植到j(luò)ava平臺(tái)后,使其應(yīng)用更加廣泛。
參 考 文 獻(xiàn)
[1] C library for computing Mel Frequency Cepstral Coefficients (MFCC)
[2] Freeman H. On the Encoding of Arbitrary Geometric Configurations. IRE Trans. Electronics and Computers, 1961, 10:260-268
[3] Ballard D H. Generalizing the Hough Transform to Detect Arbitrary Shapes [J]. Pattern Recognition, 1987, 13(81):111-122.