隨著語(yǔ)音識(shí)別和語(yǔ)音合成技術(shù)的不斷更新與發(fā)展,將語(yǔ)音識(shí)別技術(shù)應(yīng)用于嵌入式產(chǎn)品中已得到廣泛應(yīng)用。SVM(支持向量機(jī))作為統(tǒng)汁概率模型已經(jīng)被證明是一種很好的識(shí)別模型。OMAP5912處理器是由TI公司的TMS320C55X型DSP內(nèi)核與低功耗、增強(qiáng)型ARM926EJ-S微處理器組成的雙核應(yīng)用處理器。ARM核可滿足控制和接口方面的需要,DSP核以其低功耗高性能來(lái)實(shí)現(xiàn)多媒體應(yīng)用。目前存 0MAP平臺(tái)上實(shí)現(xiàn)的多媒體應(yīng)用有語(yǔ)音、音頻、圖像、視頻等。在實(shí)驗(yàn)室開(kāi)發(fā)的基于0MAP5912嵌入式語(yǔ)音識(shí)別系統(tǒng)上進(jìn)行基于SVM的語(yǔ)音識(shí)別程序開(kāi)發(fā)。
1 SVM多類分類方法
SVM最初是為處理兩類分類問(wèn)題而設(shè)計(jì)的,如何有效地處理多類分類問(wèn)題目前仍是一個(gè)持續(xù)研究的課題。采用SVM中的“一對(duì)一”方法實(shí)現(xiàn)多類分類,下面對(duì)這種方法進(jìn)行簡(jiǎn)單介紹。
S.Knerr等在1990年首次介紹了“一對(duì)一”方法。J.Friedman在1996年和U KreBel在1999年分別首次在支持向量機(jī)中使用這種方法。它需要構(gòu)造k(k-1)/2個(gè)分類器,每個(gè)分類器由特定的某兩類訓(xùn)練樣本訓(xùn)練得到,判定測(cè)試樣本的類別時(shí),結(jié)合所有兩類分類器對(duì)測(cè)試樣本類別的判定意見(jiàn),采用“投票法”的策略,并認(rèn)為得票數(shù)最多(Max Wins)的類別就是測(cè)試樣本所屬的類別。具體如下:考慮K類的分類問(wèn)題,設(shè)訓(xùn)練集
首先對(duì)所有的(i,j)∈{(i,j)|i≤j,i,j=1,…,K}進(jìn)行運(yùn)算:從訓(xùn)練集中抽取所有y=i和y=j的樣本點(diǎn)?;谶@些樣本點(diǎn)組成一個(gè)訓(xùn)練集Ti-j,每個(gè)兩類分類SVM解決問(wèn)題
約束條件為:
通過(guò)求解式(3)的最優(yōu)化問(wèn)題得到k(k-1)/2個(gè)決策函數(shù),如果函數(shù)判斷x屬于i類,則i類的得票數(shù)增加1;否則j類的得票數(shù)增加1。最終判定得票數(shù)最多的類別就是測(cè)試樣本x所屬的類別。
“一對(duì)一”方法的特點(diǎn)是訓(xùn)練時(shí)需要構(gòu)造k(k-1)/2個(gè)分類器,預(yù)測(cè)時(shí)則采用投票選擇策略。這樣做的優(yōu)點(diǎn)是:每一個(gè)分類問(wèn)題的規(guī)模較小,需要求的問(wèn)題較簡(jiǎn)單,樣本數(shù)量不很大時(shí)訓(xùn)練速度較快,而且由于類別有較少的重合,改善了樣本拒分、錯(cuò)分的范同;缺點(diǎn)是:投票法可能存在得票相同的類,即可能存在一個(gè)樣本同時(shí)屬于多個(gè)類的情況。這可以使用其他方法解決,這里重點(diǎn)研究SVM算法在0MAP上的實(shí)現(xiàn)。
2 嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的搭建
OMAP5912處理器是由TI公司的TMS320C55x型DSP內(nèi)核 (192 MHz)與低功耗、增強(qiáng)型ARM926EJ-S微處理器(192 MHz)組成的雙核應(yīng)用處理器,采用0.13μm CMOS工藝制造。TMS320C55x型DSP可提供對(duì)低功耗應(yīng)用的實(shí)時(shí)多媒體處理的支持;ARM926EJ-S MPU可滿足控制和接口方面的處理需要。基于雙核結(jié)構(gòu)的OMAP5912具有極強(qiáng)的運(yùn)算能力和極低的功耗,采用開(kāi)放式、易于開(kāi)發(fā)的軟件設(shè)施,支持廣泛的操作系統(tǒng)。嵌入式系統(tǒng)開(kāi)發(fā)在解決了硬件平臺(tái)的設(shè)計(jì)和操作系統(tǒng)的搭建后就需要考慮應(yīng)用程序如何編譯、主機(jī)如何與開(kāi)發(fā)板通信、程序如何調(diào)試、程序如何下載到開(kāi)發(fā)板這幾個(gè)方面的問(wèn)題。
2.1 通信環(huán)境
采用minicom通信終端程序,通過(guò)minicom可以設(shè)置、監(jiān)視串口工作狀態(tài),接收、顯示串口收到的信息、并且在宿主機(jī)和開(kāi)發(fā)板之間傳遞數(shù)據(jù)和控制指令,從而實(shí)現(xiàn)通過(guò)宿主機(jī)上調(diào)試開(kāi)發(fā)板的目的。
設(shè)置minicom參數(shù)值如下:“Serial Device”為/dev/ttyrSO(使用串口1);主機(jī)串口波特率為:115 200;數(shù)據(jù)位為:8位;停止位為:1位;奇偶校驗(yàn)位為:無(wú);數(shù)據(jù)流控制為:無(wú)。完成后保存設(shè)置重啟Minicom。
2.2 程序下載環(huán)境
在程序開(kāi)發(fā)期間,經(jīng)常需要把程序下載到開(kāi)發(fā)板上進(jìn)行測(cè)試,采用通用開(kāi)發(fā)模式:將宿主機(jī)和開(kāi)發(fā)板通過(guò)以太網(wǎng)連接,在宿主機(jī)上運(yùn)行minicom作為開(kāi)發(fā)板的顯示終端,通過(guò)NFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng))來(lái)掛載宿主機(jī)硬盤,讓應(yīng)用程序直接運(yùn)行在開(kāi)發(fā)板上。
2.3 交叉編譯環(huán)境的建立
宿主機(jī)系統(tǒng)為Ubuntu version 2.6.27,將交叉編譯工具arm-linux-gcc-3.4.1解壓縮到/usr/local/arm目錄下,然后在終端執(zhí)行命令:#gedit/root/.bashrc,修改/root/.bashrc文件,在文件中加入export PATH=“$PATH:/sbin:/usr/local/arm/3.4.1/bin:/usr/local/bin:/usr/local”,最后在終端執(zhí)行命令#source.bashrc.至此,交叉編譯環(huán)境搭建完成。資源文件和庫(kù)文件都
安裝在/usr/local/arm/3.4.1/arm-linux目錄下。交叉編譯過(guò)程如圖l所示。
2.4 安裝NFS《Network File System)
在開(kāi)發(fā)階段采用NFS比較方便,這樣開(kāi)發(fā)板的根文件系統(tǒng)可以放在宿主機(jī)上,然后通過(guò)NFS來(lái)掛載和運(yùn)行。內(nèi)核同樣也可放在宿主機(jī)上,然后由引導(dǎo)器使用 TFTP(Trivial FileTransferProtocol)協(xié)議通過(guò)以太網(wǎng)來(lái)獲取。開(kāi)發(fā)板同時(shí)具有以太網(wǎng)口和串口,且以太網(wǎng)連接的傳輸速度遠(yuǎn)比串口連接要快,因此,用以太網(wǎng)接口下載內(nèi)核和根文件系統(tǒng),而串口作為調(diào)試和控制臺(tái)來(lái)使用。
2.4.1安裝NFS
Ubuntu上默認(rèn)是沒(méi)有NFS服務(wù)的,首先要安裝NFS服務(wù)程序,#sudo apt-get install nfs-kernel-server,使宿主機(jī)相當(dāng)于NFS服務(wù)器。同樣地,開(kāi)發(fā)板作為NFS的客戶端,需要安裝NFS客戶端程序:#sudo apt-get install nfs-commmon。
2.4.2 配置portmap服務(wù)
nfs-common和nfs-kernel-setver都依賴于portmap,所以需要配置portmap。#sudo dpkg-reconfigure portmap,對(duì)Shouldportmap be bound to the loopback address選N。
在/etc/hosts.deny和/etc/hosts.a(chǎn)llow兩文件中設(shè)置對(duì)portmap的訪問(wèn):首先在/etc/hosts.deny中,禁止所有用戶對(duì)portmap的訪問(wèn),然后在/etc/hosts.a(chǎn)llow中,允許特定用戶對(duì)portmap進(jìn)行訪問(wèn)。文件修改完后執(zhí)行#sudo/etc/init.d/pottmap restart,重啟portmap daemon使改動(dòng)后的內(nèi)容生效。
2.4.3 配置/etc/exports
NFS掛載目錄及權(quán)限由/etc/expotts文件定義。在該文件最后添加語(yǔ)句:
/data/rootfs2.6 192.168.0.*(rw,sync,no_root_squash)
使192.168.O.*網(wǎng)段內(nèi)的NFS客戶端能夠共享NFS服務(wù)器/data/rootfs2.6目錄內(nèi)容,不僅有瀆寫權(quán)限,而且進(jìn)入/data/rootfs-2.6目錄后的身份為root。更新配置,重啟NFS服務(wù)。
#sudo exportfs-r
#sudo/etc/init.d/nfs-kernel-server restait
2.4.4 拷貝根文件系統(tǒng)
拷貝根文件系統(tǒng)到/data/rootfs2.6目錄下,這時(shí)就可以啟動(dòng)minicom,作為虛擬終端,可以通過(guò)它來(lái)操作開(kāi)發(fā)板。
2.5 修改開(kāi)發(fā)板啟動(dòng)項(xiàng)
bootargs參數(shù)設(shè)置Linux系統(tǒng)啟動(dòng)時(shí)掛載在NOR Flash上的JFFS2根文件系統(tǒng)。掛載宿主機(jī)上的網(wǎng)絡(luò)文件系統(tǒng),則bootargs參數(shù)應(yīng)設(shè)置
setenv bootargs=console=ttyS0,115200n8 noinitrd rw ip=192.168.0.158 root=/dev/nfs nfsroot=192.168.0.204:/data/rootfs2.6.nolock mem=62M
#sayenv保存設(shè)置后重啟u-boot,之后將順利進(jìn)入到開(kāi)發(fā)板,調(diào)試應(yīng)用程序。
3 實(shí)驗(yàn)及結(jié)果分析
基于VC++6.0編程實(shí)現(xiàn)一種多類分類SVMs算法,PC機(jī)環(huán)境為Ubuntu version 2.6.27,開(kāi)發(fā)板為Omap5912的ARM926ej-s,其環(huán)境為L(zhǎng)in-ux version 2.6.18;Boot Loader采用u-boot version 1.1.6;交叉編譯工具鏈arm-linux-gcc version3.4.1。
采用16個(gè)人分別對(duì)50個(gè)詞的孤立詞發(fā)音,在不同信噪比下(15、20、25、30 dB和無(wú)噪音)得到的語(yǔ)音數(shù)據(jù)作為樣本,采用由MFCC特征提取算法得到的特征參數(shù)作為識(shí)別網(wǎng)絡(luò)的輸入。語(yǔ)音信號(hào)采樣率為11.025 kHz,幀長(zhǎng)N=256點(diǎn),幀移M=128點(diǎn)。詞匯量分別為10、20、30、40和50個(gè)詞。訓(xùn)練樣本由9人每人對(duì)每詞在15、20、25、30 dB、無(wú)噪音下發(fā)音3次得到.測(cè)試樣本由另外7人在相應(yīng)SNR下對(duì)每詞發(fā)音3次得到。識(shí)別算法采用RBF核函數(shù)的SVM算法,采用交叉驗(yàn)證和網(wǎng)格搜索法進(jìn)行核參數(shù)選擇并建立模型,對(duì)測(cè)試樣本進(jìn)行分類識(shí)別。核函數(shù)參數(shù)取最優(yōu)為(c,y)=(32.0,O.000 122 070 312 5)。實(shí)驗(yàn)結(jié)果見(jiàn)表l所示,識(shí)別率均在95%以上。表1中同時(shí)列出同樣條件下使用HMM識(shí)別網(wǎng)絡(luò)的識(shí)別結(jié)果。
HMM模型是典型的語(yǔ)音識(shí)別模型,它是目前語(yǔ)音識(shí)別效果最好的少數(shù)幾種方法之一。在相同特征參數(shù)下將SVM與HMM模型進(jìn)行對(duì)比,從實(shí)驗(yàn)結(jié)果看出:1)SVM比HMM模型具有更高的識(shí)別率;2)比較相同信噪比和詞匯量下的測(cè)試精度,可發(fā)現(xiàn)HMM模型的測(cè)試精度有明顯下降,而SVM的測(cè)試結(jié)果下降較少,說(shuō)明SVM比HMM模型具有更強(qiáng)推廣性。
4 結(jié)束語(yǔ)
提出一種基于SVM的0MAP5912非特定人嵌入式語(yǔ)音識(shí)別系統(tǒng)的實(shí)現(xiàn)方法。在搭建的開(kāi)發(fā)環(huán)境下運(yùn)用SVM算法巾的“一對(duì)一”方法進(jìn)行語(yǔ)音識(shí)別,獲得良好結(jié)果。通過(guò)實(shí)驗(yàn)可以得出,對(duì)中小詞匯量采用MFCC特征參數(shù),“一對(duì)一”SVM作為后端識(shí)別方法可以得到較好的識(shí)別結(jié)果,比傳統(tǒng)的HMM模型有明顯優(yōu)勢(shì)。同時(shí)SVM算法作為應(yīng)用程序集成到0MAP5912嵌入式系統(tǒng)里,存儲(chǔ)量需求小,能夠滿足實(shí)用要求。