張 巍,賈玉輝,張志楠
(中國海洋大學信息科學與工程學院,山東 青島 266100)
語音識別始于1950年代初,當時,貝爾實驗室的Davis等人研究成功了第一個可識別10個英文數字的語音識別系統-Adudry。1980年代末,美國卡內基·梅隆大學用VQ/HMM方法實現了世界上第一個高性能的非特定人、大字表、連續語音識別系統—SPHINX[1]。在此期間語音識別處于實驗室研究階段,市場上沒有成型的產品。直到1990年代初,隨著在系統的自適應性、參數提取及優化等技術上取得了一些關鍵性的進展,語音識別技術進一步成熟,并開始向市場提供產品[2]。從此語音識別開始從實驗室逐步走向實用。并且,在一些應用領域,它正迅速地成為一個關鍵的、而且具有競爭力的技術。
從產品的實現平臺上來看,當前市場上的語音識別系統主要分為3種:嵌入式的語音識別系統、服務器模式的語音識別系統及云計算模式的語音識別系統。嵌入式語音識別系統[3]是指應用各種先進的的微處理器在板級或是芯片級用軟件或硬件實現語音識別技術。由于嵌入式平臺存儲資源少、性能低、實時性要求高,嵌入式語音識別系統只適合做算法要求相對簡單,對資源的需求較少的語音識別,比如中小詞匯量的命令詞識別等。在服務器模式的語音識別系統中,終端只負責收集和傳導語音信號,由服務器負責完成識別。這種模式可以做高性能的大詞匯量連續語音識別。并且對于大規模、多用戶和有大量識別需求的系統,服務器模式提供了較為有效的解決方法。在一般情況下,服務器都選擇價格昂貴的巨型機或者大型機來充當,當用戶訪問量較少時,傳統的服務器模式,完全可以應對。但隨著用戶訪問量的增加,所需服務器數量也會相應增加,在這種情況下,公司的運營成本就會急劇攀升。隨著服務器數量的增加,服務器的管理就會變得非常復雜,并且服務器數目擴充到一定數目,就可能會達到性能瓶頸,使得單純的增加服務器,對系統性能提升收效甚微。云計算模式的語音識別系統和服務器模式的語音識別系統類似,主要是有云端負責完成識別。相對于傳統的服務器架構,云[4]具有更好的擴展性,成本更加低廉,并且可以具有超大規模,給用戶提供前所未有的計算能力。且不難得知,用來學習、訓練的樣本數據集越大,語音識別系統的性能越好。這就需要解決大數據存儲及處理的問題。而云計算恰好能很好的解決這2個問題。云計算技術和語音識別相融合是1種新的趨勢。但現在基于云計算的語音識別技術正處于發展初期,技術仍未成熟,并且市場上的產品只提供面向通用領域的語音識別服務。無法對語音識別服務進行定制。
由上可知,嵌入式的語音識別系統功能極其簡單,并且應用范圍較窄;服務器模式的語音識別系統能提供較為復雜的功能,且可以應對較多用戶的請求,但面對海量用戶請求卻無能為力;云計算模式的語音識別系統可以應對海量用戶請求,且可以利用海量用戶數據優化語音識別系統的性能,但由于其尚處于發展初期,基于云的語音識別服務提供商尚未提供可定制的語音識別服務,他們的語音識別模型不能按照用戶的需求而更改,用戶不可根據自己的實際情況對語音識別模型進行定制。如果模型可以定制,就可以提供針對特定領域的語音識別服務,而無需關注其他領域,顯然這樣更容易獲取高識別率,更容易滿足特定用戶。針對以上情形,本文提出了1種面向特定領域的云計算方法,并簡單實現了1個云計算架構的語音識別系統(Speech Recognition System Based on Cloud Computing,SRSCC),可以對這些領域的用戶提供可定制的語音識別服務,滿足用戶的個性化需求,改善用戶的使用體驗。
本文首先研究了MapReduce模型,并給出了語音識別的MapReduce流程。然后通過使用開源的流式MapReduce工具-Sector/Sphere[6-8]及主要用于語音識別研究的HTK[9]工具包,實現了語音識別技術與云計算技術的融合,即SRSCC系統。并在此基礎之上,給出了語音識別的可定制性方法,使得該系統能為特定領域的用戶提供可定制的服務。最后,通過實驗評估了系統的性能及系統的可擴展性。
MapReduce[5]是 Google提出的1個編程模型,主要用于大規模數據的并行運算,通過將MapReduce模型應用到語音識別系統,能加快系統對用戶請求的處理速度。MapReduce是1種處理大規模數據集的編程模型,同時它也是1種高效的任務調度模型,它主要有“Map(映射)”和“Reduce(化簡)”2個過程組成,這2個過程構成了運算基本單元[10-11]。Map函數用來指定對各分塊數據的每一個元素所進行的操作,而reduce函數用來對各分塊數據處理的中間結果進行歸約。用戶在設計分布式程序時,只要實現map和reduce 2個函數,至于其他細節,比如如何將輸入的數據分塊、任務調度、機器容錯以及節點間通信的管理等,都可交由MapReduce框架處理。
MapReduce模型具有具有極強的容錯性。集群中的每個worker節點會周期性的把完成的工作及狀態的更新報告發給master節點,如果1個worker節點保持沉默超過1個預設的時間間隔,master節點就會把這個節點的狀態改為死亡,并把該worker節點上執行的程序及數據遷移到其他worker節點上重新執行。而當master節點出錯時,可以根據最近的1個檢查點重新選擇1個節點作為master,并由此檢查點位置繼續運行。
隨著語音識別技術的廣泛應用,語音識別必然會面臨海量請求所帶來的挑戰。比如面對億萬用戶的請求如何更快的進行處理、響應;如何存儲海量用戶數據;如何使語音識別模型能處理更大的訓練集,以獲得更高的識別率等等。MapReduce是1個可靠地容易進行編程操作的大數據并行計算模型。如果把MapReduce模型應用到語音識別上面,則可以輕松應對這些挑戰。
圖1給出了語音識別的1種MapReduce處理過程,圖中的wav11是用戶一上傳的第一個語音文件,wav12是用戶一上傳的第二個語音文件,result11和result22分別是2個語音文件對應的識別結果,user1是用戶一,其他的雷同。這個處理過程顯示的是不同用戶上傳文件,通過MapReduce過程,生成該用戶所上傳語音的結果集,然后把這個結果集返給用戶。單個語音的識別結果在映射這一環節得出,然后在化簡環節,按照語音文件識別結果所對應的用戶進行規約,最終得到各個用戶所上傳語音的識別結果集。

