异步审核音频内容中的不良信息和违法违规内容,给出审核结果和处理建议。调用方提交审核语音片段并指定需要检测的类型后,服务器处理将通过回调方式返回检测结果。相对于同步审核,异步审核可接受的处理数据更多,耗时也会响应增大。
检测类型及对应标签如下:
检测类型 | 说明 | action | label |
---|---|---|---|
娇喘识别 | 检测音频文件的声纹特征,识别其中的娇喘等违规特征 | porn | normal:正常 moan:娇喘 |
敏感词识别 | 翻译音频文件的文字信息,识别其中的敏感违规内容 | antispam | normal:正常 terrorism:暴力恐怖 porn:色情低俗 illegal:违法违规 politics:涉政敏感 abuse:谩骂灌水 ad:广告欺诈 feudalism:封建迷信 religion:宗教敏感 affairs:时事舆情 contraband:违禁物品 minors:未成年人 banned-website:非法网址 |
音转文识别 | 翻译音频文件的文字信息 | asr | normal: 正常 |
限制类别 | 说明 |
---|---|
文件来源 | 以HTTP/HTTPS开头的音频URL地址 |
文件时长 | 默认最大长度为5分钟,更长的音频文件支持,请联系技术支持 |
文件大小 | 单个音频文件50MB以内 |
文件格式 | 支持aac、mp3、m4a、mp4媒体格式,更多格式支持,请联系技术支持 |
语种支持 | 敏感词识别当前支持中文、印度尼西亚语,更多语种支持,请联系技术支持 |
并发限制 | 每秒最多可提交20段声音片段审核,同时在处理的声音片段数量不超过200条,如需更高并发,请联系技术支持 |
区域限制 | 中国大陆,其他国家和地区支持,请联系技术支持 |
结果缓存 | 服务端处理完后,结果会缓存2小时用于调用方查询,超过2小时结果会自动清理 |
使用HTTP POST方式发起审核请求
事项 | 说明 |
---|---|
请求方法 | POST |
请求协议 | HTTPS |
请求域名 | ai.jocloud.com |
请求路径 | app/{appid}/v1/audio/async/submit?traceId=uuid-xxxx-xxxx-xxxx-xxxx |
请求参数 | appid:用户的应用ID traceId:uuid字符串,用于排查问题时对账,建议每次请求使用不同值 |
请求头部 | Content-Type: application/json;charset=UTF-8 token: 鉴权Token,生成方式参考 认证鉴权 |
请求Body | JSON字符串,详细定义如下 |
表. body数据结构
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
actions | 字符串数组 | 是 | 检测类型,可选值包括: - porn: 声音娇喘识别 - antispam: 敏感词识别 - asr: 音转文识别 |
data[] | JSON数组 | 是 | 指定检测对象信息列表,JSON数组中每个元素是一个声音检测对象结构体(见下方请求data表)。 单次请求中最多可处理5个音频片段 |
callback | 字符串 | 否 | 结果回调路径,支持HTTP/HTTPS回调。允许为空,当回调为空时,用户可以通过查询接口获得检测结果 |
sequence | 字符串 | 否 | 该值用于回调通知请求中的签名。当使用回调时该字段必须提供。详细使用方法见检测结果回调说明 |
表. 请求data
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
dataId | 字符串 | 是 | 对象唯一标识,如:uuid-xxxx-xxxx-xxxx-xxxx |
dataType | 字符串 | 是 | 数据类型 - URL: http/https开头的url地址 |
content | 字符串 | 是 | 待检测的声音片段URL地址 |
context | JSON | 否 | 用户自定义上下文数据,返回结果时自动带上。 |
extra | JSON | 否 | 附加配置,定义见下表 |
表. extra
名称 | 类型 | 描述 |
---|---|---|
lang | 字符串 | antispam 敏感词检测使用的语言,默认为中文,可选值: - chinese:中文 - bahasa:印尼语 |
响应内容为json对象,详细定义如下
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 调用失败时的错误码,具体请参见 错误码 |
message | 字符串 | 是 | 调用失败时的错误信息 |
traceId | 字符串 | 是 | 对应请求参数中的traceId |
requestId | 字符串 | 是 | 系统针对本次请求生成的唯一请求标识,用于后续结果回调和状态查询 |
timestamp | 整型 | 是 | 当前unix时间戳,单位:秒 |
服务器处理完毕后,会通过调用时填写的callback地址,把结果返回给调用方。
回调方式 :https post
回调路径 :提交检测时填写的callback地址
回调首部 :为防止结果被篡改,在header增加一个checksum项用于校验内容是否合法。
说明:
checksum串生成方法如下:提交检测时携带参数sequence与结果body拼凑成字符串,通过SHA256算法生成checksum。
回调内容 :http body为json对象,详细定义如下
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 调用失败时的错误码,具体请参见 错误码 |
message | 字符串 | 是 | 调用失败时错误信息 |
traceId | 字符串 | 是 | 透传请求参数中的traceId内容 |
requestId | 字符串 | 是 | 系统针对本次检查请求生成的唯一标识 |
timestamp | 整型 | 是 | 当前unix时间戳,单位:秒 |
data[] | JSON数组 | 否 | 检测结果数据列表(具体结构见下方返回data表),数组中每一项表示一个数据的处理结果,在出错的情况下该字段可能为空。 |
表 data
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 数据处理错误码,详见 数据处理和检测错误码 |
message | 字符串 | 是 | 错误描述信息 |
dataId | 字符串 | 是 | 对应请求中的dataId |
taskId | 字符串 | 是 | 针对该检查对象多个检测类型生成的唯一任务标识 |
context | JSON | 否 | 对应请求中的context |
results[] | JSON数组 | 否 | 返回结果数据。调用成功时(code==200),返回结果中包含一个或多个元素。每个元素表示一种action的处理结果,具体结构见 表 result |
表 result
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 检测错误码,详见 数据处理和检测错误码 |
message | 字符串 | 是 | 错误描述信息 |
action | 字符串 | 是 | 检测类型,和调用请求中的检测类型(actions)对应 |
label | 字符串 | 是 | 检测结果标签,取值与action有关。具体取值参见上面审核类型及对应标签说明表 |
rate | 浮点数 | 是 | 检测结果标签的概率,取值范围在[0.00 - 1.00],值越大表示可信度越高 |
suggestion | 字符串 | 是 | 操作建议 pass:正常,无需操作 block:违规,建议做违规处罚 review:疑似,检测结果不确定,需要进一步人工审核 |
duration | 浮点数 | 是 | 声音数据播放时长 |
text | 字符串 | 否 | 音译文文本内容。当action为antispam或asr时才会存在该字段 |
segment[] | JSON数组 | 否 | 疑似和违规视频帧或音频段识别结果列表。不同action对应不同结构的segment参数,详见 表porn-segment 和 表 antispam-segment |
表 porn-segment
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
begin | 浮点数 | 是 | 音频片段开始时间,单位:秒 |
end | 浮点数 | 是 | 音频片段结束时间,单位:秒 |
score | 浮点数 | 是 | 声音娇喘匹配程度,取值[0~100],分数越高匹配程度越高 |
表 antispam-segment
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
begin | 浮点数 | 是 | 音频片段开始时间,单位:秒 |
end | 浮点数 | 是 | 音频片段结束时间,单位:秒 |
extraData[] | JSON数组 | 否 | 该音频分段的敏感词识别结果列表,元素结构见下面表 antispam-extraData |
表. antispam-extraData
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
hint | JSON数组 | 否 | 命中的关键字 |
label | 字符串 | 否 | 命中的关键字所属类型 |
rate | 浮点数 | 否 | 无意义,恒为"1.0" |
服务器处理完毕,会采用callback方式回调,建议优先使用回调方式接收处理结果;如果调用方有需要,可以通过以下查询接口,查到处理状态和结果。
事项 | 说明 |
---|---|
请求方法 | GET |
请求协议 | HTTPS |
请求域名 | ai.jocloud.com |
请求路径 | app/{appid}/v1/audio/async/results?traceId=uuid-xxxx-xxxx-xxxx-xxxx&requestId=yyyy |
请求参数 | traceId为uuid字符串,用于排查问题时对账,建议每次请求使用不同值。 requestId为需要查询的请求id,即为在提交检测任务返回结果中返回的requestId。 |
请求头部 | Content-Type: application/json;charset=UTF-8 token: 鉴权token,生成方式参考 认证鉴权 |
响应内容为JSON对象,详细定义如下
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 调用失败的错误码,详见 错误码 |
message | 字符串 | 是 | 错误信息描述 |
traceId | 字符串 | 是 | 透传请求参数中的traceId内容 |
requestId | 字符串 | 是 | 本次查询对应的requestId,与请求参数一致 |
status | 字符串 | 是 | 任务状态 (received-待处理, processing-处理中,completed-已完成) |
timestamp | 整型 | 是 | 当前unix时间戳,单位:秒 |
data[] | 数组 | 否 | 返回结果数据。调用成功时(code==200),元素定义见上面表返回表 data |
# -*- coding: utf-8 -*-
#! python3.5
import requests
import uuid
import base64
host = "https://ai.jocloud.com"
appid = 123456789 # 您的业务ID
restful_id = '********************' # 您的证书ID
restful_secret = '********************' # 您的证书秘钥
traceid = str(uuid.uuid4())
dataid = str(uuid.uuid4())
# url
url = host + '/app/%s/v1/audio/async/submit?traceId=%s' % (appid, traceid)
callback = 'http://127.0.0.1/check?dataid=%s' % dataid
# headers
headers = {
"content-type": "application/json"
}
auth = base64.b64encode(("%s:%s" % (restful_id, restful_secret)).encode('utf-8'))
headers['token'] = 'Base ' + auth.decode()
# content
values = {
'actions': ['porn'],
'data': [
{
'dataType': 'URL',
'content': 'http://static.s3.huajiao.com/Object.access/hj-video/NjJhYWU0OTZmOTY5ZDZkM2UxZDBjZDE0MWNkMjljMDcubXAz',
'dataId': dataid,
'context': {'uid': 12345}
}
],
'callback': callback,
'sequence': 'test'
}
# request
res = requests.post(url, json=values, headers=headers)
print('code=%s, data=%s\n' % (res.status_code, res.text))
请求响应
{
"code": 200,
"message": "OK",
"traceId": "ff1ec05d-46e7-4235-9c46-cd44b684f043",
"requestId": "d9f3171b-bd1f-48b1-b663-b232e4ed156b",
"timestamp": 1584088487
}
发起查询
# -*- coding: utf-8 -*-
#! python3.5
import requests
import uuid
import base64
host = "https://ai.jocloud.com"
appid = 123456789 # 您的业务ID
restful_id = '********************' # 您的证书ID
restful_secret = '********************' # 您的证书秘钥
requestId = 'd9f3171b-bd1f-48b1-b663-b232e4ed156b'# 填写检测请求响应结果携带的requestId
traceid = str(uuid.uuid4())
dataid = str(uuid.uuid4())
# url
url = host + '/app/%s/v1/audio/async/results?traceId=%s&requestId=%s' % (appid, traceid, requestId)
# headers
headers = {
"content-type": "application/json"
}
auth = base64.b64encode(("%s:%s" % (restful_id, restful_secret)).encode('utf-8'))
headers['token'] = 'Base ' + auth.decode()
# request
res = requests.get(url, headers=headers)
print('code=%s, data=%s\n' % (res.status_code, res.text))
请求响应
{
"code": 200,
"data": [
{
"code": 200,
"message": "OK",
"context": { "uid": 12345 },
"dataId": "69c5b065-d0bf-47c5-84cc-252f6dbf6979",
"results": [
{
"code": 200,
"message": "OK",
"action": "porn",
"label": "moan",
"rate": 0.7400000095367432,
"suggestion": "review",
"duration": 10,
"segment": [
{
"begin": 0,
"end": 10,
"score": 74
}
]
}
],
"taskId": "36c1f70f-89ae-47c3-ba97-40b0a82af7d7"
}
],
"message": "OK",
"requestId": "d9f3171b-bd1f-48b1-b663-b232e4ed156b",
"status": "completed",
"timestamp": 1584088487,
"traceId": "f257b637-692c-4033-85aa-ad2ebbc50a89"
}
版本 | 时间 | 说明 |
---|---|---|
V1.1.0 | 2020-10-14 | 增加asr功能支持 |
v1.0.1 | 2020-07-24 | 增加印度尼西亚语支持 |
v1.0.0 | 2020-03-13 | 初始版本 |