科大訊飛語音識別講義PPT學習教案_第1頁
科大訊飛語音識別講義PPT學習教案_第2頁
科大訊飛語音識別講義PPT學習教案_第3頁
科大訊飛語音識別講義PPT學習教案_第4頁
科大訊飛語音識別講義PPT學習教案_第5頁
已閱讀5頁,還剩92頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

會計學1科大訊飛語音識別講義主要內(nèi)容語音識別系統(tǒng)簡介語音識別接口介紹基于訊飛語音識別系統(tǒng)SDK的開發(fā)第1頁/共97頁課程目的了解語音識別系統(tǒng)的組成及原理了解訊飛語音識別系統(tǒng)的組成了解訊飛語音識別系統(tǒng)的接口及參數(shù)掌握基于訊飛語音識別系統(tǒng)API的開發(fā)第2頁/共97頁名詞和縮略語ISR訊飛語音識別引擎(iFLYSpeechRecognizer),其產(chǎn)品名稱為InterReco,ISR是其內(nèi)部名稱。EP端點檢測(end-pointerdetection)是將語音數(shù)據(jù)(speech)從背景噪聲中分離出來的一項技術(shù),主要應(yīng)用于語音識別領(lǐng)域,可以很大程度地降低識別器的運算量,從而能有效地提高識別效率以及識別效果。ISREPAPI端點檢測開發(fā)接口(ISRend-pointerdetectionAPI),識別引擎中與端點檢測相關(guān)的開發(fā)接口。ISRRECAPI語音識別開發(fā)接口(ISRRecognizeAPI),識別引擎中與識別器相關(guān)的開發(fā)接口。第3頁/共97頁主要內(nèi)容語音識別系統(tǒng)簡介語音識別接口介紹基于訊飛語音識別系統(tǒng)SDK的開發(fā)第4頁/共97頁訊飛語音識別系統(tǒng)命令詞識別系統(tǒng)路由導航系統(tǒng)POI系統(tǒng)第5頁/共97頁1命令詞識別系統(tǒng)以語法的形式限定待識別的內(nèi)容$Content=蘋果|香蕉;識別效果與語法的規(guī)模息息相關(guān)第6頁/共97頁識別網(wǎng)絡(luò)的構(gòu)建將字、詞轉(zhuǎn)化為對應(yīng)的發(fā)音序列增加靜音節(jié)點,以適應(yīng)語音前后的靜音第7頁/共97頁命令詞識別基本原理基本問題回憶HMM的解碼問題如何從網(wǎng)絡(luò)中尋找一條與語音最像的路徑?第8頁/共97頁基于槽的命令詞識別語法的定義,例如定票系統(tǒng)有目的地及出發(fā)地兩個信息$Content=從$from到$to;$from=北京|上海;$to=廣州|香港;第9頁/共97頁置信度置信度確認識別結(jié)果正確的可信度置信度要解決的問題解碼算法只會尋找最大可能的路徑,對集外詞無拒識能力解碼算法因模型及近似的原因,對集內(nèi)詞識別也不一定正確第10頁/共97頁置信度的應(yīng)用優(yōu)化用戶交互界面高置信度直接默認識別準確中置信度有必要讓用戶再次確認低置信度默認識別錯誤,需要再次識別或者轉(zhuǎn)人工坐席置信度門限的確認falseaccept、falserejectEER:equalerrorrate第11頁/共97頁命令詞識別系統(tǒng)的評估假如在N句集內(nèi)語音中有M1句得到正確識別結(jié)果有M2句得到錯誤識別結(jié)果剩下的沒有識別結(jié)果評價參數(shù)正確識別率=?

(M1/N)第12頁/共97頁命令詞識別系統(tǒng)的評估假如在N句集外語音中,有M句沒有識別結(jié)果剩下的錯誤識別評價參數(shù)錯誤接受率=?1-(M/N)第13頁/共97頁2呼叫導航語音識別系統(tǒng)用戶語音更加自由、開放Q:“我的銀行卡丟了,該怎么辦”A:“掛失辦理”不再需要編寫語法規(guī)則不僅需要將語音轉(zhuǎn)化為文字,還需要從文字中理解意思第14頁/共97頁呼叫導航流程

識別后端

模型訓練

識別前端采樣量化端點檢測特征提取模型訓練吃過了嗎?……聲學模型語言模型語音識別解碼識別結(jié)果置信度判決語義理解語義模型我/的/手機/丟/了手機掛失第15頁/共97頁語言模型語言模型包含的內(nèi)容覆蓋該領(lǐng)域的所有字、詞,及其發(fā)音字、詞出現(xiàn)的概率及其相互連接的概率P(手機)=0.3P(丟|手機)=0.4第16頁/共97頁解碼網(wǎng)絡(luò)以所有詞的并列為解碼網(wǎng)絡(luò),支持回跳循環(huán)循環(huán)跳回的時候,加入語言模型概率第17頁/共97頁語義模型描述了文字與語義的概率手機上網(wǎng)余額查詢彩鈴業(yè)務(wù)手機掛失我的手機丟了手機/丟0.250.250.250.250.70.050.20.050.80.050.050.1S(手機掛失)=0.8S(手機上網(wǎng))=0.05第18頁/共97頁呼叫導航系統(tǒng)的評估識別性能假如“我/的/手機/丟/了”,識別為“我們/手機/丟/掉/了插入錯誤,如“掉”,標記為I刪除錯誤,如“的”,標記為D替換錯誤,如“我們”,標記為S假如總詞數(shù)為N,其中正確為M,則識別準確率為

