廣州市行政學(xué)院信息網(wǎng)絡(luò)中心 郭瑞
基于自動(dòng)語(yǔ)音識(shí)別的IT運(yùn)維呼叫中心系統(tǒng)的實(shí)現(xiàn)
廣州市行政學(xué)院信息網(wǎng)絡(luò)中心 郭瑞
自動(dòng)語(yǔ)音識(shí)別(Automatic Speech Recognition,簡(jiǎn)稱ASR)系統(tǒng)是一種可以識(shí)別非限定講話者連續(xù)話音的識(shí)別軟件系統(tǒng),其目標(biāo)是將人類的語(yǔ)音中的詞匯內(nèi)容轉(zhuǎn)換為計(jì)算機(jī)可讀的輸入。呼叫中心則是基于現(xiàn)代通訊技術(shù),同時(shí)處理大量各種不同的電話呼入和呼出業(yè)務(wù)與服務(wù)的系統(tǒng)。本文將介紹如何利用東進(jìn)D081A模擬中繼語(yǔ)音卡電話處理系統(tǒng)和Nuance Recognizer 9.0自動(dòng)語(yǔ)音識(shí)別系統(tǒng)實(shí)現(xiàn)基于自動(dòng)語(yǔ)音識(shí)別的IT運(yùn)維呼叫中心系統(tǒng)。
自動(dòng)語(yǔ)音識(shí)別(ASR),Nuance Recognizer 9.0,呼叫中心,IT運(yùn)維管理
隨著信息技術(shù)的蓬勃發(fā)展,大到國(guó)家機(jī)關(guān),小到產(chǎn)品加工場(chǎng),都有自己的IT系統(tǒng)。由于系統(tǒng)維護(hù)的工作量逐漸加大,IT運(yùn)維管理軟件孕育而生。處理用戶故障申報(bào)并跟蹤處理是IT運(yùn)維管理軟件的重要工作內(nèi)容。為了方便用戶,通常采用呼叫中心的方式接收故障申報(bào)。如此一來(lái),需要專人接聽(tīng)用戶來(lái)電并手工生成維護(hù)工單。為了讓服務(wù)更加自動(dòng)化,采用自動(dòng)語(yǔ)音識(shí)別方式將用戶來(lái)電直接轉(zhuǎn)換成IT運(yùn)維管理軟件可處理的文本信息不失為一個(gè)好主意。
語(yǔ)音識(shí)別技術(shù)就是讓計(jì)算機(jī)通過(guò)識(shí)別和理解過(guò)程把人類的語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的技術(shù),其目標(biāo)是讓計(jì)算機(jī)“聽(tīng)懂”人類口述的語(yǔ)言。不同的語(yǔ)音識(shí)別系統(tǒng),雖然具體實(shí)現(xiàn)細(xì)節(jié)有所不同,但所采用的識(shí)別原理程序基本相似:[1] (見(jiàn)圖1)
首先,確定語(yǔ)音識(shí)別單元的選取。語(yǔ)音識(shí)別單元有單詞(句)、音節(jié)和音素等3種。單詞(句)單元廣泛應(yīng)用于中小詞匯語(yǔ)音識(shí)別系統(tǒng),但不適合大詞匯系統(tǒng)。因?yàn)闈h語(yǔ)是單音節(jié)結(jié)構(gòu)的語(yǔ)言,音節(jié)數(shù)量相對(duì)較少,所以音節(jié)單元多用于大詞匯量漢語(yǔ)語(yǔ)音識(shí)別。音素單元以前多見(jiàn)于英語(yǔ)語(yǔ)音識(shí)別的研究中,現(xiàn)在也開(kāi)始用于大詞匯量漢語(yǔ)語(yǔ)音識(shí)別。之后,進(jìn)行特征提取,去除語(yǔ)音中對(duì)識(shí)別無(wú)關(guān)緊要的冗余信息。然后,采用適當(dāng)?shù)恼Z(yǔ)音識(shí)別方法,通過(guò)對(duì)確定的語(yǔ)音特征進(jìn)行模型訓(xùn)練得到模板庫(kù)。最后,將待識(shí)別的語(yǔ)音信號(hào)特征與模板庫(kù)進(jìn)行模式匹配,從而達(dá)到識(shí)別目的。
圖 1
基于自動(dòng)語(yǔ)音識(shí)別的IT運(yùn)維呼叫中心系統(tǒng)(以下簡(jiǎn)稱本系統(tǒng)),將實(shí)現(xiàn)從電話故障申報(bào)語(yǔ)音采集、語(yǔ)音轉(zhuǎn)換成文本、文本信息提交IT運(yùn)維管理工作流的一系列功能。本系統(tǒng)采用東進(jìn)公司出品的D081A模擬中繼語(yǔ)音卡電話處理系統(tǒng),實(shí)現(xiàn)呼叫中心的基本功能;利用Nuance Recognizer 9.0自動(dòng)語(yǔ)音識(shí)別系統(tǒng)對(duì)采樣的話音進(jìn)行處理,將話音轉(zhuǎn)換成對(duì)應(yīng)的文本,并以統(tǒng)一的XML格式文件作為輸出,從而將故障申報(bào)信息提交給IT運(yùn)維管理軟件。(見(jiàn)圖2)
考慮到東進(jìn)公司和Nuance公司的SDK都是基于C語(yǔ)言的標(biāo)準(zhǔn)API函數(shù)接口,本系統(tǒng)是使用VC++將電話呼叫中心與自動(dòng)語(yǔ)音識(shí)別系統(tǒng)進(jìn)行整合。
圖 2
3.1 電話呼叫中心
電話申報(bào)作為本系統(tǒng)的輸入模塊,直接將電話線上的話音信號(hào)采樣保存為數(shù)字音頻數(shù)據(jù)。東進(jìn)公司的D081A模擬中繼語(yǔ)音卡可以提供最多8個(gè)通道的模擬話音接入。申報(bào)過(guò)程采用簡(jiǎn)單的一問(wèn)一答形式。由于本系統(tǒng)采用自動(dòng)語(yǔ)音識(shí)別功能,無(wú)需繁瑣地按鍵選擇。電話接通后,系統(tǒng)將自動(dòng)播放提示音,用戶根據(jù)提示音作出回答。在此期間,系統(tǒng)記錄用戶話音,并交由自動(dòng)語(yǔ)音識(shí)別軟件處理。申報(bào)完成后,系統(tǒng)自動(dòng)輸出確認(rèn)信息,告知用戶故障的受理情況。本呼叫中心關(guān)注故障申報(bào)人的姓名、故障發(fā)生地和故障描述這3個(gè)關(guān)鍵信息。申報(bào)流程設(shè)計(jì)如下:(見(jiàn)圖3)
圖 3
每次故障申報(bào)電話的音頻數(shù)據(jù)將自動(dòng)保存到系統(tǒng)數(shù)據(jù)庫(kù)中以備核查。因此,系統(tǒng)長(zhǎng)期運(yùn)行后,數(shù)據(jù)庫(kù)將會(huì)保存大量音頻數(shù)據(jù)??紤]到人說(shuō)話的聲音頻率在100Hz~8KHz范圍,采用A-law標(biāo)準(zhǔn)將話音數(shù)據(jù)壓縮成8KHz、8bit、單聲道的數(shù)字音頻文件。這樣既能保證話音的保真度,又能有效節(jié)約存儲(chǔ)空間。
3.2 語(yǔ)音識(shí)別機(jī)制
自動(dòng)語(yǔ)音識(shí)別技術(shù)即 Automatic Speech Recognition(簡(jiǎn)稱ASR),是指將人說(shuō)話的語(yǔ)音信號(hào)自動(dòng)轉(zhuǎn)換為可被計(jì)算機(jī)程序所識(shí)別的信息,從而識(shí)別說(shuō)話人的語(yǔ)音指令及文字內(nèi)容的技術(shù)。
本系統(tǒng)使用Nuance Recognizer 9.0語(yǔ)音識(shí)別軟件(以下簡(jiǎn)稱該軟件)實(shí)現(xiàn)ASR功能。該軟件是一款非特定人語(yǔ)音、大詞匯量、連續(xù)語(yǔ)音識(shí)別軟件。該軟件進(jìn)行語(yǔ)音識(shí)別的核心是標(biāo)準(zhǔn)聲音庫(kù)文件和用戶語(yǔ)法文件,本系統(tǒng)使用中文普通話語(yǔ)音庫(kù)。識(shí)別過(guò)程中,該軟件首先從系統(tǒng)導(dǎo)入用戶語(yǔ)法文件,通過(guò)語(yǔ)法文件中按照一定邏輯結(jié)構(gòu)組織的文本信息在標(biāo)準(zhǔn)聲音庫(kù)文件中選擇相應(yīng)的聲音數(shù)據(jù)作為模式匹配的樣本。這樣做的好處是,無(wú)需在整個(gè)聲音庫(kù)文件中進(jìn)行模式匹配,大大加快了識(shí)別的速度。(見(jiàn)圖4)
圖 4
語(yǔ)法文件作為所需識(shí)別內(nèi)容的集合,所識(shí)別的字、詞在語(yǔ)法文件中按照一定的語(yǔ)言邏輯關(guān)系進(jìn)行組織。這樣在識(shí)別之前無(wú)需對(duì)說(shuō)話人的語(yǔ)音進(jìn)行采樣學(xué)習(xí)。語(yǔ)法文件采用Nuance公司定義的grxml格式,它是基于xml標(biāo)準(zhǔn)的一種語(yǔ)法擴(kuò)展。由于自動(dòng)語(yǔ)音識(shí)別結(jié)果的文本內(nèi)容直接來(lái)自語(yǔ)法文件,所以語(yǔ)法文件的內(nèi)容直接關(guān)系到識(shí)別的成功率。開(kāi)發(fā)者必須根據(jù)實(shí)際應(yīng)用需要編寫(xiě)ASR的語(yǔ)法文件,并不斷充實(shí)完善它。
3.3 語(yǔ)音識(shí)別實(shí)現(xiàn)
本系統(tǒng)利用Nuance公司提供的SDK實(shí)現(xiàn)自動(dòng)語(yǔ)音識(shí)別功能。SDK由多個(gè)模塊組成,每個(gè)模塊提供一組API函數(shù)實(shí)現(xiàn)特定功能。本系統(tǒng)使用其中話音檢測(cè)器(Speech detector)和語(yǔ)音識(shí)別器(Recognizer)兩個(gè)模塊。話音檢測(cè)器用于對(duì)輸入的數(shù)字音頻數(shù)據(jù)進(jìn)行預(yù)處理,經(jīng)過(guò)預(yù)處理的數(shù)據(jù)輸入到語(yǔ)音識(shí)別器中進(jìn)行識(shí)別分析。(圖5)
圖 5
要實(shí)現(xiàn)語(yǔ)音識(shí)別功能,API接口函數(shù)必須被正確按順序調(diào)用。(見(jiàn)圖7)
系統(tǒng)啟動(dòng)時(shí),必須用 SWIepInit()和SWIrecInit()函數(shù)初始化話音檢測(cè)器和語(yǔ)音識(shí)別器。否則其它API函數(shù)無(wú)法工作。之后用SWIepDetectorCreate()和SWIrecRecognizerCreate()函數(shù)分別創(chuàng)建話音檢測(cè)器和語(yǔ)音識(shí)別器對(duì)象。
啟動(dòng)完成后,首先用SWIrecGrammarLoad()函數(shù)加載用戶定義的語(yǔ)法文件,并用SWIrecGrammarActivate()函數(shù)將其激活。每次識(shí)別前,必須使用SWIrecSessionStart()和SWIrecAcousticStateReset()函數(shù)對(duì)聲學(xué)處理模塊進(jìn)行復(fù)位。
本系統(tǒng)的語(yǔ)音識(shí)別采用多線程設(shè)計(jì),每次語(yǔ)音識(shí)別都作為一個(gè)獨(dú)立線程。在單個(gè)線程中,語(yǔ)音識(shí)別器將啟用話音檢測(cè)器載入數(shù)字音頻數(shù)據(jù)并進(jìn)行預(yù)處理。預(yù)處理開(kāi)始前,必須使用SWIepSessionStart()函數(shù)開(kāi)啟話音檢測(cè)會(huì)話,并使用SWIepAcousticStateReset()函數(shù)復(fù)位聲學(xué)處理模塊的相關(guān)組件。預(yù)處理過(guò)程中,SWIepStart()和SWIepStop()函數(shù)控制話音檢測(cè)器工作和停止;利用SWIepWrite()函數(shù)向話音檢測(cè)器中寫(xiě)入需要預(yù)處理的數(shù)字音頻數(shù)據(jù);處理完畢后,利用SWIepRead()函數(shù)從話音檢測(cè)器中讀取處理結(jié)果數(shù)據(jù)。語(yǔ)音識(shí)別器使用SWIrecRecognizerCompute()函數(shù)根據(jù)所載入的語(yǔ)法文件對(duì)經(jīng)過(guò)預(yù)處理的話音數(shù)據(jù)進(jìn)行識(shí)別。
識(shí)別結(jié)束后,利用SWIrecGetXMLResult()函數(shù)將識(shí)別結(jié)果保存為XML格式的標(biāo)準(zhǔn)文件作為語(yǔ)音識(shí)別的輸出。同時(shí)利用SWIrecGetWaveform()和SWIrecLogEvent()函數(shù)記錄預(yù)處理后的波形數(shù)據(jù)和系統(tǒng)運(yùn)行狀態(tài)信息。
關(guān)閉系統(tǒng)時(shí),必須使用SWIrecGrammarFree()函數(shù)釋放語(yǔ)法文件資源,并用SWIepDetectorDestroy()和SWIrecRecognizerDestroy()函數(shù)銷毀所有話音檢測(cè)器和語(yǔ)音識(shí)別器對(duì)象。之后利用SWIepTerminate()和SWIrecTerminate()函數(shù)終止話音檢測(cè)器和語(yǔ)音識(shí)別器組建,釋放所有資源。值得注意的是,在終止之前,必須將所有話音檢測(cè)器和語(yǔ)音識(shí)別器對(duì)象銷毀,否則終止操作將會(huì)失敗。
圖 6
3.4 語(yǔ)音識(shí)別結(jié)果
語(yǔ)音識(shí)別結(jié)果以XML文件格式輸出。對(duì)于同一段話音,難免出現(xiàn)發(fā)音相近的識(shí)別結(jié)果,這時(shí),系統(tǒng)將根據(jù)匹配度從高到低的順序?qū)ψR(shí)別結(jié)果進(jìn)行排序。下面是一段識(shí)別結(jié)果的XML文件示例,可見(jiàn)“電腦壞了”的匹配度為“93%”,而“編碼壞了”的匹配度為“8%”,于是“電腦壞了”將作為結(jié)果輸出。
本文描述了利用東進(jìn)D081A模擬中繼語(yǔ)音卡電話處理系統(tǒng)和Nuance Recognizer 9.0自動(dòng)語(yǔ)音識(shí)別系統(tǒng)實(shí)現(xiàn)基于自動(dòng)語(yǔ)音識(shí)別的IT運(yùn)維呼叫中心系統(tǒng)的過(guò)程。與傳統(tǒng)的人工服務(wù)呼叫中心相比,自動(dòng)語(yǔ)音識(shí)別功能大大節(jié)省人力資源,是本系統(tǒng)的亮點(diǎn)。本系統(tǒng)適用于維護(hù)人員較少但維護(hù)任務(wù)較重的IT運(yùn)維管理環(huán)境,但也可根據(jù)需要移植到其它應(yīng)用環(huán)境中。移植過(guò)程只需要根據(jù)具體應(yīng)用情況重寫(xiě)語(yǔ)法文件,適當(dāng)修改呼叫中心服務(wù)流程即可方便實(shí)現(xiàn)。
需要指出的是,盡管本系統(tǒng)已經(jīng)在某機(jī)構(gòu)上線運(yùn)行一段時(shí)間,但由于人的語(yǔ)言千差萬(wàn)別,語(yǔ)音識(shí)別結(jié)果偶爾也會(huì)出現(xiàn)問(wèn)題。為此,在實(shí)際運(yùn)行過(guò)程中需要根據(jù)具體情況適時(shí)修改、充實(shí)原設(shè)計(jì)的語(yǔ)法文件,使本系統(tǒng)逐步趨于完善。