文獻標識碼: A
文章編號: 0258-7998(2012)10-0037-04
語種識別是計算機通過分析處理一個語音片段,,判別其所屬語言種類的過程[1]。語種識別的任務在于快速準確地識別出語言的種類,,自上世紀90年代以來,,已經(jīng)成為通信和信息領(lǐng)域一個新的學科增長點,在多語種信息服務,、機器翻譯及軍事安全等領(lǐng)域都有著廣泛的應用前景[2],。語種識別走向?qū)嵱没粌H要有令人滿意的識別性能,,其實時處理的效率也是必須要考慮的因素,。因此,設(shè)計能夠?qū)崿F(xiàn)多路實時處理的語種識別系統(tǒng)是語種識別邁出實用化的關(guān)鍵一步,。
本文針對語種識別系統(tǒng)算法的特點,,設(shè)計了一種基于TI多核處理器TMS320C6678的語種識別并行實現(xiàn)方法,實現(xiàn)了任務級的并行流水處理和核間的高效通信,。
1 平臺介紹
TMS320C6678是基于TI公司最新DSP系列器件 TMS320C66x,、采用8個1.25 GHz DSP內(nèi)核構(gòu)建而成的業(yè)界首款10 GHz DSP,可在10 W功耗下實現(xiàn)160 GFLOP(Giga-Floating Point Operations per Second)浮點計算性能[3],。不僅能整合多個 DSP 以縮小板級空間并降低成本,,同時還能減少整體的功耗要求,充分滿足現(xiàn)代數(shù)字信號處理日益增長的需求,。
本文語種識別系統(tǒng)的開發(fā)在TI公司的最新DSP集成開發(fā)環(huán)境CCSv5(Code Composer Studio)中基于浮點運算設(shè)計完成,。
2 基于TMS320C6678的語種識別算法優(yōu)化
2.1 語種識別算法分解
本文的語種識別系統(tǒng)是基于區(qū)分性Model Pushing算法[4]進行構(gòu)建的,并且對特征參數(shù)進行了fDWNAP[5-6]處理,,因此系統(tǒng)的測試階段由特征提取模塊,、fDWNAP模塊及對數(shù)似然得分模塊3個模塊構(gòu)成,,如圖1所示。
(1)特征提取模塊
特征提取模塊的任務包括語音信號預處理,、MFCC提取,、RASTA濾波、SDC擴展,、VAD檢測,、CMS處理、高斯化等過程,,該模塊結(jié)束即輸出56維的特征參數(shù),,其需要存儲的參數(shù)包括漢明窗和梅爾濾波器組總共不到2 KB。
(2)fDWNAP模塊
該模塊的工作是對所提取的56維特征參數(shù)進行處理,,以去除與語種無關(guān)的各種干擾信息,,達到凈化語種特征參數(shù)的目的。如參考文獻[6]介紹,,該模塊首先將特征參數(shù)映射至SVM的高維空間,,然后利用訓練得到的投影矩陣計算映射后的參數(shù)中所包含的干擾信息,再將干擾信息映射至特征空間,,從而進行去除,。該模塊中事先訓練得到的投影矩陣P=I-wwT,wwT是對稱矩陣,,因此存儲wwT需要7 MB的存儲空間,。另外,K-L變換矩陣D是對角矩陣,,需要112 KB的存儲空間,。
(3)對數(shù)似然得分模塊
如參考文獻[4]所述,本模塊主要任務是利用訓練得到的各語種GMM模型對語音特征參數(shù)計算對數(shù)似然得分進行輸出的判決,。
本模塊需要存儲訓練階段得到的各目標語種的GMM模型及非目標語種的GMM模型,,即針對每個語種需要存儲2個GMM模型。所有的GMM模型只是均值矢量不同,,高斯混元權(quán)重及協(xié)方差矩陣都是共享UBM模型的,。以L個語種為例,需要存儲2L個均值矢量,,即需要224L KB的存儲空間,,共享的高斯混元權(quán)重需要2 KB的存儲空間,協(xié)方差矩陣由于是對角化的只需要112 KB的存儲空間,。
2.2 算法實時性分析
首先對各模塊的運算實時性進行分析。以30 s的語音(8 000 Hz采樣,,幀長25 ms,,幀移10 ms)為例,,后端模型使用單個語種模型,利用CCSv5的環(huán)境進行軟件仿真得到各模塊處理所花的時鐘周期數(shù),,然后按照TMS320C6678芯片的單個內(nèi)核的工作主頻(1.25 GHz)計算得到處理時間,,結(jié)果如表1所示。
由表1可知,,整個語種識別系統(tǒng)測試階段,,在算法代碼未經(jīng)任何優(yōu)化的情況下,一段30 s的語音在單個TMS320C66x CPU內(nèi)核上的處理時間約為22.3 s,,結(jié)果非常不理想,,并且特征提取模塊和對數(shù)似然得分模塊耗時較多。
為此,,本文從兩個方面對代碼進行了優(yōu)化:一是算法本身的約減,,二是算法基于TMS320C6678平臺的優(yōu)化。
2.3 算法優(yōu)化
(1)算法約減
計算過程的優(yōu)化主要對語種識別系統(tǒng)中對數(shù)似然得分模塊的算法做約減,。對數(shù)似然得分過程就是利用已經(jīng)訓練好的各語種GMM模型對輸入的語音特征進行似然得分的計算,,語種數(shù)越多,則該模塊的耗時越多,。利用Top n的方法,,對每個模型選取得分最高的10個高斯用來計算對數(shù)似然得分。由于區(qū)分性Model Pushing模型是由SVM訓練得到的支持向量重構(gòu)而來,,而支持向量由GMM-UBM模型自適應得到,,因此,區(qū)分性Model Pushing模型與GMM-UBM模型的各高斯分量之間有著很強的對應關(guān)系,。
上述介紹說明,,區(qū)分性Model Pushing模型與GMM-UBM模型有著很強的對應關(guān)系,可近似認為對同一個特征向量它們得分最大的高斯混元一致[7],。針對擁有512個高斯混元的GMM,,似然得分的計算結(jié)果必定僅僅集中于很少的幾個高斯混元,大部分的高斯混元得分都會非常小以致可以忽略,。因此,,考慮將得分小的高斯混元結(jié)果忽略不計,只計算得分大的高斯混元,。鑒于fDWNAP模塊包含特征向量對GMM-UBM計算后驗概率的部分,,可利用該部分的結(jié)果選取Top 10的高斯混元用于后端對數(shù)似然得分的計算。
(2)基于TMS320C6678平臺的算法優(yōu)化
基于平臺的優(yōu)化主要是通過選擇CCSv5提供的編譯優(yōu)化參數(shù)來實現(xiàn),。通過不斷的參數(shù)選擇,、搭配,獲得最理想的參數(shù)優(yōu)化方式,,提高代碼中循環(huán)運算的性能,,使用軟件流水調(diào)度技術(shù)提高代碼的并行執(zhí)行效率,。
除此之外,特征提取階段的FFT和fDWNAP的矩陣運算等算法采用DSPlib中優(yōu)化的庫函數(shù)進行替代,,利用優(yōu)化的庫函數(shù)可以極大地提升代碼的運行速度,。
(3)算法優(yōu)化前后識別性能對比
首先檢驗Top 10算法對系統(tǒng)識別性能的影響。在測試集中模型使用Top 10 的區(qū)分性Model Pushing,,前端特征參數(shù)保持不變,,在VC++2010的環(huán)境下測試系統(tǒng)性能。實驗所用語料庫為實驗室采集的電話信道通話語音,,含漢語普通話,、日語和英語3個語種,測試集包含漢語1 000段,、日語450段及英語750段,,共2 200段30 s的語音和3 000段10 s的語音(各語種1 000段)。系統(tǒng)性能用等錯誤率EER(Equal Error Rate)[2]衡量,,實驗結(jié)果如表2所示,。
由表2可以看出,相對于全高斯得分模型,,Top 10得分模型系統(tǒng)性能有所下降,,主要因為舍棄了其他得分低的高斯成分,而其中必定包含部分語種區(qū)分信息,,但舍棄掉的這一部分所含的語種信息有限,,所以性能下降在可接受范圍之內(nèi)(相對下降小于5%)。該優(yōu)化方法下模塊的運算量下降是顯而易見的,,同樣耗時也會大幅下降,。
(4)算法優(yōu)化前后系統(tǒng)實時性對比
對經(jīng)算法優(yōu)化的系統(tǒng)耗時做如下測試,同樣以30 s的語音(8 000 Hz采樣,,幀長25 ms,,幀移10 ms)為例,用CCSv5的環(huán)境進行軟件仿真得到各模塊處理所花的時鐘周期數(shù),,然后按照TMS320C6678芯片的單個內(nèi)核的工作主頻(1.25 GHz)計算得到處理時間,,結(jié)果如表3所示。
由以上分析可以看到,,算法優(yōu)化后的系統(tǒng)耗時由22.3 s減少至1.36 s,,下降非常明顯,其中下降最多的是fDWNAP模塊和對數(shù)似然得分模塊,。在整個系統(tǒng)中,,經(jīng)過算法優(yōu)化, fDWNAP模塊耗時所占比例依舊最大,因此在多核任務并行設(shè)計時,,需要將該模塊的任務進行分解,。
3 基于TMS320C6678的語種識別算法并行設(shè)計
3.1 模塊間通信分析
根據(jù)語種識別的系統(tǒng)結(jié)構(gòu),,測試過程分為3個模塊,,各模塊的算法都已經(jīng)進行了相應的優(yōu)化。這些模塊相互配合,,通過控制信號完成數(shù)據(jù)流的交互,。任務的控制流程主要是模塊的執(zhí)行次序,任務分配在不同核上的模塊之間以傳遞消息的方式實現(xiàn)同步,。模塊間數(shù)據(jù)的傳遞會造成相應的時間延遲,,因此,控制流程的設(shè)計準則為最大化系統(tǒng)的處理能力,。模塊間的數(shù)據(jù)流程主要是數(shù)據(jù)的傳輸方向,,描述模塊與外部數(shù)據(jù)間的相互關(guān)系。相反,,最小化模塊間的數(shù)據(jù)通信量則是數(shù)據(jù)流程的設(shè)計準則,。
語種識別系統(tǒng)算法各模塊間控制流程和數(shù)據(jù)流程的通信示意圖如圖2所示。該圖由數(shù)據(jù)層和控制層兩部分構(gòu)成,,控制信號的傳輸由虛線箭頭表示,,數(shù)據(jù)的傳輸由實線箭頭表示。
3.2 模塊任務的核映射
為了充分利用所有內(nèi)核CPU的計算資源以最大限度地提高系統(tǒng)處理速度,,根據(jù)算法優(yōu)化前后的系統(tǒng)實時性測試結(jié)果及各模塊運算量分析,,將fDWNAP模塊的矩陣乘法任務分配到多個核并行執(zhí)行。
因本文的語種識別系統(tǒng)適合于數(shù)據(jù)流模式的任務并行方式,,將整個系統(tǒng)的運算任務適當?shù)胤峙浣o各個內(nèi)核,,實現(xiàn)任務級的并行流水。由于fDWNAP模塊計算復雜度大,,制約了整個系統(tǒng)任務級流水的處理速度,。為了充分發(fā)揮TMS320C6678的性能優(yōu)勢,將該模塊任務映射到多個核進行處理,。該模塊首先需要計算特征矢量對應的自適應GSV,;然后通過投影矩陣計算SVM特征域的干擾空間,這一部分的大矩陣乘法占據(jù)了整個模塊的絕大部分運算量,;最后還需要將干擾空間返回映射到特征域,,并在特征域去除干擾。整個模塊80%以上的運算量都集中在大矩陣的乘法上,,故采用將大矩陣拆為小矩陣分配到多個核上并行運算,,將其他任務集中在一個核上進行處理。在該模塊內(nèi)還是一個任務級的流水處理方式,矩陣相乘部分是核級相同的并行流水處理方式,。
4 基于TMS320C6678的語種識別算法實現(xiàn)
4.1 語種識別算法在TMS320C6678中的實現(xiàn)
根據(jù)設(shè)計思路,,將本文提出的語種識別算法在CCSv5上進行軟件仿真。其中,,利用SYS/BIOS[8]提供核間任務調(diào)度,,利用IPC[9]實現(xiàn)核間同步和通信。
啟動系統(tǒng),,完成所有核的初始化后,,首先調(diào)用IPC_start函數(shù)讓各核進入同步等待狀態(tài),然后各核上的程序才能開始執(zhí)行,。從共享存儲器劃出MSM_IN和MSM_OUT 2塊存儲區(qū),,MSM_IN存儲K-L變換矩陣和各語種GMM模型,MSM_OUT存儲判決輸出結(jié)果,。投影矩陣數(shù)據(jù)存儲在外接DDR3存儲器中的位置信息事先存在Core1中,。Core1將投影矩陣數(shù)據(jù)分成5份,通過Notify_sendEvent函數(shù)將5份數(shù)據(jù)的地址發(fā)送到Core2,、Core3,、Core4、Core5和Core6,。Core2,、Core3、Core4,、Core5和Core6上的子矩陣乘法任務一直處于懸掛狀態(tài),,直到Core1發(fā)送過來數(shù)據(jù)地址,矩陣乘法任務才開始并行執(zhí)行,。各核分別根據(jù)數(shù)據(jù)地址從外接DDR3讀取數(shù)據(jù)與Core1傳遞的數(shù)據(jù)計算干擾因子向量,,計算完畢再利用MessageQ_put函數(shù)將干擾因子向量數(shù)據(jù)的Message寫入到Core1建立的消息隊列上。Core1利用MessageQ_get函數(shù)從消息隊列讀取Message,,從Message中獲取干擾因子向量數(shù)據(jù),;然后計算補償后的特征向量;接著Core1利用MessageQ_put函數(shù)將補償?shù)奶卣飨蛄繑?shù)據(jù)的Message寫入到Core7建立的消息隊列上,,Core7上的判決任務開始執(zhí)行,,最后將執(zhí)行結(jié)果的數(shù)據(jù)寫入MSM_OUT。
4.2 實驗及結(jié)果分析
根據(jù)本文語種識別算法的TMS320C6678任務并行設(shè)計方案,,本節(jié)將給出CCSv5平臺下浮點算法的軟件仿真結(jié)果,,并進行分析驗證。
按照3.2節(jié)的描述,,將fDWNAP模塊設(shè)計為并行處理,,同樣以30 s的語音為例,,采用3個語種的模型測試整個系統(tǒng)在TMS320C6678上的實時性能。3個部分的運算處理時間結(jié)果如表4所示,。
由表4可以看出,,三個模塊中fDWNAP模塊耗時(0.227 s)最多,因此估算該系統(tǒng)的實時倍率至少為132(30/0.227),。
為了驗證基于TMS320C6678平臺的語種識別系統(tǒng)性能,,將采用Top 10優(yōu)化后的算法與在VC++2010平臺中的識別性能進行對比。實驗語料保持不變,,表5給出了基于兩種不同平臺的系統(tǒng)EER,。
實驗結(jié)果表明,基于TMS320C6678平臺的浮點軟件仿真結(jié)果和VC++2010平臺下的浮點計算結(jié)果完全一致,,從而驗證了TMS320C6678平臺實現(xiàn)語種識別系統(tǒng)的正確性。
本文針對語種識別系統(tǒng)的實時性需求,,在分析語種識別算法原理和多核DSP任務并行的基礎(chǔ)上,,分析了系統(tǒng)各模塊的運算量,根據(jù)各模塊的運算量對算法進行了優(yōu)化,。針對優(yōu)化后算法的特點,,設(shè)計了基于TMS320C6678平臺的語種識別系統(tǒng)。最后從實時性和識別性能兩個方面對系統(tǒng)性能進行了測試,,結(jié)果驗證了算法在TMS320C6678中實現(xiàn)的正確性及優(yōu)化的有效性,。
參考文獻
[1] WONG K Y E.Automatic spoken language identification utilizing acoustic and phonetic speech information[D].Queensland:Queensland University of Technology,2004.
[2] 徐婷婷.語種識別中的若干問題研究[D].北京:北京郵電大學,,2011.
[3] Texas Instrument.TMS320C6678 multicore fixed and floatingpoint digital signal processor[R].SPRS691C,,2012.
[4] 劉偉偉,吉立新,,李邵梅.基于區(qū)分性Model Pushing的語種識別方法[J].電子技術(shù)應用,,2012,38(4):113-116.
[5] 劉偉偉,,吉立新,,李邵梅.基于區(qū)分加權(quán)干擾屬性投影的語種識別方法[J].中文信息學報,[已錄用未發(fā)表].
[6] Liu Weiwei,,Ji Lixin,,Li Shaomei.Robust cepstral feature compensation for language recognition[C].Guangzhou:Proc.of BEMI,2012:119-122.
[7] 徐穎.語種識別聲學建模方法研究[D].合肥:中國科學技術(shù)大學,,2011.
[8] Texas Instrument.SYS/BIOS inter-processor communication(IPC) and I/O user’s guide[R].SPRUGO6C,,2010.
[9] Texas Instrument.TI SYS/BIOS v6.33 real-time operating system user’s guide[R].SPRUEX3K,2011.