(N-I-D-S)/N導航性能假如總音頻數(shù)為N,其中導航正確的為M,則導航正確率為 M/N第19頁/共97頁3POI識別系統(tǒng)PointofInterest用戶可說出感興趣的條目的片段支持順序、跳序、逆序如“安徽省合肥中國科學技術(shù)大學”“安徽省合肥中國科學技術(shù)大學”“中國科學技術(shù)大學”“科學技術(shù)大學”“中國科學技術(shù)大學合肥”第20頁/共97頁POI識別系統(tǒng)流程

識別后端

模型訓練

識別前端采樣量化端點檢測特征提取模型訓練吃過了嗎?……聲學模型語言模型語音識別解碼識別結(jié)果置信度判決檢索Ke1/da4/中國科大/北方科大資源制作檢索資源第21頁/共97頁POI識別系統(tǒng)的語言模型定義了音節(jié)及音節(jié)之間的概率Unigram,P(zhong1),Bigram,P(ji4|ke1)Trigram,P(ji4|zhong1,ke1)…第22頁/共97頁POI檢索-投票機制中國科學技術(shù)大學安徽大學北京科技大學科大訊飛ke1ji4da4xue2通過投票機制,評價每個條目的得分,綜合未出現(xiàn)音的影響,可以提供檢索結(jié)果的候選,并可忽略順序的影響第23頁/共97頁POI檢索-編輯距離動態(tài)規(guī)劃可以有效避免識別過程中的插入刪除錯誤,但是其包含時間信息,不能解決倒序的問題,可以作為投票機制的補充。中國科學技術(shù)大學安徽大學北京科技大學科大訊飛Ke1ji4da4xue2第24頁/共97頁三種技術(shù)的比較命令詞呼叫路由POI語言模型否支持支持用戶語音自由度不自由自由較自由語法是否否語義理解否是是其它資源否語義模型檢索資源解碼結(jié)果命令詞詞串拼音串應(yīng)用舉例交互查詢客服中心菜單扁平化地圖搜索第25頁/共97頁主要內(nèi)容語音識別系統(tǒng)簡介語音識別接口介紹基于訊飛語音識別系統(tǒng)SDK的開發(fā)第26頁/共97頁語音識別接口介紹InterReco簡介InterReco接口簡介InterReco標準接口API及參數(shù)第27頁/共97頁InterReco簡介InterReco是一款與說話人無關(guān)語音識別系統(tǒng)能夠完成電話應(yīng)用、移動互聯(lián)網(wǎng)等應(yīng)用環(huán)境下的語音識別功能,為需要開發(fā)自助語音服務(wù)的廠商提供基本的引擎支持具備優(yōu)秀的識別率,提供全面的開發(fā)支持,具備大型應(yīng)用的性能,符合電信應(yīng)用的穩(wěn)定性要求使用InterReco開發(fā)的語音識別應(yīng)用能夠豐富服務(wù)的內(nèi)容,降低用戶使用的難度,極大降低人工坐席的成本,可以很大程度上提高電話語音服務(wù)的質(zhì)量,提高用戶滿意度第28頁/共97頁語音識別接口介紹InterReco簡介InterReco接口簡介InterReco標準接口API及參數(shù)第29頁/共97頁InterReco接口簡介標準開發(fā)接口端點檢測開發(fā)接口識別器開發(fā)接口語音錄入開發(fā)接口語音識別應(yīng)用開發(fā)接口語音識別快速開發(fā)接口第30頁/共97頁InterReco接口關(guān)系第31頁/共97頁InterRecoAPI調(diào)用流程初始化逆初始化會話開始會話結(jié)束識別開始識別結(jié)束啟動端點檢測停止端點檢測發(fā)送語音到識別器并識別獲取識別結(jié)果ISRrecInitializeISRepOpenISRepCloseISRrecUninitializeISRrecSessionBeginISRrecRecognizerCreateISRrecGrammarLoadISRrecGrammarActivateISRrecGrammarDeactivateISRrecGrammarFreeISRrecRecognizerDestroyISRrecSessionEndISRrecRecognizerStartISRrecRecognizerStopISRepSessionBeginISRepDetectorCreateISRepStartISRepPromptDoneISRepStopISRepDetectorDestroyISRepSessionEndISRepWriteISRepReadISRrecAudioWriteISRrecGetXMLResult第32頁/共97頁InterReco標準開發(fā)接口端點檢測開發(fā)接口支持對音頻數(shù)據(jù)檢測語音開始點及結(jié)束點的功能,并提供端點檢測的參數(shù)設(shè)置、讀取功能。識別器開發(fā)接口通過激活語法,對語音進行語音識別并獲取識別結(jié)果。同時為滿足一般IVR的需要,提供DTMF(雙音多頻)解析、返回用戶語音等功能。語音錄入開發(fā)接口提供語音錄入的相關(guān)功能,需要和端點檢測、識別器接口配合使用。第33頁/共97頁InterReco應(yīng)用開發(fā)接口是標準接口的封裝,使用起來更為簡單通過激活語法,實現(xiàn)在線的語音識別功能,并提供DTMF語法解析、返回用戶語音等功能應(yīng)用開發(fā)接口開發(fā)較為便捷,功能也較為完備,可以滿足一般的識別應(yīng)用第34頁/共97頁InterReco快速開發(fā)接口是對應(yīng)用開發(fā)接口的封裝,提供最為快速的開發(fā)能力通過激活語法,實現(xiàn)在線的語音識別功能的同時,提供了對語音文件的識別功能與簡單開發(fā)接口相比,不提供DTMF語法解析及返回用戶語音功能第35頁/共97頁標準開發(fā)接口之端點檢測開發(fā)接口函數(shù)名稱功能簡介ISRepOpen初始化端點檢測系統(tǒng)ISRepClose逆初始化端點檢測系統(tǒng)ISRepDetectorCreate創(chuàng)建一路端點檢測實例ISRepDetectorDestroy銷毀一路端點檢測實例ISRepSetParameter設(shè)置端點檢測器參數(shù)ISRepGetParameter獲取端點檢測器參數(shù)ISRepSessionBegin開始一路會話ISRepSessionEnd結(jié)束一路會話ISRepPromptDone通知端點檢測器提示音播放結(jié)束ISRepStart開始端點檢測ISRepStop結(jié)束端點檢測第36頁/共97頁標準開發(fā)接口之端點檢測開發(fā)接口(續(xù))函數(shù)名稱功能簡介ISRepWrite向端點檢測器寫入原始語音數(shù)據(jù)ISRepRead從端點檢測器讀取端點檢測后數(shù)據(jù)ISRepStateReset重置端點檢測器聲學狀態(tài)ISRepStateQuerySize獲取端點檢測器聲學狀態(tài)長度ISRepStateLoad加載端點檢測器聲學狀態(tài)ISRepStateSave保存端點檢測器聲學狀態(tài)第37頁/共97頁標準開發(fā)接口之識別器開發(fā)接口函數(shù)名稱功能簡介ISRrecInitialize進程范圍初始化語音識別引擎ISRrecUninitialize進程范圍逆初始化,關(guān)閉識別引擎ISRrecRecognizerCreate創(chuàng)建一個語音識別實例ISRrecRecognizerDestroy銷毀一個語音識別實例ISRrecGrammarLoad加載一個語音識別語法到識別引擎ISRrecGrammarCompile編譯指定的語法到內(nèi)存緩沖區(qū)ISRrecGrammarActivate激活一個語法供后續(xù)的識別過程使用ISRrecGrammarDeactivate解除激活一個已經(jīng)加載的語法ISRrecGrammarFree從識別引擎釋放一個語法ISRrecRecognizerSetParameter設(shè)置識別參數(shù)ISRrecRecognizerGetParameter獲取識別參數(shù)ISRrecSessionBegin開始一個識別會話,設(shè)置通道名稱ISRrecSessionEnd結(jié)束一個識別會話第38頁/共97頁標準開發(fā)接口之識別器開發(fā)接口(續(xù))函數(shù)名稱功能簡介ISRrecRecognizerStart使用當前激活的語法開始進行識別ISRrecAudioWrite在識別過程中向識別器發(fā)送音頻數(shù)據(jù)ISRrecRecognizerCompute計算當前識別結(jié)果ISRrecGetWaveform獲取最后一次識別對話的語音數(shù)據(jù)ISRrecGetXMLResult獲取一個識別結(jié)果的XML形式的表示ISRrecParseDTMFResults使用當前活動語法解析一個DTMF字符串ISRrecLogEvent向CallLog中寫入一個事件或者相關(guān)信息ISRrecRecognizerStop停止當前識別ISRrecAcousticStateLoad從內(nèi)存緩沖區(qū)中加載聲學狀態(tài)信息ISRrecAcousticStateSave把實例的聲學狀態(tài)信息寫入指定的內(nèi)存緩沖區(qū)ISRrecAcousticStateReset重置實例的聲學狀態(tài)信息ISRrecAcousticStateQuerySize獲得聲學狀態(tài)信息的大小第39頁/共97頁標準開發(fā)接口之語音錄入開發(fā)接口函數(shù)名稱功能簡介ISRveBegin開始一個語音錄入實例ISRveEnd結(jié)束一個語音錄入實例ISRvePrepare在語音錄入會話中,準備一次語音錄入識別,生成所需語法ISRveProcess在一次語音錄入會話中處理識別的結(jié)果,并生成語音錄入結(jié)果語音錄入應(yīng)用程序一般會為每一個用戶維護一個已經(jīng)錄入的詞語列表,每一個錄入的條目對應(yīng)一個由語音錄入過程產(chǎn)生的發(fā)音。典型的語音錄入過程如下:1)

