点播语音结果获取接口

2024.08.16 12:40:55

    接口地址

    https://as.dun.163.com/v3/audio/callback/results

    接口描述

    语音检测结果获取接口,获取离线处理的数据后,下次调用,不会再次返回之前获取过的离线数据。建议您使用POST请求, 且仅接受 application/x-www-form-urlencoded 编码格式。

    查看V1.0结果获取接口文档

    查看v3.4结果获取接口文档

    接口请求频率

    小于10s/20次,请求频率过快服务器会拒绝处理。

    请求参数

    该接口参数与请求公共参数一致,详细见 请求公共参数

    参数名称 类型 是否必选 最大长度 描述
    version String Y 4 接口版本v3.5

    响应结果

    响应字段如下,响应通用字段已省略,详细见 响应通用字段

    返回结果数据结构

    反垃圾检测结果

    antispam 数组数据结构

    参数名称 类型 描述
    asrStatus Number 音频翻译结果,2:检测中,3:检测完成,4:检测失败
    asrResult Number 音频翻译检测失败原因,1:文件格式错误,2:文件下载失败,3:解析失败,4:音频流不存在
    action Number 检测结果,0:通过,1:嫌疑,2:不通过
    taskId String 点播音频提交生成的唯一数据标识,可以根据该标识查询视频数据最新结果
    censorSource Number 审核来源,0:易盾人审,1:客户人审,2:易盾机审
    censorTime Number 人工审核完成时间,毫秒单位时间戳(13位)
    segments json数组 音频数据所在断句详细信息
    labels json数组 分类信息
    censorLabels json数据 支持在智能审核系统自定义标签分类信息
    duration Number 音频时长字段,单位s

    censorLabels 数据结构

    参数名称 类型 描述
    code Number 在智能系统配置自定义便签之后会生成一个唯一的标签ID
    desc String 在智能审核系统配置自定义标签备注

    segments 数组数据结构

    参数名称 类型 描述
    startTime Number 断句开始时间,单位秒
    endTime Number 断句结束时间,单位秒
    content String 音频数据所在断句语音识别原文内容,支持返回异常数据所在断句内容或全部原文内容
    label Number 分类信息,100:色情,200:广告,260:广告法,300:暴恐,400:违禁,500:涉政,600:谩骂,900:其他,1100:涉价值观
    level Nubmber 分类级别,0:通过,1:嫌疑,2:不通过
    leaderName String 领导人名,若命中领导人声纹,返回对应的领导人名
    hintList json数组 线索详细信息

    labels 数据结构

    参数名称 类型 描述
    label Number 分类信息,100:色情,200:广告,260:广告法,300:暴恐,400:违禁,500:涉政,600:谩骂,1100:涉价值观
    level Number 分类级别,0:通过,1:嫌疑,2:不通过
    subLabels json数组 细分类信息,v3.5版本及以上均会返回命中细分类信息

    subLabels 数据结构

    参数名称 类型 描述
    details json对象 其他信息
    subLabel String 细分类,详细编码请参考下方对应细分类编码对应表

    自定义细分类

    易盾支持sublabel自定义细分类过检并返回,如有需求,可联系您的专属安全策略经理添加。

    details 数据结构

    参数名称 类型 描述
    hitType Number 命中检测器类型:10:用户名单 11:IP名单 12:设备名单 30:敏感词 110:IP地区限制 130:声纹检测
    hint json数组 线索信息,用于定位文本中有问题的部分,辅助人工审核
    hitInfos json数组 线索详细信息

    hitInfos 数据结构

    参数名称 类型 描述
    hitType Number 线索分类信息,返回10:表示命中用户自定义添加用户名单,返回11:表示命中用户自定义添加ip名单,返回30:表示命中用户自定义添加敏感词
    hitClues String hitTyp命中30自定义添加敏感词,返回命中的自定义敏感词内容,如果没有命中hitType:30,则不返回该字段

    hint 数据结构

    参数名称 类型 描述
    value String 命中的敏感词或者声纹检测的分值
    segments json数组 命中敏感词或者声纹检测的音频时间点

    segments 数据结构

    参数名称 类型 描述
    startTime Number 开始时间,单位秒
    endTime Number 结束时间,单位秒

    语音识别检测结果

    asr 数组数据结构

    参数名称 类型 描述
    taskId String 唯一标识
    details json数组 语音识别检测结果

    details 数据结构

    参数名称 类型 描述
    startTime Number 断句开始时间点,单位毫秒
    endTime Number 断句结束时间点,单位毫秒
    content String 语音识别结果

    语种检测结果

    language 数组数据结构

    参数名称 类型 描述
    taskId String 唯一标识
    details json数组 语种检测结果

    details 数据结构

    参数名称 类型 描述
    type String 语种类型,支持检测语种类型请参考语种代码表
    segments json数组 识别语种检测的音频时间点

    segments 数据结构

    参数名称 类型 描述
    startTime Number 最近开始时间点,单位毫秒
    endTime Number 最近结束时间点,单位毫秒

    人声属性结果

    voice 数组数据结构

    参数名称 类型 描述
    taskId String 唯一标识
    mainGander String 音频性别建议值,male/female

    响应示例

    当获取到离线结果时,输出示例如下:

    {
        "code":200,
        "msg":"ok",
        "antispam":[
            {
                "action":2,
                "asrStatus":3,
                "taskId":"20234071a83c4498a6d606f63e45134f",
    	    "censorSource":"2",
                "censorTime":1612234421000,
    	    "duration";10,
                "segments":[
                    {
                        "startTime":6,
                        "endTime":10,
                        "content":"本拉登你都不知道",
                        "label":300,
                        "level":2,
                        "hintList":[
                            "本拉登"
                        ]
                    },
                    {
                        "startTime":18,
                        "endTime":21,
                        "content":"他是卖那个匕首的店长耶。",
                        "label":400,
                        "level":2,
                        "hintList":[
                            "卖那个匕首"
                        ]
                    }
                ],
                "labels":[
                    {
                        "label":400,
                        "level":2,
                        "subLabels":[
                            {
                                "subLabel":"400017",
                                "details":{
                                    "hint":[
                                        {
                                            "value":"卖那个匕首",
                                            "segments":[
                                                {
                                                    "startTime":18,
                                                    "endTime":21
                                                }
                                            ]
                                        }
                                    ],
                                    "hitType":30
                                }
                            }
                        ]
                    },
                    {
                        "label":300,
                        "level":2,
                        "subLabels":[
                            {
                                "subLabel":"400017",
                                "details":{
                                    "hint":[
                                        {
                                            "value":"本拉登",
                                            "segments":[
                                                {
                                                    "startTime":6,
                                                    "endTime":10
                                                }
                                            ]
                                        }
                                    ],
                                    "hitType":30
                                }
                            }
                        ]
                    }
                ],
                "callback":"自定义内容"
            }
        ],
    		],
        "language":[
            {
                "taskId":"20234071a83c4498a6d606f63e45134f",
                "details":[
                    {
                        "type":"English",
                        "segments":[
                            {
                                "startTime":0,
                                "endTime":10
                            }
                        ]
                    }
                ]
            }
        ],
        "voice":[
            {
                "taskId":"20234071a83c4498a6d606f63e45134f",
                "mainGender":"male"
            }
        ],
    		"censorLabels":[
    	{
    	  "code":自定义标签映射ID
    	 }]
    	
    
    }
    

    当无最新离线结果需要获取时,输出示例如下:

    {
        "code": 200,
        "msg": "ok",
        "antispam":[],
        "language":[]
    }
    

    点播语音回调方式获取

    回调方式以数据为维度由客户设置回调地址;人审完成之后,调用客户提供的http地址将结果推送到客户设置的接口地址。

    回调接入说明

    接入回调方式很简单,只需要在调用在线检测接口请求参数中指定了回调通知参数callbackUrl(即一个http(s)协议接口的URL)。需要您的回调接口支持http协议,支持POST方法,传输数据编码采用utf-8。

    业务类型 回调参数名称 类型 最大长度 描述
    点播音频 callbackUrl String 256 点播音频提交接口参数中添加callbackUrl字段

    回调状态

    您服务端接收到我们回调的结果后,返回的HTTP状态码为200时,表示推送成功,其他的HTTP状态码均视为您接收失败,我们将每隔10分钟推送一次,如果一直失败,持续一天后不再推送;回调接口超时时间设置为2s,为了保证顺利接收数据,客户需保证接收接口性能稳定并且保证幂等性。

    请求公共参数

    参数名称 类型 是否必传 描述
    secretId String Y 产品秘钥 id ,由易盾反垃圾云服务分配,产品标识
    businessId String Y 业务id ,由易盾反垃圾云服务分配,业务标识
    signature String Y 请求签名,用来验证此次请求的合法性,具体算法见 接口鉴权
    callbackData String Y 主动推送推送数据,格式为json字符串

    secretId,businessId,signature参数用来给数据接收接口做签名鉴权用

    接口鉴权

    回调结果可以通过业务开通时易盾分配的密钥信息字段进行接口鉴权,鉴权粒度是否要精确到业务级别,用户可以根据需要自行决定

    /**
     * 通过HttpServletRequest做签名验证
     * 
     * @param request
     * @return
     */
    public static boolean verifySignature(HttpServletRequest request) {
        String secretId = request.getParameter("secretId");
        String businessId = request.getParameter("businessId");
        String signature = request.getParameter("signature");
        if (StringUtils.isEmpty(secretId) || StringUtils.isEmpty(signature)) {
            // 签名参数为空,直接返回失败
            return false;
        }
        Map<String, String> params = Maps.newHashMap();
        for (String paramName : request.getParameterMap().keySet()) {
            if (!"signature".equals(paramName)) {
                params.put(paramName, request.getParameter(paramName));
            }
        }
        // SECRETKEY:产品私有密钥 SECRETID:产品密钥ID BUSINESSID:业务ID,开通服务时,易盾会提供相关密钥信息
        String serverSignature = getSignature(SECRETKEY, params);
        return signature.equals(serverSignature) && SECRETID.equals(secretId) && BUSINESSID.equals(businessId);
    }
    
    /**
    * 生成签名信息
    * @param secretKey 产品私钥
    * @param params 接口请求参数名和参数值map,不包括signature参数名
    * @return
    * @throws UnsupportedEncodingException
    */
    public static String genSignature(String secretKey, Map<String, String> params) throws UnsupportedEncodingException {
        // 1. 参数名按照ASCII码表升序排序
        String[] keys = params.keySet().toArray(new String[0]);
        Arrays.sort(keys);
    
        // 2. 按照排序拼接参数名与参数值
        StringBuffer paramBuffer = new StringBuffer();
        for (String key : keys) {
            paramBuffer.append(key).append(params.get(key) == null ? "" : params.get(key));
        }
        // 3. 将secretKey拼接到最后
        paramBuffer.append(secretKey);
    
        // 4. MD5是128位长度的摘要算法,用16进制表示,一个十六进制的字符能表示4个位,所以签名后的字符串长度固定为32个十六进制字符。
        return DigestUtils.md5Hex(paramBuffer.toString().getBytes("UTF-8"));
    }
    

    音频回调数据结构

    callbackData为Json字符串,数据结构如下:

    {
        "antispam":[
            {
                "action":2,
                "asrStatus":3,
                "taskId":"20234071a83c4498a6d606f63e45134f",
    	    "censorSource":"2",
    	    "censorTime":1612234421000,
    	    "duration";10,
    	    "segments":[
                    {
                        "startTime":6,
                        "endTime":10,
                        "content":"本拉登你都不知道",
                        "label":300,
                        "level":2,
                        "hintList":[
                            "本拉登"
                        ]
                    },
                    {
                        "startTime":18,
                        "endTime":21,
                        "content":"他是卖那个匕首的店长耶。",
                        "label":400,
                        "level":2,
                        "hintList":[
                            "卖那个匕首"
                        ]
                    }
                ],
                "labels":[
                    {
                        "label":400,
                        "level":2,
                        "details":{
                            "hint":[
                                {
                                    "value":"卖那个匕首",
                                    "segments":[
                                        {
                                            "startTime":18,
                                            "endTime":21
                                        }
                                    ]
                                }
                            ],
                            "hitType":30
                        },
                        "subLabels":[
                            "400017"
                        ]
                    },
                    {
                        "label":300,
                        "level":2,
                        "details":{
                            "hint":[
                                {
                                    "value":"本拉登",
                                    "segments":[
                                        {
                                            "startTime":6,
                                            "endTime":10
                                        }
                                    ]
                                }
                            ],
                            "hitType":30
                        },
                        "subLabels":[
                            "300016"
                        ]
                    }
                ],
                "callback":"自定义内容"
            }
        ],
        "language":[
            {
                "taskId":"20234071a83c4498a6d606f63e45134f",
                "details":[
                    {
                        "type":"English",
                        "segments":[
                            {
                                "startTime":0,
                                "endTime":10
                            }
                        ]
                    }
                ]
            }
        ],
        "voice":[
            {
                "taskId":"20234071a83c4498a6d606f63e45134f",
                "mainGender":"male"
            }
        ],
       "censorLabels":[
            {
    	    "code":自定义标签ID
    	}
        ]
    }
    
    
    Online Chat Tel:95163223 Free trial