安卓平臺說話人識別系統(tǒng)的實現(xiàn)_第1頁
安卓平臺說話人識別系統(tǒng)的實現(xiàn)_第2頁
安卓平臺說話人識別系統(tǒng)的實現(xiàn)_第3頁
安卓平臺說話人識別系統(tǒng)的實現(xiàn)_第4頁
安卓平臺說話人識別系統(tǒng)的實現(xiàn)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

本文格式為Word版,下載可任意編輯——安卓平臺說話人識別系統(tǒng)的實現(xiàn)何建軍

本文在安卓平臺上設(shè)計實現(xiàn)了基于GMM模型的說話人識別系統(tǒng),完成了GMM模型參數(shù)的訓練和識別過程。并基于TIMIT語料庫,通過調(diào)整GMM階數(shù)和測試人數(shù),對基于GMM模型的說話人識別系統(tǒng)的時效性進行了驗證分析。試驗結(jié)果說明:①GMM模型的階數(shù)越多,系統(tǒng)的識別時間越長;②測試人數(shù)越多,系統(tǒng)的識別時間越長。在GMM模型階數(shù)不高以及使用人數(shù)不多的狀況下,該說話人識別系統(tǒng)基本滿足用戶的使用需求。

美爾頻率倒譜系數(shù)

高斯混合模型

說話人識別

安卓

引言:

說話人識別,也叫聲紋識別,是通過對說話人語音信號的分析處理來完成說話人的鑒別或確認。隨著嵌入式軟硬件技術(shù)和無線通信領(lǐng)域的迅猛發(fā)展,語音輸入和操縱將成為手持移動設(shè)備和嵌入式系統(tǒng)最正確的交互方式,以聲紋信息為特征的身份鑒別技術(shù)也更加顯得重要。

與基于PC機的說話人識別系統(tǒng)相比,雖然基于嵌入式設(shè)備的說話人識別系統(tǒng)在存儲容量、運算速度等方面都不及PC機,但是,基于嵌入式設(shè)備的說話人識別系統(tǒng)由于同時具備嵌入式系統(tǒng)本身的低功耗、便攜性、可靠性,以及說話人識別技術(shù)的確切性、便利性、經(jīng)濟性等諸多優(yōu)勢[1],隨著嵌入式軟硬件技術(shù)和無線電通信技術(shù)的迅猛發(fā)展,基于嵌入式設(shè)備的說話人識別系統(tǒng)的優(yōu)勢更加彰顯。

一、說話人識別技術(shù)

目前,說話人識別新技術(shù)接連不斷出現(xiàn),如GMM-UBM結(jié)構(gòu)[2]與支持向量機(supportvectormachine,簡稱SVM)[3-4]結(jié)合技術(shù)、基于得分規(guī)整技術(shù)的HNORM、ZNORM和TNORM技術(shù)、潛伏因子分析(latentfactoranalysis,簡稱LFA)技術(shù)、大詞匯表連續(xù)語音識別(largevocabularycontinuousspeechrecognition,簡稱LVCSR)應(yīng)用于說話人識別技術(shù)、話音信號中的高維信息使用、以及用于解決通道失配問題的SMS技術(shù)等等。然而,當今最卓越的說話人識別系統(tǒng)依舊是基于GMM模型的,特別是基于UBM-MAP結(jié)構(gòu)的。

說話人識別的目的是識別出說話人的身份,其前提是需要提供說話人所講的一段話,從而從該語音中提取能夠反映說話人特性的特征參數(shù),再分析和處理這些參數(shù),最終甄別出說話人的身份。其實質(zhì)是一個模式識別[5-6]的問題,基本原理是將待識別的說話人模型與現(xiàn)存模板庫中的模型進行對比,根據(jù)概率似然度或某種距離來判定待識別的說話人是庫中哪個說話人,或判斷待識別的說話人到底是不是所聲稱的那個說話人。說話人識別系統(tǒng)尋常由語音信號預(yù)處理、說話人特征參數(shù)提取、模型參數(shù)訓練、模式匹配和結(jié)果判決等幾部分組成,其基本結(jié)構(gòu)框圖[7]如圖1所示。此外,說話人識別系統(tǒng)還必需對判決閾值進行選擇,從而達到較好的識別效果。

一個完整的說話人識別系統(tǒng)的建立和應(yīng)用可分為模型參數(shù)訓練階段和結(jié)果識別階段[8]。

模型訓練框圖如圖2所示。

結(jié)果識別框圖如圖3所示。