調(diào)用ISRveBegin創(chuàng)建一個VE實例;2)

調(diào)用ISRvePrepare獲得語音錄入語法ID和權(quán)重,同時獲得混淆語法、沖突語法的權(quán)重。3)

使用第2步返回的結(jié)果激活語音錄入語法;4)

使用第2步返回的結(jié)果激活混淆語法和沖突語法,這些語法里面包含所有應(yīng)用程序不想被錄入的詞條和那些已經(jīng)被錄入的詞條;5)

進行一次識別;6)

調(diào)用ISRveProcess函數(shù)處理ISRrecGetXMLResult返回的XML結(jié)果;7)

如果ISRveProcess返回的結(jié)果說明還需要重復錄入的話,跳轉(zhuǎn)到第2步;8)

如果ISRveProcess返回的結(jié)果說明已經(jīng)重復多次還沒有形成一致的錄入結(jié)果,那么跳轉(zhuǎn)到第11步;9)

否則,將有以下情況之一:一個詞條已經(jīng)成功錄入、錄入的詞條和混淆語法里面的某個詞條發(fā)音接近、錄入的詞條和沖突語法里面的某個詞條發(fā)音接近。如果一個詞條成功錄入,添加到已錄入列表;如果一個詞條混淆或者沖突,提示用戶用另外的發(fā)音錄入,重新從第1步開始。10)

