一.前言
語音識別是指從語音到文本的轉(zhuǎn)換,即讓計算機能夠把人發(fā)出的有意義的話音變成書面語言。通俗地說就是讓機器能夠聽懂人說的話。所謂聽懂,有兩層意思,一是指把用戶所說的話逐詞逐句轉(zhuǎn)換成文本;二是指正確理解語音中所包含的要求,而不要求所有詞都轉(zhuǎn)換正確。
語音識別技術(shù)(ASR)是以語音為研究對象,涉及到生理學、心理學、語言學、計算機科學以及信號處理等諸多領(lǐng)域,甚至還涉及到人的體態(tài)語言(如人在說話時的表情、手勢等行為動作可幫助對方理解),目前常見的識別技術(shù)一般采用隱馬爾可夫模型HMM(Hidden Markov Model)來建模。它的基本原理是系統(tǒng)首先對大量的真實世界中的人的語音進行分析,并建立模型。在識別時,系統(tǒng)同樣先對輸入的語音進行分析,提取特征,然后通過一定的算法并使用已建立的模型,從而識別出用戶所說的話。
隨著語音識別技術(shù)的逐漸成熟,語音識別技術(shù)開始得到廣泛的應(yīng)用,涉及日常生活的各個方面如電信、金融、新聞、公共事業(yè)等各個行業(yè),通過采用語音識別技術(shù),可以極大的簡化這些領(lǐng)域的業(yè)務(wù)流程以及操作;提高系統(tǒng)的應(yīng)用效率。
二、語音識別的原理
2.1 語音識別的基本原理
從圖1中看出,輸入的語音首先要通過端點檢測(也稱靜音檢測模塊),檢測得到輸入語音的有效語音數(shù)據(jù)部分(也就是去除了靜音數(shù)據(jù)、噪聲數(shù)據(jù)等);然后進入特征提取模塊,這里需要提取語音信號最本質(zhì)的信息,一般采用MFCC特征,它是采用復(fù)雜的數(shù)字信號處理技術(shù)來完成的;語音信號的特征信息被送入識別引擎,在聲學模型和語言模型的指導(dǎo)下進行識別,最終得到識別結(jié)果,這里常常需要采用非常復(fù)雜的搜索算法,簡單地說,它需要根據(jù)語言模型考慮各種詞的組合(句子)及其發(fā)生概率,對于每一種可能的句子,都給出一個得分,選擇得分最大者作為識別結(jié)果。但是由于可能的搜索空間非常大,所以需要利用剪枝技術(shù),有效地去除大量冗余空間,加快搜索速度,滿足實際系統(tǒng)的要求。
2. 2 基于語法的識別引擎
對于很多領(lǐng)域的語音識別來說,如自動總機、火車定票系統(tǒng)、股票查詢系統(tǒng)等,他們具有一個共同的特點:所用的句型典型,且句型數(shù)有限,可以用規(guī)則來描述。對于這樣的系統(tǒng),采用語法的方式來指導(dǎo)其語音識別,一方面可以得到很高的識別率,另一方面,又能達到較快的識別速度,滿足實際系統(tǒng)的需要。因此,基于語法方式的語音識別技術(shù)得到廣泛應(yīng)用。本文中我們采用的核心識別引擎也是采用語法的方式。
三、天朗分布式語音識別系統(tǒng)簡介
天朗分布式語音識別引擎是天朗公司針對電信級、大企業(yè)級應(yīng)用特點開發(fā)出來的一個基于多機的分布式語音識別引擎,它通過局域網(wǎng)連接多個識別服務(wù)器,來同時完成大量的語音識別任務(wù),極大的拓展了單機版語音識別引擎在識別任務(wù)上的限制,可以同時支持幾百到幾千個語音識別任務(wù)并發(fā)執(zhí)行,從而滿足電信級這樣的具有大識別任務(wù)量的應(yīng)用。系統(tǒng)的主要功能有:
·支持非特定人、大詞匯量、連續(xù)語音識別,能夠達到高的識別準確率;
為了方便客戶使用,我們提供了一套客戶端API給用戶,用戶在使用本系統(tǒng)時,可以在其應(yīng)用程序中調(diào)用我們的API來調(diào)用我們的識別系統(tǒng)。
4.2 天朗分布式語音識別系統(tǒng)工作原理
應(yīng)用程序通過DSR的API函數(shù)來調(diào)用語音識別功能,一般來說過程如下:
1、 當有電話到達時,應(yīng)用程序負責接起電話,然后播放一個歡迎的提示音,提示用戶說出要做的動作(如查詢?nèi)嗣⒐善毙畔⒌龋㈤_始等待用戶說話;
4.3 識別結(jié)果
需要注意的是:引擎返回的句子的個數(shù)可能沒有用戶設(shè)定的數(shù)目多,另外,設(shè)定較大數(shù)目的返回結(jié)果候選會影響系統(tǒng)的效率。
4.4引擎的三種調(diào)用方式
下面以電信級應(yīng)用來說明不同的調(diào)用方式的差別。
一般來說,一個基于電話語音識別的對話系統(tǒng)(如圖5所示),一般由識別服務(wù)器、應(yīng)用服務(wù)器、電話交換機、智能交換機設(shè)備、 IVR設(shè)備等設(shè)備組成,電話交換機與成千上萬個電話終端通過各種交換設(shè)備相連接,電信應(yīng)用軟件在這些硬件的支持下提供各種服務(wù),如:1860查詢服務(wù)等。此時,電信應(yīng)用開通的線數(shù)視系統(tǒng)的業(yè)務(wù)需求而定,一般總是大大小于終端連接的總數(shù)。系統(tǒng)連接數(shù)與終端連接數(shù)常常是1:1000或者1:10000的級別。"一路對話"是指物理上的一條線路,對于上述的電信應(yīng)用,電信開通的每一條線路都是一路對話。
"一次對話"是指用戶的一次電話從打入到掛機之間一個交互服務(wù)過程稱。比如:用戶撥打1860進行話費查詢,在用戶撥通電話至用戶掛機這個過程中用戶和應(yīng)用程序交互的整個過程稱作一次對話。
"一路會話"這里是指語音識別中,一次識別從分配識別資源開始到釋放這個資源的整個過程。
第一種:直接為每一路對話分配一個會話,用戶應(yīng)用程序在程序一開始就為每一路對話建立到引擎的連接,然后,該路對話就會一直保持該會話,再也不釋放該會話,直到程序結(jié)束。這種方式編程簡單,但是,在系統(tǒng)的穩(wěn)定性和有效性方面都是最差的。因為每一路對話都一直使用,且一直獨占該會話,一旦該會話出現(xiàn)問題,則該路對話就永遠不能用了,除非重啟程序。另外,由于每路對話都獨占一個會話,因此即使該路對話沒有在使用引擎,其獨占的會話也不能被別的對話使用。降低了系統(tǒng)的效率。
第二種:在一次對話開始時就建立到引擎的連接,然后該對話一直獨占該會話,直到該次對話結(jié)束。很顯然,這種方式和第一種方式比起來,在穩(wěn)定性和效率方面都有很大提高。主要是這種方式不再一直獨占一個會話,會話可以在多路對話之間共享,即使有一路會話出現(xiàn)問題,只會影響一次對話的一次工作,而不會影響本路對話以及其他路對話的以后的識別。
盡管第二種已比較優(yōu)化,但它的一個缺點就是仍然會影響一次對話的進行。
第三種:在每一次識別開始時建立連接,識別結(jié)束后立刻釋放(這種方式與第二種不同,是因為在一次對話過程中會存在多輪的識別過程)。這種方式的優(yōu)點除了第二種的優(yōu)點外,他還克服了它的缺點。因為,此時一個會話的失敗只會影響該路對話的一句的識別,通過編程我們可以在發(fā)現(xiàn)一個會話失敗后,再申請另一個會話,這時最多讓用戶重復(fù)一邊剛才的話外,對這次對話沒有影響。
另外,采用三種的哪一種方式還和應(yīng)用的不同有關(guān),如果應(yīng)用是類似于股票查詢這樣的系統(tǒng),每個識別服務(wù)器都完成相同的功能,這時采用第三種方式比較合適。而對于某些應(yīng)用系統(tǒng)如需要動態(tài)改變語法的,則最好采用第一、二種方法。如果改變的語法只在一次對話中有效,可以采用第二種,如果改變的語法一直持續(xù)有效的話,第一種可能更適合。
4.5 語法
在天朗分布式識別系統(tǒng)中,語法的使用有兩種形式:
1. 靜態(tài)語法,對于目前許多基于語音識別的應(yīng)用系統(tǒng),大多數(shù)用到的語法都是固定的,在系統(tǒng)運行中,不需要對語法進行更改(如1860系統(tǒng),火車訂票系統(tǒng)等),對于這種應(yīng)用,最方便的方法就是在系統(tǒng)啟動時就把用到的語法加載進系統(tǒng),用到時激活(enable)就行了。這樣可以節(jié)約大量的時間,提高系統(tǒng)的效率。為了方便用戶的使用,天朗分布式識別引擎提供了靜態(tài)語法功能,用戶只要通過對識別服務(wù)器的預(yù)加載語法進行配置,系統(tǒng)會在啟動時自動把這些語法加載到系統(tǒng)中供系統(tǒng)使用。在這種情況下,整個系統(tǒng)可以不需要語法服務(wù)器,從而節(jié)約投資成本。要注意的是,靜態(tài)語法必須是已編譯過的語法格式。
2. 動態(tài)語法,所謂的動態(tài)語法是指在運行前并不知道需要加載那些語法,或者在運行時,需要對語法進行編譯或修改。動態(tài)語法常用在比較大型的復(fù)雜的系統(tǒng)中。對于動態(tài)語法,系統(tǒng)必須要有語法服務(wù)器來支持,動態(tài)語法可以是文本格式,也可以是編譯后的格式,系統(tǒng)會根據(jù)傳入的語法的格式自動進行選擇是否進行編譯。
在天朗分布式識別引擎中,語法是通過一個key來唯一指定的,這個key由用戶自己指定,且必須保證不同的語法的key的唯一性。不同的語法采用相同的key可能會導(dǎo)致語法的相互覆蓋。
系統(tǒng)可以同時支持靜態(tài)語法和動態(tài)語法。在加載一個語法時,系統(tǒng)首先會通知對應(yīng)的識別服務(wù)器去加載一個指定的語法,如果該語法已加載,則僅返回語法的句柄以供以后調(diào)用;否則,系統(tǒng)從識別服務(wù)器所在的硬盤上加載所指定的語法。如果識別服務(wù)器上也不存在對應(yīng)的語法,則先判斷系統(tǒng)中是否有語法服務(wù)器,如果系統(tǒng)中不存在語法服務(wù)器,返回加載失敗。否則,識別服務(wù)器會向語法服務(wù)器申請該語法。如果語法服務(wù)器上無該語法或其他原因無法得到該語法,返回加載失敗。否則,下載該語法服務(wù)器到本地。并加載。返回句柄。
引擎在加載語法時,如果找不到指定的語法Key的語法,就會加載用戶指定的二進制語法文件,同時將指定的語法Key作為該語法的key。最后返回語法的handle。 要注意的是,語法加載是針對會話的。
4.6 系統(tǒng)的穩(wěn)健性和效率
對于電信或大企業(yè)級別的的應(yīng)用系統(tǒng)來說,穩(wěn)健性和效率是系統(tǒng)成功的關(guān)鍵。天朗分布式識別系統(tǒng)通過多種有效技術(shù),來提高系統(tǒng)的效率和穩(wěn)健性。
1. 系統(tǒng)通過設(shè)立資源管理器來統(tǒng)一管理整個系統(tǒng)的識別資源分配和回收,資源管理器通過一個高效的負載分析策略,根據(jù)系統(tǒng)的當前狀態(tài),分配負載最輕的識別服務(wù)器以提高整個系統(tǒng)的整體效率。
2. 一般來說,一個系統(tǒng)只要一個資源管理器就可以穩(wěn)定工作,但是,采用多個資源管理器互相備份可以更有效的保證系統(tǒng)的穩(wěn)定性。天朗分布式識別系統(tǒng)可以同時支持多個資源管理器同時工作。和其他的類似系統(tǒng)不同的是,其他類似系統(tǒng)在工作時只有主資源管理器在工作,而備份資源管理器是不工作的。而天朗的分布式識別系統(tǒng)的每個資源管理器都負擔部分的資源分配工作,因此,可以充分利用系統(tǒng)的資源,提高系統(tǒng)的效率。另外,每個資源管理器又是互相備份的,當一個資源管理器出現(xiàn)問題,其他的資源管理器會自動的接過出現(xiàn)問題的服務(wù)器的工作,所以對于系統(tǒng)的穩(wěn)定性有了充分的保障。
3. 對于識別服務(wù)器,和資源管理器一樣,備份的服務(wù)器并不是閑著不工作,它們和其他識別服務(wù)器一樣承擔識別任務(wù),這樣可以有效的分配負載,提高系統(tǒng)的效率,同時減輕系統(tǒng)的投資。同樣的,識別服務(wù)器又是互相備份的,當一個識別服務(wù)器出現(xiàn)故障時,該服務(wù)器會自動的從系統(tǒng)中被剔除,其工作會由其他的識別服務(wù)器承擔。
4. 服務(wù)器可以動態(tài)加入和退出,不論是資源管理器還是識別服務(wù)器,抑或是語法服務(wù)器,都可以動態(tài)的隨時加入整個系統(tǒng)中,也可以動態(tài)的從系統(tǒng)中退出,而對整個系統(tǒng)的穩(wěn)定運行不會產(chǎn)生影響。因此,用戶可以根據(jù)整個系統(tǒng)的運行情況,隨時加入新的服務(wù)器以應(yīng)付增加的呼叫量,也可以在負載變輕的時候,隨時關(guān)閉某些服務(wù)器。同時,這種特性也保證某個服務(wù)器出現(xiàn)故障時不會影響系統(tǒng)的穩(wěn)定運行。
5. 由于分布式語音識別系統(tǒng)是一套比較復(fù)雜的系統(tǒng),為了進一步保證系統(tǒng)的穩(wěn)定性,我們還開發(fā)了一套監(jiān)控程序來監(jiān)視系統(tǒng)各個服務(wù)器的運行,一旦某個服務(wù)器出現(xiàn)故障,監(jiān)控程序可以隨時重啟該服務(wù)器。這樣可以保證系統(tǒng)可靠運行。
五、天朗分布式語音識別引擎系統(tǒng)架構(gòu)和識別技術(shù)的特點和優(yōu)勢
天朗分布式語音識別引擎的分布式結(jié)構(gòu)具有伸縮性強、成本效率高和配置靈活等特點,具有支持大話務(wù)量、實時性高的能力;其客戶/服務(wù)結(jié)構(gòu)使語音識別應(yīng)用程序強大,具有極其高效的容錯性和負載平衡能力,保證了應(yīng)用程序的高效可靠運行。
5.1系統(tǒng)架構(gòu)的功能特點:
·高密度接口 將對CPU運算需求密集的語音識別任務(wù)從客戶端轉(zhuǎn)移到識別服務(wù)器端,使得客戶端可以抽出處理能力來支持高密度的接口,從而提高應(yīng)用程序系統(tǒng)的接入量。
·容錯和可靠性 整個識別引擎經(jīng)過精心的設(shè)計,具有很高的容錯和可靠性,使得各個服務(wù)器可以動態(tài)的加入和退出系統(tǒng),而對整個系統(tǒng)的運行沒有影響,因此,即使個別服務(wù)器失效,也不會使系統(tǒng)崩潰。當一個識別服務(wù)器失效時,資源管理器會自動停止向其發(fā)送請求,當服務(wù)器恢復(fù)時,又會自動開始向它發(fā)送請求。另外,系統(tǒng)允許配備備份服務(wù)器來保證系統(tǒng)的可靠運行,在平時,備份服務(wù)器和其他服務(wù)器一樣,一起工作,承擔相同的工作,當有服務(wù)器崩潰時,其他服務(wù)器會自動的承擔崩潰服務(wù)器的工作。不僅為系統(tǒng)的可靠運行提供保證,而且可以充分利用備份服務(wù)器的能力。
·自動監(jiān)控 系統(tǒng)為每個服務(wù)器都配備了一個自動監(jiān)控程序來監(jiān)控服務(wù)器的運行,如果監(jiān)控程序發(fā)現(xiàn)服務(wù)器崩潰后,系統(tǒng)會自動重啟服務(wù)器,并保存崩潰時的現(xiàn)場供以后分析。這不僅大大節(jié)約維護人員的時間和精力,而且自動監(jiān)控方式可以提供比人更快更準確的維護服務(wù),保證系統(tǒng)的穩(wěn)定運行。
·可伸縮性 隨著呼叫量的增加,系統(tǒng)可以隨時動態(tài)增加服務(wù)器,而無須停止任何運行著的應(yīng)用程序或關(guān)閉IVR系統(tǒng),這對那些需要常年連續(xù)運行的系統(tǒng)特別有用。
5.2 系統(tǒng)架構(gòu)的綜合優(yōu)勢:
1. 實時性
2. 穩(wěn)定性
穩(wěn)定性的另一個方面反映在強健的容錯能力和快速的錯誤修復(fù)能力,容錯能力是指當一個識別服務(wù)器宕機后,不會導(dǎo)致整個系統(tǒng)的崩潰。快速的修復(fù)能力是指系統(tǒng)在一個識別服務(wù)器出問題后,可以很容易的通過重起服務(wù)器,或用一個新的識別服務(wù)器替代問題服務(wù)器,而不需要系統(tǒng)整個重起。
天朗分布式語音識別引擎通過精心設(shè)計,使得整個引擎在穩(wěn)定性上取得重大突破,系統(tǒng)可以長時穩(wěn)定運行。另外,系統(tǒng)的優(yōu)異的架構(gòu)設(shè)計使得系統(tǒng)中的任意一個服務(wù)器出現(xiàn)問題后,其任務(wù)會被其他同類服務(wù)器承擔,而不會對整個系統(tǒng)造成影響。另外,為了保證萬無一失,我們還開發(fā)了自動監(jiān)控程序來監(jiān)視各個服務(wù)器的運行,從而保證當服務(wù)器宕機后,能很快恢復(fù),從而保證系統(tǒng)的穩(wěn)定運行。
3. 靈活性
5.3識別引擎的技術(shù)特點:
六、天朗分布式語音識別系統(tǒng)運行環(huán)境
1. 硬件環(huán)境
Intel 奔騰3或以上的PC、服務(wù)器(包括各種CPU類型的服務(wù)器)、工作站(包括各種CPU類型的工作站);內(nèi)存建議為256Mb以上DDR或RAMBUS內(nèi)存,40GB以上硬盤, 網(wǎng)絡(luò)采用100M帶寬以上局域網(wǎng),支持TCP/IP協(xié)議。
2. 軟件環(huán)境
WINDOWS NT/2000/XP操作系統(tǒng)。
天朗語音公司供稿 CTI論壇編輯