当前ASR单点能力基于端云协议实现,如需实现ASR、LLM、TTS端云全链路功能,请参考端云交互链路协议
本接口是基于 WebSocket 协议实现数据的传输的。
ws[s]://api.listenai.com/v1/dispatch
Authorization: Bearer {token}
请查阅端侧授权接入
文档。
请求参数格式:需要urlencode
key1=value1&key2=value2
请求示例:
ws[s]://api.listenai.com/v1/interaction?param=xxxx
请求参数说明:
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
param | string | 是 | 相关参数 JSON 串经Base64 编码后的字符串,详见 param 字段说明 | eyJzY2VuZSI6Im1haW4ifQ== |
param参数说明:
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
auth_id | string | 是 | 用户唯一ID(32位字符串,包括英文小写字母与数字,开发者需保证该值与终端用户一一对应) | 4d0c4412769b62f0f44134ce9f2db11f |
成功:
{
"action":"connected",
"cid":"cidf415ba9c@dx8d0d18b0d6dd3eef00",
"code":"0",
"data":"",
"desc":"success"
}
失败:
{
"action":"error",
"cid":"cidf415ba9c@dx8d0d18b0d6dd3eef00",
"code":"11101",
"data":"",
"desc":"error desc"
}
Websocket 连接建立之后,进入实时通信阶段,可以进行会话的创建、数据的上传、结果的接收等
操作,整体的交互协议分为指令和数据,分别对应TEXT消息和BINARY消息。
连接建立之后,就可以开始创建会话,创建会话是为了在长连接中标识一次会话请求的起点,创建
会话之后,在会话结束之前,所有请求的数据和指令均属于该会话。
请求示例:
{
"action":"start",
"params":{
"data_type":"audio",
"aue":"raw",
"features":[],
"asr_properties":{
"ent":"home-va"
}
}
}
参数说明
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
action | string | 是 | 指令类型 | start |
params | object | 是 | 业务参数 | |
params.data_type | string | 是 | 数据类型:audio | audio |
params.aue | string | 是 | 数据类型为audio时必填,指定音频格式: raw: pcm数据,格式16khz 16bit LE, 单声道 speex: speex格式 speex-wb: speex-wb格式 ico: ico格式 |
raw |
params.speex_size | int | 否 | 音频数据格式为speex、speex-wb时必填 | 70 |
params.only_asr | boolean | 是 | ASR能力时,需传 true | - |
params.asr_properties | object | 否 | 端上指定的asr参数 |
asr_properties参数说明
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
vad_eos | int | 否 | vad后端点 | 400 |
在交互过程中,客户端不断构造 binary message 发送到服务端,内容是音频或文本的二进制数
据。一个会话中,二进制文本数据只需要发送一次。
客户端可以主动结束音频发送,云端会结束识别并进行对应的处理。指令内容如下:
{
"action": "end"
}
会话创建成功
{
"code":"0",
"data":"",
"action":"started",
"desc":"success",
"sid":"05f6a28a-718e-40dc-9f68-d62cf3c02271"
}
识别结果
{
"code":"0",
"data":{
"sub":"iat",
"is_last":true,
"auth_id":"4d0c4412769b62f0f44134ce9f2db11f",
"result_id":17,
"text":"今天广州的天气怎么样?需要带伞吗?"
},
"action":"result",
"desc":"success",
"sid":"05f6a28a-718e-40dc-9f68-d62cf3c02271"
}
vad结果(注:vad结果可能会在最终识别结果前下发)
{
"code":"0",
"data":{
"sub":"vad",
"result_id":0,
"info":"end"
},
"action":"result",
"desc":"success",
"sid":"7a0dff95-9f95-4a68-921e-8ceb72c33281"
}
在会话所以结果均已下发,则会下发一个结束指令消息,表示该会话已经结束。
{
"code":"0",
"data":"",
"action":"finish",
"desc":"success",
"sid":"05f6a28a-718e-40dc-9f68-d62cf3c02271"
}
错误码 | 错误信息 |
---|---|
401 | 鉴权失败 |
10114 | 参数错误 |
400 | 设备在其他地方上线 |
500 | 链路异常(包括调度异常关闭) |