解除激活所有的語法;11)

調(diào)用ISRveEnd結(jié)束錄入,清除所有臨時數(shù)據(jù)。第40頁/共97頁語音識別應(yīng)用開發(fā)接口函數(shù)名稱功能簡介ISRInitialize進程范圍初始化語音識別引擎ISRUninitialize進程范圍逆初始化,關(guān)閉識別引擎ISRRecognizerCreate創(chuàng)建一個語音識別實例ISRRecognizerDestroy銷毀一個語音識別實例ISRGrammarActivate激活一個語法供后續(xù)的識別過程使用ISRGrammarDeactivate解除激活一個已經(jīng)加載的語法ISRSetParameter設(shè)置識別參數(shù)ISRGetParameter獲取識別參數(shù)ISRRecognizerStart使用當前激活的語法開始進行識別ISRAudioWrite在識別過程中向識別器發(fā)送音頻數(shù)據(jù)ISRRecognizerCompute計算當前識別結(jié)果第41頁/共97頁語音識別應(yīng)用開發(fā)接口(續(xù))函數(shù)名稱功能簡介ISRGetWaveform獲取最后一次識別對話的語音數(shù)據(jù)ISRGetXMLResult獲取一個識別結(jié)果的XML形式的表示ISRParseDTMFResults使用當前活動語法解析一個DTMF字符串ISRLogEvent向CallLog中寫入一個事件或者相關(guān)信息ISRRecognizerStop停止當前識別ISRPromptDone說明當前提示音播放完畢第42頁/共97頁語音識別快速開發(fā)接口函數(shù)名稱功能簡介*QISRInit進程范圍初始化語音識別引擎QISRFini進程范圍逆初始化,關(guān)閉識別引擎*QISRSessionBegin創(chuàng)建一路識別*QISRGrammarActivate激活指定的語法,設(shè)置語法的權(quán)重*QISRAudioWrite向識別器送入音頻數(shù)據(jù),返回端點檢測和識別狀態(tài)*QISRGetXMLResult獲得XML格式的識別結(jié)果*QISRSessionEnd逆初始化,釋放資源,結(jié)束本次識別*QISRWaveformRecog完成一次識別操作,返回識別結(jié)果該接口有寬字符版本,名稱為后綴“W”。

如:QISRInit的寬字符版本接口為QISRInitW。第43頁/共97頁語音識別接口介紹InterReco簡介InterReco接口簡介InterReco標準接口API及參數(shù)第44頁/共97頁音頻接口IVR平臺授權(quán)管理端點檢測

接口識別器

接口控制音頻數(shù)據(jù)狀態(tài)信息控制音頻數(shù)據(jù)狀態(tài)信息識別結(jié)果應(yīng)用集成架構(gòu)示意第45頁/共97頁端點檢測開發(fā)接口及參數(shù)第46頁/共97頁ISRepOpen函數(shù)原型int

ISRAPIISRepOpen(constwchar_t*ep,void*reserved);

功能全局初始化端點檢測系統(tǒng),把需要使用的一些全局數(shù)據(jù)裝載到系統(tǒng)內(nèi)存中。參數(shù)ep[in]傳入需要初始化的引擎名稱,可以為NULL,系統(tǒng)將自動查找需要初始化的引擎reserved[in/out]保留,必須為NULL。第47頁/共97頁ISRepClose函數(shù)原型intISRAPIISRepClose();

功能全局逆初始化端點檢測系統(tǒng),從系統(tǒng)內(nèi)存中移出所有資源。

參數(shù)無。第48頁/共97頁ISRepDetectorCreate函數(shù)原型intISRAPIISRepDetectorCreate(ISR_EP_INST*ep,constwchar_t*params);

功能創(chuàng)建一路端點檢測實例。

參數(shù)ep

[out]創(chuàng)建成功時返回的端點檢測實例句柄;params

[in]創(chuàng)建句柄可以攜帶的參數(shù)信息,格式為“param1=value1,param2=value2”,在句柄創(chuàng)建后會使用這里指定的參數(shù)初始化句柄。

在網(wǎng)絡(luò)應(yīng)用環(huán)境下,需要通過serverAddr參數(shù)指定需要連接的語音服務(wù)器地址,格式如“serverAddr=192.168.70.45:13606”,端口號可以省略,系統(tǒng)會使用缺省的端口號連接語音服務(wù)器,如果不指定該參數(shù)或地址指定為“0.0.0.0”,則使用負載均衡,自動選擇負載最輕的服務(wù)器連接。