本文語音加窗預(yù)處理使用的是漢明窗,采用美爾頻率倒譜系數(shù)(MelFrequencyCepstrumCoefficient,簡稱MFCC)[9-11]作為特征參數(shù),采用高斯混合模型作為訓練/識別模型。

二、系統(tǒng)實現(xiàn)及試驗結(jié)果分析

2.1系統(tǒng)在安卓平臺的實現(xiàn)

2.1.1軟件開發(fā)環(huán)境

軟件開發(fā)環(huán)境如下:

1.操作系統(tǒng):WindowsXP;

2.開發(fā)環(huán)境:Eclipse3.5;

3.開發(fā)工具包:JDK1.6和Android2.2SDK。

2.1.2用戶界面

用戶界面是使用安卓提供的GUI組件實現(xiàn)的,最終實現(xiàn)的效果如圖4所示。

訓練部分:訓練時,先設(shè)置特征向量和GMM模型參數(shù),然后點擊“選擇語音文件〞按鈕選擇訓練語音文件,最終點擊“建立模型〞或“繼續(xù)訓練〞按鈕進行模型訓練,并保存模型參數(shù),模型訓練流程如圖5所示。

識別時,同樣需要先設(shè)置特征向量和GMM模型參數(shù),然后點擊“選擇語音文件〞選擇待識別語音文件,最終點擊“識別〞按鈕進行識別并輸出匹配結(jié)果,識別流程如圖6所示。

2.1.3語音數(shù)據(jù)

語音數(shù)據(jù)提取主要實現(xiàn)由類WavReader(如圖7所示)完成,用戶選擇語音文件后,在選擇“建立模型〞、“繼續(xù)訓練〞或“識別〞按鈕時,主程序?qū)⒄Z音文件路徑傳入類WavReader中,類WavReader則從語音文件中讀取并返回語音數(shù)據(jù)。

類WavReader的主要成員方法說明:

1.publicWavReader(StringfileName)

該方法用于實例化一個WavReader對象。其中,方法參數(shù)為待讀取的語音文件路徑。

2.publicintgetSampleRate()

該方法用于獲取wav文件的采樣率。

3.publicintgetNumSamples()

該方法用于獲取wav文件數(shù)據(jù)點數(shù),即語音數(shù)據(jù)采樣點數(shù)。

4.publicdouble[]getSampleData()

該方法用于獲取Wav文件語音數(shù)據(jù),獲取的語音數(shù)據(jù)長度為getNumSamples()的返回值。

2.1.4特征提取

本文采用MFCC作為特征參數(shù),先將語音的功率譜轉(zhuǎn)換成Mel頻率對應(yīng)的功率譜,再進行濾波取對數(shù),最終進行離散余弦變換的方法求取出來,其計算流程如圖8所示。

特征提取的主要實現(xiàn)由類MFCC(如圖9所示)完成,用戶選擇語音文件后,再次選擇“建立模型〞、“繼續(xù)訓練〞或“識別〞按鈕時,主程序?qū)⒆x取出的語音采樣數(shù)據(jù)與待提取特征矢量的相關(guān)參數(shù)傳入類MFCC中,類MFCC則進行特征參數(shù)提取并返回特征矢量。

類MFCC的主要成員方法說明:

1.publicMFCC(intsampleRate,intwindowSize,intincSize,int

numberCoefficients,intnumberFilters)

該方法用于實例化一個MFCC對象。其中,方法參數(shù)sampleRate為語音數(shù)據(jù)采樣率;windowSize為一幀語音數(shù)據(jù)采樣點數(shù),即幀長;incSize為相鄰兩幀重疊點數(shù),即幀移;numberCoefficients為MFCC參數(shù)維數(shù);numberFilters為Mel尺度濾波器數(shù)。

2.publicfloat[][]melcepst(doubleinput[])

該方法用于從語音數(shù)據(jù)中提取MFCC特征參數(shù)。其中,方法參數(shù)input為從wav文件中提取出來的語音數(shù)據(jù)。

3.privatedouble[]hamming(intsize)

該方法用于產(chǎn)生漢明窗。其中,方法參數(shù)size為窗口長度。

4.privatedouble[][]enframe(doubleinput[],doublewindow[],intframeShift)

該方法用于對語音數(shù)據(jù)進行分幀。其中,方法參數(shù)input為待分幀語音數(shù)據(jù);window為幀長,也是加窗操作的漢明窗窗口長度;frameShift為幀移。

