同步审核音频内容中的不良信息和违法违规内容,给出审核结果和处理建议。调用方提交审核语音片段,指定需要检测的类型,服务器同步返回调用结果。
检测类型及对应标签如下:
检测类型 | 说明 | action | label |
---|---|---|---|
娇喘识别 | 检测音频文件的声纹特征,识别其中的娇喘等违规特征 | porn | normal:正常 moan:娇喘 |
敏感词识别 | 翻译音频文件的文字信息,识别其中的敏感违规内容 | antispam | normal:正常 terrorism:暴力恐怖 porn:色情低俗 illegal:违法违规 politics:涉政敏感 abuse:谩骂灌水 ad:广告欺诈 feudalism:封建迷信 religion:宗教敏感 affairs:时事舆情 contraband:违禁物品 minors:未成年人 banned-website:非法网址 |
音转文识别 | 翻译音频文件的文字信息 | asr | normal: 正常 |
限制类别 | 说明 |
---|---|
文件来源 | 1)以HTTP/HTTPS开头的音频URL地址 2)音频二进制流Base64编码字符串 |
文件时长 | 同步检测场景下,单个音频时长不大于60s |
文件大小 | 单个音频文件10MB以内,单个请求大小应该小于50MB |
文件格式 | 支持aac、amr、mp3、wav音频格式,更多音频格式支持,请联系技术支持 |
语种支持 | 敏感词识别当前支持中文、印度尼西亚语,更多语种支持,请联系技术支持 |
超时限制 | 文件下载超时限制为10秒内,请保证文件存储服务稳定可靠;建议用户侧接口调用超时控制为40s |
并发限制 | 每秒最多可处理20个音频片段[20QPS],如需更高QPS并发,请联系技术支持 |
区域限制 | 中国大陆,其他国家和地区支持,请联系技术支持 |
事项 | 说明 |
---|---|
请求方法 | POST |
请求协议 | HTTPS |
请求域名 | ai.jocloud.com |
请求路径 | app/{appid}/v1/audio/sync?traceId=uuid-xxxx-xxxx-xxxx-xxxx |
请求参数 | appid为用户的应用ID traceId为uuid字符串,用于排查问题时对账,建议每次请求使用不同值 |
请求头部 | Content-Type: application/json;charset=UTF-8 token: 鉴权token,生成方式参考 认证鉴权 |
请求Body | json字符串,详细定义如下 |
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
actions | 字符串数组 | 是 | 检测类型,可选值包括: - porn: 声音娇喘识别 - antispam: 敏感词识别 - asr: 音转文识别 |
data[] | JSON数组 | 是 | 指定检测对象信息列表,JSON数组中每个元素是一个声音检测对象结构体(见下方请求data表)。 单次请求中最多可处理5个音频片段。 |
表. 请求data
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
dataId | 字符串 | 是 | 对象唯一标识,如:uuid-xxxx-xxxx-xxxx-xxxx |
dataType | 字符串 | 是 | 数据类型 - URL: http/https开头的url地址 - BASE64: 二进制流base64编码串 |
content | 字符串 | 是 | 待检测音频内容 (如dataType字段填URL,content字段对应填写音频url地址) |
context | JSON | 否 | 用户自定义上下文数据,返回结果时自动带上。 |
extra | JSON | 否 | 附加配置,定义见下表 |
表. extra
名称 | 类型 | 描述 |
---|---|---|
lang | 字符串 | antispam 敏感词检测使用的语言,默认为中文,可选值: - chinese:中文 - bahasa:印尼语 |
响应内容为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时才会存在该字段 |
extraData[] | JSON数组 | 否 | 检测结果扩展信息,不同action扩展信息内容不一样,详见下面表 porn-extradata 和 表 antispam-extradata |
表 porn-extraData
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
begin | 浮点数 | 否 | 音频片段开始时间,单位秒 |
end | 浮点数 | 否 | 音频片段结束时间,单位秒 |
score | 浮点数 | 否 | 声音娇喘匹配程度,取值[0~100],分数越高匹配程度越高 |
表 antispam-extraData
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
hint | Json数组 | 否 | 命中的关键字 |
label | 字符串 | 否 | 命中的关键字所属类型 |
rate | 浮点数 | 否 | 无意义,恒为"1.0" |
以下是一个python的调用示例代码:
# -*- 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/sync?traceId=%s' % (appid, traceid)
# 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://127.0.0.1/some-url.aac',
'dataId': dataid,
'context': {'uid': 12345}
}
]
}
# 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": "36b5eaa2-6e56-41ac-9c1a-08a73d8143b4",
"requestId": "a72a64a8-2e15-47be-b900-3e64ca731445",
"timestamp": 1584082795,
"data": [
{
"code": 200,
"message": "OK",
"dataId": "3d9c927a-a0f4-4a73-b712-db5aded30677",
"taskId": "17428f1a-a86a-42c0-9c90-aa579aba436e",
"context": {
"uid": 12345
},
"results": [
{
"action": "porn",
"code": 200,
"duration": 10,
"extraData": [
{
"begin": 0,
"end": 15,
"score": 76
}
],
"label": "moan",
"message": "OK",
"rate": 0.7599999904632568,
"suggestion": "review"
}
]
}
]
}
版本 | 时间 | 说明 |
---|---|---|
V1.1.0 | 2020-10-14 | 增加asr功能支持 |
v1.0.2 | 2020-07-31 | 调整单次请求中最多可带5个音频 |
v1.0.1 | 2020-07-24 | 增加印度尼西亚语支持 |
v1.0.0 | 2020-03-13 | 初始版本 |