MRCP的錄音資源可以具有一些基本的語(yǔ)音處理能力支持語(yǔ)音檢測。這里的語(yǔ)音檢測功能可以支持對錄音起始階段,結束階段的錄音,甚至于中間的錄音進(jìn)行靜音壓縮處理,因此移除語(yǔ)音中的靜音部分,從而降低錄音文件存儲大小。另外,如果在預設的超時(shí)設置中,沒(méi)有收到任何語(yǔ)音,此功能可以支持錄音終止執行。如果接收端在結束之前檢測到一段靜音狀態(tài),錄音資源也要自動(dòng)結束錄音。錄音資源的應用范圍非常廣泛,可以應用在語(yǔ)音留言服務(wù)器環(huán)境,智能客服語(yǔ)音導航等環(huán)境中。在本章節中,我們會(huì )詳細介紹錄音資源的請求,事件和標題的具體內容。
1、錄音資源支持三個(gè)請求消息和兩個(gè)事件信息,以及十五個(gè)頭三個(gè)請求消息是:

兩個(gè)事件消息是:

十五個(gè)標題包括:

MRCP錄音資源同樣也支持一個(gè)狀態(tài)機。MRCP客戶(hù)端發(fā)起一個(gè)請求,媒體錄音資源生成事件消息。

2、RECORD請求方法是由MRCP客戶(hù)端發(fā)起,默認情況下,錄音資源開(kāi)始捕捉語(yǔ)音數據。如果當出現在 Capture-On-Speech標題出現在請求中,并且此值為true,當語(yǔ)音被檢測到以后,錄音資源才開(kāi)始捕捉語(yǔ)音數據。錄音格式是通過(guò)Media-Type header來(lái)設置。此標題會(huì )出現在RECORD請求中。錄音資源對捕捉到語(yǔ)音錄音以后,通過(guò)Record-URI的形式表示錄音存儲路徑。如果此標題出現沒(méi)有支持設置的值,則錄音資源會(huì )在錄音完成事件消息中返回記錄-URI或在STOP請求中,攜帶一個(gè)URL地址。
如果在記錄的請求中省略了記錄-URI,錄音資源則會(huì )在錄音完成事件的消息體中或者停止響應中返回這個(gè)URL值。
MRCP要求Record-URI至少支持HTTPS來(lái)保證數據傳輸的安全性,MRCP同樣也支持經(jīng)常使用的http://和file:// URI的形式。如果Record-URI是無(wú)效的地址,則會(huì )返回無(wú)效狀態(tài)碼“404標題非法值”。如果錄音資源因為各種原因不能對創(chuàng )建的內容鏈接,則返回407方法或操作失敗。
視頻資源,請求中可以支持隊列的處理。的流程圖:


3、默認環(huán)境下,啟動(dòng)錄音以后,No-Input-Timeout標頭就會(huì )啟動(dòng)一個(gè)無(wú)輸入定時(shí)器的定時(shí)器。如果在定時(shí)器超時(shí)之前沒(méi)有檢測到語(yǔ)音輸入時(shí),RECORD-COMPLETE事件消息會(huì )返回完成 - 原因,此值為002 noinput-timeout。通常情況下,系統提示用戶(hù)完成輸入以后,MRCP客戶(hù)端會(huì )馬上發(fā)起一個(gè)RECORD請求。對某些應用場(chǎng)景來(lái)說(shuō),用戶(hù)輸入的同時(shí)需要同時(shí)啟動(dòng)錄音操作。錄音資源可以通過(guò)二次設置來(lái)啟動(dòng)定時(shí)器的設置。RECORD請求中可以設置開(kāi)始輸入,定時(shí)器為假來(lái)表示不啟動(dòng)定時(shí)器,如果需要定時(shí)器啟動(dòng)的話(huà),MRCP客戶(hù)端可以發(fā)起一個(gè)開(kāi)始輸入,定時(shí)器請求來(lái)啟動(dòng)定時(shí)器設置以下是一個(gè)。開(kāi)始輸入,定時(shí)器流程圖:



