MRCP的錄音資源可以具有一些基本的語(yǔ)音處理能力支持語(yǔ)音檢測(cè)。這里的語(yǔ)音檢測(cè)功能可以支持對(duì)錄音起始階段,結(jié)束階段的錄音,甚至于中間的錄音進(jìn)行靜音壓縮處理,因此移除語(yǔ)音中的靜音部分,從而降低錄音文件存儲(chǔ)大小。另外,如果在預(yù)設(shè)的超時(shí)設(shè)置中,沒(méi)有收到任何語(yǔ)音,此功能可以支持錄音終止執(zhí)行。如果接收端在結(jié)束之前檢測(cè)到一段靜音狀態(tài),錄音資源也要自動(dòng)結(jié)束錄音。錄音資源的應(yīng)用范圍非常廣泛,可以應(yīng)用在語(yǔ)音留言服務(wù)器環(huán)境,智能客服語(yǔ)音導(dǎo)航等環(huán)境中。在本章節(jié)中,我們會(huì)詳細(xì)介紹錄音資源的請(qǐng)求,事件和標(biāo)題的具體內(nèi)容。
1、錄音資源支持三個(gè)請(qǐng)求消息和兩個(gè)事件信息,以及十五個(gè)頭三個(gè)請(qǐng)求消息是:
兩個(gè)事件消息是:
十五個(gè)標(biāo)題包括:
MRCP錄音資源同樣也支持一個(gè)狀態(tài)機(jī)。MRCP客戶端發(fā)起一個(gè)請(qǐng)求,媒體錄音資源生成事件消息。
2、RECORD請(qǐng)求方法是由MRCP客戶端發(fā)起,默認(rèn)情況下,錄音資源開(kāi)始捕捉語(yǔ)音數(shù)據(jù)。如果當(dāng)出現(xiàn)在 Capture-On-Speech標(biāo)題出現(xiàn)在請(qǐng)求中,并且此值為true,當(dāng)語(yǔ)音被檢測(cè)到以后,錄音資源才開(kāi)始捕捉語(yǔ)音數(shù)據(jù)。錄音格式是通過(guò)Media-Type header來(lái)設(shè)置。此標(biāo)題會(huì)出現(xiàn)在RECORD請(qǐng)求中。錄音資源對(duì)捕捉到語(yǔ)音錄音以后,通過(guò)Record-URI的形式表示錄音存儲(chǔ)路徑。如果此標(biāo)題出現(xiàn)沒(méi)有支持設(shè)置的值,則錄音資源會(huì)在錄音完成事件消息中返回記錄-URI或在STOP請(qǐng)求中,攜帶一個(gè)URL地址。
如果在記錄的請(qǐng)求中省略了記錄-URI,錄音資源則會(huì)在錄音完成事件的消息體中或者停止響應(yīng)中返回這個(gè)URL值。
MRCP要求Record-URI至少支持HTTPS來(lái)保證數(shù)據(jù)傳輸?shù)陌踩,MRCP同樣也支持經(jīng)常使用的http://和file:// URI的形式。如果Record-URI是無(wú)效的地址,則會(huì)返回?zé)o效狀態(tài)碼“404標(biāo)題非法值”。如果錄音資源因?yàn)楦鞣N原因不能對(duì)創(chuàng)建的內(nèi)容鏈接,則返回407方法或操作失敗。
視頻資源,請(qǐng)求中可以支持隊(duì)列的處理。的流程圖:
3、默認(rèn)環(huán)境下,啟動(dòng)錄音以后,No-Input-Timeout標(biāo)頭就會(huì)啟動(dòng)一個(gè)無(wú)輸入定時(shí)器的定時(shí)器。如果在定時(shí)器超時(shí)之前沒(méi)有檢測(cè)到語(yǔ)音輸入時(shí),RECORD-COMPLETE事件消息會(huì)返回完成 - 原因,此值為002 noinput-timeout。通常情況下,系統(tǒng)提示用戶完成輸入以后,MRCP客戶端會(huì)馬上發(fā)起一個(gè)RECORD請(qǐng)求。對(duì)某些應(yīng)用場(chǎng)景來(lái)說(shuō),用戶輸入的同時(shí)需要同時(shí)啟動(dòng)錄音操作。錄音資源可以通過(guò)二次設(shè)置來(lái)啟動(dòng)定時(shí)器的設(shè)置。RECORD請(qǐng)求中可以設(shè)置開(kāi)始輸入,定時(shí)器為假來(lái)表示不啟動(dòng)定時(shí)器,如果需要定時(shí)器啟動(dòng)的話,MRCP客戶端可以發(fā)起一個(gè)開(kāi)始輸入,定時(shí)器請(qǐng)求來(lái)啟動(dòng)定時(shí)器設(shè)置以下是一個(gè)。開(kāi)始輸入,定時(shí)器流程圖:
4、STOP方法結(jié)束錄音流程,并且通知錄音資源從錄音狀態(tài)切換到空閑狀態(tài)。STOP響應(yīng)消息中包含一個(gè)Active-Request-Id-List表示請(qǐng)求停止的ID。以下是一個(gè)停止請(qǐng)求的流程圖:
五、MRCP錄音資源支持兩個(gè)事件消息,它們分別是START-OF-INPUT和RECORD完成消息。
當(dāng)錄音資源第一次檢測(cè)到語(yǔ)音時(shí),錄音資源會(huì)生成START-OF-INPUT事件消息。MRCP客戶端可以使用事件消息來(lái)結(jié)束語(yǔ)音回放等流程。例如,在語(yǔ)音合成資源中的強(qiáng)行插入而出現(xiàn)的消息激活打斷流程。
當(dāng)錄音資源完成對(duì)RECORD請(qǐng)求流程后,錄音資源生成并返回RECORD-COMPLETE消息事件,并且錄音資源從錄音資源切換到空閑狀態(tài)。錄音資源會(huì)自動(dòng)結(jié)束錄音流程,結(jié)束的原因會(huì)返回到MRCP客戶端。具體結(jié)束原因可能是:無(wú)輸入超時(shí),最大時(shí)間到期,檢測(cè)到最終靜音等。完成 - 原因標(biāo)題表示了RECORD請(qǐng)求結(jié)束的原因。如果錄音結(jié)束后,請(qǐng)求沒(méi)有攜帶任何錯(cuò)誤的話,RECORD-COMPLETE消息則會(huì)表示一個(gè)錄音文件的URL地址。
6、錄音資源支持了十五個(gè)頭。我們逐一介紹這些報(bào)頭的使用方式。
完成 - 原因,此標(biāo)題總是出現(xiàn)在RECORD-COMPLETE事件中,用來(lái)表示RECORD結(jié)束原因。如果出現(xiàn)錯(cuò)誤的話,它也可能出現(xiàn)在RECORD請(qǐng)求的返回響應(yīng)消息中。示例:完成 - 原因:002無(wú)輸入 - 時(shí)間到。
完成 - 原因,此標(biāo)題可選出現(xiàn)在RECORD-COMPLETE事件消息中,提供更多結(jié)束原因代碼。示例:完成 - 原因:磁盤空間不足。為客戶端通過(guò)日志跟蹤信息:
Failed-URI,此標(biāo)題表示訪問(wèn)所給URL失敗。示例:Failed-URI:http://192.168.1.10/audio/mailbox01.wav。
Failed-URI-Cause,此標(biāo)題表示訪問(wèn)URL失敗的具體原因,示例:Failed-URI-Cause:404 Not Found。
Record-URI,表示錄音的存儲(chǔ)URL路徑。示例:Record-URI:; 大小= 40000;持續(xù)時(shí)間= 5000。
Media-Type,此標(biāo)題表示錄音文件格式。示例:Media-Type:audio / x-wav。
Capture-On-Speech,此標(biāo)題是一個(gè)布爾值,表示是否當(dāng)檢測(cè)到語(yǔ)音時(shí)開(kāi)始錄音。默認(rèn)值是假,表示接收方收到錄音請(qǐng)求后馬上開(kāi)始錄音。示例:Capture-On-Speech:true。
No-Input-Timeout,此標(biāo)題表示當(dāng)錄音開(kāi)始時(shí),在設(shè)定的時(shí)間內(nèi)沒(méi)有檢測(cè)到語(yǔ)音。在返回RECORD-COMPLETE事件消息中攜帶完成 - 原因,其值為002 noinput-timeout。示例為:No - 輸入 - 超時(shí):3000。
最大時(shí),其頭部用來(lái)設(shè)定最大錄音時(shí)間,此時(shí)間從開(kāi)始錄音計(jì)算,不包括其中的靜音壓縮時(shí)段。其值以毫秒為單位。當(dāng)錄音時(shí)長(zhǎng)達(dá)到最大錄音時(shí)間時(shí),錄音會(huì)結(jié)束,錄音資源會(huì)生成并且返回RECORD-COMPLETE事件,攜帶完成 - 原因,值為000 success-silence。示例:Max-Time:10000。
Final-Silence,此標(biāo)題設(shè)定一個(gè)靜音時(shí)長(zhǎng)(毫秒為單位),用來(lái)表示錄音結(jié)束前的靜音時(shí)長(zhǎng)。如果此值為0,表示無(wú)窮大,無(wú)最后靜音檢測(cè)。示例:Final-Silence:3500。
靈敏度等級(jí),此標(biāo)題表示一個(gè)語(yǔ)音檢測(cè)的敏感度。取值范圍從0到1.取值比較低表示對(duì)噪音不敏感 ;取值比較高表示輸入時(shí)靜音比較敏感。示例:敏感度等級(jí):0.85 。
Trim-Length,此標(biāo)頭使用在STOP請(qǐng)求中。其值表示從錄音結(jié)束起,所移除的時(shí)間長(zhǎng)度。默認(rèn)值為0.示例:Trim-Length:1000。
Start-Input-Timers,此header在RECORD請(qǐng)求中設(shè)定一個(gè)延遲啟用no-input timer的時(shí)間,直到MRCP客戶端重新發(fā)送START-INPUT-TIMERS請(qǐng)求。示例:Start-Input-Timers:false。
Ver-Buffer-Utterance,此標(biāo)題使用在RECORD請(qǐng)求中,表示錄音文件使用在后續(xù)的說(shuō)話人驗(yàn)證流程中,這里,假設(shè)說(shuō)話讓驗(yàn)證資源被分配在同一會(huì)話中。默認(rèn)值為假。示例:Ver-緩沖 - 話語(yǔ):是的。
新的音頻通道,如果此頭在錄音請(qǐng)求中設(shè)置為真,則表示語(yǔ)音數(shù)據(jù)正在從不同的語(yǔ)音資源,通道或講話人發(fā)送。如果此頭出現(xiàn)的話,并且設(shè)置為真,則表示正在調(diào)整某些算法。這些算法可能已經(jīng)在語(yǔ)音檢測(cè)中使用,為了適應(yīng)新的語(yǔ)音資源,一些算法需要調(diào)整。示例:New-Audio-Channel:false。
7、這里,我們稍微花一點(diǎn)時(shí)間再多討論一下關(guān)于靜音檢測(cè)到問(wèn)題。首先說(shuō)明,筆者不是語(yǔ)音檢測(cè)算法方面的專家,因?yàn)槲覀冊(cè)赩OIP領(lǐng)域一直涉及相關(guān)的技術(shù)話題,所以這里提醒用戶,對(duì)于錄音資源的VAD檢測(cè)也是非常重要的一環(huán)。靜音檢測(cè)在終端設(shè)計(jì)中結(jié)合廠家的技術(shù)特點(diǎn)都有各自的算法,具體的應(yīng)用場(chǎng)景很多,包括檢測(cè)語(yǔ)音掛機(jī),降低錄音文件大小,優(yōu)化網(wǎng)絡(luò)帶寬都具有非常重要的作用。關(guān)于在SIP環(huán)境中的VAD檢測(cè),筆者在以前的SIP講座中做過(guò)非常深入的討論。這里,我們僅對(duì)錄音資源中的靜音處理做一些簡(jiǎn)單提示。因?yàn)樵阡浺舡h(huán)境中,如果沒(méi)有對(duì)錄音進(jìn)行靜音檢測(cè)處理或者優(yōu)化,它會(huì)導(dǎo)致錄音文件非常龐大,嚴(yán)重影響系統(tǒng)存儲(chǔ)性能,同時(shí)也會(huì)影響語(yǔ)音識(shí)別的準(zhǔn)確性。當(dāng)然,如果開(kāi)啟VAD檢測(cè)到話,同時(shí)也會(huì)增加系統(tǒng)的負(fù)載具體。的VAD設(shè)計(jì)流程如下:
更多關(guān)于VAD的算法,讀者可以結(jié)合筆者給出的參考資料做進(jìn)一步的研究,也可以針對(duì)錄音資源的幾個(gè)頭做適當(dāng)?shù)恼{(diào)整來(lái)優(yōu)化錄音文件。讀者也可以參考PSJIP或FreeSWITCH的的VAD模塊做更多了解。另外,如果讀者想進(jìn)一步了解VAD的話,讀者也需要結(jié)合靜音壓縮的算法,舒適噪音生成來(lái)進(jìn)一步了解這幾個(gè)算法的相互關(guān)系。
8、在本章節(jié)的分享中,筆者詳細(xì)介紹了MRCP中的錄音資源的細(xì)節(jié)內(nèi)容,包括請(qǐng)求,事件消息和頭的完整介紹。并且,對(duì)錄音優(yōu)化過(guò)程中的VAD做了簡(jiǎn)單分享,希望讀者在優(yōu)化錄音文件時(shí)更多注意這些參數(shù)。
參考資料:
TomB?ckstr?m, 語(yǔ)音活動(dòng)檢測(cè) 語(yǔ)音處理
E. Verteletskaya,K。Sakhnov,語(yǔ)音增強(qiáng)應(yīng)用的語(yǔ)音活動(dòng)檢測(cè)
Md Sahidullah,說(shuō)話人識(shí)別語(yǔ)音活動(dòng)檢測(cè)技術(shù)的比較
J.Ramírez,JMGórriz,語(yǔ)音活動(dòng)檢測(cè);A(chǔ)知識(shí)和語(yǔ)音識(shí)別系統(tǒng)的穩(wěn)健性