另外,這里的參數(shù)也可以指定引擎的過濾條件,例如引擎名稱過濾,格式“ename=isr30”,說明必須使用isr30引擎,其中isr30為InterReco3.0的縮寫。第49頁/共97頁ISRepDetectorDestroy函數(shù)原型intISRAPIISRepDetectorDestroy(ISR_EP_INSTep);

功能銷毀一路不再使用的端點檢測實例。

參數(shù)instance[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄。第50頁/共97頁ISRepStateReset函數(shù)原型intISRAPIISRepStateReset(ISR_EP_INSTep);

功能重置端點檢測器的聲學狀態(tài)信息。

參數(shù)ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄。第51頁/共97頁ISRepStateQuerySize函數(shù)原型intISRAPIISRepStateQuerySize(ISR_EP_INSTep,unsignedint*size);

功能返回端點檢測器的聲學狀態(tài)信息長度。

參數(shù)ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄。size[out]返回的端點檢測器聲學狀態(tài)信息長度(bytes)。第52頁/共97頁ISRepStateLoad函數(shù)原型intISRAPIISRepStateLoad(ISR_EP_INSTep,void*buffer,constintlen);

功能加載端點檢測器的聲學狀態(tài)信息。

參數(shù)

ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄。

buffer[in]用以加載的聲學狀態(tài)信息。

len[in]聲學狀態(tài)信息長度(字節(jié)數(shù))。第53頁/共97頁ISRepStateSave函數(shù)原型intISRAPIISRepStateSave(ISR_EP_INSTep,void*buffer,unsignedintmaxlen);

功能保存端點檢測器的聲學狀態(tài)信息。

參數(shù)

ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄。

buffer[in]用以保存聲學狀態(tài)信息的內(nèi)存。

maxlen[in]保存聲學狀態(tài)信息的最大長度(字節(jié)數(shù))。第54頁/共97頁ISRepSetParameter函數(shù)原型intISRAPIISRSetParameter(ISR_EP_INSTep,constwchar_t*name,constwchar_t*value);

功能設(shè)置端點檢測實例參數(shù)。

參數(shù)ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄;

name[in]指定設(shè)置的參數(shù)類型;

value[in]指向設(shè)置參數(shù)值緩沖區(qū)的指針。端點檢測參數(shù)參數(shù)意義isr_ep_mode工作模式,默認為begin_endisr_ep_waveform_logging是否log端點檢測后的wav數(shù)據(jù),默認為falseisr_ep_magic_word_max_msec設(shè)置magicword最大長度(ms),默認為2000,最小為1,最大為INT_MAXisr_ep_magic_word_min_msec設(shè)置magicword最小長度(ms),默認為200,最小為1,最大為INT_MAXisr_ep_bos_backoff設(shè)置bos向前移動的長度(ms),默認為200,最小為0isr_ep_eos_backoff設(shè)置eos向后移動的長度(ms),默認為200,最小為0isr_ep_min_speech_length設(shè)置最小語音長度,默認為250(ms),最小為100,最大為300isr_ep_gmm_win_size設(shè)置模型判決窗長,默認500(ms),最小300,最大600timeout設(shè)置提示音結(jié)束后等待bos的長度(ms),默認為7000,最小為-1,-1表示沒有限制,最大為INT_MAXincompletetimeout設(shè)置語音間隔(ms),默認為750,最小為0,最大為INT_MAX第55頁/共97頁ISRepGetParameter函數(shù)原型intISRAPIISRepGetParameter(ISR_EP_INStep,constwchar_t*name,wchar_t*value,unsignedint*len);

功能獲取端點檢測實例的參數(shù)。

參數(shù)

ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄;

name[in]指定獲取的參數(shù)類型;

value[out]指向返回參數(shù)值的指針;

len[in/out]調(diào)用時傳入value指向的參數(shù)緩沖區(qū)大?。ㄗ止?jié)),返回時填入該參數(shù)實際的大?。ㄗ止?jié)數(shù))。第56頁/共97頁ISRepSessionBegin函數(shù)原型intISRAPIISRepSessionBegin(ISR_EP_INSTep,constwchar_t*channelName,constwchar_t*params);

功能開始一次會話。

參數(shù)ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄;

channelName[in]指向會話通道的指針;

params[out]保留,必須為NULL。第57頁/共97頁ISRepSessionEnd函數(shù)原型intISRAPIISRepSessionEnd(ISR_EP_INSTep);

功能結(jié)束一路會話。

參數(shù)

ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄。第58頁/共97頁ISRepPromptDone函數(shù)原型intISRAPIISRepPromptDone(ISR_EP_INSTep);

功能通知端點檢測器外部提示音結(jié)束,端點檢測器內(nèi)部開始超時計時。

參數(shù)

ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄。第59頁/共97頁ISRepStart函數(shù)原型intISRAPIISRepStart(ISR_EP_INSTep);

功能開始端點檢測。

參數(shù)

ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄。第60頁/共97頁ISRepStop函數(shù)原型intISRAPIISRepStop(ISR_EP_INSTep,ISRepStopCodecode,constwchar_t*hints);

功能停止端點檢測。

參數(shù)

ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄;

code[in]停止端點檢測的原因類型;

hints[in]保留,必須為NULL。第61頁/共97頁ISRepWrite函數(shù)原型intISRAPIISRepWrite(ISR_EP_INSTep,ISRAudioSamples*samples,ISRepState*state,int*bos,int*eos);

