文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)11-0016-03
說話人識別作為一種生物識別技術(shù),能夠根據(jù)測試語音來辨別說話者的身份。說話人識別的過程可以分為語音信號預(yù)處理、特征提取和識別判斷三部分。其中,識別判斷由碼本訓(xùn)練和識別兩部分組成,其原理如圖1所示。
語音信號的預(yù)處理包括采樣和量化、預(yù)加重、分幀、加窗、端點(diǎn)檢測等。預(yù)處理的目的是去除噪聲,加強(qiáng)有用的信息,并對輸入應(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è)計(jì)
本文設(shè)計(jì)的說話人識別系統(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中;在采集的同時(shí)進(jìn)行端點(diǎn)檢測;完成端點(diǎn)檢測后,對有效的語音數(shù)據(jù)進(jìn)行Mel倒譜系數(shù)的提??;用碼本庫中的碼本對待識別者語音特征進(jìn)行量化,判斷最小失真碼本;最后進(jìn)行閾值比較,并用數(shù)碼管顯示識別結(jié)果。
系統(tǒng)的硬件平臺為Altera公司提供的EP2C35F672C6開發(fā)板。它由33 216個(gè)LE組成,片上有105個(gè)M4K-RAM塊,RAM總量為483 840,并且其片上有4個(gè)鎖相環(huán)。
1.2 功能模塊分析
算法實(shí)現(xiàn)模塊主要包括:預(yù)處理模塊、特征提取模塊、碼本庫和識別模塊。其工作流程如下:首先,預(yù)處理模塊對輸入的語音數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,判斷錄音是否有效;其次,對有效的語音數(shù)據(jù)進(jìn)行特征提取,形成待測碼本;接著,用碼本庫中的碼本對待測碼本進(jìn)行矢量量化;最后,對量化結(jié)果進(jìn)行判斷,輸出識別結(jié)果。
2 說話人識別系統(tǒng)的FPGA實(shí)現(xiàn)
系統(tǒng)的硬件結(jié)構(gòu)主要包括語音采集模塊、端點(diǎn)檢測模塊、特征提取模塊和VQ識別模塊。
2.1 語音采集模塊
語音采集模塊包括語音數(shù)據(jù)的采集和存儲兩部分,由WM8731控制單元和格式轉(zhuǎn)換單元組成。系統(tǒng)通過I2C總線來實(shí)現(xiàn)對WM8731的控制,I2C控制器的時(shí)鐘輸入由系統(tǒng)時(shí)鐘分頻得到。系統(tǒng)時(shí)鐘為50 MHz,分頻得到I2C控制器時(shí)鐘為20 kHz。由于WM8731采集的16 bit語音數(shù)據(jù)是串行輸出的,因此在進(jìn)行后續(xù)處理之前需要進(jìn)行串行到并行格式的轉(zhuǎn)換。
2.2 端點(diǎn)檢測模塊
本文采用基于短時(shí)能量和短時(shí)平均過零率的雙門限檢測法,將加窗處理放在特征提取的過程中進(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,可以有效地降低白噪聲對過零率造成的影響。
端點(diǎn)檢測模塊的RTL級視圖如圖5所示。其中,vad_part1_sp2為數(shù)據(jù)轉(zhuǎn)換單元;vad_d1為有效位延遲單元;vad_part2_sp1為短時(shí)能量和短時(shí)平均過零率計(jì)算單元;vad_part3_sp1為幀端點(diǎn)檢測單元。
在幀端點(diǎn)檢測單元中,en為輸入使能標(biāo)志位,energy和zcr分別為輸入幀短時(shí)能量和短時(shí)平均過零率,enGate為短時(shí)能量閾值寄存器,zcrGate為短時(shí)平均過零率閾值寄存器,BeginLen為起始點(diǎn)幀長閾值,EndLen為結(jié)束點(diǎn)幀長閾值,flag1為起始點(diǎn)檢測完成標(biāo)志位,flag2為結(jié)束點(diǎn)檢測完成標(biāo)志位。具體檢測步驟如下:
(1)初始化各寄存器。
(2)en有效時(shí),對前10幀數(shù)據(jù)的短時(shí)能量和短時(shí)平均過零率求和,counter1用于計(jì)數(shù)。
(3)當(dāng)counter1=10時(shí),把前10幀數(shù)據(jù)的短時(shí)能量和短時(shí)平均過零率均值分別存于寄存器enGate和zcrGate中,完成閾值計(jì)算。
(4)對輸入信號進(jìn)行判斷:當(dāng)輸入幀energy或zcr大于閾值時(shí),用寄存器framebegin記錄幀號,并執(zhí)行步驟(5);否則,重復(fù)步驟(4)。
(5)counter2對輸入幀計(jì)數(shù)。當(dāng)輸入幀energy或zcr小于閾值時(shí),counter2和framebegin清零,返回步驟(4);當(dāng)counter2>BeginLen時(shí),起始幀檢測結(jié)束,flag1置1,并執(zhí)行步驟(6)。
(6)當(dāng)輸入幀energy和zcr都小于閾值時(shí),用寄存器frameend記錄幀號,并執(zhí)行步驟(7);否則,重復(fù)步驟(6)。
(7)counter3對輸入幀計(jì)數(shù)。當(dāng)輸入幀energy或zcr大于閾值時(shí),counter3和frameend清零,并返回步驟(6);當(dāng)counter3>EndLen時(shí),結(jié)束幀檢測完成,flag2置1,并執(zhí)行步驟(8)。
(8)當(dāng)flag1和flag2同時(shí)有效時(shí),輸出起始幀號和結(jié)束幀號;否則,error置1。
2.3 特征提取模塊
特征提取中的FFT運(yùn)算單元采用按時(shí)間抽取基2算法[5]。一幀數(shù)據(jù)(128點(diǎn))的FFT可分為7級運(yùn)算,每級包括64個(gè)蝶形運(yùn)算單元。總體硬件結(jié)構(gòu)圖如圖6所示,主要包括倒序模塊、存儲單元、蝶形運(yùn)算單元、地址發(fā)生器和控制單元5個(gè)部分。
2.4 VQ識別模塊
識別就是尋找最小失真碼書的過程,其硬件結(jié)構(gòu)如圖7所示。將未知矢量序列與碼書中的各個(gè)碼字進(jìn)行歐氏距離檢測,累加得到的誤差值就是該碼書的失真值。最小失真的碼書即為判決對象。其中,計(jì)數(shù)模塊用于統(tǒng)計(jì)未知矢量序列,地址發(fā)生器控制碼本輸出。當(dāng)所有碼書對輸入矢量量化結(jié)束后,判決模塊檢測最小失真碼書并輸出結(jié)果。
本文采用平方誤差歐氏距離測度。對一個(gè)待測碼本進(jìn)行矢量量化的具體步驟如下:
(1)初始化各個(gè)寄存器。
(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上完成。碼本的存儲采用單精度浮點(diǎn)數(shù)形式,一個(gè)碼本的大小為128 bit×12 bit×32 bit,共6 KB。
實(shí)驗(yàn)結(jié)果表明,在系統(tǒng)時(shí)鐘為50 MHz的條件下,F(xiàn)PGA的處理速度是PC機(jī)的18倍,具有更好的實(shí)時(shí)性能。
參考文獻(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].科技情報(bào)開發(fā)與經(jīng)濟(jì),2009,19(11):87-89.
[5] 楊靜.基于FPGA的FFT處理器設(shè)計(jì)與實(shí)現(xiàn)[J].化工自動(dòng)化及儀表,2010,37(3):107-109.