王維強(qiáng)
(中國空空導(dǎo)彈研究院 河南 洛陽 471009)
自上世紀(jì)70年代以來,國內(nèi)外的專家們在語音識別研究領(lǐng)域內(nèi)取得了重大突破,先后出現(xiàn)了動態(tài)時間規(guī)整技術(shù)(DTW)、隱馬爾可夫模型(HMM)和人工神經(jīng)網(wǎng)絡(luò)(ANN)等3種主要方法。DTW雖然在孤立詞語音識別中取得了不錯的性能,但其要求的存儲量和計算量太大;ANN雖然前景看好但其目前尚未有突破性進(jìn)展,目前它們都難以在工程中得到廣泛的應(yīng)用。HMM算法使語音識別的計算量得到大大減少,而且正確率較高,從而在語音識別中得到廣泛引用。
筆者在以ADSP-BF531為核心構(gòu)建的嵌入式系統(tǒng)上實現(xiàn)了對非特定人、孤立詞的語音識別,該系統(tǒng)采用了端點檢測、矢量量化(VQ)和離散隱馬爾可夫模型(DHMM)等算法。
ADSP-BF531是ADI公司BlackfinTM系列的高性能DSP,其最高主頻為400 MHz,內(nèi)有2個16位MAC,2個40位ALU,4個8位視頻ALU,以及1個40位移位器,RISC式寄存器和指令模型[1],編程簡單,編譯環(huán)境友好。
BF531包含豐富的外設(shè),通用外設(shè)如UART、帶有PWM(脈沖寬度調(diào)制)和脈沖測量能力的定時器、通用的I/O標(biāo)志引腳、以及一個實時時鐘和一個“看門狗”定時器。它還有多個獨(dú)立的DMA控制器,能夠以最小的處理器內(nèi)核開銷完成自動的數(shù)據(jù)傳輸。DMA傳輸可以發(fā)生在ADSP-BF531處理器的內(nèi)部存儲器和任何有DMA能力的外設(shè)之間。此外,DMA傳輸也可以在任何有DMA能力的外設(shè)和已連接到外部存儲器接口的外部設(shè)備之間完成(包括SDRAM控制器、異步存儲器控制器)。具有DMA傳輸能力的外設(shè)包括SPORTS、SPI端口、UART和PPI端口。每個獨(dú)立的有DMA能力的外設(shè)至少有一個專用DMA通道。
該系統(tǒng)電路主要由DSP、音頻編碼器、CPLD、片外SDRAM、FLASH和EEPROM存儲器以及電源、時鐘等組成。硬件接口如圖1所示。
各器件的主要功能如下:
1)AD73311將經(jīng)前置放大后的麥克風(fēng)音頻信號經(jīng)A/D轉(zhuǎn)換后通過串行端口輸入BF531,同時完成對BF531輸出的數(shù)字音頻信號的D/A轉(zhuǎn)換,而后輸出到功放和喇叭;
2)BF531作為該系統(tǒng)的核心,對信號進(jìn)行特征提取和DHMM識別,同時對其外圍的器件進(jìn)行控制管理;
圖1 系統(tǒng)硬件結(jié)構(gòu)圖Fig.1 Hardware structure of the system
3)CPLD完成對DSP的外圍的器件時序和數(shù)據(jù)流程控制,以及對LCD顯示屏初始化檢測設(shè)置;
4)由于DSP片內(nèi)的RAM有限,配置了一塊SDRAM用于擴(kuò)展系統(tǒng)的內(nèi)存,以滿足程序運(yùn)行時數(shù)據(jù)和指令存儲的要求;
5)EEPROM用于存放DSP程序代碼和系統(tǒng)初始化所需的數(shù)據(jù);
6)FLASH用于存放訓(xùn)練樣本庫。
本系統(tǒng)中設(shè)計AD73311的采樣率為16 kHz,其與BF531的串口0(SPORT0)連接,通過DMA方式在單時鐘周期內(nèi)完成操作。BF531支持32 bit的串口數(shù)據(jù)傳輸,由于AD73311為16 bit的音頻器件[2],而且16 bit已可滿足系統(tǒng)精度要求,因此本系統(tǒng)只使用了BF531的主傳輸數(shù)據(jù)通道,即:DTOPRI和DROPRI,而將第二傳輸數(shù)據(jù)通道DTOSEC和DROSEC進(jìn)行了屏蔽[3]。AD73311與BF531的連接方式如圖2所示。
圖2 AD73311與BF531連線圖Fig.2 Interface circuit of BF531 and AD73311
SDRAM主要用于擴(kuò)展系統(tǒng)內(nèi)存,為保證程序運(yùn)行的裕量及后續(xù)升級的需要,這里選用了三星電子的一款容量為32 MB的移動式SDRAM,其型號為 K4M56163PG[4]。SDRAM與DSP的I/O總線連接[5],如圖3所示。
圖3 SDRAM與BF531連線圖Fig.3 Interface Circuit of BF531 and SDRAM
EEPROM主要用于存放程序代碼,選用ATMEL公司的AT45DB161D-TU型的EEPROM,該型存儲器采用SPI接口,容量為2 MB[6],可以滿足程序存儲的要求,其與DSP的SPI端口連接。
通過設(shè)置EEPROM存儲器的SPI主模式啟動(即設(shè)置BMODE=11),現(xiàn)實配置BF531為連接一個SPI存儲器的主設(shè)備和存儲器的加載。為了正常工作,該加載模式需要在MISO加上拉電阻。否則,BF531將從MISO引腳讀取到0xFF(即SPI存儲器沒有寫任何數(shù)據(jù)到MISO引腳)。不僅MISO線上的上拉電阻是必要的,額外的上、下拉電阻還有如下2個用途:
1)上拉PF2信號,確保SPI存儲器在DSP復(fù)位狀態(tài)下未激活;
2)在SPICLK上用下拉電阻,使顯示畫圖更加清晰[7]。
片外FLASH主要用于存訓(xùn)練樣本庫,本系統(tǒng)采用的NAND FLASH為三星電子的K9F8G08U0M-PIB0,該FLASH為工業(yè)級SLC架構(gòu)(Single Layer Cell,單層單元)芯片,具有速度快、可靠性高等特點,而且容量為1 GB[8],可以滿足存儲大量樣本數(shù)據(jù)的要求。其采用EBIU(External Bus Interface Unit,外部數(shù)據(jù)總線)和單個 GPIO(General Purpose Input Output,通用輸入/輸出)引腳實現(xiàn)與DSP數(shù)據(jù)通訊[9]。
本系統(tǒng)采用的孤立詞語音識別的原理框圖如圖4[10]所示。
圖4 語音識別原理框圖Fig.4 Principle Diagram of Speech Recognition
1)預(yù)處理 對聲源信號進(jìn)行抗混疊濾波、A/D轉(zhuǎn)換、預(yù)加重及端點檢測等內(nèi)容,以獲得比較理想的處理信息對象。
2)特征提取 從語音波形中提取出隨時間變化的能夠反映原始語音特征的矢量序列。
3)語音訓(xùn)練 建立聲學(xué)模型,將獲取的語音特征通過必要學(xué)習(xí)算法產(chǎn)生。
4)模式匹配 在識別時將輸入的語音特征同聲學(xué)模型進(jìn)行比較,得到識別結(jié)果[11]。
在訓(xùn)練階段,用戶將詞匯表中的詞依次讀一遍,并且將其特征矢量序列存入模板庫中。在識別階段,將輸入語音的特征矢量序列依次與模板庫中的每一個模板進(jìn)行形似度比較,相似度最高者作為識別結(jié)果輸出。
在HHM算法中,語音序列被看做馬爾可夫隨機(jī)過程的輸出。假定識別系統(tǒng)的詞匯表共包括V個詞條,那么在訓(xùn)練階段需要請很多個說話人分別將這次詞條說一遍并存入數(shù)據(jù)庫中。利用這些訓(xùn)練數(shù)據(jù)可以為每一個詞條建立一套HMM 參數(shù) λv,(1≤v≤V)。
在識別時,對于每個待識別語音,可以得到一個觀察矢量序列Y=[y1,y2,…yN],其中N為輸入語音所包含的幀數(shù)。語音識別的過程就是計算每個HMM模型λv產(chǎn)生Y的概率P(Y|λv),并使得該概率達(dá)到最大的 HMM 模型,那么該模型所對應(yīng)的詞條即為孤立詞識別的結(jié)果[12],即:
本系統(tǒng)采用VQ/DHMM(矢量量化/離散隱馬爾可夫模型)算法,其主要包括預(yù)處理、特征提取、語音訓(xùn)練、模式匹配等幾個方面。
3.2.1 預(yù)處理和特征提取
首先采用預(yù)加重、漢明窗、雙門限法等完成對語音信號的預(yù)處理;然后使用Mel倒譜參數(shù)(MFCC)進(jìn)行特征識別,MFCC參數(shù)提取的過程如圖5所示,其中Mel濾波器組的作用是利用人耳聽覺特性對語音信號的幅度平方譜進(jìn)行平滑。對數(shù)操作的用途:壓縮語音譜的動態(tài)范圍;考慮乘性噪聲,將頻域中的乘性成分轉(zhuǎn)換成加性成分。離散余弦變化主要是用來對不同頻段的頻譜成份進(jìn)行解相關(guān)處理,使得各維向量之間相互獨(dú)立。
圖5 MFCC參數(shù)求解過程Fig.5 Process of computing the MFCC parameter
3.2.2 矢量量化
矢量量化(VQ,Vector Quantization)是一種重要的信號壓縮方法,其過程是:將語音信號波形的K個樣點的每一幀,或有K個參數(shù)的每一參數(shù)幀,構(gòu)成K維空間中的一個矢量,然后對矢量進(jìn)行量化。量化時,將K維無限空間劃分為M個區(qū)域邊界,然后將輸入矢量與這些邊界進(jìn)行比較,并被量化為“距離”最小的區(qū)域邊界的中心矢量值[13]。
一個VQ編碼器往往擁有一個或多個由具有代表意義的矢量組成的集合,稱為“碼本”(本系統(tǒng)中碼本大小為256),其中每個矢量稱為“碼矢量”。在語音識別中,訓(xùn)練用的語音特征通過聚類的方法形成碼書;識別時,VQ編碼器將待識別語音的特征矢量與碼書中的每個矢量進(jìn)行失真測度運(yùn)算,最小的失真測度所對應(yīng)的碼字的標(biāo)號代替輸入矢量。
3.2.3 HMM模型建立及訓(xùn)練過程
本系統(tǒng)選擇無跨越的從左向右的HMM模型,狀態(tài)數(shù)取6。訓(xùn)練過程中利用Baum-Welch算法和Viterbi算法來計算所有觀察序列的輸出概率,然后對其進(jìn)行累加,得到總輸出概率。采用前后2次的輸出概率的相對變化小于一定閾值(如:1×10-4)或超過迭代次數(shù)作為訓(xùn)練結(jié)束的判據(jù)[14]。程序流程圖如圖6所示。
3.2.4 語音識別
語音識別的過程即是用Viterbi算法將經(jīng)將輸入的矢量量化后的語音與模型庫中的參考模板進(jìn)行匹配。
圖6 HMM模型建立及訓(xùn)練過程Fig.6 Flow chart of Hidden Markov Model
Viterbi算法是一種前向搜索算法,其可以是在給定相應(yīng)的觀察序列時,找出從模型λ中找出的最佳狀態(tài)序列,即選擇輸出概率最大的模版作為輸出結(jié)果。對數(shù)形式的Viterbi算法,能夠避免大量的乘法運(yùn)算,減少計算量,同時還可以保證有很高的動態(tài)范圍,不會出現(xiàn)由于過多的連乘而導(dǎo)致溢出問題,其算法如下:
1)預(yù)處理
2)初始化
3)迭代
4)終止
其中,P*為最終的輸出概率為最優(yōu)狀態(tài)序列中,它t時刻所處的狀態(tài)
5)回溯最佳路徑
系統(tǒng)選取500字的詞表,詞長不大于5;在進(jìn)行識別前,對每個待識別的詞進(jìn)行訓(xùn)練,參加訓(xùn)練人數(shù)為30,其中男性20人,女性10人。實驗選取30個人,其中參加訓(xùn)練和未參加訓(xùn)練的各15人,對簡單語音命令、數(shù)字串、字母串進(jìn)行測試(每人反復(fù)測試5次),結(jié)果如表1所示。
表1 語音識別實驗結(jié)果Tab.1 Experimental results of speech recognition
通過以上數(shù)據(jù)可以看出,該系統(tǒng)的對非特定人(包括參加訓(xùn)練和未參加訓(xùn)練)的簡單漢語詞匯、數(shù)字串、字母串等的綜合識別率超過了90%,識別時間在0.7 s左右;具有較高的識別率和較好的實時性。從表中可以看出,未參加訓(xùn)練與參加訓(xùn)練的識別率相差約10%,可以通過在軟件中增加訓(xùn)練樣本量以及完善有關(guān)算法等來進(jìn)一步提高其識別率。
該嵌入式語音識別系統(tǒng)在以ADSP-BF531為核心的硬件基礎(chǔ)上,成功運(yùn)用DHMM算法完成了對非特定人孤立詞的語音識別。該系統(tǒng)運(yùn)行穩(wěn)定、可靠,其識別率及實時性均滿足使用要求,同時還具有存儲容量大、運(yùn)算速度快的特點,為軟件運(yùn)行留下了充足的裕量,系統(tǒng)后續(xù)的完善和升級較容易實現(xiàn)。該系統(tǒng)可應(yīng)用于許多特定場合,有很好的市場前景。
[1]ADSP-BF531/ADSP-BF532/ADSP-BF533 Datasheet[S].Analog Devices,Inc.2011.
[2]AD73311 Datasheet[S].Analog Devices,Inc.2000.
[3]ADSP-BF533 Blackfin Processor Hardware Reference[S].Analog Devices,Inc.April,2009.
[4]K4M56163PG-R(B)E/G/C/F Datasheet.SAMSUNG Electronics.2006.
[5]Fabian Plepp.Blackfin and SDRAM Technogy(EE-326)[EB/OL].December,2008.http://www.analog.com.
[6]AT45DB161D Datasheet[S].Atmel,2008.
[7]Hiren Desai.ADSP-BF533 Blackfin加載過程(EE-240)[EB/OL].Semptemper,2008.http://www.analog.com.
[8]K9F8G08UXM Datasheet[S].SAMSUNG Electronics,2007.
[9]Ke Zhan,Daniel Zhao.ADSP-BF533 Blackfin Processor to NAND FLASH Memory(EE-302)[EB/OL].November,2006.http://www.analog.com.
[10]蔡蓮紅,黃德智,蔡瑞.現(xiàn)代語音技術(shù)基礎(chǔ)及應(yīng)用[M].北京:清華大學(xué)出版社,2003.
[11]馬斌,郭莉莉,韓中華,等.基于DSP的語音識別系統(tǒng)的研究與設(shè)計[J].微計算機(jī)信息,2008,24(8-2):197-199.MA Bin,GUO Li-li,HAN Zhong-hua,et al.Research and design of speech recognition system based on DSP[J].Microcomputer Information,2008,24(8-2):197-199.
[12]陳志鑫,郭華偉.基于TMS320C54xDSP的實時語音識別系統(tǒng)[J].半導(dǎo)體技術(shù),2001,26(4):5-8.CHEN Zhi-xin,GUO Hua-wei.Real-time speech recognition system based on TMS320C54x[J].Semiconductor Technology,2001,26(4):5-8.
[13]王明奇.基于HMM孤立詞語音識別系統(tǒng)的研究[D].長沙:中南大學(xué),2007.
[14]何強(qiáng),何英.MATLAB擴(kuò)展編程[M].北京:清華大學(xué)出版社,2002.