功能向端點檢測器發(fā)送原始語音數(shù)據(jù),返回當前端點檢測器所處的狀態(tài)信息。

參數(shù)ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄;

samples[in]輸入的原始語音數(shù)據(jù)結(jié)構(gòu)體指針;

state[out]當前端點檢測器所處的狀態(tài)信息;

bos[out]檢測到的語音起始點,相對語音起始位置的偏移量,單位為ms;eos[out]檢測到的語音結(jié)束點,相對語音起始位置的偏移量,單位為ms。typedefstructISRAudioSamples{

void*

samples;

unsignedint

len;

constwchar_t*

type;

int

status;}

ISRAudioSamples;其中:samples

[in]指向音頻數(shù)據(jù)的緩沖區(qū)指針;len

[in]音頻數(shù)據(jù)的長度,字節(jié)為單位。type[in]指明samples指向的音頻格式信息,可以的取值有:

“audio/basic”

格式為8-bit8KHzu-law

[unsignedchar*]

"audio/x-alaw-basic"

格式為8-bit8KHzA-law

[unsignedchar*]

"audio/L16;rate=8000"

格式為16-bit8KHzlinear

[short*]status

[in]當前音頻的狀態(tài),即第一個緩沖區(qū)ISR_AUDIO_SAMPLE_FIRST、中間緩沖區(qū)ISR_AUDIO_SAMPLE_CONTINUE、最后一個緩沖區(qū)ISR_AUDIO_SAMPLE_LAST。ISRepState指明端點檢測器所處的狀態(tài),取值如下:1)ISR_EP_LOOKING_FOR_SPEECH,尚未檢測到前端點;2)ISR_EP_IN_SPEECH,已經(jīng)檢測到語音;3)ISR_EP_AFTER_SPEECH,已經(jīng)檢測到后端點;4)ISR_EP_TIME_OUT,處于等待超時狀態(tài);5)ISR_EP_ERROR,端點檢測器內(nèi)部出現(xiàn)錯誤;6)ISR_EP_MAX_SPEECH,檢測到的語音長度超過門限,處于最大語音狀態(tài)。第62頁/共97頁ISRepRead函數(shù)原型intISRAPIISRepRead(ISR_EP_INSTep,ISRAudioSamples*samples,ISRepState*state,unsignedintmax_len);

功能讀取端點檢測之后的數(shù)據(jù)并返回當前端點檢測器所處的狀態(tài)信息。

參數(shù)

ep[in]先前調(diào)用ISRepDetectorCreate得到的端點檢測服務(wù)實例句柄;

samples[out]輸出的語音數(shù)據(jù)結(jié)構(gòu)體指針;

state[out]當前端點檢測器所處的狀態(tài)信息;

max_len[in]讀取語音數(shù)據(jù)的最大長度(字節(jié)數(shù));第63頁/共97頁識別器開發(fā)接口及參數(shù)第64頁/共97頁識別過程第65頁/共97頁ISRrecInitialize函數(shù)原型intISRAPIISRrecInitialize(constwchar_t*engine,void*reserved);

功能進程級的初始化語音識別引擎,初始化全局信息。

參數(shù)

engine[in]傳入需要初始化的引擎名稱,可以為NULL,系統(tǒng)將自動查找需要初始化的引擎。

Reserved保留,必須為NULL。第66頁/共97頁ISRrecUninitialize函數(shù)原型intISRAPIISRrecUninitialize(void);

功能逆初始化并關(guān)閉語音識別引擎,釋放全局資源。

參數(shù)無。第67頁/共97頁ISRrecRecognizerCreate函數(shù)原型intISRAPIISRrecRecognizerCreate(ISR_REC_INST*rec,constwchar_t*params);

功能創(chuàng)建一個語音識別實例。

參數(shù)

rec[out]

傳入識別實例句柄的地址,返回新創(chuàng)建的識別實例句柄。

params[in]

創(chuàng)建句柄可以攜帶的參數(shù)信息,格式為“param1=value1,param2=value2”,在句柄創(chuàng)建后會使用這里指定的參數(shù)初始化句柄。

在網(wǎng)絡(luò)應(yīng)用環(huán)境下,需要通過serverAddr參數(shù)指定需要連接的語音服務(wù)器地址,格式如“serverAddr=192.168.70.45:13606”,端口號可以省略,系統(tǒng)會使用缺省的端口號連接語音服務(wù)器,如果不指定該參數(shù)或地址指定為“0.0.0.0”,則使用負載均衡,自動選擇負載最輕的服務(wù)器連接。

另外,這里的參數(shù)也可以指定引擎的過濾條件,例如引擎名稱過濾,格式“ename=isr20”,說明必須使用isr20引擎。ISR_REC_INSTrec=NULL;intret=ISRrecRecognizerCreate(&rec,“serverAddr=192.168.70.25”);if(ret!=ISR_SUCCESS)

printf(”Cannotcreaterecognizerinstance,errorcode=%d.”,ret);第68頁/共97頁ISRrecRecognizerDestroy函數(shù)原型intISRAPIISRrecRecognizerDestroy(ISR_REC_INSTrec);