圖1 語音識別的MapReduce處理過程Fig.1 MapReduce process of speech recognition
SRSCC云端系統架構主要包括3個部分:安全服務器、管理服務器、及奴隸節點。安全服務器主要負責維護用戶賬號、密碼、以及對每個文件或目錄的操作權限等。它也維護了1個IP地址列表,用來指出哪些奴隸節點可以加入系統,從而使非法節點無法訪問和干擾系統,保證整個系統的安全性。管理服務器主要主要負責維護存儲文件的元數據以及控制所有奴隸節點的運行并且對用戶的請求作出響應。管理服務器可以直接與安全服務器進行通信,從而驗證奴隸節點和用戶的合法性。奴隸節點上部署有語音識別環境,用戶上傳的錄音文件存儲在奴隸節點上,并且奴隸節點負責識別這些文件,生成識別結果。
Sphere被用來設計執行用戶自定義函數。這些函數并行的以1種流的方式來處理Sector管理的數據。這意味著同一個用戶自定義函數會應用到1個數據集的每一個數據記錄。這個過程是并行的,并且對數據集的每一段數據記錄的處理是獨立完成的(假若有足夠的處理器可以用)。

圖2 語音識別的Sphere計算范式Fig.2 Computing paradigm of speech recognition
語音識別的Sphere計算范式見圖2,識別請求和Sphere客戶端進行通信,Sphere客戶端首先收集有關輸入流的信息,包括總的大小,文件的數目等等。其次Sphere客戶端通過尋找和處理函數同名的動態鏈接庫文件的方式定位所需服務的提供者,或者SPEs(Sphere Process Engines,SPE數據處理邏輯單位,可以處理1個數據段,1組數據或者整個文件)。語音識別的動態鏈接庫文件也存放在Sector系統中。基于這些信息,Sphere客戶端把輸入流分割成數據段(本文中整個語音文件作為1個數據段來處理)。通常情況下數據段的數目要遠大于SPEs的數目。在開始的作業中,給每一個SPE分配1個數據段并開始進行處理。一旦處理過程完成,得出結果,再給這個SPE分配一個新的數據片段來處理。這個結果流(輸出數據)或者返回給用戶,或者寫入存放在Sector的文件中,等待進行下一步處理。
在該系統中,用戶不與云端服務器直接交互,由Sphere客戶端充當中間媒介。當錄好音生成的文件上傳到客戶端時,該客戶端就會登錄到Sector/Sphere云,把文件交予云端服務器的slave節點處理。雖然當用戶較少時,該架構顯得有點繁瑣,但用戶訪問量較大時,它就會發揮出高效的性能。在master的管理下,云客戶端直接與slave進行交互,上傳數據。SRSCC語音識別系統整體架構流程圖見圖3。

