陳春玲,李雯雯,余 瀚
(南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210003)
語音識(shí)別系統(tǒng)一般是在PC機(jī)或嵌入式系統(tǒng)上實(shí)現(xiàn)的,雖然PC機(jī)的存儲(chǔ)能力大、計(jì)算能力強(qiáng)、運(yùn)算速度快,但是基于PC機(jī)的語音識(shí)別系統(tǒng)因?yàn)轶w積大、價(jià)格高、不方便攜帶等缺點(diǎn)不適合應(yīng)用于實(shí)際產(chǎn)品中,而嵌入式系統(tǒng)具有體積小、功耗低、價(jià)格低、便攜性好、可靠性高等優(yōu)點(diǎn)[1],將語音識(shí)別系統(tǒng)應(yīng)用到嵌入式系統(tǒng)將是新的發(fā)展趨勢。如何有效地對嵌入式語音識(shí)別系統(tǒng)進(jìn)行功能、性能和穩(wěn)定性的測試已成為產(chǎn)品開發(fā)商、嵌入式操作系統(tǒng)提供商面臨的一個(gè)重要問題。
目前,國內(nèi)外對語音識(shí)別系統(tǒng)的測試主要還是基于傳統(tǒng)的現(xiàn)場測試方法[2],利用特定人現(xiàn)場發(fā)音、人工統(tǒng)計(jì)分析測評(píng)結(jié)果,但是對于大規(guī)模的壓力測試、場景測試、多次的系統(tǒng)回歸測試,存在測試時(shí)間周期長、效率低、浪費(fèi)人力等問題。為減少人力的投入,通過使用預(yù)記錄的語音材料代替人工現(xiàn)場發(fā)音,但測試結(jié)果的比對仍需測試人員手工進(jìn)行,依舊存在測試周期長、測試效率低等問題。近年來,自動(dòng)化測試工具代替了部分繁雜而重復(fù)的手工測試勞動(dòng),有效避免了人為因素引入的錯(cuò)誤,提高了測試質(zhì)量,已成為嵌入式軟件測試的有效解決方案。
流行的嵌入式軟件測試平臺(tái),如德國Tech S. A. T GmbH和dev software GmbH共同開發(fā)完成的Avionics Development System 2nd Generation和北京航空航天大學(xué)開發(fā)的一套通用嵌入式軟件仿真測試環(huán)境GESTE[3],已被證明是成功的嵌入式軟件測試解決方案,但兩者主要用于航空電子系統(tǒng)測試領(lǐng)域。在移動(dòng)和無線領(lǐng)域,僅有部分產(chǎn)品開發(fā)商具備公司內(nèi)部運(yùn)轉(zhuǎn)的自動(dòng)化測試體系,如瑞典的愛立信公司[4]和國內(nèi)的夏新公司等。通用的移動(dòng)和無線測試系統(tǒng)更為少見,目前僅有美國的TestQuest,Inc公司推出的TestQuest ProTM提供了移動(dòng)無線終端自動(dòng)化測試的解決方法[5]。
基于以上分析,為保障測試的真實(shí)性,同時(shí)實(shí)現(xiàn)自動(dòng)化測試,設(shè)計(jì)并實(shí)現(xiàn)了一套通用的嵌入式語音識(shí)別系統(tǒng)的測試方法。將語音識(shí)別系統(tǒng)部署到實(shí)際應(yīng)用的嵌入式系統(tǒng),通過自動(dòng)化測試工具實(shí)現(xiàn)語音數(shù)據(jù)的輸入、實(shí)時(shí)接收識(shí)別結(jié)果并校驗(yàn),完成了非侵入式的閉環(huán)測試,有效提高測試效率,從而保證語音識(shí)別系統(tǒng)的質(zhì)量。
嵌入式軟件是一種比較特殊的軟件,軟件經(jīng)過分析、設(shè)計(jì)、編碼后只有燒入硬件環(huán)境中才可投入使用。一般來說,傳統(tǒng)軟件測試技術(shù)和方法都可以運(yùn)用于嵌入式軟件測試,但嵌入式系統(tǒng)有自身特點(diǎn),如實(shí)時(shí)性、內(nèi)存不豐富、I/O通道少、專用性強(qiáng)、與硬件緊密相關(guān)等,所以嵌入式軟件測試與傳統(tǒng)軟件測試存在一定差異[6],區(qū)別主要表現(xiàn)在以下幾點(diǎn):
(1)嵌入式軟件測試與硬件環(huán)境密不可分。在嵌入式測試過程中軟件與硬件兼容性測試很重要。
(2)嵌入式軟件對實(shí)時(shí)性要求嚴(yán)格,并保證嵌入式系統(tǒng)的可靠性和實(shí)時(shí)性。在測試時(shí)需要考慮系統(tǒng)實(shí)時(shí)性響應(yīng)問題。
(3)嵌入式系統(tǒng)經(jīng)常出現(xiàn)內(nèi)存的問題,嵌入式軟件測試需要對內(nèi)存泄漏、內(nèi)存碎片等問題進(jìn)行充分測試。
嵌入式軟件與通用軟件是不同的,嵌入式應(yīng)用程序運(yùn)行在軟硬件資源相對缺乏的目標(biāo)機(jī)上,開發(fā)環(huán)境被認(rèn)為是宿主機(jī)平臺(tái),軟件運(yùn)行環(huán)境為目標(biāo)平臺(tái)。由于嵌入式軟件的特殊性,目前嵌入式軟件的測試主要有兩種途徑:在目標(biāo)環(huán)境上測試和在宿主環(huán)境上測試。常見的測試策略是將與目標(biāo)環(huán)境無關(guān)的測試在宿主機(jī)環(huán)境中完成測試,如邏輯測試、界面測試;在系統(tǒng)中與硬件密切相關(guān)的測試,如中斷測試、實(shí)時(shí)性測試,盡量選擇在目標(biāo)環(huán)境中運(yùn)行[7]。所以需要根據(jù)嵌入式軟件的特點(diǎn)搭建測試環(huán)境,主要分為全數(shù)字仿真測試環(huán)境、半實(shí)物仿真測試環(huán)境、全實(shí)物仿真測試環(huán)境。
全數(shù)字仿真測試環(huán)境:仿真嵌入式硬件及外圍的一套軟件系統(tǒng),提供一個(gè)精確的數(shù)字化硬件環(huán)境模型[8];半實(shí)物仿真測試環(huán)境:利用仿真模型來仿真與被測系統(tǒng)的交互關(guān)系,模擬真實(shí)環(huán)境的I/O關(guān)系及接口;全實(shí)物仿真測試環(huán)境:被測軟件處在完全真實(shí)的運(yùn)行環(huán)境中,直接將整個(gè)系統(tǒng)與其交互的物理設(shè)備建立真實(shí)的連接,形成閉環(huán)進(jìn)行測試。
語音識(shí)別系統(tǒng)的識(shí)別過程通常分為兩個(gè)過程:前端處理及后端識(shí)別。前端處理的主要作用是進(jìn)行語音端點(diǎn)檢測(voice activity detection,VAD),去除多余的靜音及非關(guān)鍵字語音段、降噪、語音增強(qiáng)、特征提取、消除噪音和不同說話人的發(fā)音差異帶來的影響,使處理后的信號(hào)能夠更完整地體現(xiàn)語音信號(hào)的本質(zhì)特征。后端識(shí)別將輸入的語音信號(hào)特征與語音模板進(jìn)行比較,根據(jù)一定的搜索和匹配策略,找出一系列最優(yōu)的與輸入語音匹配的模板,然后根據(jù)此模板的定義,通過查表給出識(shí)別結(jié)果,主要作用就是利用訓(xùn)練好的聲學(xué)模型、語言模型、字典對用戶說話的特征向量進(jìn)行統(tǒng)計(jì),得到其包含的文字意思[9]。
圖1 語音識(shí)別系統(tǒng)工作流程
圖1給出了語音識(shí)別系統(tǒng)的整體工作流程[10]。在有語音輸入時(shí),啟用錄音程序,錄音程序?qū)⒁罁?jù)一定的采樣率將音頻信號(hào)變成符號(hào)化的脈沖列,再予以記錄生成PCM信號(hào)輸入到識(shí)別系統(tǒng)。首先經(jīng)過前端處理,進(jìn)行端點(diǎn)檢測和降噪,生成包含關(guān)鍵字的單通道數(shù)據(jù);然后智能語音模型對數(shù)據(jù)進(jìn)行識(shí)別,輸出識(shí)別結(jié)果,而后對識(shí)別結(jié)果進(jìn)行校驗(yàn);最后對批量結(jié)果進(jìn)行統(tǒng)計(jì)分析。
在語音識(shí)別系統(tǒng)的系統(tǒng)測試階段,通常是根據(jù)需求說明模擬用戶環(huán)境,或使用真實(shí)的用戶環(huán)境來運(yùn)行完整的軟件系統(tǒng),驗(yàn)證整個(gè)系統(tǒng)是否達(dá)到預(yù)定的目標(biāo),檢驗(yàn)整個(gè)軟件系統(tǒng)的穩(wěn)定性、性能和故障恢復(fù)能力是否滿足用戶的要求[11]。為驗(yàn)證嵌入式語音識(shí)別系統(tǒng)與運(yùn)行環(huán)境中其他部分的兼容情況,同時(shí)確保測試結(jié)果的真實(shí)性,將嵌入式語音識(shí)別系統(tǒng)移植到目標(biāo)機(jī)進(jìn)行系統(tǒng)測試,保障了測試過程中無須對被測目標(biāo)機(jī)的嵌入式軟件及其運(yùn)行的硬件平臺(tái)進(jìn)行修改。
基于嵌入式操作系統(tǒng)存在的實(shí)時(shí)性、內(nèi)存有限等自身特性,文中采用了交叉測試方式。將嵌入式語音識(shí)別系統(tǒng)運(yùn)行在目標(biāo)機(jī)上,然后將目標(biāo)機(jī)的輸入輸出重定位為主機(jī)的輸入輸出設(shè)備,即可借助主機(jī)的資源完成對目標(biāo)機(jī)的操作,同時(shí),通過主機(jī)向目標(biāo)機(jī)發(fā)送命令[12],可實(shí)現(xiàn)對目標(biāo)機(jī)的內(nèi)存資源使用情況等的測試。
嵌入式軟件測試面臨實(shí)時(shí)性、強(qiáng)壯性以及確定性能瓶頸的測試難題[13],手工測試的測試范圍有限并且存在一定人工誤差,借助自動(dòng)化測試工具[14]解決目標(biāo)機(jī)與宿主機(jī)無線通信的問題,模擬實(shí)際應(yīng)用場景批量地測試語音識(shí)別的性能,統(tǒng)計(jì)識(shí)別耗時(shí),總結(jié)分析系統(tǒng)瓶頸,避免人工統(tǒng)計(jì)誤差,提高測試結(jié)果的可參考性,進(jìn)而促進(jìn)語音識(shí)別系統(tǒng)的開發(fā)工作。
語音識(shí)別技術(shù)在嵌入式系統(tǒng)上的應(yīng)用是當(dāng)前的熱點(diǎn)和難點(diǎn),文中在全實(shí)物仿真測試環(huán)境下采取宿主機(jī)和目標(biāo)機(jī)交叉測試的方法,研究實(shí)現(xiàn)了一套適用于嵌入式語音識(shí)別系統(tǒng)的自動(dòng)化評(píng)測系統(tǒng)。將語音識(shí)別系統(tǒng)置于實(shí)際運(yùn)行的物理設(shè)備中,通過將宿主機(jī)與目標(biāo)設(shè)備建立通信后,在宿主機(jī)通過測試命令以及配置文件的方式控制目標(biāo)設(shè)備上識(shí)別系統(tǒng)的運(yùn)行這種方式,有效解決了主機(jī)對目標(biāo)程序進(jìn)行測試控制的情況,更便于提早發(fā)現(xiàn)問題。
在宿主機(jī)方,在測試開始前制定測試計(jì)劃,設(shè)計(jì)測試用例,根據(jù)不同的測試目的選擇相應(yīng)的測試用例;在宿主機(jī)編寫測試代碼,然后下載到目標(biāo)機(jī)通過測試腳本執(zhí)行,同時(shí)在宿主機(jī)上通過自動(dòng)化測試工具接收目標(biāo)機(jī)上的測試腳本發(fā)送的測試結(jié)果,并顯示測試結(jié)果,在測試用例執(zhí)行完畢后測試工具還可以對測試結(jié)果進(jìn)行統(tǒng)計(jì)分析。
在目標(biāo)機(jī)方,測試腳本接收執(zhí)行命令后調(diào)用被測實(shí)時(shí)嵌入式語音識(shí)別系統(tǒng),識(shí)別系統(tǒng)在完成一條語音的識(shí)別任務(wù)后將結(jié)果發(fā)送給測試腳本,測試腳本將識(shí)別結(jié)果傳輸給宿主機(jī)上的測試工具。
根據(jù)語音識(shí)別系統(tǒng)的工作流程,設(shè)計(jì)并實(shí)現(xiàn)了存儲(chǔ)模塊、語音輸出模塊、語音采集模塊、比對模塊、傳輸模塊及統(tǒng)計(jì)模塊。
圖2給出了各模塊的協(xié)作過程。存儲(chǔ)模塊用于指定包含測試序列的文本文件的本地路徑,并指定在批量測試完成后生成的統(tǒng)計(jì)結(jié)果的表文件及標(biāo)注文件的保存路徑;語音輸出模塊包括噪聲產(chǎn)生裝置及語音播放設(shè)備,噪聲產(chǎn)生裝置用于產(chǎn)生測試環(huán)境的噪聲,可用于在不同噪聲干擾下的性能識(shí)別,語音播放設(shè)備可以是通用的揚(yáng)聲器或特殊的播放設(shè)備,如人工嘴;語音采集模塊用于錄音,依據(jù)一定采樣率采集音頻信號(hào)傳入到語音識(shí)別前端處理;比對模塊用于將語音識(shí)別系統(tǒng)返回的結(jié)果與待測試的語音文件進(jìn)行比對; 傳輸模塊用于將識(shí)別結(jié)果遵循自定義的傳輸協(xié)議輸出到宿主機(jī),自定義的協(xié)議可包括相關(guān)校驗(yàn)信息,比如VAD的開始和結(jié)束時(shí)間;統(tǒng)計(jì)模塊用于對語音序列的批量識(shí)別結(jié)果進(jìn)行統(tǒng)計(jì),以判斷語音識(shí)別系統(tǒng)的準(zhǔn)確度。
圖2 模塊間的協(xié)作
通過各模塊的配合完成交叉測試,測試流程首先是建立通信,將宿主機(jī)與目標(biāo)機(jī)通過無線網(wǎng)絡(luò)建立連接,使運(yùn)行在宿主機(jī)的自動(dòng)化測試工具和目標(biāo)機(jī)上的測試腳本連接到同一網(wǎng)端,同時(shí)自定義傳輸協(xié)議,指定傳輸?shù)臄?shù)據(jù)包的邏輯。宿主機(jī)順序讀取測試用例中的語音序列,調(diào)用語音播放器播放,同時(shí)目標(biāo)機(jī)的錄音設(shè)備在采集到語音信號(hào)后,送至語音識(shí)別系統(tǒng),語音識(shí)別系統(tǒng)對語音數(shù)據(jù)進(jìn)行特征提取比對得到識(shí)別結(jié)果后,通過傳輸模塊將識(shí)別結(jié)果傳送給測試工具的對比模塊,完成校驗(yàn)及統(tǒng)計(jì)、分析。
自動(dòng)化測試從語音輸入、結(jié)果輸出、結(jié)果統(tǒng)計(jì)入手。通過配置序列文件[15],將測試集路徑傳入測試工具,可實(shí)現(xiàn)宿主機(jī)根據(jù)序列自動(dòng)連續(xù)播放語音文件;通過與目標(biāo)機(jī)建立TCP通信協(xié)議,實(shí)現(xiàn)實(shí)時(shí)接收識(shí)別結(jié)果同時(shí)輸出到界面展示,并自動(dòng)統(tǒng)計(jì)識(shí)別耗時(shí),分析系統(tǒng)瓶頸;通過設(shè)置時(shí)鐘,判斷識(shí)別是否超時(shí);將識(shí)別結(jié)果與序列文件對應(yīng)的測試數(shù)據(jù)進(jìn)行比對,實(shí)現(xiàn)自動(dòng)校驗(yàn)識(shí)別結(jié)果;在測試集測試完成后,自動(dòng)統(tǒng)計(jì)測試集的整體識(shí)別率;另外,通過主機(jī)放音次序及時(shí)間間隔,可自動(dòng)生成測試集的標(biāo)注文件。圖3是運(yùn)行中的自動(dòng)化測試工具。
圖3 自動(dòng)化測試工具
結(jié)合具體實(shí)例,進(jìn)一步闡明測試方案,流程如圖4所示。
根據(jù)測試用例搭建測試場景,包括語音播放器、噪聲產(chǎn)生裝置與待測終端的位置關(guān)系及信噪比的控制等。
在測試計(jì)算機(jī)上運(yùn)行測試工具,向待測終端的測試程序請求建立連接,測試程序確認(rèn)連接。待測終端控制語音采集模塊進(jìn)入本地錄音狀態(tài)。
測試計(jì)算機(jī)輸出一條預(yù)先設(shè)定的列表文件中對應(yīng)的語音信息至語音播放器,播放語音。
待測終端的錄音程序?qū)浺粑募鹘o語音前端,檢測到語音后即傳入識(shí)別模型進(jìn)行識(shí)別。
待測終端收到識(shí)別結(jié)果后,即通過無線方式傳給測試計(jì)算機(jī),若測試計(jì)算機(jī)在設(shè)置的等待時(shí)長內(nèi)沒有收到結(jié)果,即判斷為超時(shí)。
測試計(jì)算機(jī)接收到識(shí)別數(shù)據(jù)時(shí)即可與參考的列表文件中對應(yīng)的文本進(jìn)行比對。循環(huán)多次,直至預(yù)存的列表文件中的所有語音文件播放完畢,即可進(jìn)行識(shí)別率的計(jì)算,進(jìn)一步進(jìn)行性能分析和評(píng)估。
圖4 測試流程
實(shí)驗(yàn)將語音識(shí)別系統(tǒng)應(yīng)用在智能空調(diào)上,通過語音向空調(diào)發(fā)送常用指令,判斷空調(diào)是否能夠正確識(shí)別用戶指令然后做出響應(yīng)。選取常用的指令如開機(jī)、自動(dòng)模式、制冷模式、二十四度作為測試集。借助自動(dòng)化測試工具,只需二十五分鐘就可完成1 200條用例的測試,同時(shí)記錄每條用例的測試結(jié)果,對于測試失敗的用例,可基本判斷失敗原因,比如圖5中的語音詞“開機(jī)”,其識(shí)別失敗的原因可通過設(shè)定的時(shí)鐘判定為識(shí)別超時(shí),語音詞“制熱模式”,其識(shí)別失敗的原因可通過將識(shí)別結(jié)果與放音序列比對不一致判定為識(shí)別錯(cuò)誤;另外,通過自動(dòng)化測試工具同時(shí)可以分別統(tǒng)計(jì)各個(gè)指令的識(shí)別率,查找對應(yīng)語言模型網(wǎng)絡(luò)存在的不足。通過該測試方案,可以更全面地分析系統(tǒng),評(píng)估系統(tǒng)性能,極大提高了測試效率。另外,整個(gè)測試過程僅需1-2位測試人員,節(jié)省了大量人力,同時(shí)也避免了人工統(tǒng)計(jì)的誤差,提高了結(jié)果的真實(shí)性。圖5中統(tǒng)計(jì)的成功率可通過提高語音識(shí)別的算法提升識(shí)別率,與文中的測試方案無直接聯(lián)系。
圖5 單個(gè)場景下的部分識(shí)別結(jié)果
通過搭建測試環(huán)境,包括信噪比、噪音類型的控制,模擬語音系統(tǒng)實(shí)際應(yīng)用場景,實(shí)現(xiàn)各個(gè)場景的覆蓋測試,如圖6,統(tǒng)計(jì)了不同場景下的識(shí)別率,在平穩(wěn)噪音情況的識(shí)別率明顯比非平穩(wěn)噪音(如音樂、辦公室)下的識(shí)別率略高,所以需要針對識(shí)別率較低的場景,分析前端信號(hào)處理能力,優(yōu)化降噪算法。通過此測試方案,針對噪聲類型及信噪比,可以輔助分析前端信號(hào)處理算法的不足,更準(zhǔn)確地優(yōu)化算法來提升系統(tǒng)性能。
實(shí)驗(yàn)表明,該測試方法可有效用于評(píng)測不同語音識(shí)別系統(tǒng)的性能和抗噪魯棒性。與現(xiàn)有測試技術(shù)相比,該方法既保證了測試自動(dòng)化簡單易操作,又降低了測試成本,提高了測試效率,并使測試更準(zhǔn)確、全面。同時(shí)可以設(shè)計(jì)一些小工具來對結(jié)果進(jìn)行分析,對系統(tǒng)的輸出加深了解,從而找出系統(tǒng)的不足。
圖6 多個(gè)測試場景的測試結(jié)果
由于嵌入式軟件技術(shù)的自動(dòng)化程度高、軟件代碼小、反應(yīng)速度快等特點(diǎn)及優(yōu)勢,基于嵌入式系統(tǒng)的語音識(shí)別系統(tǒng)在各行各業(yè)中正擴(kuò)大應(yīng)用范圍。文中研究了一套對嵌入式語音識(shí)別系統(tǒng)的測試方法,可大面積覆蓋語音識(shí)別系統(tǒng)可能的應(yīng)用背景,最大程度還原用戶體驗(yàn)場景,極大減少人力的參與,實(shí)現(xiàn)了自動(dòng)化測試、自動(dòng)化統(tǒng)計(jì)結(jié)果、自動(dòng)化生成標(biāo)注文件,加快了測試進(jìn)度,進(jìn)而加速了項(xiàng)目的研發(fā)進(jìn)展。