您當(dāng)前的位置是:  首頁(yè) > 新聞 > 國(guó)內(nèi) >
 首頁(yè) > 新聞 > 國(guó)內(nèi) >

MRCP協(xié)議學(xué)習(xí)筆記-語(yǔ)音識(shí)別資源的概括和全部Methods

2018-07-20 14:05:48   作者:james.zhu   來(lái)源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  介紹媒體資源中另外一個(gè)非常重要的核心內(nèi)容-語(yǔ)音識(shí)別資源的請(qǐng)求,在后續(xù)的章節(jié)中介紹事件和一些相關(guān)頭的使用方式。
  MRCP語(yǔ)音識(shí)別資源針對(duì)語(yǔ)音數(shù)據(jù)和DTMF事件進(jìn)行分析,然后通過(guò)媒體會(huì)話來(lái)進(jìn)行傳輸,最后返回文本形式的處理結(jié)果。MRCP協(xié)議將語(yǔ)音識(shí)別資源的類型分成兩種:dtmfrecog和speechrecog。前者只能支持DTMF的識(shí)別,因此語(yǔ)法也僅限于DTMF語(yǔ)法的支持;后者則支持語(yǔ)音流數(shù)據(jù)的識(shí)別和DTMF識(shí)別,因此其語(yǔ)法支持語(yǔ)音語(yǔ)法和DTMF語(yǔ)法兩種。另外,在今天的講座中,我們會(huì)涉及其語(yǔ)法的使用方式(SRGS和NLSML),我們?cè)谝郧暗恼鹿?jié)中對(duì)這些語(yǔ)法也做過(guò)一些介紹,讀者可以查閱歷史文檔掌握這些必要的知識(shí)。
  1、在前面的部分我們已經(jīng)提到,dtmfrecog僅提供對(duì)DTMF事件的支持,因此它可以歸并到speechrecog中。dtmfrecog提供了speechrecog的功能所支持的一部分功能子集,支持了DTMF輸入和相應(yīng)的DTMF語(yǔ)法。DTMF數(shù)字值則是通過(guò)RTP事件或DTMF tone分析獲得。語(yǔ)音識(shí)別資源可以在以下其中一種模式下工作:
  1. normal mode recognition
  2. hotword mode recognition
  normal mode recognition 顧名思義是一種正常工作模式,它支持的是一種正常工作的模式,可以匹配整個(gè)語(yǔ)音句子或DTMF字符,然后和語(yǔ)法進(jìn)行對(duì)比,返回RECOGNITION-COMPLETE,這個(gè)事件包含成功或失敗的狀態(tài)消息(,例如,001 no-match,無(wú)輸入匹配)。Hot word mode recognition工作的模式有所不同,它僅對(duì)一些熱詞感興趣,會(huì)查詢一些短語(yǔ)和DTMF的排序,并且忽略不匹配的部分。如果MRCP客戶端取消了識(shí)別請(qǐng)求,或者No-Input-Timeout或Recognition-Timeout定時(shí)器超時(shí)的話,它僅完成成功匹配的語(yǔ)法。因此,熱詞模式結(jié)束時(shí)從來(lái)不會(huì)返回Completion-Cause碼 001 no-match。熱詞模式可以使用在很多的場(chǎng)景中。簡(jiǎn)單的例子就是電話轉(zhuǎn)接或我們?cè)陔婁N場(chǎng)景中的價(jià)格或者地址等關(guān)鍵詞的處理。如果在監(jiān)聽時(shí),聽到說(shuō)話人需要返回主語(yǔ)音導(dǎo)航菜單時(shí),我們可以立即返回主菜單。如果在電銷場(chǎng)景中,我們聽到客戶提到價(jià)格時(shí),我們可以打斷然后查詢相關(guān)的價(jià)格,然后返回價(jià)格數(shù)據(jù)。另外,語(yǔ)音識(shí)別資源還可以支持第三種的工作模式,那就是基于文本的"interpretation" 模式。文本語(yǔ)句通過(guò)控制會(huì)話(不是媒體會(huì)話)發(fā)送到語(yǔ)音識(shí)別資源,通過(guò)語(yǔ)法匹配,然后返回識(shí)別結(jié)果并且攜帶語(yǔ)義解析。此功能可以支持很多場(chǎng)景,例如,它可以支持創(chuàng)建一個(gè)基于文本的工具來(lái)測(cè)試語(yǔ)法的覆蓋情況和修正語(yǔ)義解析的語(yǔ)法標(biāo)簽。
  語(yǔ)音識(shí)別資源可以支持六個(gè)請(qǐng)求消息和三個(gè)事件消息。Voice enrolment 又進(jìn)一步增加了五個(gè)請(qǐng)求方法來(lái)支持創(chuàng)建和管理注冊(cè)的語(yǔ)法。
  語(yǔ)音識(shí)別資源支持的methods 消息:
  另外五個(gè)注冊(cè)的語(yǔ)音語(yǔ)法methods:
  三個(gè)事件消息:
  語(yǔ)音識(shí)別資源的狀態(tài)機(jī)圖例:
  音識(shí)別狀態(tài)機(jī)是由MRCP客戶端來(lái)發(fā)起請(qǐng)求,媒體資源端則會(huì)生成返回事件消息。以上示例是一個(gè)非常簡(jiǎn)單的狀態(tài)機(jī)使用場(chǎng)景,它對(duì)注冊(cè)語(yǔ)法進(jìn)行訓(xùn)練處理。這里的起始會(huì)話和結(jié)束會(huì)話不會(huì)改變資源的狀態(tài)。通過(guò)RECOGNIZE 觸發(fā)觸發(fā)事件后,狀態(tài)機(jī)中每個(gè)被捕捉的句子的結(jié)果狀態(tài)會(huì)從空閑狀態(tài)切換到正在識(shí)別狀態(tài),當(dāng)觸發(fā) RECOGNITION-COMPLETE事件時(shí),則又返回到空閑狀態(tài)。
  語(yǔ)音識(shí)別資源支持了標(biāo)準(zhǔn)的頭值和更多對(duì)語(yǔ)法注冊(cè)支持的頭值。標(biāo)準(zhǔn)的headers參數(shù)設(shè)置(三十三個(gè)headers):
  支持語(yǔ)法注冊(cè)的headers(支持十二個(gè)enrollment-header ):
  2、筆者在上面的部分重點(diǎn)概括介紹了語(yǔ)音識(shí)別資源的請(qǐng)求方法,事件和一些相關(guān)的headers,F(xiàn)在我們開始介紹語(yǔ)音識(shí)別資源具體的請(qǐng)求方式。RECOGNIZE是我們第一個(gè)介紹的請(qǐng)求方式。
  簡(jiǎn)單來(lái)說(shuō),RECOGNIZE請(qǐng)求是啟動(dòng)識(shí)別流程,緊接著為輸入的語(yǔ)音流進(jìn)行匹配,然后設(shè)定匹配的詞語(yǔ)的語(yǔ)法。識(shí)別結(jié)果會(huì)包含在RECOGNITION-COMPLETE 的事件中。Hotword發(fā)識(shí)別模式會(huì)在Recognition-Mode頭值中進(jìn)行設(shè)置。默認(rèn)設(shè)置是normal模式。RECOGNIZE請(qǐng)求中可以包含一些頭值來(lái)調(diào)整相關(guān)的請(qǐng)求,這些可調(diào)整的請(qǐng)求頭包括語(yǔ)言,安全閥值,和定時(shí)器設(shè)置等。
  語(yǔ)音識(shí)別資源可以支持對(duì)RECOGNIZE 請(qǐng)求進(jìn)行隊(duì)列管理,也可以進(jìn)行單獨(dú)運(yùn)行而不進(jìn)入隊(duì)列中。具體的操作上通過(guò)Cancel-If-Queue 頭的設(shè)置來(lái)進(jìn)行設(shè)置。因?yàn)镃ancel-If-Queue牽扯了多種處理狀態(tài),流程處理的響應(yīng)都完全不同,我們這里不做過(guò)多解釋。用戶可以參考RFC標(biāo)準(zhǔn)做進(jìn)一步的了解。
  MRCP協(xié)議根據(jù)不同的normal或hotword識(shí)別模式的不同,定義了不同的定時(shí)器來(lái)控制識(shí)別處理。normal 識(shí)別模式的定時(shí)器設(shè)置:
  hotwords 識(shí)別的定時(shí)器設(shè)置:
  現(xiàn)在,讓我們看一下RECOGNIZE  請(qǐng)求的圖例:
  相應(yīng)的消息流程如下:  
       
  3、DEFINE-GRAMMAR method是請(qǐng)求語(yǔ)音識(shí)別資源訪問(wèn)消息體中語(yǔ)法進(jìn)行訪問(wèn),提取和編譯。MRCP客戶端不一定需要發(fā)起DEFINE-GRAMMAR 請(qǐng)求執(zhí)行識(shí)別,相反的,它可以給客戶端提供一個(gè)選擇來(lái)準(zhǔn)備處理比較大的語(yǔ)法文件。DEFINE-GRAMMAR請(qǐng)求的響應(yīng)消息總是攜帶COMPLETE的響應(yīng)。成功的響應(yīng)消息返回200 Success和一個(gè)頭消息000 success。如果返回錯(cuò)誤的話,則會(huì)收到407 Method 或 Operation Failed,并且攜帶Completion-Cause 頭。以下是一個(gè)DEFINE-GRAMMAR 的示例:
  相應(yīng)的響應(yīng)消息流程如下:
 
 
 
  4、START-INPUT-TIMERS 是對(duì)定時(shí)器設(shè)置的請(qǐng)求方式。在MRCP v1的版本中這個(gè)method稱之為RECOGNITION-START-TIMERS。 默認(rèn)環(huán)境下,當(dāng)識(shí)別資源啟動(dòng)以后,No-Input-Timeout 定時(shí)器就會(huì)自動(dòng)啟動(dòng),如果在超時(shí)之前,沒(méi)有檢測(cè)到任何的輸入的話,識(shí)別就會(huì)結(jié)束,并且返回RECOGNITION-COMPLETE消息,消息中攜帶Completion-Cause,此值設(shè)置為002 no input-timeout。以下示例是一個(gè)START-INPUT-TIMERS的請(qǐng)求示例:
 
  START-INPUT-TIMERS 具體的消息處理流程如下:
 
    
  5、當(dāng)識(shí)別請(qǐng)求成功完成后,識(shí)別結(jié)果會(huì)通過(guò)RECOGNITION-COMPLETE事件中的消息體返回到客戶端,并且識(shí)別引擎進(jìn)入到已識(shí)別狀態(tài)。返回結(jié)果可依賴于識(shí)別參數(shù)設(shè)置,例如安全閥值和N-Best-Length-List等。這里,我們可以使用GET-RESULT method來(lái)對(duì)進(jìn)入識(shí)別狀態(tài)的結(jié)果重新計(jì)算,或通過(guò)GET-RESULT 請(qǐng)求,根據(jù)識(shí)別設(shè)置參數(shù)返回相應(yīng)的結(jié)果。例如,MRCP客戶端可以發(fā)起一個(gè)GET-RESULT 請(qǐng)求,設(shè)置了較低的安全閥值(Confidence-Threshold )和較高的N-Best-List-Length 來(lái)獲得一個(gè)假設(shè)值。以下是一個(gè)GET-RESULT的圖例:
  GET-RESULT相應(yīng)的消息流程如下:


  6、STOP method可以支持對(duì)IN-PROGRESS 狀態(tài)(活動(dòng)的狀態(tài))或PENDING(隊(duì)列中的)請(qǐng)求執(zhí)行停止。如果在STOP請(qǐng)求中忽略了Active-Request-Id-List 頭的話,說(shuō)明活動(dòng)狀態(tài)的請(qǐng)求已經(jīng)停止,在隊(duì)列中的識(shí)別請(qǐng)求已經(jīng)被移除。如果STOP請(qǐng)求成功結(jié)束了一個(gè)或多個(gè)活動(dòng)的識(shí)別請(qǐng)求或隊(duì)列中的識(shí)別請(qǐng)求,返回到客戶端的響應(yīng)消息是200 Success,并且包含一個(gè)Active-Request-Id-List 頭,這個(gè)頭值中包含了停止的請(qǐng)求ID列表。注意,這里服務(wù)器端也不會(huì)發(fā)送RECOGNITION-COMPLETE 事件。如果沒(méi)有結(jié)束的識(shí)別請(qǐng)求,同樣,客戶端也會(huì)收到200 Success,但是會(huì)忽略掉Active-Request-Id-List 頭。有時(shí),我們可以在STOP method的Active-Request-Id-List 頭中指定一個(gè)請(qǐng)求ID來(lái)停止這個(gè)識(shí)別請(qǐng)求,這個(gè)識(shí)別請(qǐng)求可能是在當(dāng)前IN-PROGRESS狀態(tài)或PENDING隊(duì)列中的識(shí)別請(qǐng)求。如果當(dāng)前活動(dòng)的識(shí)別請(qǐng)求被停止后,則可以處理下一個(gè)在PENDING隊(duì)列中請(qǐng)求。以下是一個(gè)STOP 示例圖:
  以下是相應(yīng)的消息流程:
 
  7、INTERPRET method 的使用方式和RECOGNIZE 的method 非常相似,不同之處在于,RECOGNIZE是支持語(yǔ)音輸入的,但是這里的輸入是完全基于文本格式的形式,通過(guò)Interpret-Text 頭來(lái)設(shè)定這個(gè)文本格式。其返回的解析結(jié)果包含在INTERPRETATION-COMPLETE的事件消息體中。這里,讀者一定要注意,不像RECONGIZE method,它的請(qǐng)求不能支持隊(duì)列設(shè)置。如果有一個(gè)INTERPRET在處理狀態(tài)時(shí),再次發(fā)起另外一個(gè)INTERPRET會(huì)導(dǎo)致返回一個(gè)402 Method not valid in this state。所以,讀者一定要注意此method的使用方式。以下是一個(gè)INTERPRET的圖例:
  INTERPRET的消息處理流程如下: 
  8、在本部分的介紹中,筆者將介紹關(guān)于Voice enrolment 的幾個(gè)method方式。
  這里,我們首先介紹一下START-PHRASE-ENROLLMENT。
  START-PHRASE-ENROLLMENT 的目的是支持MRCP客戶端啟動(dòng)一個(gè)注冊(cè)會(huì)話(這里,翻譯成enrolment session,也可能有其他作者的翻譯名稱)。注冊(cè)會(huì)話的功能在于對(duì)每個(gè)獨(dú)立的說(shuō)話人添加一個(gè)特別的短語(yǔ),形成一個(gè)個(gè)人的語(yǔ)法。在注冊(cè)會(huì)話的生命周期內(nèi),MRCP客戶端會(huì)調(diào)用RECOGNIZE 請(qǐng)求,并且攜帶了Enroll-Utterance,這里,此頭值設(shè)置為true。每一次對(duì)RECOGINE調(diào)用都會(huì)捕捉單個(gè)的短語(yǔ)例句,并且執(zhí)行注冊(cè)流程,最后以NLSML的文件格式通過(guò)RECOGNITION-COMPLETE進(jìn)行傳輸。一般情況下,識(shí)別資源需要重復(fù)多次來(lái)訓(xùn)練短語(yǔ)。MRCP 客戶端通過(guò)調(diào)用END-PHRASE-ENROLLMENT來(lái)結(jié)束此注冊(cè)會(huì)話。如果要配置一個(gè)注冊(cè)會(huì)話,在START-PHRASE-ENROLLMENT的請(qǐng)求中需要設(shè)定多個(gè)頭域。這些頭域包括Personal-Grammar-URI(獨(dú)立說(shuō)話人的個(gè)人語(yǔ)法設(shè)置),Phrase-ID(短語(yǔ)唯一的ID)和Phrase-NL(短語(yǔ)支持的自然語(yǔ)言或語(yǔ)義結(jié)果)。以下圖例說(shuō)明了START-PHRASE-ENROLLMENT的流程:
  以下是相應(yīng)的消息流程: 
 

  第二個(gè)介紹的請(qǐng)求是ENROLLMENT-ROLLBACK。MRCP客戶端發(fā)起一個(gè)ENROLLMENT-ROLLBACK 請(qǐng)求回滾到上一個(gè)請(qǐng)求。此功能可以對(duì)句中不適合部分進(jìn)行處理排除。這里要求丟棄上一次RECOGNIZE請(qǐng)求中捕獲的語(yǔ)音。以下是一個(gè)ENROLLMENT-ROLLBACK圖例:
  具體的消息流程如下:
  F1(client→speechrecog):
  MRCP/2.0 83 ENROLLMENT-ROLLBACK 70000
  Channel-Identifier:23af1e13@speechrecog
  F2(speechrecog→client):
  MRCP/2.0 76 70000 200 COMPLETE
  Channel-Identifier:23af1e13@speechrecog
  這里,我們繼續(xù)討論第三個(gè)請(qǐng)求方式。END-PHRASE-ENROLLMENT是由MRCP客戶端發(fā)起,用來(lái)結(jié)束注冊(cè)會(huì)話的一個(gè)method,可以對(duì)接受的注冊(cè)短語(yǔ)進(jìn)行確認(rèn)或丟棄短語(yǔ)。這個(gè)method通常是識(shí)別資源返回的RECOGNITION-COMPLETE事件中包含NLSML,并且攜帶了 重復(fù)數(shù)量設(shè)置,然后MRCP客戶端發(fā)起END-PHRASE-ENROLLMENT來(lái)結(jié)束注冊(cè)會(huì)話。如果要中斷短語(yǔ)注冊(cè)的話,在END-PHRASE-ENROLLMENT的請(qǐng)求中設(shè)置Abort-Phrase-Enrollment置為true。如果在START-PHRASE-ENROLLMENT請(qǐng)求中出現(xiàn)了Save-Best-Waveform 頭,并且此頭設(shè)置為true,那么在返回的END-PHRASE-ENROLLMENT事件中會(huì)包含一個(gè)Waveform-URI來(lái)表示一個(gè)經(jīng)過(guò)訓(xùn)練的短語(yǔ)錄音存放路徑。這些文件可以支持MRCP客戶端選擇類型,用戶可以根據(jù)相應(yīng)的個(gè)人的語(yǔ)法讀出短語(yǔ)。因?yàn)镋ND-PHRASE-ENROLLMENT 的消息流程也比較簡(jiǎn)單,我們這里不再做過(guò)多解釋,用戶可以參考說(shuō)明的例子來(lái)學(xué)習(xí)。
  修改短語(yǔ)是第四個(gè)請(qǐng)求方式。MODIFY-PHRASE用來(lái)支持對(duì)個(gè)人語(yǔ)法中已注冊(cè)的短語(yǔ)中的某些參數(shù)屬性進(jìn)行修改。可修改的屬性包括:Phrase-ID,Phrase-NL,和Weight。可修改的短語(yǔ)通過(guò)其Phrase-ID來(lái)確認(rèn)它的唯一性,通過(guò)頭域值設(shè)置修改Phrase-NL或Weight。如果是ID被修改的話,客戶端會(huì)生成一個(gè)新的New-Phrase-ID頭來(lái)表示這是新的短語(yǔ)ID。以下圖例表示了MODIFY-PHRASE 流程:
  具體的MODIFY-PHRASE消息流程如下:
  F1(client→speechrecog):
  MRCP/2.0 133 MODIFY-PHRASE 90000
  Channel-Identifier:23af1e13@speechrecog
  Phrase-ID:Name01
  New-Phrase-ID:Name03
  Weight:0.5
  F2(speechrecog→client):
  MRCP/2.0 76 90000 200 COMPLETE
  Channel-Identifier:23af1e13@speechrecog
  刪除短語(yǔ)是第五個(gè)請(qǐng)求方式。DELETE-PHRASE method是客戶端用來(lái)從個(gè)人語(yǔ)法中刪除一個(gè)短語(yǔ)ID,通過(guò)Phrase-ID來(lái)表示,個(gè)人語(yǔ)法的設(shè)定通過(guò)Personal-Grammar-URI來(lái)表示。以下是一個(gè)刪除短語(yǔ)的圖例:
  其具體的刪除短語(yǔ)的消息流程如下:
  F1(client→speechrecog):
  MRCP/2.0 162 DELETE-PHRASE100000
  Channel-Identifier:23af1e13@speechrecog
  Personal-Grammar-URI:http://enrolledgrammars/user01gram02.dat
  Phrase-ID:Name01
  F2(speechrecog→client):
  MRCP/2.0 77 100000 200 COMPLETE
  Channel-Identifier:23af1e13@speechrecog
  回顧本章節(jié)的內(nèi)容,我們首先介紹了語(yǔ)音識(shí)別資源的請(qǐng)求處理方式,事件和headers,并且列出了它們的使用方式和屬性設(shè)置。然后,筆者重點(diǎn)介紹了語(yǔ)音識(shí)別資源的六大methods和語(yǔ)法注冊(cè)時(shí)使用的五個(gè)methods。因?yàn)槠年P(guān)系,筆者把語(yǔ)法注冊(cè)的methods 歸納在一個(gè)話題中,以便方便讀者能夠結(jié)合這些相關(guān)的method充分了解注冊(cè)語(yǔ)法的這些請(qǐng)求處理方式。筆者相信,通過(guò)本章節(jié)關(guān)于語(yǔ)音識(shí)別資源的請(qǐng)求處理的概念介紹結(jié)合圖例和消息流程,讀者會(huì)進(jìn)一步了解語(yǔ)音識(shí)別的消息流程處理。
  在下一個(gè)章節(jié)中,我們重點(diǎn)介紹語(yǔ)音識(shí)別資源中的事件和相關(guān)的headers參數(shù)設(shè)置。
       
 
  unimrcp-MRCP協(xié)議學(xué)習(xí)分享,QQ群號(hào):208136295
  關(guān)注微信公眾號(hào):asterisk-cn,獲得有價(jià)值的行業(yè)分享
  freepbx 技術(shù)論壇:www.ippbx.org.cn
  Asterisk, freepbx技術(shù)文檔: www.freepbx.org.cn
  歐米(Omni)智能客服解決方案
  融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
  參考:
  https://tools.ietf.org/html/rfc6787
 

【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專題