关于在呼叫中心业务中应用语音识别技术的探讨
關于在呼叫中心業務中應用語音識別技術的探討
摘要:本文首先給出了語音技術的應用現狀,接著對語音識別技術在呼叫中心中可應用可嘗試的業務進行探討,最后提出呼叫中心業務中應用語音識別技術的虛擬CSR概念。
關鍵詞:SR(Speech Recognition) ?TTS(Text to Speech) ?虛擬CSR(Virtual Customer Service Representatives)
前言
語音技術在呼叫中心業務中的應用已有相當程度的研究和成果;同時語音接入在如今多樣化接入方式的呼叫中心依然占據重要地位,因此在具體呼叫中心業務中探討語音技術的應用,對于提高呼叫中心運營效率與拓展業務內涵和空間具有積極意義。
一方面是語音技術的研究和應用如火如荼,另一方面在實際應用中卻總是差強人意也并沒有出現所預期的應用效果,這固然有語音技術方面的原因,但商業應用沒有在具體業務實踐中積極引入相對成熟的語音技術成果總不免起到了剎車作用。業務應用的內在需求是推動一項技術研究的動因。
本文力圖在呼叫中心具體業務實踐中探討語音識別技術的應用,以求邁出小步從而推動呼叫中心向語音技術傾斜。這些探討建立在廣州電信商業呼叫中心的生產環境中,目的是在具體業務中利用語音識別技術提高效率或降低成本。探討而非研究決定了本文的基礎就是實際業務應用的試驗。
1.語音技術應用現狀
呼叫中心的核心技術是CTI(Computer Telephony Integration,計算機電話集成),CTI是計算機與通信相結合的產物。如同網絡剛開始倚重于電話網實現通信,CTI屬增值服務。呼叫中心利用CTI技術作為運營的核心基礎,同時由IVR(Interactive Voice Response,交互式語音應答系統)、ACD(Automatic Call Distribute,自動呼叫分配)、網絡設備和人工坐席等構成的網絡系統呼叫中心。呼叫中心的重心已是基于CTI技術之上的業務功能軟件,而業務功能軟件與傳統電話交換系統通過CTI技術相互間實現了透明,使呼叫中心的關注點脫離了支撐運營的技術,而專注于業務及其技術實現,即軟件層面。
本文這里所探討的語音識別技術應用是基于呼叫中心業務功能的軟件層面,而對于語音技術的應用在目前主要有幾點:
1)TTS(Text to Speech,文本語音轉換)的應用
TTS是軟件自動地把給定的文本信息轉換成語音的過程。TTS技術把可視的文本信息轉換為可聞的聲音信息,其應用范圍非常廣,如文本的有聲校對、語音應答系統、信息庫查詢系統、殘疾人輔助發音系統等。TTS及最新的語音合成引擎(連接技術和合成算法的結合)在呼叫中心的IVR系統中應用已相當廣泛。
2)音頻分析的應用
坐席系統的錄音功能保存了CSR與終端用戶的通話,保存下來的語音數據可以進行數據挖掘,即音頻分析。分析的目的和挖掘的方向取決于業務強調的核心,如考核CSR的語調,不需要人工監聽,由音頻分析系統完成。
3)SR(Speech Recognition,語音識別)的應用
SR引擎基于人工智能的自然語言理解技術生成語聲抽象含義的譯文。如音頻分析的應用,坐席系統的錄音功能保存的語音數據同樣可以通過SR轉化成具有一定語義的文本,綜合終端用戶與CSR通話的語音和文本分析終端用戶對于某項產品或業務的認可或滿意程度。
當前TTS和音頻分析的應用相對成熟,語音識別技術的發展仍受制于自然語言處理的研究,在一些敏感性數據的業務上,其應用并不提倡。擺脫按鍵操作或是讓眼睛休息而讓耳朵和嘴巴多工作、改變鍵盤和鼠標的人與計算機交互方式,需要語音識別技術達到讓業務軟件具有同人一樣的表達能力和想象能力、能夠理解談話雙方的內容、可以預測不同事件的因果關系、較高的上下文關聯能力。
2.技術環境
前文提到語音識別技術仍存在應用局限性,因此本文致力于在某些適合應用語音識別技術的業務上進行應用探討。先就應用的技術環境進行簡單說明。
1)華為ICD3.0平臺:1B+1D的坐席生產環境安裝有華為APC卡、華為音頻二合一轉換器;VP臺配E1卡;
2)語音識別引擎采用微軟Speech SDK51及中文語言包speechsdk51LangPack,采用VC6.0開發環境開發命令式語法模式的語音識別系統;
3)測試環境采用華為通用坐席接續控件實現在1B+1D生產環境下運行語音識別系統。
4)特別要說明:語音識別系統通過APC卡和聲卡以及OS的I/O能識別響應電話來的語音,而要把語音識別系統TTS的語音傳給客戶則需要通過VP臺的E1卡。在1B+1D的坐席環境,電話語音經過APC卡與話務員通話,同時轉換成數字信號經過聲卡和OS的I/O接口給語音識別系統,語音識別系統對收到的語音進行識別和響應;而語音識別系統不能把TTS的聲音直接給客戶,需要通過VP臺進行數模轉換才能給客戶。建立在IP網上新一帶呼叫中心,應該可以直接進行I/O操作的,目前未有相關技術或試驗佐證。
5)總結:目前本文所依賴的技術環境在某些具體業務應用上推出語音識別系統在架構上無疑要發揮VP臺的作用,因此需要對SR、TTS、VP臺的服務器間通信和交互架構進行設計,保證客戶語音可以為SR所捕獲和TTS后的語音可傳送到客戶。該架構如圖2-1語音識別技術應用架構圖。
3.業務應用
基于前文所介紹的技術環境,本文將討論如何在某些業務上應用語音識別技術。可通過讓客戶回復簡單數字、字母、詞匯達到交互目的業務,對于這些識別對象,語音識別率是相當高的,這些業務可以識別客戶回復的詞匯語義,根據識別的語義提取某些語音或TTS傳回給客戶。利用SR和TTS達到業務系統與客戶的語音交互雖然對當前的交互方式或系統不是替代性的,但至少是可選擇性的。本著提高效率或降低成本,同時也為達到語音交互的目的,探討了下面兩個業務的應用。
1)應用探討案例——IVR上實現語音交互的數字識別
業務目標:數字交互,由鍵盤輸入改成語音輸入,如輸入賬號、日期的IVR流程等;
業務探討:客戶撥打電話后,直接進入TTS系統,由TTS系統開IVR流程。首先由TTS系統通過VP臺給出歡迎語并提示輸入日期;客戶不通過電話上數字鍵而直接說出日期,這里說出的日期允許一定程度的模糊,如客戶說出08年8月8日,客戶的語音直接送到SR系統進行識別和響應;根據識別出的日期回復客戶業務上需要的信息,調用TTS系統并通過VP臺把回復信息的語音傳送給客戶。
技術探討:客戶的語音信息通過呼叫中心平臺發給SR系統,TTS系統由VP臺發送語音信息給客戶,這是最基本的系統架構關系。SR系統采用線程池處理方式,同時處理多個IVR中客戶發來的語音信息,TTS系統也是如此,線程池與呼叫中心平臺中繼線話路數有關。從圖3-1語音交互數字識別示意圖可以看出SR系統在CCS中獲取語音數據并在剛啟動IVR時由CCS調用TTS系統,而之后則有SR系統響應語音出發TTS系統并通過VP臺傳送語音給客戶。
應用特點:與終端用戶交互中,簡單的數字可采取語音識別技術,不失為按鍵操作的一個選擇。同時,對于特殊人群,如盲人,非人工坐席交互而純語音呼叫中心的業務也可以考慮采用語音識別技術。引入IVR式SR系統和TTS系統不免要在華為業務支撐平臺上作些改動,違背了IT不同體系分離的原則,如果語音識別技術在該方面業務有實際應用意義和推廣價值,可以考慮技術革新而不采取本文所提到的技術思路。
2)應用探討案例——問卷調查中的字母識別應用
業務目標:實現調查問卷不需要人工坐席來操作而由SR和TTS系統完成。
業務探討:問卷調查更多的是客戶選擇答案,可以設計答案的回答為字母。由TTS完成問題,由SR接收來自客戶的語音答案。不可避免存在個別答案需要文字說明而非字母,則需要在設計問卷時盡量采用簡單詞匯作為答案。
技術探討:TTS向客戶問卷,同樣需要通過VP臺,SR接收來自客戶的語音并識別出答案,其他問卷上業務處理與一般無異,不同的是本來有CSR問卷的任務由TTS完成,由CSR選擇客戶給出的答案完成選擇的任務由SR完成。可以在一臺服務器上,通過SR和TTS對設計好的問卷和聯系人發起不間斷問卷,直到問卷聯系人全部問卷完畢。如果要并發問卷,即同時對多個聯系人問卷,則需要采用線程池實現,這點上和前一個應用案例一樣。
應用特點:如同IVR外呼,實現問卷外呼不需要人工坐席干預而純由問卷業務系統完成,問卷業務系統中增加SR和TTS處理。
上文所探討的兩個案例在業務上都要求數字、字母、簡單詞匯可識別。通過這些容易識別的業務中嘗試語音識別技術的應用,有助于語音識別技術在呼叫中心中的推廣。本文所建立的技術環境和采用的架構或技術思路均在一定條件下給出的,針對上文兩個案例在本文給出的技術環境下架構具有可行性。
基于微軟語音識別引擎和VC6.0開發環境,在附件中給出了命令式語法模式下語音識別測試系統的核心代碼,主要是測試了SR在本文所給出的呼叫中心平臺下的運行,對上文兩個案例的可行性有直接參照作用。
4.應用方向
對于語音識別技術在呼叫中心未來的應用方向,虛擬CSR無疑是極具挑戰性的課題。所謂虛擬CSR就是讓語音技術完全代替人工CSR完成呼叫中心的職能,這有賴于方方面面技術的進步,但在某些業務上如上文所提到的問卷調查并非不可能的。在虛擬CSR全面替代人工CSR前,某些業務的語音識別技術應用必須考慮到虛擬CSR與人工CSR之間的無縫交接,如同目前的IVR轉接到坐席處理一般,在虛擬CSR無法勝任時需要由人工CSR處理。同時對于在呼叫中心某些業務上大面積應用,必須考慮語音識別引擎的研究。虛擬CSR的目標就在于使呼叫中心的未來業務是基于虛擬CSR語聲的應用和服務。
技術的展望也必須對呼叫中心未來的進行思考。呼叫中心的發展歷程還未脫離人工CSR這樣一個勞動密集型的產業范疇。未來人與計算機的交互方式將發生變革,鍵盤和鼠標可能會被語音識別、視覺以及手寫輸入等進行選擇性的替代,盡管不會消失,但交互方式的革命也正意味著人工智能或在未來對呼叫中心的職能有根本性的影響。
總結
效率和成本是任何一項經營行為必須權衡的關鍵因素,而在呼叫中心業務中,每天產生的大量數據除了記錄業務行為外就是占用硬盤空間,應該考慮挖掘這些數據背后的巨大意義。如IVR流程中,客戶在交互式過程中能夠快速響應,表明是熟悉該IVR的客戶,判定是老客戶,則可以觀察其按鍵行為記錄,從按鍵記錄中挖掘出什么業務是老客戶重視和經常要辦理的。在IVR流程中把這些業務的選擇或執行放在IVR流程的前面完成,老客戶辦理完這些業務就會掛斷電話,節約話路資源和通話時間。
總結中談到數據挖掘的重要性似乎與本文中心點并無關系,實際上,呼叫中心平臺處理的就是語音和數據,如同研究語音識別技術的應用,研究數據挖掘的應用同樣重要。嘗試語音識別技術在呼叫中心某些業務中的應用,這就是本文從現狀再到案例技術分析的出發點。
參考文獻
附件
附件中的代碼利用VC6.0開發環境,安裝微軟Speech SDK51及其語言包,同時測試環境在上文所描述的技術環境中。
1.? 初始化代碼
開發所用的sapi.dll、sphelper.h、sapi.h應先引入。此處引用代碼并沒有加入代碼解釋語句。
::CoInitialize(NULL);
?????? if(!OnInitSpeech())
????????????? EndDialog(0);
?????? GetDlgItem(IDC_EDIT_Question)->SetWindowText("請問您已獲得的最高學歷是 A 碩士及以上 B 本科或大專 C 高中或中專或技校或職專 D 初中及以下? E不知道 F拒答");
2.? 實現語音識別代碼
BOOL CGZCC_SRDemoDlg::OnInitSpeech()
{
HRESULT hr=S_OK;
?????? hr=cpRecoEngine.CoCreateInstance(CLSID_SpInprocRecognizer);
?????? if( SUCCEEDED(hr) )
?????? {
????????????? hr = cpRecoEngine->CreateRecoContext(&m_cpRecoCtxt);
?????? }
?????? if( SUCCEEDED(hr) )
?????? {
????????????? hr=m_cpRecoCtxt->SetNotifyWindowMessage(m_hWnd,WM_RECOEVENT, 0, 0 );
?????? }
?????? if (SUCCEEDED(hr))
??? {
??????? const ULONGLONG ullInterest = SPFEI(SPEI_RECOGNITION);
??????? hr = m_cpRecoCtxt->SetInterest(ullInterest, ullInterest);
??? }
?????? ?// create default audio object
??? CComPtr<ISpAudio> cpAudio;
??? hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, &cpAudio);
??? // set the input for the engine
??? hr = cpRecoEngine->SetInput(cpAudio, TRUE);
??? hr = cpRecoEngine->SetRecoState( SPRST_ACTIVE );
?????? if (SUCCEEDED(hr))
??? {
????????????? hr = m_cpRecoCtxt->CreateGrammar( GID_CMDCTRL, &m_cpDictationGrammar);//命令式
?????? }
?????? if? (SUCCEEDED(hr))
??? {
????????????? ?WCHAR?? wszXMLFile[20]=L" ";?? //命令式
????????????? ?CString? XMLFileName="CmdCtrl.xml";//CmdCtrl.xml";
????????????? ?MultiByteToWideChar(CP_ACP, 0, (LPCSTR)XMLFileName , -1, wszXMLFile, 256);??
???????? hr = m_cpDictationGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC); //失敗,調試?
??? }
?????? if (SUCCEEDED(hr))
??? {
????????????? hr = m_cpDictationGrammar->SetRuleState( NULL,NULL,SPRS_ACTIVE );//命令式激活
??? }
?????? if (FAILED(hr))
??? {
??????? //Release the grammar using ISpRecoGrammar
????????????? m_cpDictationGrammar.Release();
??? }
??? return (hr == S_OK);
}
void CGZCC_SRDemoDlg::OnRecoEvent()
{
?????? USES_CONVERSION;
??? CSpEvent event;
??? // Process all of the recognition events
??? while (event.GetFrom(m_cpRecoCtxt) == S_OK)
??? {
??????? switch (event.eEventId)
??????? {
????? ??????case SPEI_SOUND_START:
??????????????? m_bSound = TRUE;
??????????????? break;
??????????? case SPEI_SOUND_END:
??????????????? if (m_bSound)
??????????????? {
??????????????????? m_bSound = FALSE;
??????????????????? if (!m_bReco)
????????????????? ??{
??????????????????????? // The sound has started and ended,
??????????????????????? // but the engine has not succeeded in recognizing anything
????????????????????????????????????????? const TCHAR szNoise[] = _T("<noise>");
??????????????????? }
??????????????????? m_bReco = FALSE;
?? ?????????????}
??????????????? break;
??????????? case SPEI_RECOGNITION:
??????????????? // There may be multiple recognition results, so get all of them
??????????????? {
??????????????????? m_bReco = TRUE;
??????????????????? static const WCHAR wszUnrecognized[] = L"<Unrecognized>";
??????????????????? CSpDynamicString dstrText;
??????????????????? if (FAILED(event.RecoResult()->GetText(SP_GETWHOLEPHRASE, SP_GETWHOLEPHRASE, TRUE, &dstrText, NULL)))
??????????????????? {
??????????????????????? dstrText = wszUnrecognized;
??????????????????? }
??????????????????? // Concatenate a space onto the end of the recognized word
??????????????????? dstrText.Append(L" ");??????????????????????????????
?????????????????????????????????? BSTR SRout;
?????????????????????????????????? dstrText.CopyToBSTR(&SRout);
?????????????????????????????????? CString Recstring;
?????????????????????????????????? Recstring.Empty();
?????????????????????????????????? Recstring = SRout;
?????????????????????????????????? Recstring.TrimLeft();Recstring.TrimRight();
?????????????????????????????????? if (Recstring=="退出")
????????????????????????????????????????? ::SendMessage(m_hWnd,WM_CLOSE,NULL,NULL);
?????????????????????????????????? else
????????????????????????????????????????? ::SendDlgItemMessage(m_hWnd, IDC_EDIT_Answer, EM_REPLACESEL, TRUE, (LPARAM) W2T(dstrText) );
??????????????? }
??????????????? break;
??????? }
??? }
}
命令式識別的XML文本如下:
<?xml?? version="1.0"?? encoding="GB2312"?>
<GRAMMAR LANGID="804">?
?? <DEFINE>
????? <ID NAME="CMD" VAL="10"/>
?? </DEFINE>
?? <RULE NAME="COMMAND" ID="CMD" TOPLEVEL="ACTIVE">
???? <L>
?????? <p>A</p>
?????? <p>B</p>
?????? <p>C</p>
?????? <p>D</p>
?????? <p>E</p>
?????? <p>F</p>
?????? <p>退出</p>?
???? </L>
?? </RULE>
</GRAMMAR>
3.? TTS代碼
void CGZCC_SRDemoDlg::OnOK()
{
?????? // TODO: Add extra validation here
?????? HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&m_pVoice);
??? if( SUCCEEDED( hr ) )
??? {
????????????? IEnumSpObjectTokens *pSpEnumTokens=NULL;
????????????? hr=SpEnumTokens(SPCAT_VOICES,L"Language=804",NULL,&pSpEnumTokens);
????????????? if(SUCCEEDED(hr))
????????????? {
???????????????????? ISpObjectToken *pSpToken = NULL;
???????????????????? while(SUCCEEDED(pSpEnumTokens->Next(1, &pSpToken, NULL)) && pSpToken != NULL)
???????????????????? {
??????????????????????????? m_pVoice->SetVoice(pSpToken);
??????????????????????????? //pVoice->Speak(L"我們都是中國人",SPF_DEFAULT,NULL);
??????????????????????????? wchar_t* wszStr;
??????????????????????????? CString strQus;
??????????????????????????? GetDlgItem(IDC_EDIT_Question)->GetWindowText(strQus);
??????????????????????????? int len = strlen(strQus);
??????????????????????????? wszStr = new wchar_t[len + 50];
??????????????????????????? mbstowcs(wszStr,strQus,len+1);?
??????????????????????????? hr = m_pVoice->Speak(wszStr, 0, NULL);
??????????????????????????? pSpToken->Release();
???????????????????? }
???????????????????? pSpEnumTokens->Release();
????????????? }
??? }
}
總結
以上是生活随笔為你收集整理的关于在呼叫中心业务中应用语音识别技术的探讨的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于企业信息化中审计流程“寻租”现象的探
- 下一篇: 软件作坊模式工件应用论