摘要:設(shè)計(jì)了一個(gè)嵌入式語(yǔ)音識(shí)別系統(tǒng),該系統(tǒng)硬件平臺(tái)以ADSP-BF531為核心,采用離散隱馬爾可夫模型(DHMM)檢測(cè)和識(shí)別算法完成了對(duì)非特定人的孤立詞語(yǔ)音識(shí)別。試驗(yàn)結(jié)果表明,該系統(tǒng)對(duì)非特定人短詞匯的綜合識(shí)別率在90%以上。該系統(tǒng)具有小型、高速、可靠以及擴(kuò)展性好等特點(diǎn);可應(yīng)用于許多特定場(chǎng)合,有很好的市場(chǎng)前景。文中講述了該系統(tǒng)CODEC、片外RAM、ROM以及CPLD等與DSP的接口設(shè)計(jì),語(yǔ)音識(shí)別運(yùn)用的矢量量化、Mel倒譜參數(shù)、Viterbi等有關(guān)算法及其實(shí)際應(yīng)用效果。 關(guān)鍵詞:ADSP-BF531;語(yǔ)音識(shí)別;離散隱馬爾可夫模型;非特定人;孤立詞
自上世紀(jì)70年代以來,國(guó)內(nèi)外的專家們?cè)谡Z(yǔ)音識(shí)別研究領(lǐng)域內(nèi)取得了重大突破,先后出現(xiàn)了動(dòng)態(tài)時(shí)間規(guī)整技術(shù)(DTW)、隱馬爾可夫模型(HMM)和人工神經(jīng)網(wǎng)絡(luò)(ANN)等3種主要方法。DTW雖然在孤立詞語(yǔ)音識(shí)別中取得了不錯(cuò)的性能,但其要求的存儲(chǔ)量和計(jì)算量太大;ANN雖然前景看好但其目前尚未有突破性進(jìn)展,目前它們都難以在工程中得到廣泛的應(yīng)用。HMM算法使語(yǔ)音識(shí)別的計(jì)算量得到大大減少,而且正確率較高,從而在語(yǔ)音識(shí)別中得到廣泛引用。 筆者在以ADSP-BF531為核心構(gòu)建的嵌入式系統(tǒng)上實(shí)現(xiàn)了對(duì)非特定人、孤立詞的語(yǔ)音識(shí)別,該系統(tǒng)采用了端點(diǎn)檢測(cè)、矢量量化(VQ)和離散隱馬爾可夫模型(DHMM)等算法。
1 ADSP-BF531介紹 ADSP-BF531是ADI公司Blackfin系列的高性能DSP,其最高主頻為400MHz,內(nèi)有2個(gè)16位MAC,2個(gè)40位ALU,4個(gè)8位視頻ALU,以及1個(gè)40位移位器,RISC式寄存器和指令模型,編程簡(jiǎn)單,編譯環(huán)境友好。 BF531包含豐富的外設(shè),通用外設(shè)如UART、帶有PWM(脈沖寬度調(diào)制)和脈沖測(cè)量能力的定時(shí)器、通用的I/O標(biāo)志引腳、以及一個(gè)實(shí)時(shí)時(shí)鐘和一個(gè)“看門狗”定時(shí)器。它還有多個(gè)獨(dú)立的DMA控制器,能夠以最小的處理器內(nèi)核開銷完成自動(dòng)的數(shù)據(jù)傳輸。DMA傳輸可以發(fā)生在ADSP-BF531處理器的內(nèi)部存儲(chǔ)器和任何有DMA能力的外設(shè)之間。此外,DMA傳輸也可以在任何有DMA能力的外設(shè)和已連接到外部存儲(chǔ)器接口的外部設(shè)備之間完成(包括SDRAM控制器、異步存儲(chǔ)器控制器)。具有DMA傳輸能力的外設(shè)包括SPORTS、SPI端口、UART和PPI端口。每個(gè)獨(dú)立的有DMA能力的外設(shè)至少有一個(gè)專用DMA通道。
2 硬件電路設(shè)計(jì) 該系統(tǒng)電路主要由DSP、音頻編碼器、CPLD、片外SDRAM、FLASH和EEPROM存儲(chǔ)器以及電源、時(shí)鐘等組成。硬件接口如圖1所示。
各器件的主要功能如下: 1)AD73311將經(jīng)前置放大后的麥克風(fēng)音頻信號(hào)經(jīng)A/D轉(zhuǎn)換后通過串行端口輸入BF531,同時(shí)完成對(duì)BF531輸出的數(shù)字音頻信號(hào)的D/A轉(zhuǎn)換,而后輸出到功放和喇叭; 2)BF531作為該系統(tǒng)的核心,對(duì)信號(hào)進(jìn)行特征提取和DHMM識(shí)別,同時(shí)對(duì)其外圍的器件進(jìn)行控制管理; 3)CPLD完成對(duì)DSP的外圍的器件時(shí)序和數(shù)據(jù)流程控制,以及對(duì)LCD顯示屏初始化檢測(cè)設(shè)置; 4)由于DSP片內(nèi)的RAM有限,配置了一塊SDRAM用于擴(kuò)展系統(tǒng)的內(nèi)存,以滿足程序運(yùn)行時(shí)數(shù)據(jù)和指令存儲(chǔ)的要求; 5)EEPROM用于存放DSP程序代碼和系統(tǒng)初始化所需的數(shù)據(jù); 6)FLASH用于存放訓(xùn)練樣本庫(kù)。 2.1 AD73311與BF531接口設(shè)計(jì) 本系統(tǒng)中設(shè)計(jì)AD73311的采樣率為16 kHz,其與BF531的串口0(SPORT0)連接,通過DMA方式在單時(shí)鐘周期內(nèi)完成操作。BF531支持32 bit的串口數(shù)據(jù)傳輸,由于AD73311為16 bit的音頻器件,而且16 bit已可滿足系統(tǒng)精度要求,因此本系統(tǒng)只使用了BF531的主傳輸數(shù)據(jù)通道,即:DTOPRI和DROPRI,而將第二傳輸數(shù)據(jù)通道DTOSEC和DROSEC進(jìn)行了屏蔽。AD73311與BF531的連接方式如圖2所示。
2.2 SDRAM接口設(shè)計(jì) SDRAM主要用于擴(kuò)展系統(tǒng)內(nèi)存,為保證程序運(yùn)行的裕量及后續(xù)升級(jí)的需要,這里選用了三星電子的一款容量為32 MB的移動(dòng)式SDRAM,其型號(hào)為K4M56163PG。SDRAM與DSP的I/O總線連接,如圖3所示。
2.3 EEPROM接口設(shè)計(jì) EEPROM主要用于存放程序代碼,選用ATMEL公司的AT45DB161D-TU型的EEPROM,該型存儲(chǔ)器采用SPI接口,容量為2 MB,可以滿足程序存儲(chǔ)的要求,其與DSP的SPI端口連接。 通過設(shè)置EEPROM存儲(chǔ)器的SPI主模式啟動(dòng)(即設(shè)置BMODE=11),現(xiàn)實(shí)配置BF531為連接一個(gè)SPI存儲(chǔ)器的主設(shè)備和存儲(chǔ)器的加載。為了正常工作,該加載模式需要在MISO加上拉電阻。否則,BF531將從MISO引腳讀取到0xFF(即SPI存儲(chǔ)器沒有寫任何數(shù)據(jù)到MISO引腳)。不僅MISO線上的上拉電阻是必要的,額外的上、下拉電阻還有如下2個(gè)用途: 1)上拉PF2信號(hào),確保SPI存儲(chǔ)器存DSP復(fù)位狀態(tài)下未激活; 2)在SPICLK上用下拉電阻,使顯示畫圖更加清晰。 2.4 FLASH接口設(shè)計(jì) 片外FLASH主要用于存訓(xùn)練樣本庫(kù),本系統(tǒng)采用的NANDFLASH為三星電子的K9F8G08U0M-PIB0,該FLASH為工業(yè)級(jí)SLC架構(gòu)(Single Laver Cell,單層單元)芯片,具有速度快、可靠性高等特點(diǎn),而且容量為1 GB,可以滿足存儲(chǔ)大量樣本數(shù)據(jù)的要求。其采用EBIU(External Bus Interface Unit,外部數(shù)據(jù)總線)和單個(gè)GPIO(General Purpose Input Output,通用輸入/輸出引腳實(shí)現(xiàn)與DSP數(shù)據(jù)通訊。
3 軟件設(shè)計(jì) 3.1 語(yǔ)音識(shí)別(孤立詞)的原理 本系統(tǒng)采用的孤立詞語(yǔ)音識(shí)別的原理框圖如圖4所示。
1)預(yù)處理 對(duì)聲源信號(hào)進(jìn)行抗混疊濾波、A/D轉(zhuǎn)換、預(yù)加重及端點(diǎn)檢測(cè)等內(nèi)容,以獲得比較理想的處理信息對(duì)象。 2)特征提取 從語(yǔ)音波形中提取出隨時(shí)間變化的能夠反映原始語(yǔ)音特征的矢量序列。 3)語(yǔ)音訓(xùn)練 建立聲學(xué)模型,將獲取的語(yǔ)音特征通過必要學(xué)習(xí)算法產(chǎn)生。 4)模式匹配 在識(shí)別時(shí)將輸入的語(yǔ)音特征同聲學(xué)模型進(jìn)行比較,得到識(shí)別結(jié)果。 在訓(xùn)練階段,用戶將詞匯表中的詞依次讀一遍,并且將其特征矢量序列存入模板庫(kù)中。在識(shí)別階段,將輸入語(yǔ)音的特征矢量序列依次與模板庫(kù)中的每一個(gè)模板進(jìn)行形似度比較,相似度最高者作為識(shí)別結(jié)果輸出。 在HHM算法中,語(yǔ)音序列被看做馬爾可夫隨機(jī)過程的輸出。假定識(shí)別系統(tǒng)的詞匯表共包括V個(gè)詞條,那么在訓(xùn)練階段需要請(qǐng)很多個(gè)說話人分別將這次詞條說一遍并存入數(shù)據(jù)庫(kù)中。利用這些訓(xùn)練數(shù)據(jù)可以為每一個(gè)詞條建立一套HMM參數(shù)λv(1≤v≤V)。 在識(shí)別時(shí),對(duì)于每個(gè)待識(shí)別語(yǔ)音,可以得到一個(gè)觀察矢量序列Y=[y1,y2,…yN],其中,N為輸入語(yǔ)音所包含的幀數(shù)。語(yǔ)音識(shí)別的過程就是計(jì)算每個(gè)HMM模型λv產(chǎn)生Y的概率P(Y|λv),并使得該概率達(dá)到最大的HMM模型,那么該模型所對(duì)應(yīng)的詞條即為孤立詞識(shí)別的結(jié)果,即: 3.2 語(yǔ)音識(shí)別算法設(shè)計(jì) 本系統(tǒng)采用VO/DHMM(矢量量化/離散隱馬爾可夫模型)算法,其主要包括預(yù)處理、特征提取、語(yǔ)音訓(xùn)練、模式匹配等幾個(gè)方面。 3.2.1 預(yù)處理和特征提取 首先采用預(yù)加重、漢明窗、雙門限法等完成對(duì)語(yǔ)音信號(hào)的預(yù)處理;然后使用Mel倒譜參數(shù)(MFCC)進(jìn)行特征識(shí)別,MFCC參數(shù)提取的過程如圖5所示,其中Mel濾波器組的作用是利用人耳聽覺特性對(duì)語(yǔ)音信號(hào)的幅度平方譜進(jìn)行平滑。對(duì)數(shù)操作的用途:壓縮語(yǔ)音譜的動(dòng)態(tài)范圍;考慮乘性噪聲,將頻域中的乘性成分轉(zhuǎn)換成加性成分。離散余弦變化主要是用來對(duì)不同頻段的頻譜成份進(jìn)行解相關(guān)處理,使得各維向量之間相互獨(dú)立。
3.2.2 矢量量化 矢量量化(VQ,Vector Quantization)是一種重要的信號(hào)壓縮方法,其過程是:將語(yǔ)音信號(hào)波形的K個(gè)樣點(diǎn)的每一幀,或在K個(gè)參數(shù)的每一參數(shù)幀,構(gòu)成K維空間中的一個(gè)矢量,然后對(duì)矢量進(jìn)行量化。量化時(shí),將K維無(wú)限空間劃分為M個(gè)區(qū)域邊界,然后將輸入矢量與這些邊界進(jìn)行比較,并被量化為“距離”最小的區(qū)域邊界的中心矢量值。 一個(gè)VO編碼器往往擁有一個(gè)或多個(gè)由具有代表意義的矢量組成的集合,稱為“碼本”(本系統(tǒng)中碼本大小為256),其中每個(gè)矢量稱為“碼矢量”。在語(yǔ)音識(shí)別中,訓(xùn)練用的語(yǔ)音特征通過聚類的方法形成碼書;識(shí)別時(shí),VO編碼器將待識(shí)別語(yǔ)音的特征矢量與碼書中的每個(gè)矢量進(jìn)行失真測(cè)度運(yùn)算,最小的失真測(cè)度所對(duì)應(yīng)的碼字的標(biāo)號(hào)代替輸入矢量。 3.2.3 HMM模型建立及訓(xùn)練過程 本系統(tǒng)選擇尤跨越的從左向有的HMM模型,狀態(tài)數(shù)取6。訓(xùn)練過程中利用Baum-Welch算法和Viterbi算法來計(jì)算所有觀察序列的輸出概率,然后對(duì)其進(jìn)行累加,得到總輸出慨率,采用前后2次的輸出概率的相對(duì)變化小于一定閾值(如:1×10-4)或超過迭代次數(shù)作為訓(xùn)練結(jié)束的判據(jù)。程序流程圖如圖6所示。
3.2.4 語(yǔ)音識(shí)別 語(yǔ)音識(shí)別的過程即是用Viterbi算法將經(jīng)將輸入的矢量量化后的語(yǔ)音與模型庫(kù)中的參考模板進(jìn)行匹配。 Viterbi算法是一種前向搜索算法,其可以是在給定相應(yīng)的觀察序列時(shí),找出從模型λ中找出的最佳狀態(tài)序列,即選擇輸出概率最大的模版作為輸出結(jié)果。對(duì)數(shù)形式的Viterbi算法,能夠避免大量的乘法運(yùn)算,減少計(jì)算量,同時(shí)還可以保證有很高的動(dòng)態(tài)范圍,不會(huì)出現(xiàn)由于過多的連乘而導(dǎo)致溢出問題,其算法如下:
4 實(shí)驗(yàn)結(jié)果及分析 系統(tǒng)選取500字的詞表,詞長(zhǎng)不大于5;在進(jìn)行識(shí)別前,對(duì)每個(gè)待識(shí)別的詞進(jìn)行訓(xùn)練,參加訓(xùn)練人數(shù)為30,其中男性20人,女性10人。實(shí)驗(yàn)選取30個(gè)人,其中參加訓(xùn)練和未參加訓(xùn)練的各15人,對(duì)簡(jiǎn)單語(yǔ)音命令、數(shù)字串、字母串進(jìn)行測(cè)試(每人反復(fù)測(cè)試5次),結(jié)果如表1所示。
通過以上數(shù)據(jù)可以看出,該系統(tǒng)的對(duì)非特定人(包括參加訓(xùn)練和未參加訓(xùn)練)的簡(jiǎn)單漢語(yǔ)詞匯、數(shù)字串、字母串等的綜合識(shí)別率超過了90%,識(shí)別時(shí)間在0.7 s左右;具有較高的識(shí)別率和較好的實(shí)時(shí)性。從表中可以看出,未參加訓(xùn)練與參加訓(xùn)練的識(shí)別率相差約10%,可以通過在軟件中增加訓(xùn)練樣本量以及完善有關(guān)算法等來進(jìn)一步提高其識(shí)別率。
5 結(jié)束語(yǔ) 該嵌入式語(yǔ)音識(shí)別系統(tǒng)在以ADSP-BF531為核心的硬件基礎(chǔ)上,成功運(yùn)用DHMM算法完成了對(duì)非特定人孤立詞的語(yǔ)音識(shí)別。該系統(tǒng)運(yùn)行穩(wěn)定、可靠,其識(shí)別率及實(shí)時(shí)性均滿足使用要求,同時(shí)還具有存儲(chǔ)容量大、運(yùn)算速度快的特點(diǎn),為軟件運(yùn)行留下了充足的裕量,系統(tǒng)后續(xù)的完善和升級(jí)較容易實(shí)現(xiàn)。該系統(tǒng)可應(yīng)用于許多特定場(chǎng)合,有很好的市場(chǎng)前景。
|