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、监听录音时最小静音毫秒数,在说话过程中,系统侦听到这个长度的静音会报告本段结束,下次侦听到说话后将另起一个新的录音文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值