基于DSP嵌入式說(shuō)話(huà)人識別系統的設計與實(shí)現
0 引 言
本文引用地址:http://dyxdggzs.com/article/257666.htm說(shuō)話(huà)人身份識別屬于生物認證技術(shù)的一種,是一項根據語(yǔ)音中反映說(shuō)話(huà)人生理和行為特征的語(yǔ)音參數來(lái)自動(dòng)識別說(shuō)話(huà)人身份的技術(shù)。近年來(lái),說(shuō)話(huà)人身份識別以其獨特的方便性、經(jīng)濟性和準確性等優(yōu)勢受到矚目,在信息安全等領(lǐng)域的應用逐漸增大,并成為人們日常生活和工作中重要且普及的安全驗證方式。目前,說(shuō)話(huà)人身份識別在理論上和實(shí)驗室條件下已經(jīng)達到了比較高的識別精度,并開(kāi)始走向實(shí)際應用階段。ATT、歐洲電信聯(lián)盟、ITT、Keyware、T-NETIX,Motorola和Vi-sa等公司相繼開(kāi)展了相關(guān)實(shí)用化研究,國內這方面研究主要在中科聲學(xué)所,中科院自動(dòng)化所,清華大學(xué)等研究所和大學(xué)中進(jìn)行。
基于嵌入式的說(shuō)話(huà)人身份識別系統具有高精度,適時(shí)性好,低功耗,低費用,體積小等優(yōu)勢,逐漸成為說(shuō)話(huà)人身份識別面向實(shí)際應用的新熱點(diǎn)。而隨著(zhù)DSP新技術(shù)的發(fā)展,DSP芯片無(wú)論在處理速度、精度、功耗或者體積等方面都取得了突破性的進(jìn)展。DSP也越來(lái)越多的應用于說(shuō)話(huà)人身份識別。但目前這方面研究主要局限于小數據量、與PC機配套使用上,沒(méi)有太大的實(shí)用價(jià)值。在此介紹一種基于TMS320C6713 DSP芯片設計的嵌入式,10個(gè)人范圍的說(shuō)話(huà)人身份識別系統。該系統可以自舉運行,并可靈活的選擇訓練、識別或者更換訓練者、識別者,識別率達98%以上。
1 系統的架構及硬件構成
系統總體實(shí)現流程如圖1所示。系統主要分為訓練和識別兩部分,系統初始化后由操作者控制訓練或識別。訓練目的是提取說(shuō)話(huà)人模型參數并將其存儲在FLASH ROM中。識別目的是讀取待識別者語(yǔ)音信息并將獲得的模型參數與訓練的模型參數比較,從而獲得識別結果。
1.1 系統的主要硬件構成
系統硬件構成如圖2所示,主要包含語(yǔ)音采集模塊、數據處理模塊(DSP)、程序數據存儲及自舉FLASH模塊、數據存儲器RAM模塊、系統時(shí)序邏輯控制CPLD模塊、JTAG接口模塊。
語(yǔ)音采集模塊主要由TLV320AIC23音頻編解碼器來(lái)完成,該芯片是TI公司的一款高性能的立體聲音頻Codec芯片,內置放大器,輸入/輸出增益可編程設置。模數,數/模轉換集成在一塊芯片中。采樣率8~96 kHz可編程實(shí)現。另外還具有低功耗,連接電路簡(jiǎn)單,性?xún)r(jià)比高的特點(diǎn)。
語(yǔ)音處理DSP采用TI公司的TMS320C6713芯片,該芯片實(shí)現浮點(diǎn)運算,最高時(shí)鐘頻率225 MHz,使用該芯片外部存儲器接口可實(shí)現對外部存儲器(SDRAM)數據傳輸和程序存儲器(FLASH ROM)進(jìn)行程序讀寫(xiě);依靠JTAG接口電路通過(guò)仿真器進(jìn)行仿真調試,實(shí)現與主機數據交換;通過(guò)片內外設McBSP完成串行數據的接收和發(fā)送,實(shí)現對音頻處理模塊的控制等工作。
FLASH ROM最大可提供512 KB空間,通常為前256 KB可用。SDRAM最大容量為16 MB,為該系統提供較大的數據存儲空間。CPLD為存儲器的擴展實(shí)現邏輯編碼。電源為T(mén)PS54310芯片,可為系統提供3.3 V和1.26 V兩種電壓。
1.2 選擇說(shuō)話(huà)人
該系統要訓練10個(gè)人的語(yǔ)音,每個(gè)人的語(yǔ)音存放在FLASH ROM的不同位置。在訓練的開(kāi)始階段,系統需確定當前訓練者的身份,以便對訓練完成后說(shuō)話(huà)者模型參數存儲位置有準確的判斷。對當前訓練者身份的選擇由系統中的4個(gè)Switch實(shí)現。若把每個(gè)Switch的開(kāi)關(guān)兩種狀態(tài)看成是二進(jìn)制數的0,1,則最終可形成16種組合,代表16個(gè)人。該系統選取前10個(gè)組合。
1.3 AIC23語(yǔ)音采集
考慮到系統的實(shí)用性,語(yǔ)音的輸入由mic in接口輸入。語(yǔ)音采集若設為雙聲道,則采集的左右聲道數據差別不大,對識別沒(méi)有太大的幫助,而且采集到的語(yǔ)音會(huì )占用太大存儲器空間,故采用單聲道采樣;對于采樣精度要求,TLV320AIC23可實(shí)現8~96 kHz,16 b,20 b,24 b,32 b,的不同采樣,隨著(zhù)采樣頻率的提高,采樣間隔將相應的縮短,要求更大的內存空間和更長(cháng)的處理時(shí)間,實(shí)驗表明,采樣率由16 kHz下降到8 kHz,所造成的識別率的微乎其微,但是可以節省50%的動(dòng)態(tài)存儲空間,并可減少大量的運算。對于采樣位數,16 b精度已能滿(mǎn)足該系統要求,故采樣精度設為8 kHz,16 b采樣。
1.4 數據的存儲
由TLV320AIC23獲得的語(yǔ)音信號的數據,只有賦值給相應的數組,才能在接下來(lái)的算法中有所應用。為此在SDRAM中定義一片數組存儲區域。對于數組大小及類(lèi)型的選擇基于以下兩點(diǎn):
(1)數組大小選擇。該系統算法中包含訓練和識別兩個(gè)內容。語(yǔ)音信號的訓練需要大量的數據才能準確的提取語(yǔ)音的特征參量。該系統采用8 kHz采樣率的10 s的語(yǔ)音信號,所需的數組空間大小為80 000個(gè)數據單位;語(yǔ)音信號的識別要求快速性,該系統采用時(shí)間較短的8 kHz 3 s語(yǔ)音信號,所需數組空間大小為30 000個(gè)數據單位,為了減少數據空間,系統設定為與訓練數組共用前30 000個(gè)數據單位的空間。
(2)數組類(lèi)型為浮點(diǎn)型,由于設定的采樣格式是16 b采樣,而采樣后數據類(lèi)型是Uint32,語(yǔ)音數據位于低16位,所以賦值過(guò)程中取低16位數據賦值給數組。
1.5 模型參數存入與參數調出
將模型參數存入FLASH ROM的目的是保存訓練所得的參數,以供識別時(shí)調用。訓練可能用于多次識別,或者訓練和識別可能處于不同的時(shí)間地點(diǎn),所以,保存參數的存儲器選定為具有掉電時(shí)數據不丟失特點(diǎn)的FLASH ROM。每個(gè)說(shuō)話(huà)者語(yǔ)音參數代表一個(gè)說(shuō)話(huà)者身份,所以每個(gè)說(shuō)話(huà)者模型參數應存儲在FLASHROM中一個(gè)確定的位置。為此,該系統在FLASHROM中分配了10塊的區域,每個(gè)說(shuō)話(huà)者模型參數占有一塊特定的區域。
在FLASH ROM中存人數據格式為32 b無(wú)符號整數。而訓練得到的是浮點(diǎn)型的數據。這就要求在數據存入之前將浮點(diǎn)數轉換為32 b無(wú)符號類(lèi)型的整數,假設要轉換的數據為float x[M][N]則轉換方法如下:
(1)x[M][N]歸一化;
(2)對x[M][N]乘以一常數K得到有符號整型的數組y[M][N],即:
y[M][N]=x[M][N]×K (1)
(3)屏蔽第32位符號位,得到32 b無(wú)符號類(lèi)型的整數數組。方法如下:
z[i][j]=y[i][j]0x7FFFFFFF (2)
(4)將z[i][j]存入FLASH ROM。
通過(guò)統計實(shí)驗數據發(fā)現歸一化后數據的范圍為10-5~1,故K選擇為108,既可以實(shí)現較大精度的轉化,又不會(huì )影響第31位的數值。轉換得到的有符號整型數組y[M][N]范圍為-108~108,在存儲器中正數為原碼表示,負數為補碼表示,通過(guò)計算發(fā)現,該范圍的正數第31位為0,負數第31位為1,所以,上述第(3)步,將有符號數轉換為無(wú)符號數后,數值的正負改為使用第31位標識。在識別階段,要將說(shuō)話(huà)者的GMM參數依次從FLASH ROM中讀出,逐個(gè)與待識別者語(yǔ)音的MFCC參數比較,求最大似然值。參數調出過(guò)程與以上存入過(guò)程相反。
1.6 說(shuō)話(huà)人身份識別的結果顯示
說(shuō)話(huà)人的身份顯示通過(guò)LED的組合顯示確定。在DSK上有4只LED燈,將每個(gè)LED燈看成是一位二進(jìn)制數。則4個(gè)LED燈最大可表示16個(gè)人的身份。該系統取前10個(gè)組合來(lái)表示所識別的說(shuō)話(huà)人的身份。
1.7 自舉的實(shí)現
以上程序都是通過(guò)PC機與DSP組合實(shí)現,要想使系統在DSP上單獨完成,還必須實(shí)現自舉。該系統采用ROM方式自舉。在自舉實(shí)現過(guò)程中,程序的燒寫(xiě)可以通過(guò)CCS自帶的FLASHBorn工具實(shí)現。在燒寫(xiě)過(guò)程中應正確的分配FLAH ROM的空間。FLASHROM空間總體分為程序存儲區和數據存儲區,經(jīng)計算,程序代碼段大小為0x162C0,故在FLASH ROM中劃分127 KB的空間供程序代碼使用,空間中未使用的部分供程序擴展使用。數據存儲區劃分的大小為64 KB的空間,每個(gè)說(shuō)話(huà)者模型參數占用空間為4.2 KB左右,最多可存放15個(gè)說(shuō)話(huà)人GMM模型參數。該系統訓練者數目為10個(gè),占用空間為42 KB左右。剩余的空間可用來(lái)擴展訓練人數,也可用于后期系統的改進(jìn)。如可以利用語(yǔ)音提示來(lái)顯示說(shuō)話(huà)人身份,而提示語(yǔ)音的數據可以存放于此區域。具體的存儲的安排如表1所示。
2 系統的算法與軟件設計
說(shuō)話(huà)人識別系統的實(shí)現方案如圖3所示。
輸入的模擬語(yǔ)音先通過(guò)預處理,包括預濾波、采樣、量化、加窗、端點(diǎn)檢測、預加重等。語(yǔ)音經(jīng)過(guò)預處理后進(jìn)行特征提取。在訓練階段,對提取的特征進(jìn)行相應的處理后就可以獲得參考模型。識別階段,語(yǔ)音通過(guò)同樣的通道獲得特征參數,生成測試摸型,之后將測試摸型與參考摸型進(jìn)行匹配,從而根據判決邏輯獲得判決結果。
2.1 語(yǔ)音信號的端點(diǎn)檢測
語(yǔ)音信號的端點(diǎn)檢測目的是去除語(yǔ)音信號中的噪聲段。端點(diǎn)檢測從很大程度上影響到識別率。常用方法有短時(shí)能量法,短時(shí)過(guò)零率法和雙門(mén)限法等。本系統選用雙門(mén)限法,實(shí)驗表明,效果優(yōu)于前兩種方法。在雙門(mén)限方法端點(diǎn)檢測中,閾值的選擇尤為關(guān)鍵,該系統的語(yǔ)音采樣頻率設為8 kHz,語(yǔ)音分幀為每幀80個(gè)點(diǎn)。經(jīng)過(guò)多次實(shí)驗,這里短時(shí)能量低閾值通過(guò)式(3)的動(dòng)態(tài)方式得到,高閾值設為低閾值的5倍。而過(guò)零率的閾值選取應充分考慮到噪聲的影響,通過(guò)大量實(shí)驗發(fā)現系統中噪聲的過(guò)零率一般不超過(guò)5,所以對過(guò)零率的閾值選取為25,取得了很好的效果,準確率達到95%以上。
ITU=0.03(amp_max-amp_min)+amp_min (3)
在端點(diǎn)檢測過(guò)程中有時(shí)會(huì )遇到突發(fā)性的干擾噪聲,這種噪聲持續時(shí)間很短,一般小于5 ms。為了消除這種干擾,這里用檢測后的起止長(cháng)度判斷它是不是語(yǔ)音。如果所檢測到的語(yǔ)音長(cháng)度足夠的短,則可以把它當成是噪聲。
2.2 特征參數的提取
語(yǔ)音信號的特征提取是說(shuō)話(huà)人身份識別的難點(diǎn)。能否用相對簡(jiǎn)單的方法提取出一種最能體現說(shuō)話(huà)人個(gè)性信息的特征將成為以后研究的方向。該系統中用的是能體現人耳聽(tīng)覺(jué)特性的Mel倒譜系數(MFCC)。
MFCC著(zhù)眼于人耳的聽(tīng)覺(jué)機理,依據聽(tīng)覺(jué)的結果來(lái)分析語(yǔ)音的頻譜,獲得了很好的識別率和很好的噪聲魯棒性,它利用了聽(tīng)覺(jué)系統的臨界效應,描述人耳對感知的非線(xiàn)性特性。在DSP硬件資源配置中,MFCC在識別性能和DSP內部空間占用方面也取得了很好的平衡。在該系統中使用16個(gè)濾波器(M=16)構成的濾波器組。圖4所示是MFCC的提取過(guò)程。
2.3 識別方法選擇與實(shí)現
基于該系統對速度、識別效率、存儲空間的要求,這里的識別方法選為高斯混合模型。高斯混合模型(GMM)可以看成是狀態(tài)數為1的連續分布隱馬可夫模型CDHMM。一個(gè)M階混合高斯模型的概率密度函數是由M個(gè)高斯概率密度函數加權求和得到,所示如下:
式中:X是一個(gè)D維隨機向量;bi(Xi)是子分布,i=1,2,…,M是子分布;ωi是混合權重,i=1,2,…,M。對GMM模型參數的估計方法該系統采用最大似然估計。對于一組長(cháng)度為T(mén)的訓練矢量序列X={X1,X2,…,XT},GMM的似然度可表示為:
由于式(5)是參數λ的非線(xiàn)性函數,很難直接求出其最大值。因此,該系統采用EM算法估計參數λ。
2.4 算法實(shí)現過(guò)程中的具體考慮.
(1)FFT變換點(diǎn)數的選擇。FFT變換點(diǎn)數選擇很重要,如果選擇太大,則運算復雜度變大,使系統響應時(shí)間變長(cháng),如果選擇太小則可能造成頻率分辨率過(guò)低,提取參數誤差過(guò)大。該系統中選取的點(diǎn)數為240點(diǎn)。
(2)模型參數的選擇。首先模型階數M必須適中,必須足夠大,可以充分表示出空間的分布。然而,階數也不能太大,否則數據數量不足,也無(wú)法準確描述特征空間分布??紤]該系統對參數的存儲空間要求,并綜合以上考慮,該系統選用的階數為32階。
(3)協(xié)方差矩陣類(lèi)型??紤]到減少計算量,這里采用對角陣。在高維特征空間中,對角陣比全矩陣優(yōu)勢更為明顯。
(4)方差限定。當訓練數據不足或者是存在噪聲干擾時(shí),方差幅度會(huì )很小,這樣會(huì )導致模型概率函數的奇異性,所以每次EM迭代時(shí),都需要對方差進(jìn)行限定。即:
根據實(shí)驗結果,該系統選取S2 min為0.025
(4)模型初值的設定:EM算法是尋找局部最大概率的模型。不同的初值會(huì )導致不同的局部極值。該系統中采用的是K均值法。
2.5 K均值法應注意的幾個(gè)問(wèn)題
(1)聚類(lèi)中心的初始化。對于聚類(lèi)中心數目由GMM模型決定,假設是N。對于聚類(lèi)中心的初始化,一般取前N個(gè)矢量作為聚類(lèi)中心,但在實(shí)驗過(guò)程中發(fā)現,這種方法不具有針對性,往往設立的初始的聚類(lèi)中心不具有很好的聚類(lèi)效果。所以這里采用取質(zhì)心法。具體方法為:
第一步先求出訓練集S中全體矢量X的質(zhì)心,然后在S中找出一個(gè)與此質(zhì)心的畸變量最大的矢量Xj,再在S中找到一個(gè)與Xj的畸變量最大的矢量Xk。以Xj和Xk為基準進(jìn)行胞腔劃分,得到Sk和Sj兩個(gè)子集。對這兩個(gè)子集分別按照同樣的方法劃分得到4個(gè)子集。依次類(lèi)推,得到N個(gè)子集。這N個(gè)子集的質(zhì)心即為初始的聚類(lèi)中心。
(2)聚類(lèi)中心改進(jìn)量δ的選擇。對于聚類(lèi)中心改進(jìn)量δ的選擇,若選擇太大,則聚類(lèi)不充分,影響訓練效果;若太小,則會(huì )導致訓練無(wú)法完成,該系統通過(guò)試驗,取比較適中的數0.01。
(3)最大迭代次數的選擇。對于最大迭代次數的選擇,太小會(huì )導致誤判,太大導致訓練不成功時(shí)過(guò)多的占用系統時(shí)間。該系統迭代次數設為100,比較適中。
3 實(shí)驗結果及改進(jìn)點(diǎn)
通過(guò)系統調試及改進(jìn),該系統最終實(shí)現10個(gè)說(shuō)話(huà)人的身份識別,并自舉運行。運行時(shí)通過(guò)Switch組合可方便的選擇訓練或識別的功能,并可更新說(shuō)話(huà)人。訓練,識別的進(jìn)度及結果通過(guò)LED組合顯示。利用該系統對5男5女10個(gè)人進(jìn)行訓練,每人500次測試,結果正確識別率為98%,識別時(shí)間為3 s左右。說(shuō)明該系統可以有效的識別說(shuō)話(huà)人的身份。對于該系統,識別時(shí)間及識別率上還有改進(jìn)空間,以后工作可圍繞識別時(shí)間上改進(jìn)。
評論