圖3 CCSR系統架構流程圖Fig.3 Architecture flowchart of CCSR system
所謂可定制性是指用戶可根據自身的需求,來定制自己所需要的產品和服務,以滿足自己的個性化需要。比如軟件的可定制性就是指可根據用戶的具體情況,具體要求來設計軟件系統,提供相應服務。而語音識別的可定制性,在這里是指,用戶可以根據自己的實際需要來定制語音識別模型。通用的語音識別器,例如Google的語音搜索,用戶只能用來做識別,而不可能更改它的語言模型(Language Model)和聲學模型(Acoustic Model)。但可定制的語音識別器,可以更改語音模型和聲學模型。比如一些特定領域的用戶,只需使用自己特定領域的語音來進行訓練,無需關注其他領域的語音。這樣可使語音識別模型的生成變得更加簡單和高效。并且在一般情況下比通用領域的語音識別識別模型具有更高的識別率。先前做過1個實驗。只針對菜名進行訓練,得到1個只識別菜名的模型。經過測試發現,這個只面向菜名的語音識別器對菜名語音的識別正確率為87%,而Google語音搜索對菜名的識別正確率只有44%。
針對有特殊需求,需要定制語音識別模型的用戶,本文在Sector系統中為其創建對應的文件夾,以存放用戶自己的語音識別模型。可以通過以下2個途徑來實現語音識別模型的可定制性。一是用戶可以自己上傳語音識別模型到指定的文件夾下。由于本系統的語音識別環境是用HTK搭建的,而使用HTK生成語音識別模型有相對統一的規范。所以用戶可以使用HTK來錄制自己本領域的錄音訓練樣本,并訓練生成用來做語音識別的隱馬爾科夫模型,然后上傳到云端。當用戶進行語音識別時,云端可根據用戶的IP地址找到其對應文件夾下的語音識別模型進行識別。二是用戶可以指定自己語音識別模型的識別范圍。當使用語音識別模型進行識別時只針對識別范圍內的語音進行加強,從而逐步達到用戶對特定領域語音進行識別的要求。
實驗室先前實現了1個C/S架構的語音識別系統。下面做了2個實驗,一個是云架構的語音識別系統和傳統的C/S架構的語音識別系統進行對比,證明云架構的語音識別系統在用戶請求數較大時有更好的表現;另一個是云架構語音識別系統內的對比,通過運行不同的slave節點數,證明云架構語音識別系統具有一定的可擴展性。由于錄音環節,會花費大量時間,且在錄音的過程中,云端和服務端都處于閑置狀態,而本實驗的主要目的是測試云端和服務端的性能。所以為了使云端和服務端一直運行,達到性能極限,本實驗去掉了錄音環節,改為直接上傳已經錄好的語音文件。
為了驗證SRSCC語音識別系統性能,本文選擇了4臺一般的PC機搭建了1個較小的Sector/Sphere云計算平臺,詳細配置見表1。
由表1可知,集群中部署了1個Security Server節點,1個Master節點,11個slave節點。對于C/S架構的語音識別系統的服務器,本文選擇配置最高的PC1來充當。