4、STOP方法結束錄音流程,并且通知錄音資源從錄音狀態(tài)切換到空閑狀態(tài)。STOP響應消息中包含一個(gè)Active-Request-Id-List表示請求停止的ID。以下是一個(gè)停止請求的流程圖:


五、MRCP錄音資源支持兩個(gè)事件消息,它們分別是START-OF-INPUT和RECORD完成消息。
當錄音資源第一次檢測到語(yǔ)音時(shí),錄音資源會(huì )生成START-OF-INPUT事件消息。MRCP客戶(hù)端可以使用事件消息來(lái)結束語(yǔ)音回放等流程。例如,在語(yǔ)音合成資源中的強行插入而出現的消息激活打斷流程。
當錄音資源完成對RECORD請求流程后,錄音資源生成并返回RECORD-COMPLETE消息事件,并且錄音資源從錄音資源切換到空閑狀態(tài)。錄音資源會(huì )自動(dòng)結束錄音流程,結束的原因會(huì )返回到MRCP客戶(hù)端。具體結束原因可能是:無(wú)輸入超時(shí),最大時(shí)間到期,檢測到最終靜音等。完成 - 原因標題表示了RECORD請求結束的原因。如果錄音結束后,請求沒(méi)有攜帶任何錯誤的話(huà),RECORD-COMPLETE消息則會(huì )表示一個(gè)錄音文件的URL地址。
6、錄音資源支持了十五個(gè)頭。我們逐一介紹這些報頭的使用方式。
完成 - 原因,此標題總是出現在RECORD-COMPLETE事件中,用來(lái)表示RECORD結束原因。如果出現錯誤的話(huà),它也可能出現在RECORD請求的返回響應消息中。示例:完成 - 原因:002無(wú)輸入 - 時(shí)間到。
完成 - 原因,此標題可選出現在RECORD-COMPLETE事件消息中,提供更多結束原因代碼。示例:完成 - 原因:磁盤(pán)空間不足。為客戶(hù)端通過(guò)日志跟蹤信息:

