




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
會計學1科大訊飛語音識別講義主要內容語音識別系統(tǒng)簡介語音識別接口介紹基于訊飛語音識別系統(tǒng)SDK的開發(fā)第1頁/共97頁課程目的了解語音識別系統(tǒng)的組成及原理了解訊飛語音識別系統(tǒng)的組成了解訊飛語音識別系統(tǒng)的接口及參數掌握基于訊飛語音識別系統(tǒng)API的開發(fā)第2頁/共97頁名詞和縮略語ISR訊飛語音識別引擎(iFLYSpeechRecognizer),其產品名稱為InterReco,ISR是其內部名稱。EP端點檢測(end-pointerdetection)是將語音數據(speech)從背景噪聲中分離出來的一項技術,主要應用于語音識別領域,可以很大程度地降低識別器的運算量,從而能有效地提高識別效率以及識別效果。ISREPAPI端點檢測開發(fā)接口(ISRend-pointerdetectionAPI),識別引擎中與端點檢測相關的開發(fā)接口。ISRRECAPI語音識別開發(fā)接口(ISRRecognizeAPI),識別引擎中與識別器相關的開發(fā)接口。第3頁/共97頁主要內容語音識別系統(tǒng)簡介語音識別接口介紹基于訊飛語音識別系統(tǒng)SDK的開發(fā)第4頁/共97頁訊飛語音識別系統(tǒng)命令詞識別系統(tǒng)路由導航系統(tǒng)POI系統(tǒng)第5頁/共97頁1命令詞識別系統(tǒng)以語法的形式限定待識別的內容$Content=蘋果|香蕉;識別效果與語法的規(guī)模息息相關第6頁/共97頁識別網絡的構建將字、詞轉化為對應的發(fā)音序列增加靜音節(jié)點,以適應語音前后的靜音第7頁/共97頁命令詞識別基本原理基本問題回憶HMM的解碼問題如何從網絡中尋找一條與語音最像的路徑?第8頁/共97頁基于槽的命令詞識別語法的定義,例如定票系統(tǒng)有目的地及出發(fā)地兩個信息$Content=從$from到$to;$from=北京|上海;$to=廣州|香港;第9頁/共97頁置信度置信度確認識別結果正確的可信度置信度要解決的問題解碼算法只會尋找最大可能的路徑,對集外詞無拒識能力解碼算法因模型及近似的原因,對集內詞識別也不一定正確第10頁/共97頁置信度的應用優(yōu)化用戶交互界面高置信度直接默認識別準確中置信度有必要讓用戶再次確認低置信度默認識別錯誤,需要再次識別或者轉人工坐席置信度門限的確認falseaccept、falserejectEER:equalerrorrate第11頁/共97頁命令詞識別系統(tǒng)的評估假如在N句集內語音中有M1句得到正確識別結果有M2句得到錯誤識別結果剩下的沒有識別結果評價參數正確識別率=?
(M1/N)第12頁/共97頁命令詞識別系統(tǒng)的評估假如在N句集外語音中,有M句沒有識別結果剩下的錯誤識別評價參數錯誤接受率=?1-(M/N)第13頁/共97頁2呼叫導航語音識別系統(tǒng)用戶語音更加自由、開放Q:“我的銀行卡丟了,該怎么辦”A:“掛失辦理”不再需要編寫語法規(guī)則不僅需要將語音轉化為文字,還需要從文字中理解意思第14頁/共97頁呼叫導航流程
識別后端
模型訓練
識別前端采樣量化端點檢測特征提取模型訓練吃過了嗎?……聲學模型語言模型語音識別解碼識別結果置信度判決語義理解語義模型我/的/手機/丟/了手機掛失第15頁/共97頁語言模型語言模型包含的內容覆蓋該領域的所有字、詞,及其發(fā)音字、詞出現的概率及其相互連接的概率P(手機)=0.3P(丟|手機)=0.4第16頁/共97頁解碼網絡以所有詞的并列為解碼網絡,支持回跳循環(huán)循環(huán)跳回的時候,加入語言模型概率第17頁/共97頁語義模型描述了文字與語義的概率手機上網余額查詢彩鈴業(yè)務手機掛失我的手機丟了手機/丟0.250.250.250.250.70.050.20.050.80.050.050.1S(手機掛失)=0.8S(手機上網)=0.05第18頁/共97頁呼叫導航系統(tǒng)的評估識別性能假如“我/的/手機/丟/了”,識別為“我們/手機/丟/掉/了插入錯誤,如“掉”,標記為I刪除錯誤,如“的”,標記為D替換錯誤,如“我們”,標記為S假如總詞數為N,其中正確為M,則識別準確率為
(N-I-D-S)/N導航性能假如總音頻數為N,其中導航正確的為M,則導航正確率為 M/N第19頁/共97頁3POI識別系統(tǒng)PointofInterest用戶可說出感興趣的條目的片段支持順序、跳序、逆序如“安徽省合肥中國科學技術大學”“安徽省合肥中國科學技術大學”“中國科學技術大學”“科學技術大學”“中國科學技術大學合肥”第20頁/共97頁POI識別系統(tǒng)流程
識別后端
模型訓練
識別前端采樣量化端點檢測特征提取模型訓練吃過了嗎?……聲學模型語言模型語音識別解碼識別結果置信度判決檢索Ke1/da4/中國科大/北方科大資源制作檢索資源第21頁/共97頁POI識別系統(tǒng)的語言模型定義了音節(jié)及音節(jié)之間的概率Unigram,P(zhong1),Bigram,P(ji4|ke1)Trigram,P(ji4|zhong1,ke1)…第22頁/共97頁POI檢索-投票機制中國科學技術大學安徽大學北京科技大學科大訊飛ke1ji4da4xue2通過投票機制,評價每個條目的得分,綜合未出現音的影響,可以提供檢索結果的候選,并可忽略順序的影響第23頁/共97頁POI檢索-編輯距離動態(tài)規(guī)劃可以有效避免識別過程中的插入刪除錯誤,但是其包含時間信息,不能解決倒序的問題,可以作為投票機制的補充。中國科學技術大學安徽大學北京科技大學科大訊飛Ke1ji4da4xue2第24頁/共97頁三種技術的比較命令詞呼叫路由POI語言模型否支持支持用戶語音自由度不自由自由較自由語法是否否語義理解否是是其它資源否語義模型檢索資源解碼結果命令詞詞串拼音串應用舉例交互查詢客服中心菜單扁平化地圖搜索第25頁/共97頁主要內容語音識別系統(tǒng)簡介語音識別接口介紹基于訊飛語音識別系統(tǒng)SDK的開發(fā)第26頁/共97頁語音識別接口介紹InterReco簡介InterReco接口簡介InterReco標準接口API及參數第27頁/共97頁InterReco簡介InterReco是一款與說話人無關語音識別系統(tǒng)能夠完成電話應用、移動互聯(lián)網等應用環(huán)境下的語音識別功能,為需要開發(fā)自助語音服務的廠商提供基本的引擎支持具備優(yōu)秀的識別率,提供全面的開發(fā)支持,具備大型應用的性能,符合電信應用的穩(wěn)定性要求使用InterReco開發(fā)的語音識別應用能夠豐富服務的內容,降低用戶使用的難度,極大降低人工坐席的成本,可以很大程度上提高電話語音服務的質量,提高用戶滿意度第28頁/共97頁語音識別接口介紹InterReco簡介InterReco接口簡介InterReco標準接口API及參數第29頁/共97頁InterReco接口簡介標準開發(fā)接口端點檢測開發(fā)接口識別器開發(fā)接口語音錄入開發(fā)接口語音識別應用開發(fā)接口語音識別快速開發(fā)接口第30頁/共97頁InterReco接口關系第31頁/共97頁InterRecoAPI調用流程初始化逆初始化會話開始會話結束識別開始識別結束啟動端點檢測停止端點檢測發(fā)送語音到識別器并識別獲取識別結果ISRrecInitializeISRepOpenISRepCloseISRrecUninitializeISRrecSessionBeginISRrecRecognizerCreateISRrecGrammarLoadISRrecGrammarActivateISRrecGrammarDeactivateISRrecGrammarFreeISRrecRecognizerDestroyISRrecSessionEndISRrecRecognizerStartISRrecRecognizerStopISRepSessionBeginISRepDetectorCreateISRepStartISRepPromptDoneISRepStopISRepDetectorDestroyISRepSessionEndISRepWriteISRepReadISRrecAudioWriteISRrecGetXMLResult第32頁/共97頁InterReco標準開發(fā)接口端點檢測開發(fā)接口支持對音頻數據檢測語音開始點及結束點的功能,并提供端點檢測的參數設置、讀取功能。識別器開發(fā)接口通過激活語法,對語音進行語音識別并獲取識別結果。同時為滿足一般IVR的需要,提供DTMF(雙音多頻)解析、返回用戶語音等功能。語音錄入開發(fā)接口提供語音錄入的相關功能,需要和端點檢測、識別器接口配合使用。第33頁/共97頁InterReco應用開發(fā)接口是標準接口的封裝,使用起來更為簡單通過激活語法,實現在線的語音識別功能,并提供DTMF語法解析、返回用戶語音等功能應用開發(fā)接口開發(fā)較為便捷,功能也較為完備,可以滿足一般的識別應用第34頁/共97頁InterReco快速開發(fā)接口是對應用開發(fā)接口的封裝,提供最為快速的開發(fā)能力通過激活語法,實現在線的語音識別功能的同時,提供了對語音文件的識別功能與簡單開發(fā)接口相比,不提供DTMF語法解析及返回用戶語音功能第35頁/共97頁標準開發(fā)接口之端點檢測開發(fā)接口函數名稱功能簡介ISRepOpen初始化端點檢測系統(tǒng)ISRepClose逆初始化端點檢測系統(tǒng)ISRepDetectorCreate創(chuàng)建一路端點檢測實例ISRepDetectorDestroy銷毀一路端點檢測實例ISRepSetParameter設置端點檢測器參數ISRepGetParameter獲取端點檢測器參數ISRepSessionBegin開始一路會話ISRepSessionEnd結束一路會話ISRepPromptDone通知端點檢測器提示音播放結束ISRepStart開始端點檢測ISRepStop結束端點檢測第36頁/共97頁標準開發(fā)接口之端點檢測開發(fā)接口(續(xù))函數名稱功能簡介ISRepWrite向端點檢測器寫入原始語音數據ISRepRead從端點檢測器讀取端點檢測后數據ISRepStateReset重置端點檢測器聲學狀態(tài)ISRepStateQuerySize獲取端點檢測器聲學狀態(tài)長度ISRepStateLoad加載端點檢測器聲學狀態(tài)ISRepStateSave保存端點檢測器聲學狀態(tài)第37頁/共97頁標準開發(fā)接口之識別器開發(fā)接口函數名稱功能簡介ISRrecInitialize進程范圍初始化語音識別引擎ISRrecUninitialize進程范圍逆初始化,關閉識別引擎ISRrecRecognizerCreate創(chuàng)建一個語音識別實例ISRrecRecognizerDestroy銷毀一個語音識別實例ISRrecGrammarLoad加載一個語音識別語法到識別引擎ISRrecGrammarCompile編譯指定的語法到內存緩沖區(qū)ISRrecGrammarActivate激活一個語法供后續(xù)的識別過程使用ISRrecGrammarDeactivate解除激活一個已經加載的語法ISRrecGrammarFree從識別引擎釋放一個語法ISRrecRecognizerSetParameter設置識別參數ISRrecRecognizerGetParameter獲取識別參數ISRrecSessionBegin開始一個識別會話,設置通道名稱ISRrecSessionEnd結束一個識別會話第38頁/共97頁標準開發(fā)接口之識別器開發(fā)接口(續(xù))函數名稱功能簡介ISRrecRecognizerStart使用當前激活的語法開始進行識別ISRrecAudioWrite在識別過程中向識別器發(fā)送音頻數據ISRrecRecognizerCompute計算當前識別結果ISRrecGetWaveform獲取最后一次識別對話的語音數據ISRrecGetXMLResult獲取一個識別結果的XML形式的表示ISRrecParseDTMFResults使用當前活動語法解析一個DTMF字符串ISRrecLogEvent向CallLog中寫入一個事件或者相關信息ISRrecRecognizerStop停止當前識別ISRrecAcousticStateLoad從內存緩沖區(qū)中加載聲學狀態(tài)信息ISRrecAcousticStateSave把實例的聲學狀態(tài)信息寫入指定的內存緩沖區(qū)ISRrecAcousticStateReset重置實例的聲學狀態(tài)信息ISRrecAcousticStateQuerySize獲得聲學狀態(tài)信息的大小第39頁/共97頁標準開發(fā)接口之語音錄入開發(fā)接口函數名稱功能簡介ISRveBegin開始一個語音錄入實例ISRveEnd結束一個語音錄入實例ISRvePrepare在語音錄入會話中,準備一次語音錄入識別,生成所需語法ISRveProcess在一次語音錄入會話中處理識別的結果,并生成語音錄入結果語音錄入應用程序一般會為每一個用戶維護一個已經錄入的詞語列表,每一個錄入的條目對應一個由語音錄入過程產生的發(fā)音。典型的語音錄入過程如下:1)
調用ISRveBegin創(chuàng)建一個VE實例;2)
調用ISRvePrepare獲得語音錄入語法ID和權重,同時獲得混淆語法、沖突語法的權重。3)
使用第2步返回的結果激活語音錄入語法;4)
使用第2步返回的結果激活混淆語法和沖突語法,這些語法里面包含所有應用程序不想被錄入的詞條和那些已經被錄入的詞條;5)
進行一次識別;6)
調用ISRveProcess函數處理ISRrecGetXMLResult返回的XML結果;7)
如果ISRveProcess返回的結果說明還需要重復錄入的話,跳轉到第2步;8)
如果ISRveProcess返回的結果說明已經重復多次還沒有形成一致的錄入結果,那么跳轉到第11步;9)
否則,將有以下情況之一:一個詞條已經成功錄入、錄入的詞條和混淆語法里面的某個詞條發(fā)音接近、錄入的詞條和沖突語法里面的某個詞條發(fā)音接近。如果一個詞條成功錄入,添加到已錄入列表;如果一個詞條混淆或者沖突,提示用戶用另外的發(fā)音錄入,重新從第1步開始。10)
解除激活所有的語法;11)
調用ISRveEnd結束錄入,清除所有臨時數據。第40頁/共97頁語音識別應用開發(fā)接口函數名稱功能簡介ISRInitialize進程范圍初始化語音識別引擎ISRUninitialize進程范圍逆初始化,關閉識別引擎ISRRecognizerCreate創(chuàng)建一個語音識別實例ISRRecognizerDestroy銷毀一個語音識別實例ISRGrammarActivate激活一個語法供后續(xù)的識別過程使用ISRGrammarDeactivate解除激活一個已經加載的語法ISRSetParameter設置識別參數ISRGetParameter獲取識別參數ISRRecognizerStart使用當前激活的語法開始進行識別ISRAudioWrite在識別過程中向識別器發(fā)送音頻數據ISRRecognizerCompute計算當前識別結果第41頁/共97頁語音識別應用開發(fā)接口(續(xù))函數名稱功能簡介ISRGetWaveform獲取最后一次識別對話的語音數據ISRGetXMLResult獲取一個識別結果的XML形式的表示ISRParseDTMFResults使用當前活動語法解析一個DTMF字符串ISRLogEvent向CallLog中寫入一個事件或者相關信息ISRRecognizerStop停止當前識別ISRPromptDone說明當前提示音播放完畢第42頁/共97頁語音識別快速開發(fā)接口函數名稱功能簡介*QISRInit進程范圍初始化語音識別引擎QISRFini進程范圍逆初始化,關閉識別引擎*QISRSessionBegin創(chuàng)建一路識別*QISRGrammarActivate激活指定的語法,設置語法的權重*QISRAudioWrite向識別器送入音頻數據,返回端點檢測和識別狀態(tài)*QISRGetXMLResult獲得XML格式的識別結果*QISRSessionEnd逆初始化,釋放資源,結束本次識別*QISRWaveformRecog完成一次識別操作,返回識別結果該接口有寬字符版本,名稱為后綴“W”。
如:QISRInit的寬字符版本接口為QISRInitW。第43頁/共97頁語音識別接口介紹InterReco簡介InterReco接口簡介InterReco標準接口API及參數第44頁/共97頁音頻接口IVR平臺授權管理端點檢測
接口識別器
接口控制音頻數據狀態(tài)信息控制音頻數據狀態(tài)信息識別結果應用集成架構示意第45頁/共97頁端點檢測開發(fā)接口及參數第46頁/共97頁ISRepOpen函數原型int
ISRAPIISRepOpen(constwchar_t*ep,void*reserved);
功能全局初始化端點檢測系統(tǒng),把需要使用的一些全局數據裝載到系統(tǒng)內存中。參數ep[in]傳入需要初始化的引擎名稱,可以為NULL,系統(tǒng)將自動查找需要初始化的引擎reserved[in/out]保留,必須為NULL。第47頁/共97頁ISRepClose函數原型intISRAPIISRepClose();
功能全局逆初始化端點檢測系統(tǒng),從系統(tǒng)內存中移出所有資源。
參數無。第48頁/共97頁ISRepDetectorCreate函數原型intISRAPIISRepDetectorCreate(ISR_EP_INST*ep,constwchar_t*params);
功能創(chuàng)建一路端點檢測實例。
參數ep
[out]創(chuàng)建成功時返回的端點檢測實例句柄;params
[in]創(chuàng)建句柄可以攜帶的參數信息,格式為“param1=value1,param2=value2”,在句柄創(chuàng)建后會使用這里指定的參數初始化句柄。
在網絡應用環(huán)境下,需要通過serverAddr參數指定需要連接的語音服務器地址,格式如“serverAddr=192.168.70.45:13606”,端口號可以省略,系統(tǒng)會使用缺省的端口號連接語音服務器,如果不指定該參數或地址指定為“0.0.0.0”,則使用負載均衡,自動選擇負載最輕的服務器連接。
另外,這里的參數也可以指定引擎的過濾條件,例如引擎名稱過濾,格式“ename=isr30”,說明必須使用isr30引擎,其中isr30為InterReco3.0的縮寫。第49頁/共97頁ISRepDetectorDestroy函數原型intISRAPIISRepDetectorDestroy(ISR_EP_INSTep);
功能銷毀一路不再使用的端點檢測實例。
參數instance[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄。第50頁/共97頁ISRepStateReset函數原型intISRAPIISRepStateReset(ISR_EP_INSTep);
功能重置端點檢測器的聲學狀態(tài)信息。
參數ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄。第51頁/共97頁ISRepStateQuerySize函數原型intISRAPIISRepStateQuerySize(ISR_EP_INSTep,unsignedint*size);
功能返回端點檢測器的聲學狀態(tài)信息長度。
參數ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄。size[out]返回的端點檢測器聲學狀態(tài)信息長度(bytes)。第52頁/共97頁ISRepStateLoad函數原型intISRAPIISRepStateLoad(ISR_EP_INSTep,void*buffer,constintlen);
功能加載端點檢測器的聲學狀態(tài)信息。
參數
ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄。
buffer[in]用以加載的聲學狀態(tài)信息。
len[in]聲學狀態(tài)信息長度(字節(jié)數)。第53頁/共97頁ISRepStateSave函數原型intISRAPIISRepStateSave(ISR_EP_INSTep,void*buffer,unsignedintmaxlen);
功能保存端點檢測器的聲學狀態(tài)信息。
參數
ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄。
buffer[in]用以保存聲學狀態(tài)信息的內存。
maxlen[in]保存聲學狀態(tài)信息的最大長度(字節(jié)數)。第54頁/共97頁ISRepSetParameter函數原型intISRAPIISRSetParameter(ISR_EP_INSTep,constwchar_t*name,constwchar_t*value);
功能設置端點檢測實例參數。
參數ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄;
name[in]指定設置的參數類型;
value[in]指向設置參數值緩沖區(qū)的指針。端點檢測參數參數意義isr_ep_mode工作模式,默認為begin_endisr_ep_waveform_logging是否log端點檢測后的wav數據,默認為falseisr_ep_magic_word_max_msec設置magicword最大長度(ms),默認為2000,最小為1,最大為INT_MAXisr_ep_magic_word_min_msec設置magicword最小長度(ms),默認為200,最小為1,最大為INT_MAXisr_ep_bos_backoff設置bos向前移動的長度(ms),默認為200,最小為0isr_ep_eos_backoff設置eos向后移動的長度(ms),默認為200,最小為0isr_ep_min_speech_length設置最小語音長度,默認為250(ms),最小為100,最大為300isr_ep_gmm_win_size設置模型判決窗長,默認500(ms),最小300,最大600timeout設置提示音結束后等待bos的長度(ms),默認為7000,最小為-1,-1表示沒有限制,最大為INT_MAXincompletetimeout設置語音間隔(ms),默認為750,最小為0,最大為INT_MAX第55頁/共97頁ISRepGetParameter函數原型intISRAPIISRepGetParameter(ISR_EP_INStep,constwchar_t*name,wchar_t*value,unsignedint*len);
功能獲取端點檢測實例的參數。
參數
ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄;
name[in]指定獲取的參數類型;
value[out]指向返回參數值的指針;
len[in/out]調用時傳入value指向的參數緩沖區(qū)大小(字節(jié)),返回時填入該參數實際的大小(字節(jié)數)。第56頁/共97頁ISRepSessionBegin函數原型intISRAPIISRepSessionBegin(ISR_EP_INSTep,constwchar_t*channelName,constwchar_t*params);
功能開始一次會話。
參數ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄;
channelName[in]指向會話通道的指針;
params[out]保留,必須為NULL。第57頁/共97頁ISRepSessionEnd函數原型intISRAPIISRepSessionEnd(ISR_EP_INSTep);
功能結束一路會話。
參數
ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄。第58頁/共97頁ISRepPromptDone函數原型intISRAPIISRepPromptDone(ISR_EP_INSTep);
功能通知端點檢測器外部提示音結束,端點檢測器內部開始超時計時。
參數
ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄。第59頁/共97頁ISRepStart函數原型intISRAPIISRepStart(ISR_EP_INSTep);
功能開始端點檢測。
參數
ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄。第60頁/共97頁ISRepStop函數原型intISRAPIISRepStop(ISR_EP_INSTep,ISRepStopCodecode,constwchar_t*hints);
功能停止端點檢測。
參數
ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄;
code[in]停止端點檢測的原因類型;
hints[in]保留,必須為NULL。第61頁/共97頁ISRepWrite函數原型intISRAPIISRepWrite(ISR_EP_INSTep,ISRAudioSamples*samples,ISRepState*state,int*bos,int*eos);
功能向端點檢測器發(fā)送原始語音數據,返回當前端點檢測器所處的狀態(tài)信息。
參數ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄;
samples[in]輸入的原始語音數據結構體指針;
state[out]當前端點檢測器所處的狀態(tài)信息;
bos[out]檢測到的語音起始點,相對語音起始位置的偏移量,單位為ms;eos[out]檢測到的語音結束點,相對語音起始位置的偏移量,單位為ms。typedefstructISRAudioSamples{
void*
samples;
unsignedint
len;
constwchar_t*
type;
int
status;}
ISRAudioSamples;其中:samples
[in]指向音頻數據的緩沖區(qū)指針;len
[in]音頻數據的長度,字節(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,已經檢測到語音;3)ISR_EP_AFTER_SPEECH,已經檢測到后端點;4)ISR_EP_TIME_OUT,處于等待超時狀態(tài);5)ISR_EP_ERROR,端點檢測器內部出現錯誤;6)ISR_EP_MAX_SPEECH,檢測到的語音長度超過門限,處于最大語音狀態(tài)。第62頁/共97頁ISRepRead函數原型intISRAPIISRepRead(ISR_EP_INSTep,ISRAudioSamples*samples,ISRepState*state,unsignedintmax_len);
功能讀取端點檢測之后的數據并返回當前端點檢測器所處的狀態(tài)信息。
參數
ep[in]先前調用ISRepDetectorCreate得到的端點檢測服務實例句柄;
samples[out]輸出的語音數據結構體指針;
state[out]當前端點檢測器所處的狀態(tài)信息;
max_len[in]讀取語音數據的最大長度(字節(jié)數);第63頁/共97頁識別器開發(fā)接口及參數第64頁/共97頁識別過程第65頁/共97頁ISRrecInitialize函數原型intISRAPIISRrecInitialize(constwchar_t*engine,void*reserved);
功能進程級的初始化語音識別引擎,初始化全局信息。
參數
engine[in]傳入需要初始化的引擎名稱,可以為NULL,系統(tǒng)將自動查找需要初始化的引擎。
Reserved保留,必須為NULL。第66頁/共97頁ISRrecUninitialize函數原型intISRAPIISRrecUninitialize(void);
功能逆初始化并關閉語音識別引擎,釋放全局資源。
參數無。第67頁/共97頁ISRrecRecognizerCreate函數原型intISRAPIISRrecRecognizerCreate(ISR_REC_INST*rec,constwchar_t*params);
功能創(chuàng)建一個語音識別實例。
參數
rec[out]
傳入識別實例句柄的地址,返回新創(chuàng)建的識別實例句柄。
params[in]
創(chuàng)建句柄可以攜帶的參數信息,格式為“param1=value1,param2=value2”,在句柄創(chuàng)建后會使用這里指定的參數初始化句柄。
在網絡應用環(huán)境下,需要通過serverAddr參數指定需要連接的語音服務器地址,格式如“serverAddr=192.168.70.45:13606”,端口號可以省略,系統(tǒng)會使用缺省的端口號連接語音服務器,如果不指定該參數或地址指定為“0.0.0.0”,則使用負載均衡,自動選擇負載最輕的服務器連接。
另外,這里的參數也可以指定引擎的過濾條件,例如引擎名稱過濾,格式“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函數原型intISRAPIISRrecRecognizerDestroy(ISR_REC_INSTrec);
功能銷毀一個語音識別實例。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄;第69頁/共97頁語法相關接口第70頁/共97頁ISRrecGrammarLoad函數原型intISRAPIISRrecGrammarLoad(ISR_REC_INSTrec,constISRrecGrammarData*grammar);
功能加載一個URI或者字符串類型的語音識別語法到識別引擎。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄;
grammar[in]需要加載的語法信息,一個結構體,用于描述需要加載的語法URI或字符串信息,還可能包含一些獲取參數。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]字符串類型的語法內容或者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函數原型intISRAPIISRrecGrammarCompile(ISR_REC_INSTrec,constISRrecGrammarData*grammar,
void*buffer,unsignedint*len);
功能編譯指定的語法到內存緩沖區(qū)。實際不常使用。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄。
grammar[in]需要編譯的語法信息,參考上一章節(jié)的描述。
buffer[out]存放編譯后二進制語法的緩沖區(qū),注意這個緩沖區(qū)的內存由用戶自己分配和釋放。
len[in/out]輸入緩沖區(qū)的以長度(單位:字節(jié)),返回二進制語法實際的長度。第72頁/共97頁ISRrecGrammarActivate函數原型intISRAPIISRrecGrammarActivate(ISR_REC_INSTrec,constISRrecGrammarData*grammar,unsignedintweight,constchar*grammarID);
功能激活一個語法供后續(xù)的識別過程使用。
參數
rec[in]
由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄;
grammar[in]
需要激活的語法信息,參考上一章節(jié)的描述。
weight[in]
一個整型值,用于指定這個語法和其他激活語法之間的相對權重,可以用這個值向識別器表明需要優(yōu)先處理的語法的識別結果。
這個參數的取值范圍是1–32767之間,值越大表明該語法的權重越大,在多個激活的語法中屬于該語法識別結果的置信度越高。
grammarID[in]
指定該語法的ID,這個ID將在返回的識別結果中體現,如果用戶激活了多個語法,最終的識別結果中的每個項都會指明該識別結果的來源語法ID。第73頁/共97頁ISRrecGrammarDeactivate函數原型intISRAPIISRrecGrammarDeactivate(ISR_REC_INSTrec,constISRrecGrammarData*grammar);
功能解除激活一個已經加載的語法,后續(xù)的識別將不使用該語法。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄;
grammar[in]需要解除激活的語法信息,參考上一章節(jié)的描述。第74頁/共97頁ISRrecGrammarFree函數原型intISRAPIISRrecGrammarFree(ISR_REC_INSTrec,constISRrecGrammarData*grammar);
功能從識別引擎釋放一個語法,識別器將不再使用這個語法。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄。
grammar[in]需要釋放的語法信息,參考上一章節(jié)的描述。第75頁/共97頁ISRrecRecognizerSetParameter函數原型intISRAPIISRrecRecognizerSetParameter(ISR_REC_INSTrec,constwchar_t*param,constwchar_t*value);
功能設置識別參數。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄。
param[in]需要獲取的參數名稱,支持的參數列表參考說明部分。
value[in]輸入設置的參數值。參數名稱意義maxspeechtimeout允許輸入的最大音頻時間,單位毫秒。缺省為15000,如果取值-1則表明沒有限制。注意,如果該值設置過大,可能導致識別系統(tǒng)耗用大量的內存。isr_rec_best_result_count識別引擎輸出的最優(yōu)結果的數目,默認為3,最大值10,最小值1。isr_rec_confidence_threshold系統(tǒng)默認的識別結果的置信度輸出門限,默認為350,可以設置1-1000的所有整數值。只有識別置信度高于這個門限的識別結果才可以輸出。isr_rec_confidence_output_enabled是否進行置信度輸出,缺省為“true”isr_rec_return_waveform是否返回識別的語音數據,缺省為“false”。如果需要使用函數ISRrecGetWaveform函數獲取音頻數據,那么這個參數必須設置為“true”。第76頁/共97頁ISRrecRecognizerGetParameter函數原型intISRAPIISRrecRecognizerGetParameter(ISR_REC_INSTrec,constwchar_t*param,wchar_t
*value,unsignedint*len);
功能獲取識別參數。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄;
param[in]需要獲取的參數名稱,支持的參數列表參考說明部分。
value[in/out]輸入緩沖區(qū)指針,返回獲取的參數值。
len[in/out]輸入緩沖區(qū)長度(單位:字符),返回實際的參數值長度。第77頁/共97頁ISRrecSessionBegin函數原型intISRAPIISRrecSessionBegin(ISR_REC_INSTrec,constwchar_t*channelName,constwchar_t*params);
功能開始一個識別會話,設置通道名稱,表明一個呼叫的開始。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄。
channelName[in]當前會話的通道名稱。
params[in]當前會話的參數串,可以為NULL。第78頁/共97頁ISRrecSessionEnd函數原型intISRAPIISRrecSessionEnd(ISR_REC_INSTrec);
功能結束一個識別會話,標志一次呼叫的結束。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄。
第79頁/共97頁ISRrecRecognizerStart函數原型intISRAPIISRrecRecognizerStart(ISR_REC_INSTrec);
功能使用當前激活的語法開始進行識別。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄。第80頁/共97頁ISRrecAudioWrite函數原型intISRAPIISRrecAudioWrite(ISR_REC_INSTrec,ISRAudioSamples*samples);
功能在識別過程中向識別器發(fā)送音頻數據。
參數
rec[in]由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄;
samples[in]音頻數據信息。一個結構體,用于描述音頻數據及格式信息。第81頁/共97頁ISRrecRecognizerCompute函數原型intISRAPIISRrecRecognizerCompute(ISR_REC_INSTrec,intmaxComputeTime,ISRrecRecognizerStatus*status,ISRrecResultType*type,ISR_REC_RESULT*resultData);
功能計算當前識別結果。
參數
rec[in]
由ISRrecRecognizerCreate函數創(chuàng)建的實例句柄;
maxComputeTime[in]
本次識別結果計算的最長CPU時間,單位毫秒。該值不能為0;
status[out]
返回當前識別狀態(tài),具體的取值參考下面的說明;
type[out]
指明識別結果的類型。resultData[out]
返回指向當前識別結果數據的指針,這個識別結果可以調用ISRrecGetXmlResult函數生成XML格式的識別結果。第82頁/共97頁ISRrecGetWaveform函數原型intISRAPIISRrecGetWaveform(ISR_REC_RESULTresultData,constwchar_t*type,
void**waveform,unsignedint*len);
功能獲取最后一次識別對話的語音數據。
參數
resultData[in]指向識別結果信息的數據句柄,識別結果包含識別串、置信度等信息。
type[in]指定獲取的音頻格式,如果傳入NULL,使用缺省的ulaw格式。
waveform[out]返回指向音頻數據緩沖區(qū)的指針,緩沖區(qū)的內存由識別器內部分配和釋放。
len[out]返回音頻數據的字節(jié)長度。一般而言,這個函數在下列情況下可以使用:1)
獲取當前識別器的音頻用于分析識別效果;2)
存檔語音數據;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函數原型intISRAPIISRrecGetXMLResult(ISR_REC_RESULTresultData,constwchar_t*format,
constwchar_t**xmlResult);
功能獲取一個識別結果的XML形式的表示。
參數
resultData[in]指向識別結果信息的數據句柄,識別結果包含識別串、置信度等信息。
format[in]指明期望獲得的識別結果的格式。
xmlResult[out]返回指向XML格式識別結果的緩沖區(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年成人高考語文經典題型作文語言表達全真模擬試卷
- 2025年消防員基礎知識測試題庫:消防隊伍管理與消防設施操作規(guī)程解析試題
- 農村婦幼保健知識重點解析-2025年鄉(xiāng)村醫(yī)生考試題庫精講
- 2025年成人高考語文經典題型強化題庫:語文閱讀理解專項訓練試題匯編
- 2025年專升本藝術概論模擬試卷:藝術作品賞析技巧深度剖析
- 2025年書法教師職業(yè)能力測試卷:書法教學跨學科融合與應用試題
- 2025年葡萄牙語能力測試試卷閱讀理解能力提升訓練
- 2025年成人高考《語文》語言表達與運用能力測評試卷
- 2025年征信考試題庫:征信國際合作與交流法律知識試題集
- 2025年網絡工程師職業(yè)技能測試卷:網絡工程師職場溝通與團隊協(xié)作試題
- 日周月安全檢查記錄表
- 車間溫濕度測量記錄表
- 七氟丙烷滅火系統(tǒng)安全操作規(guī)程(最新)
- 教學成果申報
- 談談微電影創(chuàng)作PPT課件.ppt
- 空分裝置增壓機大修方案
- 2021年中國華電集團公司組織架構和部門職能
- 變電所倒閘操作課件
- 六層框架住宅畢業(yè)設計計算書2
- 膽汁淤積和自身免疫性肝病診治專家共識參考教學提綱
- 光纜的敷設方法與要求
評論
0/150
提交評論