表1 Sector/Sphere集群環境Table1 Sector/sphere cluster environment
本實驗主要對SRSCC語音識別系統和傳統的C/S架構的語音識別系統進行對比。所用實驗數據為實驗室人員錄制的12 000個菜名錄音文件。實驗場景為每個系統有10個用戶連續上傳錄音文件,系統對錄音文件進行處理,然后返回結果。通過改變用戶上傳的文件數量,來得到每個系統對不同數目請求的時間變化趨勢。然后對這種趨勢進行對比,得出最終結論,具體結果見圖4。圖中橫軸為每個用戶上傳的文件數,縱軸為總的處理時間(從上傳第一個文件,到最后一個文件返回結果)。TRA代表傳統C/S架構的語音識別系統,NCC代表云計算架構的語音識別系統,即SRSCC語音識別系統。由圖可知,雖然剛開始用戶請求量較少時兩者所用時間相差不大,但SRSCC語音識別系統的處理時間增長速率要低于傳統服務器模式的語音識別系統。并且從圖中可以看出當每個用戶的上傳量達到1 200個時,傳統語音識別系統就遇到了性能瓶頸,時間增長速率出現了拐點。可見看出云架構的語音識別系統有效的推遲了拐點的到來。從而可以得出,SRSCC語音識別系統具有更好的性能,更有能力面對大用戶請求挑戰,更符合語音識別的發展趨勢。
實驗的數據集是12 000個錄音文件,并且只對這些錄音文件進行簡單的識別操作。圖5顯示的是識別這12 000個錄音文件所花費的時間受集群節點數影響的情況。有圖5可知隨著節點數量的增加,識別這12 000個文件所花費的時間在逐漸減少。雖然隨著節點的增加所用時間減少的速率逐步趨緩,但可以得出隨著數據集量的增加,可以通過增加節點數來提高語音系統的性能。這也從側面說明了云計算架構的語音識別系統具有一定的可擴展性。

圖4 傳統架構和云計算架構在語音識別上的性能對比Fig.4 Comparison between traditional architecture and cloud architecture in speech recognition

圖5 集群節點數量的影響Fig.5 Effect of number of nodes
本文結合 MapReduce編程模型,利用Sector/Sphere工具實現了SRSCC語音識別系統,并給出了語音識別模型的可定制性方法。實驗表明,SRSCC語音識別系統與傳統服務器模式的語音識別系統相比,具有更好的性能,更有能力面對大用戶請求所帶來的挑戰。并且該系統具有一定的可擴展性。但本文所搭建的云計算系統規模較小,功能比較簡單,下一步要完善系統的功能,擴大系統規模,從而得到更好的結果。
[1]Lee K F.Automatic Speech Recognition:The Development of the Sphinx System[M].Boston:Kluwer Academic Publishers,1989.
[2]劉加.漢語大詞匯量連續語音識別系統研究進展[J].電子學報,2000,28(1):85-91.
[3]方敏,浦劍濤.嵌入式語音識別系統的研究和實現[J].中文信息學報,2004(6):73-75.
[4]Michael Armbrust,Armando Fox,Rean Grith,et al.Above the clouds:A berkeley view of cloud computing[R].Technical Report UCB/EECS-2009-28,EECS Department,University of California,Berkeley,2009.
[5]Dean J,Ghemawat S.MapReduce:Simplified data processing on large clusters[C].//Proc of the 6th Symp on Operating System Design and Implementation,Berkeley:USENIX Association,2004:137-150.
[6]Robert Grossman,Yunhong Gu.Data Mining Using High Performance Data Clouds:Experimental Studies Using Sector and Sphere[C].SIGKDD 2008,Las Vegas:NV,2008.
[7]Yunhong Gu,Li Lu,Robert Grossman,et al.Processing Massived Sized Graphs using Sector/Sphere,3rd Workshop on Many-Task Computing on Grids and Supercomputers[C].co-located with SC10,LA:New Orleans N,2010:15.
[8]Yunhong Gu,Robert Grossman.Sector and Sphere:The design and implementation of a high performance data cloud[J].Theme Issue of the Philosophical Transactions of the Royal Society A:Crossing Boundaries:Computational Science,E-Science and Global E-Infrastructure,2009,v 367(1897):2429-2445.
[9]Young S J,Evermann G,Gales M J F,et al.PC (2006)The HTK Book Version 3.4[M].Cambridge:Cambridge University Engineering Department,2006.
[10]Dean J,Ghemawat S.Distributed Programming With MapReduce[M].//Oram A,Wilson G,eds.Beautiful Code,Sebastopol:O’Reilly Media Inc,2007:371-384.
[11]Dean J,Ghemawat S.MapReduce:a flexible data processing tool[J].Communications of the ACM,2010,53(1):72-77.