廣州市行政學院信息網絡中心 郭瑞GUO Rui
基于ASR的呼叫中心系統設計與可靠性研究
廣州市行政學院信息網絡中心 郭瑞GUO Rui
本文以I T運行維護的故障申報系統為例,介紹如何利用Nu a n c e Re c o g n i z e r 9.0自動語音識別系統和東進D 0 8 1 A模擬中繼語音卡電話處理系統設計基于A S R(自動語音識別)的呼叫中心。文中不僅介紹了設計過程中的各個關鍵環節,而且對該系統的可靠性進行了深入討論。其中包括如何合理設計語法文件以提高語音識別率;如何在系統運行期間進行同步保障,使系統逐步趨于完善。
自動語音識別(A S R);呼叫中心;語法文件;同步保障
由于信息技術的蓬勃發展,大到政府的服務機構,小到私營企業的服務部門,大都采用電話方式進行客戶服務。隨著服務任務量逐漸加大,呼叫中心孕育而生。呼叫中心的主要功能是接聽客戶來電并給予相應服務。早期的呼叫中心采用人工接聽方式,這樣需要消耗大量的人力。現在雖然有了讓用戶通過電話按鍵進行交互的自動呼叫中心,但在一次服務中用戶往往需要反復選擇按鍵多次,十分不便。采用自動語音識別方式將用戶來電話音直接轉換成計算機能自動處理的文本信息,可以令呼叫中心的服務更加自動化、人性化。
語音識別技術就是讓計算機通過識別和理解過程把人類語音信號轉變為相應的文本或命令的技術,其目的是讓計算機"聽懂"人類口述的語言。不同的語音識別系統,雖然具體實現細節有所不同,但所采用的識別原理程序基本相似:[1](見圖1)
首先,確定語音識別單元的選取,語音識別單元有單詞(句)、音節和音素等3種。單詞(句)單元廣泛應用于中小詞匯語音識別系統,但不適合大詞匯系統。因為漢語是單音節結構的語言,音節數量相對較少,所以音節單元多用于大詞匯量漢語語音識別。音素單元以前多見于英語語音識別的研究中,現在也開始用于大詞匯量漢語語音識別。之后,進行特征提取,去除語音中對識別無關緊要的冗余信息,然后,采用適當的語音識別方法,通過對確定的語音特征進行模擬訓練得到模板庫。最后,將待識別的語音信號特征與模板庫進行模式匹配,從而達到識別目的。
自動語音識別(Automatic Speech Recognition,簡稱ASR)系統是一種可以識別非限定講話者連續話音的識別軟件系統。其功能是將人類的語音中的詞匯內容轉換為計算機可讀的符號輸入。呼叫中心是基于現代通訊技術,同時處理大量各種不同的電話呼入和呼出業務與服務的系統。
本文基于自動語音識別的IT運維呼叫中心系統(以下簡稱本系統),將實現從電話故障申報語音采集、語音轉換成文本、文本信息提交IT運維管理工作流的一系列功能。本系統采用東進公司出品的D081A模擬中繼語音卡電話處理系統,實現呼叫中心的基本功能;利用Nuance Recognizer 9.0自動語音識別系統對采樣的話音進行處理,將話音轉換成對應的文本,并以統一的XML格式文件作為輸出,將故障申報信息提交給IT運維管理軟件。(見圖2)
由于東進公司和Nuance公司的SDK都是基于C語言的標準API函數接口,本系統使用VC++將電話呼叫中心與自動語音識別系統進行整合。
3.1.話呼叫中心
電話申報作為本系統的輸入模塊,直接將電話線上的話音信號采樣保存為數字音頻數據。東進公司的D081A模擬中繼語音卡可以提供最多8個通道的模擬話音接入。申報過程設計成簡單的一問一答形式。由于本系統采用自動語音識別功能,整個申報過程無需繁瑣 的 按鍵選擇。
電話接通后,系統將自動播放提示音,用戶根據提示音作出相應回答即可。在此期間,系統記錄用戶話音,并交由自動語音識別軟件處理。申報完成后,系統自動輸出確認信息,告知用戶故障的受理情況。本文中所涉及的呼叫中心關注故障申報人的姓名、故障發生地和故障描述這3個關鍵信息。申報流程設計如下:(見圖3)
3.2.音識別機制
自動語音識別技術即 Automatic Speech Recognition(簡稱ASR),是指將人說話的語音信號自動轉換為可被計算機程序所識別的符號信息,從而識別說話人的語音指令及文字內容的技術。
本系統使用Nuance Recognizer 9.0語音識別軟件(以下簡稱該軟件)實現ASR功能。該軟件是一款非特定人語音、大詞匯量、連續語音識別軟件。該軟件進行語音識別的核心是標準聲音庫文件和用戶語法文件,本系統使用中文普通話語音庫。識別過程中,該軟件首先從系統導入用戶語法文件,通過語法文件中按照一定邏輯結構組織的文本信息在標準聲音庫文件中選擇相應的聲音數據作為模式匹配的樣本。這樣做的好處是,無需在整個聲音庫文件中進行模式匹配,大大加快了識別的速度。(見圖4)
語法文件作為所需識別內容的總體范圍,所識別的字、詞在語法文件中按照一定的語言邏輯關系進行組織。這樣做的優點是,在識別之前無需對說話人的語音進行采樣學習。語法文件采用Nuance公司定義的grxml格式,它是基于xml標準的一種語法擴展。由于自動語音識別結果的文本內容直接來自語法文件,所以語法文件的內容直接關系到識別的成功率。開發者必須根據實際應用需要編寫ASR的語法文件,并不斷充實完善它。
以下是本系統中識別房間號碼的語法文件:
〈?xml version='1.0'encoding='GB'?>
〈grammar xml:lang="zh-cn"version="1.0"xmlns="http://www.w3.org/2001/06/grammar"root="RoomNum">
〈meta name="swirec_max_speech_duration"content="14000"/>
〈meta name="incompletetimeout" content="1500"/>
〈rule id="RoomNum"scope="public">
〈tag>name=''〈/tag>
〈Item>辦公樓〈tag>name="辦公樓"〈/tag>〈/
item>
〈Item>〈ruleref uri="#S"/>〈tag>name+=S.V
〈/tag>〈/item> 〈item>〈tag>SWI_meaning
=name;RESULT=SWI_meaning〈/tag>〈/item>
〈/rule>
〈rule id="S">
〈ruleref uri="#DIGIT"tag="V=DIGIT.V"/>
〈ruleref uri="#DIGIT"tag="V+=DIGIT.V"/>
〈ruleref uri="#DIGIT"tag="V+=DIGIT.V"/>
〈/rule>
〈rule id="DIGIT">
〈one-of>
〈item tag="V='0'">零〈/item>
〈item tag="V='1'">
〈one-of>
〈Item>一〈/item>
〈item>幺〈/item>
〈/one-of>
〈/item>
〈item tag="V='2'">二〈/item>
〈item tag="V='3'">三〈/item>
〈item tag="V='4'">四〈/item>
〈item tag="V='5'">五〈/item>
〈item tag="V='6'">六〈/item>
〈item tag="V='7'">七〈/item>
〈item tag="V='8'">八〈/item>
〈item tag="V='9'">九〈/item>
〈/one-of>
〈/rule>
〈/grammar>
3.3.音識別實現
本系統利用該軟件的SDK實現自動語音識別功能。SDK由多個模塊組成,每個模塊提供一組API函數實現特定功能。本系統使用其中話音檢測器(Speech detector)和語音識別器(Recognizer)兩個模塊。話音檢測器用于對輸入的數字音頻數據進行預處理,經過預處理的數據輸入到語音識別器中進行識別分析。(圖5)
要實現語音識別功能,API接口函數必須被正確按順序調用。(見圖6)
圖5.
系統啟動時,必須用 SWIepInit()和SWIrec-Init()函數初始化話音檢測器和語音識別器。否則其它API函數無法工作。之后用SWIepDetectorCreate()和SWIrecRecognizerCreate()函數分別創建話音檢測器和語音識別器對象。
啟動完成后,首先用SWIrecGrammarLoad()函數加載用戶定義的語法文件,并用SWIrecGrammar-Activate()函數將其激活。每次識別前,必須使用SWIrecSessionStart()和SWIrecAcousticState-Reset()函數對聲學處理模塊進行復位。
本系統的語音識別采用多線程設計,每次語音識別都作為一個獨立線程。在單個線程中,語音識別器將啟用話音檢測器載入數字音頻數據并進行預處理。預處理開始前,必須使用SWIepSessionSta-Rt()函數開啟話音檢測會話,并使用SWIepAcous-TicStateReset()函數復位聲學處理模塊的相關組件。預處理過程中,SWIepStart()和SWIepStop()函數控制話音檢測器工作和停止;利用SWIepWrite()函數向話音檢測器中寫入需要預處理的數字音頻數據;處理完畢后,利用SWIepRead()函數從話音檢測器中讀取處理結果數據。語音識別器使用SWIrecRecognizerCompute()函數根據所載入的語法文件對經過預處理的話音數據進行識別。
識別結束后,利用SWIrecGetXMLResult()函數將識別結果保存為XML格式的標準文件作為語音識別的輸出。同時利用SWIrecGetWaveform()和SWIrecLogEvent()函數記錄預處理后的波形數據和系統運行狀態信息。
關閉系統時,必須使用SWIrecGrammarFree()函數釋放語法文件資源,并用SWIepDetectorDest-Roy()和SWIrecRecognizerDeStroy()函數銷毀所有話音檢測器和語音識別器對象。之后利用SWIepTerminate()和SWIrecTerminAte()函數終止話音檢測器和語音識別器組建,釋放所有資源。值得注意的是,在終止之前,必須將所有話音檢測器和語音識別器對象銷毀,否則終止操作將會失敗。
3.4.音識別結果
語音識別結果以XML文件格式輸出。對于同一段話音,難免出現發音相近的識別結果,這時,系統將根據匹配度從高到低的順序對識別結果進行排序。下面是一段識別結果的XML文件示例,可見“電腦壞了”的匹配度為“90”,而“編碼壞了”的匹配度為“8”,于是“電腦壞了”將作為結果輸出。
〈result>
〈interpretation grammar="DigitsGrammar"confidence="90">
〈input mode="speech">〈nomatch>電 腦 壞 了〈/nomatch>〈/input>〈instance/>
〈/Interpretation>
〈interpretation grammar="Digits_Grammar"
Confidence="8">
〈input mode="speech">〈nomatch>編 碼 壞 了〈/nomatch>〈/input>〈instance/>
〈/interpretation>
〈/result>
可靠性是系統質量的重要指標,語音識別率是本系統可靠性的關鍵環節。完善系統可靠性是一個長期的過程,貫穿于軟件的整個生命周期。
4.1.步保障
為了保障系統正常運行,不斷提高其可靠性,本系統采用了同步保障機制。每次故障申報電話的音頻數據將自動保存到系統數據庫中,一旦發現識別率下降,立即調出相應的話音數據進行比對,從中分析出識別率下降的原因并作出改進。采用這一機制后,數據庫中的音頻數據量勢必隨著運行時間的增長而逐漸加大。考慮到人說話的聲音頻率在100Hz~8KHz范圍,采用A-law標準將話音數據壓縮成8KHz、8bit、單聲道的數字音頻文件。這樣既能保證話音的保真度,又能有效節約存儲空間。通過同步保障的機制,語音識別率將保持在一個較高水平,系統可靠性得以保證。
4.2.實語法文件
合理設計語法文件,是提高系統可靠性的重要環節。人的話音千差萬別,這就對語音識別產生極大挑戰。比如某些人說話帶有方言口音,極易造成識別錯誤。為了保證語音識別率,系統設計的語法文件需要盡量多 地 考慮到人們日常口語習慣。
首先是“一字多音”。比如“一”有可能念成“幺”,那么當接收到“幺”的話音應該同樣識別為“一”。于是就有了如下語法文件,將兩個讀音統一識別為一個字。
〈item tag="V='1'">
〈one-of>
〈item>一〈/item>
〈item>幺〈/item>
〈/one-of>
〈/item>
其次是“一音多字”。這種情況更為普遍,特別是在人名中。比如“劉杰”、“劉潔”和“劉捷”等。在這種情況下,為了保證系統可靠運行,采用將多個人名同時作為識別結果輸出的方式解決。如何區分具體人員,通過上層系統數據庫中的信息進行二次確認。在語法文件中采用如下形式實現“一音多字”:
〈item>劉 杰 〈tag>V="劉 杰 ,劉 潔 ,劉 捷"〈/tag>〈/item>
除此之外,還有生僻字的問題。這種情況也主要出現在人名中。例如“燊”字,“彧”字等。如果生僻字出現在語法文件中,會造成語法文件編譯錯誤而導致系統無法正常識別。解決辦法是利用含有生僻字、繁體字的字庫,在語法文件中使用GBK標準。
〈?Xml version='1.0'encoding='GBK'?>
本文以IT運行維護系統為例,描述了利用東進D081A模擬中繼語音卡電話處理系統和Nuance Recognizer 9.0自動語音識別系統實現基于ASR的呼叫中心的設計過程。本系統不僅適用于維護人員較少但維護任務較重的IT運維管理環境,而且可以根據需要移植到其它應用環境中。移植過程只需要根據具體應用情況重寫語法文件,適當修改呼叫中心服務流程即可實現。
雖然本系統已經上線運行一段時間,但語音識別結果難免出現偏差。為了保證系統可靠運行,需要采用同步保障方式。系統同步保存客戶話音作為參考數據,一旦出現識別問題,立即針對實際情況修改、充實語法文件,逐步提高系統的可靠性、健壯性,使系統趨于完善。
[1]《漢語大詞匯量連續語音識別系統研究進展》倪崇嘉,劉文舉,徐波 《中文信息學報》2 0 0 9年1月第2 3卷第1期
[2]《語音識別技術研究進展》柳春《甘肅科技》2 0 0 8年5月第2 4卷第9期
[3]《語音識別技術在數字圖書館檢索系統中的應用》葉小榕,邵晴《科技導報》2 0 0 8,2 6(1 8)
[4]《基于Nu a n c e平臺的語音識別環境設計》譚保華,熊健民,劉幺和 《湖北工業大學學報》2 0 0 4.6
Design and Reliability Analysis of ASR Call Center System
this article is the description ofASR(Automatic Speech Recognition)call center system design and reliability.as an example,this project uses nuance recognizer 9.0 andDONGJIN D081A analog speech cardto implement the system.the article not only describes eachmodule of the system,but also analyses the system reliability,include how to design grammar file to advance the speech recognition accuracy rate,and how to optimize the system reliabilityby synchronization maintenance.Keyword:ASR(Automatic speech recognition),call center,grammar file,synchronization maintenance,reliability