崔艷秋,張俊星,李 敏,許 爽
(大連民族學院信息與通信工程學院,遼寧大連116605)
語音是人的自然屬性之一,由于發音器官的生理性差異以及后天所形成的發音習慣的行為差異,不同說話人的語音具有鮮明的個人特征,這使得通過分析語音信號來識別說話人成為可能。說話人確認屬于說話人識別中的一類,通過提取說話人語音中的個人特征來確定一個人的身份。說話人確認所使用的語音是人體所固有的生物特征,不容易被冒充或竊取,可以隨時使用,并且可以利用電話網絡實現遠距離服務,相對于傳統的密碼、鑰匙等身份識別方法更安全、更有效、更可靠,因此具有廣泛的應用領域,越來越受到人們的重視。
LabVIEW是美國NI公司開發的一種編程語言和開發環境,是標準的數據采集和儀器控制軟件[1],通過同計算機相結合可以組建自己的虛擬儀器。虛擬儀器利用計算機的軟、硬件資源,可以高效的實現數據的分析、處理、表達、傳遞、儲存,擴展了傳統儀器的功能。虛擬儀器的核心是軟件,用戶可以根據自己的需要自行設計或擴展儀器的功能,增強了工程人員構建自己的科學或工程系統的能力,在各個領域得到廣泛應用[2-4]。LabVIEW是一種圖形化的編程語言,編程簡單,而且提供了對聲卡進行操作的函數。借助LabVIEW軟件的這些優勢,本文開發了一個說話人確認系統,該系統以計算機作為硬件平臺實現數據的采集,以LabVIEW和MATLAB作為軟件平臺實現語音的分析和說話人的確認。該系統界面友好,操作方便,既可以作為一個系統用于出入境管理、金融服務、信息安全(個人隱私保護)等需要身份認證的領域,也可以作為一個實驗平臺用于各種說話人識別和語音識別算法的仿真分析。
說話人識別是從說話人的語音信號中自動提取說話人的特征,并對說話人進行識別的研究。它同語音識別不同,目的不是識別說話人講的內容,而是識別說話人是誰。按其最終完成的任務,說話人識別可以分為兩類:說話人確認和說話人辨認。本質上,它們都是根據說話人所說的測試語句或關鍵詞,從中提取與說話人本人特征有關的信息,再與存儲的參考模型比較,做出正確的判斷。不過,自動說話人確認是確認一個人的身份,只涉及一個特定的參考模型和待識別模式之間的比較,系統只做出“是”或“不是”的二元判斷。
說話人識別屬于語音信號的模式識別問題。典型的說話人識別系統的結構如圖1,包括預處理、特征提取、建立參考模板、模式匹配和判決等幾大部分[5]。建立一個說話人識別系統可以分為兩個階段:訓練階段和識別階段。訓練階段的目的是提取說話人的特征參數,建立每個說話人的模板或者模型參數參考集;識別階段的目的則是把待識別語音的特征參數和訓練好的模板集進行比較,并根據一定的相似性準則進行判定,給出識別結果。對于說話人確認而言,則是將輸入語音中的特征參數與聲言為某人的參考量相比較,如果兩者的距離小于規定的閾值,則予以確認,否則予以拒絕。

圖1 說話人識別系統框圖
本文設計的說話人確認系統由軟、硬件兩部分組成。硬件部分的主要任務是通過麥克風和計算機上的聲卡將語音信號轉換為電信號,經過A/D轉換,以數字信號的形式傳入計算機;軟件部分的主要任務是數字語音信號的分析和識別。
為了完成語音的采集和數字化,硬件一般包括三個部分:傳感器及信號調理電路,A/D轉換電路,PC機接口電路。但是由于聲卡已經成為計算機的標準配置,而且LabVIEW提供了對聲卡進行操作的函數,所以在本系統中直接采用話筒和聲卡實現這部分功能。
LabVIEW最顯著的特性之一是對數據的圖形化顯示提供了豐富的支持。本系統借助LabVIEW的這一優勢設計了功能強大、友好的系統用戶界面。但是LabVIEW的數據處理功能不夠強大,而本系統需要進行大量復雜的運算。為了彌補Lab-VIEW這方面的不足,本系統在LabVIEW中通過MATLAB Script節點調用MATLAB程序來完成語音的預處理和說話人的確認等復雜運算。本系統所用的LabVIEW版本為LabVIEW7.1。整個系統從功能上可以分為語音采集模塊、訓練模塊、確認模塊三部分,系統的前面板如圖2。

圖2 程序前面板
(1)語音采集模塊
該模塊對應的程序框圖如圖3。

