异步结果查询接口
更新时间:
请求规范
- 请求 URL:
从“控制台-服务配置”中获取
- 接口描述:
该接口用于获取音频检测结果,检测结果包含违规分类信息。
- HTTP 请求Header:
Header
值
描述
Content-Type
application/json;charset=UTF-8
请求体类型
Accept
application/json;charset=UTF-8
接受的返回类型
X-AppId
项目或应用的唯一标识符
X-TimeStamp
请求的UTC时间戳。需要把时间戳按W3C标准格式化,例如: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime)。
Authorization
签名值
-
请求方法:POST
-
请求体JSON对象:
参数
必需
类型
描述
taskId
必需
String
调用音频提交接口成功后,返回的任务id
-
请求体示例:
JSON response
{
"taskId": "f67fee0890de4c118d4f672b7c8ee304"
}
-
请求签名:
当用户请求Audio result API时,可以使用appId和secretKey(从“控制台-服务 配置“中获取)对请求做签名,当API收到带签名信息的请求之后,将使用相同的算法验证签名,如果发现签名不一致,API将会返回401给用户。
如果API验证签名一致,且appId对应的用户有权限操作请求的资源,则请求成功,否则API返回401。
- 通过 HTTP 请求 Header 发送签名
方法: 在请求中加入名为 Authorization 的 Header,值为签名值。如下:
Authorization: Njl86M/jY6zZaZoGhZdGO+GI/8+yGFECusGH1yQHUFE=
- 签名计算方法
- 构造规范化的请求字符串(Canonicalized Query String)::
将请求体JSON字符串以UTF-8字符编码做sha256编码后转换为16进制字符串(注意不是Base64)
CanonicalizedQueryString = hex(sha256(jsonBody))
- 构造被签名字符串 StringToSign ("\n" 代表ASCII里的换行符)
StringToSign = HTTPMethod + "\n" +
HostHeaderInLowercase + "\n" +
HTTPRequestURI + "\n" +
CanonicalizedQueryString <从上一步得到> + "\n" +
"X-AppId:" + SAME_APPID_IN_HEADER + "\n" +
"X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER
HTTPRequestURI是请求URI的绝对路径,不包含请求串。如果HTTPRequestURI为空,也要保留一个正斜杠 ( / )
使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码 (HMAC),然后计算签名。
-
StringToSign作为签名字符串,secretKey作为秘钥,SHA256作为哈希算法
有关 HMAC 的更多信息,请参阅 https://tools.ietf.org/html/rfc2104。
-
将上一步的结果转换为BASE64串
-
将BASE64串放入HTTP请求Header的Authorization
- 签名示例
下面是appId & secretKey & taskId的示例
appId=1000
secrectKey=d9e23d93053f49ade2f8fce185acedd4
taskId=f67fee0890de4c118d4f672b7c8ee304
下面是示例请求体
{
"taskId": "f67fee0890de4c118d4f672b7c8ee304"
}
生成CanonicalizedQueryString
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
生成StringToSign
POST
asafe.ilivedata.com
/api/v1/audio/check/result
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
X-AppId:1000
X-TimeStamp:2020-07-31T07:59:03Z
HMAC计算得到的签名
H0ZXsKUaiRotpxSiXW6+RgKRwnxHXy3qwlVzavs9iHo=
HTTP响应
Content-Type: application/json;charset=UTF-8
结果为JSON格式,请参考以下示例。
- HTTP响应
返回json字段说明:
字段名
类型
描述
errorCode
Number
响应码
errorMessage
String
响应信息
code
Number
状态码,定义为:0:检测成功,1:检测失败,2:检测中,3:taskId无效
taskId
String
请求时的taskId
result
Number
审核结果。0:通过,1:建议审核,2:不通过
audioSpams
json数组
检测结果信息
audioText
string
整段音频转录结果
language
String
语种
extra
json
扩展字段
businessResult
json
业务参数属性, isNoise: “1”:噪音或静音;“0”:非噪音或静音
audioSpams:
字段名
类型
描述
startTime
Number
命中的音频段开始时间,单位秒
endTime
Number
命中的音频段结束时间,单位秒
text
String
音频段文本信息
vpr
Boolean
命中声纹检测
tags
json数组
分类信息
tags:
字段名
类型
描述
tag
Number
分类信息:
100:涉政;110:暴恐;120:违禁;130:色情;150:广告;160:辱骂;
170:仇恨言论;180:未成年保护;190:敏感热点;510:少数民族语言检测;
220:私人交易;900:其他;999:用户自定义类
tagName
String
一级分类名称
tagNameEn
String
一级分类名称(英文)
level
Number
分类级别,0:正常,1:疑似,2:异常
subTags
json数组
二级分类
subTags:
字段名
类型
描述
subTag
Number
二级分类详细编码请参考 分类编码对照表
subTagName
String
二级分类名称
subTagNameEn
String
二级分类名称(英文)
wordList
字符串数组
命中详情
-
响应示例:
JSON response
{
"errorCode": 0,
"code": 0,
"result": 审核结果,
"taskId": 每条请求唯一标识,
"audioSpams": [
{
"startTime": 违规片段开始时间,
"endTime": 违规片段结束时间,
"text": 音频文本命中对应的识别结果,
"tags": [{
"tag": 违规一级分类代码,
"tagName": 违规一级分类名称,
"tagNameEn": 违规一级分类英文名称,
"level": 分类级别,
"subTags": [{
"subTag": 违规二级类别代码,
"subTagName": 违规二级类别名称,
"subTagNameEn": 违规二级类别英文名称,
"wordList": [
违规词
]
}]
}]
},
{
"startTime": 违规片段开始时间,
"endTime": 违规片段结束时间,
"vpr": 声纹命中,
"tags": [{
"tag": 违规一级分类代码,
"tagName": 违规一级分类名称,
"tagNameEn": 违规一级分类英文名称,
"level": 分类级别,
"subTags": [{
"subTag": 违规二级类别代码,
"subTagName": 违规二级类别名称,
"subTagNameEn": 违规二级类别英文名称,
}]
}]
}
],
"audioText": 整段识别文本,
"language": 音频语种,
"businessResult": {
"isNoise": "1"
}
}
错误码
Http状态码
错误码
错误消息
200
0
此字段省略
405
1004
Method Not Allowed
411
1007
Not Content Length
400
1002
API Not Found
400
1003
Bad Request
401
1102
Unauthorized Client
401
1106
Missing Access Token
401
1107
Invalid Token
401
1108
Expired Token
401
1110
Invalid Client
200
1200
Downloads failed or base64 value invalid
401
2000
Missing Parameter
401
2001
Invalid Parameter
请求规范
- 请求 URL:
从“控制台-服务配置”中获取
- 接口描述:
该接口用于获取音频检测结果,检测结果包含违规分类信息。
- HTTP 请求Header:
Header | 值 | 描述 |
---|---|---|
Content-Type | application/json;charset=UTF-8 | 请求体类型 |
Accept | application/json;charset=UTF-8 | 接受的返回类型 |
X-AppId | 项目或应用的唯一标识符 | |
X-TimeStamp | 请求的UTC时间戳。需要把时间戳按W3C标准格式化,例如: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime)。 | |
Authorization | 签名值 |
-
请求方法:POST
-
请求体JSON对象:
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
taskId | 必需 | String | 调用音频提交接口成功后,返回的任务id |
-
请求体示例:
JSON response
{ "taskId": "f67fee0890de4c118d4f672b7c8ee304" }
-
请求签名:
当用户请求Audio result API时,可以使用appId和secretKey(从“控制台-服务 配置“中获取)对请求做签名,当API收到带签名信息的请求之后,将使用相同的算法验证签名,如果发现签名不一致,API将会返回401给用户。
如果API验证签名一致,且appId对应的用户有权限操作请求的资源,则请求成功,否则API返回401。
- 通过 HTTP 请求 Header 发送签名
方法: 在请求中加入名为 Authorization 的 Header,值为签名值。如下:
Authorization: Njl86M/jY6zZaZoGhZdGO+GI/8+yGFECusGH1yQHUFE=
- 签名计算方法
- 构造规范化的请求字符串(Canonicalized Query String)::
将请求体JSON字符串以UTF-8字符编码做sha256编码后转换为16进制字符串(注意不是Base64)
CanonicalizedQueryString = hex(sha256(jsonBody))
- 构造被签名字符串 StringToSign ("\n" 代表ASCII里的换行符)
StringToSign = HTTPMethod + "\n" +
HostHeaderInLowercase + "\n" +
HTTPRequestURI + "\n" +
CanonicalizedQueryString <从上一步得到> + "\n" +
"X-AppId:" + SAME_APPID_IN_HEADER + "\n" +
"X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER
HTTPRequestURI是请求URI的绝对路径,不包含请求串。如果HTTPRequestURI为空,也要保留一个正斜杠 ( / )
使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码 (HMAC),然后计算签名。
-
StringToSign作为签名字符串,secretKey作为秘钥,SHA256作为哈希算法
有关 HMAC 的更多信息,请参阅 https://tools.ietf.org/html/rfc2104。
-
将上一步的结果转换为BASE64串
-
将BASE64串放入HTTP请求Header的Authorization
- 签名示例
下面是appId & secretKey & taskId的示例
appId=1000
secrectKey=d9e23d93053f49ade2f8fce185acedd4
taskId=f67fee0890de4c118d4f672b7c8ee304
下面是示例请求体
{
"taskId": "f67fee0890de4c118d4f672b7c8ee304"
}
生成CanonicalizedQueryString
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
生成StringToSign
POST
asafe.ilivedata.com
/api/v1/audio/check/result
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
X-AppId:1000
X-TimeStamp:2020-07-31T07:59:03Z
HMAC计算得到的签名
H0ZXsKUaiRotpxSiXW6+RgKRwnxHXy3qwlVzavs9iHo=
HTTP响应
Content-Type: application/json;charset=UTF-8
结果为JSON格式,请参考以下示例。
- HTTP响应
返回json字段说明:
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Number | 响应码 |
errorMessage | String | 响应信息 |
code | Number | 状态码,定义为:0:检测成功,1:检测失败,2:检测中,3:taskId无效 |
taskId | String | 请求时的taskId |
result | Number | 审核结果。0:通过,1:建议审核,2:不通过 |
audioSpams | json数组 | 检测结果信息 |
audioText | string | 整段音频转录结果 |
language | String | 语种 |
extra | json | 扩展字段 |
businessResult | json | 业务参数属性, isNoise: “1”:噪音或静音;“0”:非噪音或静音 |
audioSpams:
字段名 | 类型 | 描述 |
---|---|---|
startTime | Number | 命中的音频段开始时间,单位秒 |
endTime | Number | 命中的音频段结束时间,单位秒 |
text | String | 音频段文本信息 |
vpr | Boolean | 命中声纹检测 |
tags | json数组 | 分类信息 |
tags:
字段名 | 类型 | 描述 |
---|---|---|
tag | Number | 分类信息: 100:涉政;110:暴恐;120:违禁;130:色情;150:广告;160:辱骂; 170:仇恨言论;180:未成年保护;190:敏感热点;510:少数民族语言检测; 220:私人交易;900:其他;999:用户自定义类 |
tagName | String | 一级分类名称 |
tagNameEn | String | 一级分类名称(英文) |
level | Number | 分类级别,0:正常,1:疑似,2:异常 |
subTags | json数组 | 二级分类 |
subTags:
字段名 | 类型 | 描述 |
---|---|---|
subTag | Number | 二级分类详细编码请参考 分类编码对照表 |
subTagName | String | 二级分类名称 |
subTagNameEn | String | 二级分类名称(英文) |
wordList | 字符串数组 | 命中详情 |
-
响应示例:
JSON response
{ "errorCode": 0, "code": 0, "result": 审核结果, "taskId": 每条请求唯一标识, "audioSpams": [ { "startTime": 违规片段开始时间, "endTime": 违规片段结束时间, "text": 音频文本命中对应的识别结果, "tags": [{ "tag": 违规一级分类代码, "tagName": 违规一级分类名称, "tagNameEn": 违规一级分类英文名称, "level": 分类级别, "subTags": [{ "subTag": 违规二级类别代码, "subTagName": 违规二级类别名称, "subTagNameEn": 违规二级类别英文名称, "wordList": [ 违规词 ] }] }] }, { "startTime": 违规片段开始时间, "endTime": 违规片段结束时间, "vpr": 声纹命中, "tags": [{ "tag": 违规一级分类代码, "tagName": 违规一级分类名称, "tagNameEn": 违规一级分类英文名称, "level": 分类级别, "subTags": [{ "subTag": 违规二级类别代码, "subTagName": 违规二级类别名称, "subTagNameEn": 违规二级类别英文名称, }] }] } ], "audioText": 整段识别文本, "language": 音频语种, "businessResult": { "isNoise": "1" } }
错误码
Http状态码 | 错误码 | 错误消息 |
---|---|---|
200 | 0 | 此字段省略 |
405 | 1004 | Method Not Allowed |
411 | 1007 | Not Content Length |
400 | 1002 | API Not Found |
400 | 1003 | Bad Request |
401 | 1102 | Unauthorized Client |
401 | 1106 | Missing Access Token |
401 | 1107 | Invalid Token |
401 | 1108 | Expired Token |
401 | 1110 | Invalid Client |
200 | 1200 | Downloads failed or base64 value invalid |
401 | 2000 | Missing Parameter |
401 | 2001 | Invalid Parameter |