功能銷毀一個語音識別實例。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄;第69頁/共97頁語法相關(guān)接口第70頁/共97頁ISRrecGrammarLoad函數(shù)原型intISRAPIISRrecGrammarLoad(ISR_REC_INSTrec,constISRrecGrammarData*grammar);

功能加載一個URI或者字符串類型的語音識別語法到識別引擎。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄;

grammar[in]需要加載的語法信息,一個結(jié)構(gòu)體,用于描述需要加載的語法URI或字符串信息,還可能包含一些獲取參數(shù)。typedefstructISRrecGrammarData{

constwchar_t*

type;

constwchar_t*

data;

constwchar_t*

media_type;

void*

binary_data;

unsignedint

binary_length;

void*

reserved;}

ISRrecGrammarData;其中:type

[in]語法的類型,可以為"string/3.0"、"uri/3.0"、"string"或"uri"類型。其中”string/3.0”和”string”意義相同,”string”為了兼容而保留,同樣”uri/3.0”和”uri”相同;data

[in]字符串類型的語法內(nèi)容或者URI。這里的URI可以是相對的,例如“../test.abnf”。media_type

[in]這個字段的取值請參考下面的表格。當type字段取值為”uri/3.0”時,這個域提供了備選描述信息。binary_data

[in]未使用,必須為NULL。binary_length

[in]未使用,必須為NULL。ISRrecGrammarDatagrdata;memset(&grdata,0,sizeofgrdata);grdata.data=L”d:\\test.abnf”;grdata.type=L”uri”;intret=ISRrecGrammarLoad(&rec,&grdata);if(ret!=ISR_SUCCESS)

printf(”Cannotloadgrammar,errorcode=%d.”,ret);第71頁/共97頁ISRrecGrammarCompile函數(shù)原型intISRAPIISRrecGrammarCompile(ISR_REC_INSTrec,constISRrecGrammarData*grammar,

void*buffer,unsignedint*len);

功能編譯指定的語法到內(nèi)存緩沖區(qū)。實際不常使用。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄。

grammar[in]需要編譯的語法信息,參考上一章節(jié)的描述。

buffer[out]存放編譯后二進制語法的緩沖區(qū),注意這個緩沖區(qū)的內(nèi)存由用戶自己分配和釋放。

len[in/out]輸入緩沖區(qū)的以長度(單位:字節(jié)),返回二進制語法實際的長度。第72頁/共97頁ISRrecGrammarActivate函數(shù)原型intISRAPIISRrecGrammarActivate(ISR_REC_INSTrec,constISRrecGrammarData*grammar,unsignedintweight,constchar*grammarID);

功能激活一個語法供后續(xù)的識別過程使用。

參數(shù)

rec[in]

由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄;

grammar[in]

需要激活的語法信息,參考上一章節(jié)的描述。

weight[in]

一個整型值,用于指定這個語法和其他激活語法之間的相對權(quán)重,可以用這個值向識別器表明需要優(yōu)先處理的語法的識別結(jié)果。

這個參數(shù)的取值范圍是1–32767之間,值越大表明該語法的權(quán)重越大,在多個激活的語法中屬于該語法識別結(jié)果的置信度越高。

grammarID[in]

指定該語法的ID,這個ID將在返回的識別結(jié)果中體現(xiàn),如果用戶激活了多個語法,最終的識別結(jié)果中的每個項都會指明該識別結(jié)果的來源語法ID。第73頁/共97頁ISRrecGrammarDeactivate函數(shù)原型intISRAPIISRrecGrammarDeactivate(ISR_REC_INSTrec,constISRrecGrammarData*grammar);

功能解除激活一個已經(jīng)加載的語法,后續(xù)的識別將不使用該語法。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄;

grammar[in]需要解除激活的語法信息,參考上一章節(jié)的描述。第74頁/共97頁ISRrecGrammarFree函數(shù)原型intISRAPIISRrecGrammarFree(ISR_REC_INSTrec,constISRrecGrammarData*grammar);

功能從識別引擎釋放一個語法,識別器將不再使用這個語法。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄。

grammar[in]需要釋放的語法信息,參考上一章節(jié)的描述。第75頁/共97頁ISRrecRecognizerSetParameter函數(shù)原型intISRAPIISRrecRecognizerSetParameter(ISR_REC_INSTrec,constwchar_t*param,constwchar_t*value);

功能設(shè)置識別參數(shù)。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄。

param[in]需要獲取的參數(shù)名稱,支持的參數(shù)列表參考說明部分。

value[in]輸入設(shè)置的參數(shù)值。參數(shù)名稱意義maxspeechtimeout允許輸入的最大音頻時間,單位毫秒。缺省為15000,如果取值-1則表明沒有限制。注意,如果該值設(shè)置過大,可能導致識別系統(tǒng)耗用大量的內(nèi)存。isr_rec_best_result_count識別引擎輸出的最優(yōu)結(jié)果的數(shù)目,默認為3,最大值10,最小值1。isr_rec_confidence_threshold系統(tǒng)默認的識別結(jié)果的置信度輸出門限,默認為350,可以設(shè)置1-1000的所有整數(shù)值。只有識別置信度高于這個門限的識別結(jié)果才可以輸出。isr_rec_confidence_output_enabled是否進行置信度輸出,缺省為“true”isr_rec_return_waveform是否返回識別的語音數(shù)據(jù),缺省為“false”。如果需要使用函數(shù)ISRrecGetWaveform函數(shù)獲取音頻數(shù)據(jù),那么這個參數(shù)必須設(shè)置為“true”。第76頁/共97頁ISRrecRecognizerGetParameter函數(shù)原型intISRAPIISRrecRecognizerGetParameter(ISR_REC_INSTrec,constwchar_t*param,wchar_t

*value,unsignedint*len);