圖3 語音采集模塊程序框圖
LabVIEW7.1中提供了一系列與聲卡有關的函數,這些函數集中在Sound VI子模板下。這些函數都是利用Windows底層函數編寫的,所以靈活、速度快,能夠滿足實時不間斷采集的需要。語音采集模塊主要利用這些函數來完成聲卡參數的設置、語音信號的采集、語音波形的顯示,以及最后聲卡等一系列系統資源的釋放。利用該模塊,用戶可以在前面板設置聲卡的技術參數、啟動語音信號的采集,并且可以同時看到采集的語音波形。
(2)訓練模塊
訓練模塊主要完成訓練階段語音信號的預處理、特征提取以及特征的存儲等工作,對應的程序框圖如圖4。預處理工作包括數字語音信號的預加重、分幀、加窗以及端點檢測,主要是通過調用MATLAB節點中的預處理函數MyPreprocessor來實現的。由唇端輻射引起的能量損耗,使得語音信號能量在高頻處要明顯地小于低頻和中頻處,這樣就導致語音信號的頻譜通常是頻率越高譜值越小[6]。預加重的目的就是增強語音信號的高頻部分,使信號的頻譜變得平坦,以便于統一的分析和處理。本系統讓語音信號通過一個傳遞函數為H(z)=1-0.937 5 z-1的濾波器來實現預加重的作用。分幀、加窗的目的是把語音信號分為一個個短時段,從而可以把語音信號近似為平穩信號來處理。本系統采用的是交疊分幀的方法,幀長為256個采樣點,幀移為80個采樣點,所用的窗函數為漢明窗。端點檢測的目的是去除無聲段保留濁音和清音段以備進行特征參數分析。本系統采用的是基于短時能量和平均過零率的雙門限法[7]來進行端點檢測。特征提取是通過調用MATLAB節點中的特征提取函數mfcc來實現的,提取的特征是Mel頻率倒譜參數。訓練時獲得的特征參數最后利用LabVIEW函數Write To Spreadsheet File.vi存儲在文件中。此外,為了防止訓練中提取的有效語音段太短,在系統中設置了一個閾值。如果采用的幀數大于該閾值則訓練成功,否則判定為訓練失敗。如圖5為訓練成功時對應的前面板。

圖4 訓練模塊的程序框圖

圖5 訓練成功時的前面板
(3)確認模塊
確認模塊主要完成識別階段語音信號的預處理、特征提取以及模式匹配等工作,對應的程序框圖如圖6。預處理和特征提取過程的作用同訓練模塊中的預處理和特征提取過程類似,主要是完成識別階段語音信號的預加重、分幀、加窗、端點檢測以及Mel頻率倒譜特征參數的提取。模式匹配過程主要在MATLAB節點中進行,函數dtw利用動態時間規整(DTW)算法把待確認者語音中提取出的特征參數同文件中讀出的特征模板進行匹配。如果最后算得的距離小于給定的閾值則予以肯定,否則予以拒絕。最后的識別結果顯示在前面板,如圖7。

圖6 確認模塊的程序框圖

圖7 確認成功時的前面板
本實驗在實驗室環境下進行。實驗時,聲卡參數通過前面板設置為單聲道、采樣頻率為11025 Hz,數據格式為16位字長。本系統為與文本有關的說話人確認系統,訓練和識別所用的音節顯示在前面板的“口令”文本框中。訓練時,每個說話人對指定的音節發音;識別時,每個說話人再對(同訓練時)相同的音節發音。對于30個真的待確認者,每人進行10次實驗,此系統的錯誤拒絕率為1%;對于20個假的待證實者,每人進行10次實驗,錯誤接受率為0.5%。從實驗結果可以看出,該系統較好的完成了對說話人身份的確認,識別準確率較高。該系統采用的識別特征是Mel頻率倒譜參數,匹配方法采用的是動態時間規整方法,用戶可以根據自己的需要靈活的升級算法,以獲得更好的識別效果。
本文設計了一個基于LabVIEW的說話人確認系統。該系統以計算機作為硬件平臺、以麥克風作為輸入設備,有強大的語音處理功能,能夠實時、準確地對說話人的身份進行確認。同人臉識別、虹膜識別等其它生物特征識別系統相比,該系統輸入設備成本低,且不涉及隱私問題,用戶易于接受。系統界面友好,開發和維護費用低,易于同安全、監控、管理系統整合,可以廣泛應用于出入境管理、金融服務、信息安全等需要身份認證的領域。同時,該系統也為構建說話人識別和語音識別系統提供了一個有效的框架。用戶可以將它作為一個實驗平臺,根據需要靈活的升級算法,以實現對各種說話人識別和語音識別算法的仿真分析。
[1]侯國屏,王坤,葉齊鑫.LabVIEW7.1編程與虛擬儀器設計[M].北京:清華大學出版社,2005.
[2]王茜蒨,劉佳,彭中,等.基于LabView的激光束發散角測量系統[J].中國激光,2012,39(11):122-125.
[3]陳明星,朱靈,張龍,等.基于LabVIEW的光纖傅里葉變換光譜儀數據處理技術[J].儀器儀表學報,2010,31(3):488-492.
[4]LIU Yi.Analysis on virtual assembly technique of chemical engineering technological process based on labVIEW[J].Journal of Convergence Information Technology,2013,8(3):11-18.
[5]趙力.語音信號處理[M].2版.北京:機械工業出版社,2011.
[6]吳朝暉,楊瑩春.說話人識別模型與方法[M].北京:清華大學出版社,2009.
[7]何強,何英.MATLAB擴展編程[M].北京:清華大學出版社,2002.