《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的說話人識別系統(tǒng)設(shè)計(jì)
基于FPGA的說話人識別系統(tǒng)設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2012年第11期
陳 勇,李晶皎,石 鑫,張莉佳
東北大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽110819
摘要: 針對實(shí)時(shí)性問題提出了一種以FPGA為硬件平臺的說話人識別系統(tǒng)解決方案。該方案以MFCC為語音特征,采用了基于矢量量化的說話人識別算法。系統(tǒng)主要包括語音信號采集、端點(diǎn)檢測、特征提取和識別判斷4個(gè)部分。經(jīng)測試證明,該系統(tǒng)完成了設(shè)計(jì)所需的基本功能。在實(shí)驗(yàn)室條件下,當(dāng)系統(tǒng)時(shí)鐘為50 MHz時(shí),完成一次4碼的識別耗時(shí)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ù)加重、分幀、加窗、端點(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&times;12 bit&times;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.

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