功能獲取識別參數(shù)。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄;

param[in]需要獲取的參數(shù)名稱,支持的參數(shù)列表參考說明部分。

value[in/out]輸入緩沖區(qū)指針,返回獲取的參數(shù)值。

len[in/out]輸入緩沖區(qū)長度(單位:字符),返回實際的參數(shù)值長度。第77頁/共97頁ISRrecSessionBegin函數(shù)原型intISRAPIISRrecSessionBegin(ISR_REC_INSTrec,constwchar_t*channelName,constwchar_t*params);

功能開始一個識別會話,設(shè)置通道名稱,表明一個呼叫的開始。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄。

channelName[in]當前會話的通道名稱。

params[in]當前會話的參數(shù)串,可以為NULL。第78頁/共97頁ISRrecSessionEnd函數(shù)原型intISRAPIISRrecSessionEnd(ISR_REC_INSTrec);

功能結(jié)束一個識別會話,標志一次呼叫的結(jié)束。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄。

第79頁/共97頁ISRrecRecognizerStart函數(shù)原型intISRAPIISRrecRecognizerStart(ISR_REC_INSTrec);

功能使用當前激活的語法開始進行識別。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄。第80頁/共97頁ISRrecAudioWrite函數(shù)原型intISRAPIISRrecAudioWrite(ISR_REC_INSTrec,ISRAudioSamples*samples);

功能在識別過程中向識別器發(fā)送音頻數(shù)據(jù)。

參數(shù)

rec[in]由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄;

samples[in]音頻數(shù)據(jù)信息。一個結(jié)構(gòu)體,用于描述音頻數(shù)據(jù)及格式信息。第81頁/共97頁ISRrecRecognizerCompute函數(shù)原型intISRAPIISRrecRecognizerCompute(ISR_REC_INSTrec,intmaxComputeTime,ISRrecRecognizerStatus*status,ISRrecResultType*type,ISR_REC_RESULT*resultData);

功能計算當前識別結(jié)果。

參數(shù)

rec[in]

由ISRrecRecognizerCreate函數(shù)創(chuàng)建的實例句柄;

maxComputeTime[in]

本次識別結(jié)果計算的最長CPU時間,單位毫秒。該值不能為0;

status[out]

返回當前識別狀態(tài),具體的取值參考下面的說明;

type[out]

指明識別結(jié)果的類型。resultData[out]

返回指向當前識別結(jié)果數(shù)據(jù)的指針,這個識別結(jié)果可以調(diào)用ISRrecGetXmlResult函數(shù)生成XML格式的識別結(jié)果。第82頁/共97頁ISRrecGetWaveform函數(shù)原型intISRAPIISRrecGetWaveform(ISR_REC_RESULTresultData,constwchar_t*type,

void**waveform,unsignedint*len);

功能獲取最后一次識別對話的語音數(shù)據(jù)。

參數(shù)

resultData[in]指向識別結(jié)果信息的數(shù)據(jù)句柄,識別結(jié)果包含識別串、置信度等信息。

type[in]指定獲取的音頻格式,如果傳入NULL,使用缺省的ulaw格式。

waveform[out]返回指向音頻數(shù)據(jù)緩沖區(qū)的指針,緩沖區(qū)的內(nèi)存由識別器內(nèi)部分配和釋放。

len[out]返回音頻數(shù)據(jù)的字節(jié)長度。一般而言,這個函數(shù)在下列情況下可以使用:1)

獲取當前識別器的音頻用于分析識別效果;2)

存檔語音數(shù)據(jù);3)

為電話呼叫者回放音頻;4)

用于說話者身份校驗系統(tǒng);幾個type字符串的例子:1)

"silence_suppression=interword+end+begin;audio/basic;rate=8000",使用缺省的音頻格式,去除前、后和單詞中間的靜音段;2)

silence_suppression=begin+end3)

audio/basic;silence_suppression=begin+interword+end第83頁/共97頁ISRrecGetXMLResult函數(shù)原型intISRAPIISRrecGetXMLResult(ISR_REC_RESULTresultData,constwchar_t*format,

constwchar_t**xmlResult);

功能獲取一個識別結(jié)果的XML形式的表示。

參數(shù)

resultData[in]指向識別結(jié)果信息的數(shù)據(jù)句柄,識別結(jié)果包含識別串、置信度等信息。

format[in]指明期望獲得的識別結(jié)果的格式。

xmlResult[out]返回指向XML格式識別結(jié)果的緩沖區(qū)指針。該緩沖區(qū)由識別系統(tǒng)自動管理,用戶無需分配和釋放。<?xmlversion="1.0"encoding="UTF-16"standalone="no"?><result>

<interpretationconfidence="72.50"grammar="1">

<instance>

<city>北京</city>

</instance>

<inputmode="speech">北京</input>

</interpretation>

</result>#ABNF1.0GB2312;

languagezh-CN;root$city;meta"author"is"iFLYTEK";

public$city=$citie

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論