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