《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA的說話人識別系統(tǒng)設(shè)計
基于FPGA的說話人識別系統(tǒng)設(shè)計
來源:電子技術(shù)應(yīng)用2012年第11期
陳 勇,李晶皎,,石 鑫,,張莉佳
東北大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽110819
摘要: 針對實時性問題提出了一種以FPGA為硬件平臺的說話人識別系統(tǒng)解決方案,。該方案以MFCC為語音特征,,采用了基于矢量量化的說話人識別算法。系統(tǒng)主要包括語音信號采集,、端點檢測,、特征提取和識別判斷4個部分。經(jīng)測試證明,,該系統(tǒng)完成了設(shè)計所需的基本功能,。在實驗室條件下,當(dāng)系統(tǒng)時鐘為50 MHz時,,完成一次4碼的識別耗時15.932 ms,,對12碼的識別率為93.3%。
中圖分類號: TN912.34,;TP391.4
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)11-0016-03
Design of speaker′s voice recognition system based on FPGA
Chen Yong,,Li Jingjiao,Shi Xin,,Zhang Lijia
College of Information Science and Engineering,,Northeastern University, Shenyang 110819,China
Abstract: For real-time problem, this paper presents a speaker′s voice recognition system solution that makes the FPGA as the hardware platform. The system consists of four parts: signal acquisition, endpoint detection, feature extraction and identification. The experiment results show that the time-consuming is 15.932 ms on the 4 codebooks and 50 MHz-clock system, the identification rate is 93.3% on the 12 codebooks system. This kind of design improves the system′s recognition speed, which is an effective program to solve the real-time problem.
Key words : speaker′s voice recognition,;VAD,;MFCC;vector quantization,;FPGA

    說話人識別作為一種生物識別技術(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&times;12 bit&times;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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。