SIP服務器提供REST格式的API並新增分段錄音

底層的API要用較爲複雜的狀態機,開發起來有一定難度。REST即Http+Json方式,相對容易集成。

新增分段錄音,即在錄音時進行VAD(活動語音檢測),檢測到開始說話,上報一個消息,說話中檢測到足夠長的停頓,再上報一個消息,並另起一個新錄音文件。

分段錄音應用於智能交互(AI),偵聽到說話可打斷正在進行的放音,偵聽到停頓,可開始對該段語音進行識別。

簡易的REST接口如下(可進一步擴展,如增加橋接、會議等功能):

藍星際語音平臺REST接口 v1.01
注意:大小寫敏感,方法名總是大寫字母開頭,參數名總是小寫字母開頭。
一、語音平臺作爲服務器:
1、呼叫相關:
1.1. 撥號呼叫:方法Dial:主叫號碼,被叫號碼
       返回:id -相當於通道標識

請求URI樣例:
ttp://172.16.110.140:8000/Dial
請求消息樣例:
{"caller":"4008123","callee":"13902912345"}
返回消息樣例:
{"resultCode":"0","resultContext":"","id":"12"}


1.2. 對來電應答:方法Answer:id
--如果設置爲自動應答,則此方法不用。

1.3. 掛斷通話:方法Hangup:id
請求URI樣例:
ttp://172.16.110.140:8000/Hangup
請求消息樣例:
{"id":"12"}
返回消息樣例:
{"resultCode":"0","resultContext":""}

1.4. 查詢通道狀態:方法GetState: id
       返回:state: 0-空閒,1-通話中,2-外呼振鈴中,3-來電振鈴中
--此方法暫時可不用,應用層可自己記住狀態。


2、放音操作
2.1. 放音:方法Play:id,文件名
    注意:路徑請勿使用反斜槓,使用順斜槓/,參見後面樣例。
     ——如果上一次放音沒有結束,本次調用將自動停止上一次放音,然後開始本次放音
請求URI樣例:
ttp://172.16.110.140:8000/Play
請求消息樣例:
{"id":"12","file":"d:/voc/welcome.wav"}
返回消息樣例:
{"resultCode":"0","resultContext":""}


2.2. TTS方式放音:PlayTTS:id,text-字符串
注意:中文請使用國標碼
請求URI樣例:
ttp://172.16.110.140:8000/PlayTTS
請求消息樣例:
{"id":"12","text":"你的問題我們已經知道了,謝謝!"}
返回消息樣例:
{"resultCode":"0","resultContext":""}


2.3. 停止放音:方法StopPlay:id
請求URI樣例:
ttp://172.16.110.140:8000/StopPlay
請求消息樣例:
{"id":"12"}
返回消息樣例:
{"resultCode":"0","resultContext":""}


3、錄音操作
3.1. 開始錄音:方法StartRec:id, file, isVad=[0-不檢測對方說話一直錄音直到掛斷或調用停止錄音,1-錄音過程進行活動語音檢測,檢測結果及時上報]
    注意:路徑請勿使用反斜槓,使用順斜槓/,參見後面樣例。
      ——參數file:基本文件名,當有多個產生時,系統會自動加上後綴;如果文件已經存在,則會被覆蓋
     所有file參數務必帶上id,如下例:
請求URI樣例:
ttp://172.16.110.140:8000/StartRec
請求消息樣例:
{"id":"12","file":"d:/rec/r12",isVad:1}
返回消息樣例:
{"resultCode":"0","resultContext":""}


3.2. 停止錄音:方法StopRec:id
請求URI樣例:
ttp://172.16.110.140:8000/StopRec
請求消息樣例:
{"id":"12"}
返回消息樣例:
{"resultCode":"0","resultContext":""}


二、語音平臺作爲客戶端:
1、報告通道狀態變化:方法OnState:id, state=[-1-對方掛斷, 1-接通,2-外呼振鈴, 3-有來電],callerId-主叫號碼,calleeId-被叫號碼
請求URI樣例:
ttp://172.16.110.140:8020/OnState
請求消息樣例:
{"id":"12","state":"1","caller":"8888333","callee":"13902912345"}
返回消息樣例:
{"resultCode":"0","resultContext":""}


2、報告VAD(語音活動檢測)結果:方法OnVad:id,file,vadVal=[1偵測到說話,2偵測到說話結束(靜音)]
請求URI樣例:
ttp://172.16.110.140:8020/OnVad
請求消息樣例:
{"id":"12","vadVal":"2","file":"d:/rec/r12_1_2_3"}
返回消息樣例:
{"resultCode":"0","resultContext":""}


3、報告DTMF按鍵:方法OnDtmf:id,dtmf=[可能的值:0-9,*,#]
請求URI樣例:
ttp://172.16.110.140:8020/OnDtmf
請求消息樣例:
{"id":"12","dtmf":"1"}
返回消息樣例:
{"resultCode":"0","resultContext":""}

注:暫不提供放音結束的報告,應用層能夠根據文件長度估算出放音時長。


三、配置:
1、Web服務端口

2、應用層Web服務地址和端口

3、監聽錄音時最小靜音毫秒數,在說話過程中,系統偵聽到這個長度的靜音會報告本段結束,下次偵聽到說話後將另起一個新的錄音文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章