文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)11-0016-03
說話人識別作為一種生物識別技術(shù),,能夠根據(jù)測試語音來辨別說話者的身份。說話人識別的過程可以分為語音信號預(yù)處理,、特征提取和識別判斷三部分,。其中,,識別判斷由碼本訓(xùn)練和識別兩部分組成,其原理如圖1所示,。
語音信號的預(yù)處理包括采樣和量化,、預(yù)加重、分幀,、加窗,、端點檢測等。預(yù)處理的目的是去除噪聲,,加強有用的信息,,并對輸入應(yīng)測量儀器或其他因素造成的退化現(xiàn)象進(jìn)行復(fù)原。
特征提取是系統(tǒng)的關(guān)鍵部分,。近年來,,一種能夠比較充分利用人耳非線性系統(tǒng)感知特性的參數(shù)得到了廣泛的應(yīng)用,這就是Mel頻率倒譜系數(shù)[1],。臨界頻率帶寬隨著頻率的變化而變化,,并與Mel頻率增長一致[2]。在1 000 Hz以下大致呈線性分布,,帶寬為100 Hz左右,;在1 000 Hz以上呈對數(shù)增長,具體如式(1)所示:
1 識別系統(tǒng)設(shè)計
本文設(shè)計的說話人識別系統(tǒng)的應(yīng)用背景為文本相關(guān)的閉集識別[4],。通過對待識別者語音信號的采集分析,,系統(tǒng)能夠識別出系統(tǒng)內(nèi)注冊人員的身份。
1.1 系統(tǒng)整體架構(gòu)
通過對具體功能的分析,,系統(tǒng)的整體框架可以采用圖3所示的形式,。其工作流程為:采集待識別者3 s的語音數(shù)據(jù)并將其保存在片外SRAM中;在采集的同時進(jìn)行端點檢測,;完成端點檢測后,,對有效的語音數(shù)據(jù)進(jìn)行Mel倒譜系數(shù)的提取,;用碼本庫中的碼本對待識別者語音特征進(jìn)行量化,,判斷最小失真碼本;最后進(jìn)行閾值比較,,并用數(shù)碼管顯示識別結(jié)果,。
系統(tǒng)的硬件平臺為Altera公司提供的EP2C35F672C6開發(fā)板。它由33 216個LE組成,,片上有105個M4K-RAM塊,,RAM總量為483 840,并且其片上有4個鎖相環(huán)。
1.2 功能模塊分析
算法實現(xiàn)模塊主要包括:預(yù)處理模塊,、特征提取模塊、碼本庫和識別模塊,。其工作流程如下:首先,,預(yù)處理模塊對輸入的語音數(shù)據(jù)進(jìn)行實時處理,判斷錄音是否有效,;其次,,對有效的語音數(shù)據(jù)進(jìn)行特征提取,形成待測碼本,;接著,,用碼本庫中的碼本對待測碼本進(jìn)行矢量量化;最后,,對量化結(jié)果進(jìn)行判斷,,輸出識別結(jié)果。
2 說話人識別系統(tǒng)的FPGA實現(xiàn)
系統(tǒng)的硬件結(jié)構(gòu)主要包括語音采集模塊,、端點檢測模塊,、特征提取模塊和VQ識別模塊。
2.1 語音采集模塊
語音采集模塊包括語音數(shù)據(jù)的采集和存儲兩部分,,由WM8731控制單元和格式轉(zhuǎn)換單元組成,。系統(tǒng)通過I2C總線來實現(xiàn)對WM8731的控制,I2C控制器的時鐘輸入由系統(tǒng)時鐘分頻得到,。系統(tǒng)時鐘為50 MHz,,分頻得到I2C控制器時鐘為20 kHz。由于WM8731采集的16 bit語音數(shù)據(jù)是串行輸出的,,因此在進(jìn)行后續(xù)處理之前需要進(jìn)行串行到并行格式的轉(zhuǎn)換,。
2.2 端點檢測模塊
本文采用基于短時能量和短時平均過零率的雙門限檢測法,將加窗處理放在特征提取的過程中進(jìn)行,。
一般情況下,,在預(yù)加重單元中,預(yù)加重系數(shù)的值接近于1,。在0.9~1之間,,其典型值為0.94。為方便硬件編程,,將一階FIR濾波器用差分方程表示為:
其中,,data為16 bit輸入數(shù)據(jù),Data為8 bit輸出數(shù)據(jù),。把輸入信號中大于-20且小于20的數(shù)據(jù)置0,,可以有效地降低白噪聲對過零率造成的影響。
端點檢測模塊的RTL級視圖如圖5所示,。其中,,vad_part1_sp2為數(shù)據(jù)轉(zhuǎn)換單元,;vad_d1為有效位延遲單元;vad_part2_sp1為短時能量和短時平均過零率計算單元,;vad_part3_sp1為幀端點檢測單元,。
在幀端點檢測單元中,en為輸入使能標(biāo)志位,,energy和zcr分別為輸入幀短時能量和短時平均過零率,,enGate為短時能量閾值寄存器,zcrGate為短時平均過零率閾值寄存器,,BeginLen為起始點幀長閾值,,EndLen為結(jié)束點幀長閾值,flag1為起始點檢測完成標(biāo)志位,,flag2為結(jié)束點檢測完成標(biāo)志位,。具體檢測步驟如下:
(1)初始化各寄存器。
(2)en有效時,,對前10幀數(shù)據(jù)的短時能量和短時平均過零率求和,,counter1用于計數(shù)。
(3)當(dāng)counter1=10時,,把前10幀數(shù)據(jù)的短時能量和短時平均過零率均值分別存于寄存器enGate和zcrGate中,,完成閾值計算。
(4)對輸入信號進(jìn)行判斷:當(dāng)輸入幀energy或zcr大于閾值時,,用寄存器framebegin記錄幀號,,并執(zhí)行步驟(5);否則,,重復(fù)步驟(4),。
(5)counter2對輸入幀計數(shù)。當(dāng)輸入幀energy或zcr小于閾值時,,counter2和framebegin清零,,返回步驟(4);當(dāng)counter2>BeginLen時,,起始幀檢測結(jié)束,,flag1置1,并執(zhí)行步驟(6),。
(6)當(dāng)輸入幀energy和zcr都小于閾值時,,用寄存器frameend記錄幀號,并執(zhí)行步驟(7),;否則,,重復(fù)步驟(6)。
(7)counter3對輸入幀計數(shù)。當(dāng)輸入幀energy或zcr大于閾值時,,counter3和frameend清零,,并返回步驟(6);當(dāng)counter3>EndLen時,,結(jié)束幀檢測完成,,flag2置1,并執(zhí)行步驟(8),。
(8)當(dāng)flag1和flag2同時有效時,輸出起始幀號和結(jié)束幀號,;否則,,error置1。
2.3 特征提取模塊
特征提取中的FFT運算單元采用按時間抽取基2算法[5],。一幀數(shù)據(jù)(128點)的FFT可分為7級運算,,每級包括64個蝶形運算單元??傮w硬件結(jié)構(gòu)圖如圖6所示,,主要包括倒序模塊、存儲單元,、蝶形運算單元,、地址發(fā)生器和控制單元5個部分。
2.4 VQ識別模塊
識別就是尋找最小失真碼書的過程,,其硬件結(jié)構(gòu)如圖7所示,。將未知矢量序列與碼書中的各個碼字進(jìn)行歐氏距離檢測,累加得到的誤差值就是該碼書的失真值,。最小失真的碼書即為判決對象,。其中,計數(shù)模塊用于統(tǒng)計未知矢量序列,,地址發(fā)生器控制碼本輸出,。當(dāng)所有碼書對輸入矢量量化結(jié)束后,判決模塊檢測最小失真碼書并輸出結(jié)果,。
本文采用平方誤差歐氏距離測度,。對一個待測碼本進(jìn)行矢量量化的具體步驟如下:
(1)初始化各個寄存器。
(2)對輸入幀數(shù)據(jù)進(jìn)行歐氏距離檢測,,c1=c1+1,。
(3)對檢測結(jié)果進(jìn)行累加求和,如c1<128,,則執(zhí)行步驟(2),;否則,執(zhí)行步驟(4)。
(4)輸出累加結(jié)果,,量化完畢,。
本系統(tǒng)碼本的訓(xùn)練在PC上完成。碼本的存儲采用單精度浮點數(shù)形式,,一個碼本的大小為128 bit×12 bit×32 bit,,共6 KB。
實驗結(jié)果表明,,在系統(tǒng)時鐘為50 MHz的條件下,,F(xiàn)PGA的處理速度是PC機(jī)的18倍,具有更好的實時性能,。
參考文獻(xiàn)
[1] Xie Qiuyun,,Xiao Tiejun.Implementation of MFCC extraction in speech recognition based on FPGA[J].Computer Engineering and Design,2008,,29(21):5474-5475.
[2] 王玥.說話人識別中語音特征參數(shù)提取方法的研究[D].長春:吉林大學(xué),,2009.
[3] Wei Han.An efficient MFCC extraction method in speech recognition[C].Kos,Greece:ISCAS,,2006:145-148.
[4] 潘灝.語音識別門禁系統(tǒng)關(guān)鍵技術(shù)研究[J].科技情報開發(fā)與經(jīng)濟(jì),,2009,19(11):87-89.
[5] 楊靜.基于FPGA的FFT處理器設(shè)計與實現(xiàn)[J].化工自動化及儀表,,2010,,37(3):107-109.