5.privateMaprfft(doubleinput[][],introw,intcolumn,intn,intdim)

該方法用于計算語音信號的頻譜,即進行短時傅里葉變換(DFT)。其中,方法參數(shù)input為分幀后的語音數(shù)據(jù);row為分幀語音數(shù)據(jù)的列數(shù);column為分幀語音數(shù)據(jù)的行數(shù);n為FFT變換點數(shù);dim為矩陣維數(shù)。

6.privateMapmelbankm(intmelChnNum,intfftSize,intfs,floatfl,floatfh)

該方法用于計算Mel尺度濾波器系數(shù)。其中,方法參數(shù)melChnNum為Mel尺度濾波器數(shù);fftSize為FFT長度;fs為采樣率;fl為Mel濾波器的開始間隔;fh為Mel濾波器的終止間隔。

7.privatedouble[][]rdct(doublex[][],intm,intk)

該方法用于對Mel尺度濾波器輸出的對數(shù)功率譜進行反離散余弦變換(DCT)。其中,方法參數(shù)x為濾波器輸出的對數(shù)功率譜;m為FFT長度;k為幀長。

2.1.5模型訓練/識別

模型訓練/識別的主要實現(xiàn)由類Gauss(如圖10所示)完成,用戶選擇語音文件,及選擇“建立模型〞或“繼續(xù)訓練〞后,主程序?qū)⒆x取出的語音采樣數(shù)據(jù)與待提取特征矢量的相關(guān)參數(shù)傳入類Gauss中,類Gauss則進行GMM模型參數(shù)估計。

類Gauss的主要成員方法說明:

1.publicMapgaussmix(floatx[][],floatc,floatl,intm0,Stringv0)

該方法用于初始化GMM模型參數(shù)。其中,方法參數(shù)x為MFCC特征參數(shù);c為最小方差的歸一化數(shù)據(jù);l的整數(shù)部分為最大迭代次數(shù),小數(shù)部分為迭代終止閥值;m0為GMM混合數(shù);v0為GMM初始方法設(shè)置。

本函數(shù)采用K-均值聚類算法初始化GMM模型參數(shù)。

2.publicMapgaussmix(floatx[][],floatc,floatl,floatm0[][],floatv0[][],floatw0[])

該方法用于估計GMM模型參數(shù)。其中,方法參數(shù)x為MFCC特征參數(shù);c為最小方差的歸一化數(shù)據(jù);l的整數(shù)部分為最大迭代次數(shù),小數(shù)部分為迭代終止閥值;m0為GMM模型的均值矩陣;v0為GMM模型的方差矩陣;w0為GMM模型的權(quán)重向量。

本函數(shù)采用EM算法對GMM模型參數(shù)進行估算。

3.publicMapgaussmixp(floaty[][],floatm[][],floatv[][],floatw[])

該方法用于計算對數(shù)似然度。其中,方法參數(shù)y為MFCC特征參數(shù);m為GMM模型的均值矩陣;v為GMM模型的方差矩陣;w為GMM模型的權(quán)重向量。

4.privateMapgaussmix_train_diagonal(floatxs[][],floatm[][],floatv[][],floatw[],floatc,floatl,floatsx0[],floatmx0[])

該方法用于估計GMM模型參數(shù),協(xié)方差矩陣取對角陣。其中,方法參數(shù)xs為MFCC特征參數(shù);m為GMM模型的均值矩陣;v為GMM模型的方差矩陣;w為GMM模型的權(quán)重向量;c為最小方差的歸一化數(shù)據(jù);l的整數(shù)部分為最大迭代次數(shù),小數(shù)部分為迭代終止閥值;sx0和mx0為gaussmix()方法內(nèi)部使用變量。

5.publicMapkmeans(floatd[][],intk,Stringx0,intl)

該方法為K-均值聚類算法。其中,方法參數(shù)d為待分類的數(shù)據(jù);k為GMM模型混合數(shù);x0為初始化方法設(shè)置;l為最大迭代次數(shù)。

2.1.6模型參數(shù)存取

模型訓練完成后,需將模型參數(shù)存儲在SD卡中,在識別時從SD卡讀出。模型參數(shù)存取的主要實現(xiàn)由類Matrix(如圖11所示)完成。

識別時,同樣需要先設(shè)置特征向量和GMM模型參數(shù),然后點擊“選擇語音文件〞選擇待識別語音文件,最終點擊“識別〞按鈕進行識別并輸出匹配結(jié)果,識別流程如圖6所示。

操作Matrix的主要方法說明:

