异步审核

1. 功能介绍

异步审核音频内容中的不良信息和违法违规内容,给出审核结果和处理建议。调用方提交审核语音片段并指定需要检测的类型后,服务器处理将通过回调方式返回检测结果。相对于同步审核,异步审核可接受的处理数据更多,耗时也会响应增大。

检测类型及对应标签如下:

检测类型说明actionlabel
娇喘识别检测音频文件的声纹特征,识别其中的娇喘等违规特征pornnormal:正常
moan:娇喘
敏感词识别翻译音频文件的文字信息,识别其中的敏感违规内容antispamnormal:正常
terrorism:暴力恐怖
porn:色情低俗
illegal:违法违规
politics:涉政敏感
abuse:谩骂灌水
ad:广告欺诈
feudalism:封建迷信
religion:宗教敏感
affairs:时事舆情
contraband:违禁物品
minors:未成年人
banned-website:非法网址
音转文识别翻译音频文件的文字信息asrnormal: 正常

2. 使用限制

限制类别说明
文件来源以HTTP/HTTPS开头的音频URL地址
文件时长默认最大长度为5分钟,更长的音频文件支持,请联系技术支持
文件大小单个音频文件50MB以内
文件格式支持aac、mp3、m4a、mp4媒体格式,更多格式支持,请联系技术支持
语种支持敏感词识别当前支持中文、印度尼西亚语,更多语种支持,请联系技术支持
并发限制每秒最多可提交20段声音片段审核,同时在处理的声音片段数量不超过200条,如需更高并发,请联系技术支持
区域限制中国大陆,其他国家和地区支持,请联系技术支持
结果缓存服务端处理完后,结果会缓存2小时用于调用方查询,超过2小时结果会自动清理

3. 接口说明

3.1 提交检测

使用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,生成方式参考 认证鉴权
请求BodyJSON字符串,详细定义如下

表. 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地址
contextJSON用户自定义上下文数据,返回结果时自动带上。
extraJSON附加配置,定义见下表

表. extra

名称类型描述
lang字符串antispam 敏感词检测使用的语言,默认为中文,可选值:
- chinese:中文
- bahasa:印尼语

响应结果

响应内容为json对象,详细定义如下

名称类型是否必需描述
code整型调用失败时的错误码,具体请参见 错误码
message字符串调用失败时的错误信息
traceId字符串对应请求参数中的traceId
requestId字符串系统针对本次请求生成的唯一请求标识,用于后续结果回调和状态查询
timestamp整型当前unix时间戳,单位:秒

3.2 结果回调

服务器处理完毕后,会通过调用时填写的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字符串针对该检查对象多个检测类型生成的唯一任务标识
contextJSON对应请求中的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

名称类型是否必需描述
hintJSON数组命中的关键字
label字符串命中的关键字所属类型
rate浮点数无意义,恒为"1.0"

3.3 结果查询

服务器处理完毕,会采用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

4. 调用示例

4.1 提交检测请求

# -*- 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
}

4.2 结果查询

发起查询

# -*- 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"
}

5. 更新历史

版本时间说明
V1.1.02020-10-14增加asr功能支持
v1.0.12020-07-24增加印度尼西亚语支持
v1.0.02020-03-13初始版本

文档是否有解决您的问题?

有帮助 没帮助
提交成功,非常感谢您的反馈!

反馈

TOP