Failed-URI,此標題表示訪(fǎng)問(wèn)所給URL失敗。示例:Failed-URI:http://192.168.1.10/audio/mailbox01.wav。
Failed-URI-Cause,此標題表示訪(fǎng)問(wèn)URL失敗的具體原因,示例:Failed-URI-Cause:404 Not Found。
Record-URI,表示錄音的存儲URL路徑。示例:Record-URI:; 大小= 40000;持續時(shí)間= 5000。
Media-Type,此標題表示錄音文件格式。示例:Media-Type:audio / x-wav。
Capture-On-Speech,此標題是一個(gè)布爾值,表示是否當檢測到語(yǔ)音時(shí)開(kāi)始錄音。默認值是假,表示接收方收到錄音請求后馬上開(kāi)始錄音。示例:Capture-On-Speech:true。
No-Input-Timeout,此標題表示當錄音開(kāi)始時(shí),在設定的時(shí)間內沒(méi)有檢測到語(yǔ)音。在返回RECORD-COMPLETE事件消息中攜帶完成 - 原因,其值為002 noinput-timeout。示例為:No - 輸入 - 超時(shí):3000。
最大時(shí),其頭部用來(lái)設定最大錄音時(shí)間,此時(shí)間從開(kāi)始錄音計算,不包括其中的靜音壓縮時(shí)段。其值以毫秒為單位。當錄音時(shí)長(cháng)達到最大錄音時(shí)間時(shí),錄音會(huì )結束,錄音資源會(huì )生成并且返回RECORD-COMPLETE事件,攜帶完成 - 原因,值為000 success-silence。示例:Max-Time:10000。
Final-Silence,此標題設定一個(gè)靜音時(shí)長(cháng)(毫秒為單位),用來(lái)表示錄音結束前的靜音時(shí)長(cháng)。如果此值為0,表示無(wú)窮大,無(wú)最后靜音檢測。示例:Final-Silence:3500。
靈敏度等級,此標題表示一個(gè)語(yǔ)音檢測的敏感度。取值范圍從0到1.取值比較低表示對噪音不敏感 ;取值比較高表示輸入時(shí)靜音比較敏感。示例:敏感度等級:0.85 。
Trim-Length,此標頭使用在STOP請求中。其值表示從錄音結束起,所移除的時(shí)間長(cháng)度。默認值為0.示例:Trim-Length:1000。
Start-Input-Timers,此header在RECORD請求中設定一個(gè)延遲啟用no-input timer的時(shí)間,直到MRCP客戶(hù)端重新發(fā)送START-INPUT-TIMERS請求。示例:Start-Input-Timers:false。
Ver-Buffer-Utterance,此標題使用在RECORD請求中,表示錄音文件使用在后續的說(shuō)話(huà)人驗證流程中,這里,假設說(shuō)話(huà)讓驗證資源被分配在同一會(huì )話(huà)中。默認值為假。示例:Ver-緩沖 - 話(huà)語(yǔ):是的。
新的音頻通道,如果此頭在錄音請求中設置為真,則表示語(yǔ)音數據正在從不同的語(yǔ)音資源,通道或講話(huà)人發(fā)送。如果此頭出現的話(huà),并且設置為真,則表示正在調整某些算法。這些算法可能已經(jīng)在語(yǔ)音檢測中使用,為了適應新的語(yǔ)音資源,一些算法需要調整。示例:New-Audio-Channel:false。
7、這里,我們稍微花一點(diǎn)時(shí)間再多討論一下關(guān)于靜音檢測到問(wèn)題。首先說(shuō)明,筆者不是語(yǔ)音檢測算法方面的專(zhuān)家,因為我們在VOIP領(lǐng)域一直涉及相關(guān)的技術(shù)話(huà)題,所以這里提醒用戶(hù),對于錄音資源的VAD檢測也是非常重要的一環(huán)。靜音檢測在終端設計中結合廠(chǎng)家的技術(shù)特點(diǎn)都有各自的算法,具體的應用場(chǎng)景很多,包括檢測語(yǔ)音掛機,降低錄音文件大小,優(yōu)化網(wǎng)絡(luò )帶寬都具有非常重要的作用。關(guān)于在SIP環(huán)境中的VAD檢測,筆者在以前的SIP講座中做過(guò)非常深入的討論。這里,我們僅對錄音資源中的靜音處理做一些簡(jiǎn)單提示。因為在錄音環(huán)境中,如果沒(méi)有對錄音進(jìn)行靜音檢測處理或者優(yōu)化,它會(huì )導致錄音文件非常龐大,嚴重影響系統存儲性能,同時(shí)也會(huì )影響語(yǔ)音識別的準確性。當然,如果開(kāi)啟VAD檢測到話(huà),同時(shí)也會(huì )增加系統的負載具體。的VAD設計流程如下:

更多關(guān)于VAD的算法,讀者可以結合筆者給出的參考資料做進(jìn)一步的研究,也可以針對錄音資源的幾個(gè)頭做適當的調整來(lái)優(yōu)化錄音文件。讀者也可以參考PSJIP或FreeSWITCH的的VAD模塊做更多了解。另外,如果讀者想進(jìn)一步了解VAD的話(huà),讀者也需要結合靜音壓縮的算法,舒適噪音生成來(lái)進(jìn)一步了解這幾個(gè)算法的相互關(guān)系。
8、在本章節的分享中,筆者詳細介紹了MRCP中的錄音資源的細節內容,包括請求,事件消息和頭的完整介紹。并且,對錄音優(yōu)化過(guò)程中的VAD做了簡(jiǎn)單分享,希望讀者在優(yōu)化錄音文件時(shí)更多注意這些參數。
參考資料:
TomB?ckstr?m, 語(yǔ)音活動(dòng)檢測 語(yǔ)音處理
E. Verteletskaya,K。Sakhnov,語(yǔ)音增強應用的語(yǔ)音活動(dòng)檢測
Md Sahidullah,說(shuō)話(huà)人識別語(yǔ)音活動(dòng)檢測技術(shù)的比較
J.Ramírez,JMGórriz,語(yǔ)音活動(dòng)檢測。基礎知識和語(yǔ)音識別系統的穩健性


