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