asrproxy对接自定义ASR
# asrproxy对接自定义ASR接口说明
为了方便用户自己对接第三方ASR,asrproxy提供了一个对接自定义ASR的接口。原理是通过webscket协议把声音流使用二进制帧发送给用户接口,用户接口使用文本帧返回json识别结果。
# 协议说明
# asrproxy发送数据到用户接口
识别开始,把声音流使用二进制帧发送给用户接口。
识别停止,发送文本帧字符串 stop,通知数据发送完毕。
连接断开时,先发送文本帧字符串close,然后发送websocket协议的close帧。
# 用户接口返回识别结果
响应示例
{
"code": 200,
"msg": "success",
"data": {
"status": "SUCCEED",
"result": {
"name": "SentenceEnd",
"text": "您好,我是机主的电话助理,请问你找他什么事吗?"
},
"dealEndTime": "2023-06-16 10:52:29"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- code为200时,为成功,其他为失败
- msg 识别错误时为识别错误信息
- data
- result 识别结果,识别失败时会有result 不存在的情况
- name 识别结果类型
- SentenceBegin:识别开始(声音开始);
- SentenceStreaming:识别中(中间结果);
- SentenceEnd:识别结束(一句话结束最后一个结果)
- text 识别结果
- result 识别结果,识别失败时会有result 不存在的情况
- asr 检测到说话开始
{
"code": 200,
"data": {
"result": {
"name": "SentenceBegin",
"text": ""
},
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- asr 识别到文字
{
"code": 200,
"data": {
"result": {
"name": "SentenceStreaming",
"text": "中间的识别结果"
},
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- asr 检测到说话停止也可能是客户端发送了stop
{
"code": 200,
"data": {
"result": {
"name": "SentenceEnd",
"text": "最终的识别结果"
},
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# asrproxy 配置
"asr":
{
"interface": {
"ps": {
"type": "ps",
"append_callid":false,
"url": "ws://ip:8818/asr"
},
},
"groups":{
"default":{
"mode":0,
"enable":
[
"ps"
]
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
append_callid 如果需要把callid通知到websocekt接口,可以把配置的append_callid改成true,就会自动在接口地址追加参数callid=callid_appid。 例如:ws://ip:8818/asr?callid=ce1e85f1-4e69-4716-bb7d-ac49a0579ba0_ed7cd6af-35fb-459f-9aa2-0ae30b36b19c
url 用户接口地址。
url默认会加上samples_per_second和end_silence_time 参数,例如:samples_per_second=8000&end_silence_time=800
- samples_per_second 声音频率 8000,16000
- end_silence_time vad参数静音时间,静音大于这个时间ASR就返回说话结束。
- userid 如果要透传自定义的ID到asr,可以在mod-cti的asrparam设置 {"userid":"你的ID"},就会把这个userid追加到url.
上次更新: 2025/03/11, 17:13:46
