密级公开
版本10D.2

AICP ASR Dialog WebSocket开发手册

1. 概述#

1.1 功能介绍#

ASR Dialog 的 Websocket接口, 主要是在 ASR 语音识别 WebSocket 接口的基础上,同时对识别结果进行 NLU 语义理解处理,在给出语音识别结果的同时,也给出语义理解的结果。

2. 接口功能描述#

目前仅支持 首句模式 流式实时识别基础上,进行语义理解。暂时不支持在 流式一句话连续模式 流式实时识别基础上的语义理解,在后面可能扩展。

此接口的流程和 ASR 流式识别流程基本一致:

  • 当发送 START 命令时,会同时给出 extendConfig 配置,表示 NLU 所需配置,例如问答机器人ID等。
  • 当识别获取了最终结果时,会将识别结果和 extendConfig 转发给 NLU 服务,并将NLU服务返回的结果作为 extendResult 字段和 识别结果一起返回。
  • 如果设置了返回识别中间结果,中间结果依然会返回,但此时不会调用NLU服务,因此也不会有 extendResult 字段返回。

由于ASR Dialog只是分别调用ASR 和 NLU的接口,因此本手册只是描述一些特殊的内容,关于ASR 实时流式语音识别 WebSocket 接口和基本概念,请参见 《AICP_ASR_WebSocket开发手册》 。关于NLU 服务的输入输出参数,请参见 《灵云全智能客服解决方案(AICC)V9.2.1_问答开发手册.docx》

3. 请求#

3.1 握手阶段请求#

3.1.1 请求URI#

  • 首句模式

ws(s)://ip:port/v10/asr/freetalk/{property}/utterance_dialog?appkey={appkey}[&access-token={token}]

参数类型必选说明
propertystring模型特征串,服务器端利用此值来调用不同的模型
appkeystring分配给开发者的 appkey
access-tokenstring通过 get-access-token- 获取到的令牌

除了URL中的 utterance_dialog 外,和 ASR 的 WebScoket 接口一致。

3.2 请求参数#

3.2.1 HTTP Header#

和 ASR 的 WebScoket 接口一致。

参数类型必选说明
X-Hci-Access-Tokenstringget-access-token 接口获取的令牌

在 HTML5 中,由于 Javascript 中在创建 WebScoket 对象时,无法设置HTTP 头域,因此无法传入 get-access-token 获取的令牌,此时可以通过URL中的 access-token 参数来传入。

3.3 握手阶段响应#

和 ASR 的 WebScoket 接口一致。

4. 连接阶段#

4.1 连接阶段请求#

4.1.1 开始识别#

客户端发送"开始识别"请求,使用文本类型的数据帧(text message)发送,命令和本次会话的参数以json字符串的形式提供。

参数类型必选缺省说明
commandstring-START,表示开始识别请求
configobject-配置信息
extraInfostring客户端设置的信息串,服务器端只做记录,或将来作为定制版本的一些特殊信息
recordIdstring客户端设置的信息串,服务器端记录详细记录或者音频文件时会作为文件名的一部分,以便将来和客户端的信息关联。
只能包括数字、大小写字母、下划线。其它字符在作为文件名时会被转为下划线,最长64字节,超过会被截断
extendConfigobject-扩展配置信息

除了 extendConfig 之外,其余参数和 ASR 的 WebSocket接口一致, config 具体项请参见《AICP_ASR_WebSocket开发手册》。

extendConfig 是json 对象,表示语义理解NLU部分所需参数,其配置请参见《灵云全智能客服解决方案(AICC)V9.2.1_问答开发手册.docx》。

注意extendConfig 中有一项 sendTime 表示调用NLU服务的时间,此字段将会由 ASR Dialog 服务填充,如果外面设置了此字段也不会使用。

4.1.2 发送音频数据#

和 ASR 的 WebScoket 接口一致。

4.1.3 结束识别#

和 ASR 的 WebScoket 接口一致。

4.2 连接阶段响应#

4.2.1 开始识别请求响应#

和 ASR 的 WebScoket 接口一致。

4.2.2 事件响应#

和 ASR 的 WebScoket 接口一致。

4.2.3 识别结果响应#

识别结果响应,包括中间临时结果和最终结果,采用同样的输出格式。

参数类型必选说明
respTypestringRESULT,表示识别结果的响应
traceTokenstring服务内部的跟踪令牌,可用于在日志中追溯具体流程。
sentenceobject一句话的结果
extendResultobjectNLU返回结果,只有在最终结果中才存在,在中间临时结果中没有

除了 extendResult 外,其它字段和ASR WebSocket接口一致。

extendResult 是一个JSON对象,其结构如下:

参数类型必选说明
codenumber调用NLU服务的错误码,当调用NLU服务发生错误时存在
errorstring调用NLU服务的错误信息,当调用NLU服务发生错误时存在
resultobject语义理解结果,当调用NLU服务成功时存在

result 字段是一个JSON对象,原封不动地封装了 NLU服务的返回内容,其具体内容请参见《灵云全智能客服解决方案(AICC)V9.2.1_问答开发手册.docx》。

4.2.4 结束识别请求响应#

和 ASR 的 WebScoket 接口一致。

4.2.5 错误响应#

和 ASR 的 WebScoket 接口一致。

注意:调用 NLU 服务产生的错误,并不会触发错误响应,而是包含在识别结果响应的 extendReusult 字段中。

4.2.6 严重错误响应#

和 ASR 的 WebScoket 接口一致。

4.3 示例#

  • 客户端发送"开始识别"请求
{
"command": "START",
"config":
{
"audioFormat": "ulaw_8k",
"addPunc": true,
"vadTail": 400,
"interimResult": true
},
"extraInfo": "abcdefgh",
"extendConfig":
{
"protocolId":"5",
"userId":"tvn_1002_50906845",
"receiverId":"1002",
"talkerId":"100921",
"isQuestionQuery":"0",
"msgId":"0",
"type":"voice",
"platformConnType":"22",
"appKey":"4c5d548a",
"isNeedClearHistory":"0",
"robotHashCode":"sxsdDf",
"sendTime":"1579232654"
}
}
  • 服务器端有了某句的最终识别结果,调用NLU服务成功
{
"respType": "RESULT",
"traceToken": "token_abcd_12345",
"sentence":
{
"startTime": 100,
"endTime": 1500,
"isFinal": true,
"result":
{
"text": "第一句最终结果",
"score": 0.98
},
},
"extendResult": {
"result": {
"aiResult":"",
"answerTypeId":1,
"domainType":0,
"hitQuestion":"",
"protocolId":6,
"result":0,
"sendTime":null,
"serviceLogId":"",
"singleNode":
{
"answerMsg":"机器人识别码不正确",
"cmd":"",
"hitNodeId":"",
"hitNodeName":"",
"hitQuestion":"",
"hitQuestionType":0,
"hitSceneName":"",
"interruptData":{},
"isRichText":0,
"list":[],
"question":"",
"score":0.0,
"sensitiveWord":"",
"standardQuestion":"",
"standardQuestionId":"",
"variable":null
},
"vagueNode":null
}
}
}
  • 服务器端有了某句的最终识别结果,但调用NLU服务失败
{
"respType": "RESULT",
"traceToken": "token_abcd_12345",
"sentence":
{
"startTime": 100,
"endTime": 1500,
"isFinal": true,
"result":
{
"text": "第一句最终结果",
"score": 0.98
},
},
"extendResult": {
"code": 500,
"error": "NLU Service timeout"
}
}

5. 版本记录#

接口版本平台支持版本组件及支持版本修改内容
10.0.010B.0aicp_asr_dialog 10.0.0初始版本