1.publicvoidwriteMatrix(Matrixmatrix,StringfileName)

該方法用于將Matrix對象數(shù)據(jù)保存到文件中。其中,方法參數(shù)matrix為待寫入的矩陣數(shù)據(jù);fileName為待寫入文件的文件名。

2.publicMatrix

readMatrix(StringfileName)

該方法用于從文件中讀取Matrix對象數(shù)據(jù)。其中,方法參數(shù)fileName為待讀取矩陣數(shù)據(jù)的文件名。

估計出的GMM模型參數(shù)的存儲、讀取分別由函數(shù)writeMatrix()和readMatrix()來完成。

2.1.7權(quán)限聲明

要實現(xiàn)對SD卡的寫入、刪除,以及錄音操作,需為應(yīng)用程序添加相應(yīng)操作權(quán)限。應(yīng)用程序的操作權(quán)限需AndroidManifest.xml文件中添加,即在元素里添加如下權(quán)限聲明:

1.添加寫SD卡權(quán)限

2.添加SD卡文件刪除權(quán)限

3.添加錄音權(quán)限

2.2試驗結(jié)果分析

在安卓平臺手機上進行說話人識別,時效性是影響系統(tǒng)性能的一個重要指標。試驗從TIMIT語音庫中隨機選取20人的語音作為樣本,分別從不同訓練語音時長和不同測試人數(shù)對說話人識別系統(tǒng)的時效性進行了分析。

2.2.1試驗環(huán)境

識別系統(tǒng)的運行環(huán)境為LGP990手機,其主要配置如下:

1.CPU:雙核1GHz;

2.RAM:512MB;

3.操作系統(tǒng):安卓2.2。

2.2.2GMM模型的階數(shù)對系統(tǒng)時效性的影響

GMM模型的階數(shù)不同,系統(tǒng)的識別時間也不一致,為了測試不同GMM模型的階數(shù)對系統(tǒng)時效性的影響,本論文做了GMM模型階數(shù)對系統(tǒng)時效性影響試驗。

試驗條件如下:從TIMIT語音庫中選取10人的10段語音作為樣本數(shù)據(jù),平均每段語音長4.5秒,任選其中一段作為測試數(shù)據(jù),在MFCC系數(shù)的維數(shù)為12,測試人數(shù)為10的狀況下,分別用不同GMM模型階數(shù)測試系統(tǒng)的識別時間,測試結(jié)果如表1所示:

從試驗結(jié)果可以看出,GMM模型的階數(shù)越多,系統(tǒng)的識別時間越長。因此,為安卓平臺手機選擇一個適合的GMM模型階數(shù)是很有必要的。一般來說,階數(shù)的選擇不易取得過高,但也不能太小,往往需要大量的試驗數(shù)據(jù)來確定。

2.2.3測試人數(shù)對系統(tǒng)時效性的影響

測試人數(shù)不同,系統(tǒng)的識別時間也不一致,為了測試不同人數(shù)對系統(tǒng)時效性的影響,本論文做了測試人數(shù)對系統(tǒng)時效性影響試驗。

試驗條件如下:從TIMIT語音庫中選取20人的20段語音作為樣本數(shù)據(jù),平均每段語音長4.5秒,任選其中一段作為測試數(shù)據(jù),在GMM模型的階數(shù)為16,MFCC系數(shù)的維數(shù)為12的狀況下,分別用不同人數(shù)測試系統(tǒng)的識別時間,測試結(jié)果如表2所示:

從試驗結(jié)果可以看出,測試人數(shù)越多,系統(tǒng)的識別時間越長。因此,在安卓平臺手機上進行說話人識別,應(yīng)限制使用人數(shù),過長的系統(tǒng)識別時間是人們所不能接受的。

四、終止語

本文在Android平臺上設(shè)計實現(xiàn)的基于GMM的說話人識別系統(tǒng),并通過試驗分析了不同模型參數(shù)以及不同人數(shù)對系統(tǒng)時效性的影響。試驗結(jié)果說明,在GMM模型階數(shù)不高以及使用人數(shù)不多的狀況下,本文實現(xiàn)的說話人識別系統(tǒng)基本滿足用戶的使用需求。

[1]哈斯塔木嘎.嵌入式Linux環(huán)境下與文本有關(guān)的說話人確認系統(tǒng)的實現(xiàn)[D].呼和浩特:內(nèi)蒙古大學學位論文,2022:1-2.

[2]周玥媛,孔欽.基于GMM-UBM

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論