王志琪,朱婧雯,王振帥,盧新祥
(紹興文理學(xué)院數(shù)理信息學(xué)院,浙江紹興,312000)
關(guān)鍵字:STM32;門禁系統(tǒng);聲紋識別;梅爾倒譜系數(shù)特征;高斯混合模型;訊飛開放平臺
在使用傳統(tǒng)鎖具前,人們需要進行學(xué)習(xí)及數(shù)次模擬如何使用鑰匙開鎖,并將時刻保持鑰匙不離身的長期行為習(xí)慣?;谛畔⒓夹g(shù)的智能門禁則將人們從繁瑣中解放出來,這些技術(shù)包括人臉識別、指紋識別、聲紋識別、數(shù)字密碼等,它們各具優(yōu)勢。應(yīng)用聲紋鎖,我們只要像往常一樣說話、給機器下達指令,系統(tǒng)就會自動識別用戶身份,使用非常方便。更重要的是,在新冠疫情大流行的背景下,采用聲紋識別的方式無需使用者摘下口罩、接觸指紋識別模塊等,完全可以在無接觸的情況下提供身份驗證服務(wù),為人們提供更安全高效的門禁服務(wù)。
現(xiàn)在成熟的聲紋識別技術(shù)大多基于聯(lián)合因子分析、卷積神經(jīng)網(wǎng)絡(luò)等需要大量計算、數(shù)據(jù)的識別方法。本文設(shè)計一種利用高斯混合模型的聲紋識別系統(tǒng)并用于鎖具,基于STM32平臺,具有計算量小、無接觸等特點。
如圖1所示,本系統(tǒng)主要分為系統(tǒng)控制模塊、嵌入式聲紋處理模塊、鎖體模塊三個主要部分,以及兩個擴展模塊(虛線框):手機APP模塊和藍牙傳輸模塊。系統(tǒng)具有直接驗證和使用APP驗證兩種工作模式。在直接驗證模式,用戶僅需在初始化的聲紋錄入階段使用系統(tǒng)控制模塊中的屏幕、麥克風(fēng)進行錄入,而在驗證時,只要靠近說話,當(dāng)累積能量大于閾值時即可觸發(fā)聲紋驗證并執(zhí)行開鎖。在APP驗證模式中,預(yù)先綁定的手機端APP進行交互和驗證,驗證通過后,通過藍牙向系統(tǒng)控制模塊發(fā)送驗證成功消息,在系統(tǒng)控制模塊接收到驗證成功的消息后驅(qū)動舵機開鎖。
圖1 系統(tǒng)框圖
圖2為系統(tǒng)實物圖,其中“1”是系統(tǒng)控制模塊,“2”是開鎖舵機,“3”是藍牙傳輸模塊,“4”是手機APP模塊。
圖2 系統(tǒng)實物圖
系統(tǒng)控制模塊位于鎖的外殼中,具有屏幕和按鍵與用戶進行交互。模塊選取高速、低功耗的STM32F429作為核心芯片,其主頻可達180 MHz,且具備一套完整的DSP指令集,有豐富的資源和可觀的處理速度來實現(xiàn)對聲音信號的保存、處理和建模。系統(tǒng)控制模塊的流程如圖3所示。
圖3 系統(tǒng)控制模塊流程圖
(1)音頻信號預(yù)處理
考慮到主控芯片的處理效率、減少用戶等待時間等因素,在進行建模之前,先對收集到的音頻進行預(yù)處理:
①將環(huán)境聲音和人聲分離,通過計算累積能量區(qū)分環(huán)境聲和人聲,若累積能量大于閾值,則該段語言為有效訓(xùn)練語音。累積能量公式如下:
②對于采集到的一整段不定長的音頻信號,為了從其中提取出固定長度的特征向量,需要將音頻信號進行分幀,每25ms為一幀,每兩幀的開始時間間隔10ms。如此經(jīng)過分幀之后再提取特征,不僅能大幅減少需處理的數(shù)據(jù)量,還能很好地提取出聲紋特征。
③加窗以減小吉布斯現(xiàn)象和頻譜泄露的影響。分幀之后,若對信號直接進行傅里葉變換,由于不連續(xù)點的存在,會產(chǎn)生高頻分量,即吉布斯效應(yīng)。因此需要將分幀之后的數(shù)據(jù)乘以漢明窗,將接近于零的權(quán)重賦予不連續(xù)點。加窗公式如下:
其中漢明窗為:
式中,0 ≤n≤N?1,N-1為總幀數(shù)。
(2)梅爾倒譜系數(shù)的提取
通過離散傅里葉變換將預(yù)處理后的信號v′(n)轉(zhuǎn)換成頻譜。鑒于人耳對低頻更加敏感的特性,還需將頻譜通過一組按照梅爾刻度。設(shè)計好的三角帶通濾波器組,再計算每幀語音的對數(shù)能量:
式中,MEL為梅爾濾波器組。再對此對數(shù)能量進行逆離散余弦變換得到倒譜,其系數(shù)數(shù)組就是一幀語音信號的MFCC參數(shù):
式中D為每組MFCC參數(shù)數(shù)量(D=20)。
(3)訓(xùn)練說話者高斯混合模型
利用上一步已經(jīng)保留的說話者的所有MFCC參數(shù),可訓(xùn)練出包含說話者特征的GMM0。高斯混合模型主要公式為:
其中→為n維隨機矢量,→表示GMM所有參數(shù)的集合,ci為第i個高斯分量的權(quán)重且滿足為第i組高斯分量,是一個標(biāo)準(zhǔn)的多元正態(tài)分布。
由此,一個說話者的特征可由以下參數(shù)表示:
在明確了主要公式之后,采用期望值最大化算法。設(shè)定起始參數(shù)λ,迭代計算。由k-均值算法獲取,M是MFCC參數(shù)矢量維度(M=20)。
在第t步迭代中,假設(shè)當(dāng)前參數(shù)是t-1,則在第i個高斯分量上的后驗概率為
(4)聲紋識別
由于高斯混合模型是一個概率模型,可以采用后驗概率作為相似匹配的分數(shù),可以通過最大化似然函數(shù)判別得到最相似的說話人。最大化對數(shù)似然函數(shù)公式:
此模塊為擴展模塊,用于安全性要求高、無接觸的身份驗證。用戶可以注冊賬戶登錄手機APP,能夠在手機中進行聲紋錄入和識別驗證兩種操作,具體流程如下:
當(dāng)用戶選擇聲紋錄入時,手機上會顯示5段由8位數(shù)字組成的文本,用戶讀完這些文本,聲紋便建模成功。對于APP上的聲紋建模和識別,在訊飛開放平臺共享的庫中包含安卓平臺的聲紋識別接口,將用戶名和操作指令傳入接口即可對聲紋進行建?;蝌炞C。
當(dāng)需要聲紋驗證時,APP會隨機生成8位數(shù)字,在用戶朗讀8位數(shù)字時進行錄音建模,再將識別結(jié)果通過藍牙模塊發(fā)送給藍牙傳輸模塊,即可實現(xiàn)開門操作。整體流程見圖4。
圖4 擴展模塊流程圖
此模塊為擴展模塊。主控芯片通過HC-05藍牙模塊與手機APP實現(xiàn)通信,HC-05具有兩種工作模式:命令響應(yīng)工作模式和自動連接工作模式,滿足STM32和安卓手機通信的需求。在登錄APP時,手機會向系統(tǒng)控制模塊自動發(fā)送配對信號,系統(tǒng)控制模塊收到此配對信號后,向手機返回驗證,形成連接。
門鎖模塊外部結(jié)構(gòu)與傳統(tǒng)的鎖體相同,可以直接裝入傳統(tǒng)的門中。模塊主要包含舵機及其驅(qū)動、傳動部件、鎖舌等。模塊內(nèi)部示意圖如圖5所示。
圖5 門鎖模塊示意圖
舵機的驅(qū)動信號由控制模塊提供,通過將舵機和傳動部件相連即可驅(qū)動鎖舌進行開關(guān)門動作。由于鎖體的空間狹小且鎖舌與外部結(jié)構(gòu)往往存在不小的摩擦,門鎖模塊采用MG-995舵機來轉(zhuǎn)動傳動部件,MG-995扭矩可達13kg/cm,其扭矩可以輕松轉(zhuǎn)動傳動部件,且具有一定的冗余量。其次,它具有180°轉(zhuǎn)動角度,可以實現(xiàn)關(guān)門、反鎖等動作,滿足門鎖需求。
本文研究了基于Cortex-M4和安卓平臺的聲紋識別技術(shù)的門禁系統(tǒng),將效率高、計算量小的聲紋識別模塊移植入STM32中,同時在APP中使用訊飛開放平臺的接口,有很好的識別精度和較高的安全性,再通過藍牙將安卓與主控模塊相連,從而實現(xiàn)無接觸式的門禁系統(tǒng)。