直播语音离线接口方式获取接口

2022.08.15 16:29:36

    直播语音离线接口方式获取

    接口地址

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

    接口描述

    直播语音检测结果获取接口,获取离线处理的数据后,下次调用,不会再次返回之前获取过的离线数据。

    接口请求频率

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

    请求参数

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

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

    响应结果

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

    result 数据结构

    参数名称 类型 描述
    antispam json数组 反垃圾检测结果
    asr json数组 语音识别检测结果

    反垃圾检测结果

    antispam 数组数据结构

    参数名称 类型 描述
    taskId String 直播音频提交生成的唯一数据标识,可以根据该标识查询音频数据最新结果
    dataId String 数据id
    callback String 产品调用直播语音在线检测传递的 callback 字段数据
    censorSource Number 审核来源,0:易盾人审,1:客户人审,2:易盾机审
    duration Number 直播时长字段,单位s
    evidences json对象 直播断句证据信息
    reviewEvidences json对象 人审证据信息

    evidences 数据结构

    参数名称 类型 描述
    asrStatus Number 音频翻译结果,2:检测中,3:检测完成,4:检测失败
    asrResult Number 音频翻译检测失败原因,1:文件下载失败,2:音频流不存在,3:解析失败,4:文件格式错误
    action Number 检测结果,0:通过,1:嫌疑,2:不通过
    suggestionLevel Number 只有在嫌疑时可能返回,1:低嫌疑,2:高嫌疑
    startTime Number 最近开始时间点,单位毫秒
    endTime Number 最近结束时间点,单位毫秒
    content String 检测命中内容返回
    speakerId String 针对接入SDK监听客户,返回说话人ID信息
    url String 需要开启返回直播语音片段播放地址,请联系易盾策略经理
    segmentId String 断句id
    segments json数组 命中证据信息,通过时数据为空
    frontSegment json对象 关联证据信息,异常/嫌疑断句命中时返回,命中断句前20s的证据信息,包含前20s的音频语音识别内容及对应url,通过时数据为空

    frontSegment 数据结构

    参数名称 类型 描述
    content String 命中断句前20s的语音识别内容
    url String 命中断句前20s的音频url,可解析进行回放

    segments 数据结构

    参数名称 类型 描述
    label Number 分类信息,100:色情,200:广告,300:暴恐,400:违禁,500:涉政,600:谩骂,1100:涉价值观
    level Number 分类级别,1:不确定,2:确定
    subLabels json数组 细分类信息,可能包含多个

    subLabels 数据结构

    参数名称 类型 描述
    details json对象 命中线索信息
    subLabel String 二级细分类,详细编码请细分类编码对应表
    leaderName String 领导人名,若命中领导人声纹,返回对应的领导人名

    details 数据结构

    参数名称 类型 描述
    evidence String 命中线索内容
    hitInfos json数组 线索详细信息

    hitInfos 数据结构

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

    reviewEvidences 数据结构

    参数名称 类型 描述
    action Number 审核操作, 1为忽略, 2为警告, 3为断流, 4为提示
    actionTime Number 操作时间, UNIX_TIME时间戳, 毫秒为单位
    spamType Number 违规类型, 100-色情, 115-音乐内容低俗, 116-言论低俗涉黄, 121-发出涉黄声音, 122-ASMR, 200-广告, 211-商业推广, 212-提及竞品, 300-暴恐, 400-违禁, 500-涉政, 511-影响政府形象, 512-邪教迷信, 513-涉军事, 514-涉宗教, 515-国歌、严肃歌曲, 516-涉及少数民族,517-涉及政治敏感话题 800-不文明, 826-传播负面情绪, 827-违反公序良俗, 828-侵害他人隐私, 1000-其他, 1023-无营养, 1027-话题炒作, 1030-挂机, 1050-自定义
    speakerId String 针对接入SDK监听客户,针对房间内具体说话人的处罚,返回说话人ID信息,若为空,则针对房间维度处罚
    spamDetail String 违规详细说明
    warnCount Number 警告次数
    promptCount Number 提示次数
    segments json数组 人审断句信息, 可为空, 详细结构如下

    segments 数据结构

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

    增值服务-语音识别检测结果

    asr 数组数据结构

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

    增值服务-语种识别检测结果

    language 数组数据结构

    参数名称 类型 描述
    taskId String 唯一标识
    startTime Number 语音开始时间,单位毫秒
    endTime Number 语音结束时间 ,单位毫秒
    content String 语种类型,支持检测语种类型请参考语种代码表
    speakerId String 针对接入SDK监听客户,返回说话人ID信息

    响应示例

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

    {
        "code":200,
        "msg":"ok",
        "result":{
            "antispam": [
                {
                    "taskId":"2e81550098974e30b59b6f364348a2b9",
                    "callback":"",
                    "dataId":"157473",
    		"duration":100,  
                    "evidences":{
                        "action":2,
                        "asrStatus":2,
                        "startTime":1587632664165,
                        "endTime":1587632666955,
    		    "content":"本拉登",
                        "speakerId": "401139",
                        "segments":[
                            {
                                "label":300,
                                "level":2,
                                "subLabels":[
                                    {
                                         "details":{
                                         "evidence":"本拉登"
                                           },
                                         "subLabel":"500013"
                                     }
                                 ]
                            }
                        ],
    		  "url":"",
     "speakerId":"http://xxxxx",
                      "segmentId":"37d9d4612a094d698683619c62539341"
                    
    	"frontSegment": {
    						"content": ",老师给墨水多 这幅,那现在没有别的",
    						"url": "http://as.test.dun.163.com/v1/liveaudio/segment/play?Signature=ca4cf358dbc513d6e3ce873e09812b21&Expires=1619765788075&AccessKey=6e6a8d483e6a4d8f9c35168fabe634e5&BeginTime=1619679383383&EndTime=1619679387223&SpeakerId="
    					}	}
                },
                {
                    "taskId":"2e81550098974e30b59b6f364348a2b9",
                    "callback":"",
                    "dataId":"157473",
                    "reviewEvidences":{
                        "action":4,
                        "actionTime":1587634142122,
                        "spamType":828,
                        "spamDetail":"2132",
                        "warnCount":0,
                        "promptCount":2,
                        "segments":[
        
                        ],
                        "status":2
                    }
                }
            ],
            "asr": [
                {
                    "taskId":"2e81550098974e30b59b6f364348a2b9",
                    "startTime":1587632664165,
                    "endTime":1587632666955,
                    "content":"击毙本拉登"
                }
            ],
           "language":[
               {
                "taskId":2e81550098974e30b59b6f364348a2b9,
                "startTime":1,
                "endTime":10,
                "content":"en"
             }
           ]
        }
    }
    

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

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

    直播语音回调方式获取结果

    回调方式以数据为维度由客户设置回调地址;直播视频实时检测当检测到异常数据时,调用客户提供的回调接口。

    回调接入说明

    接入回调方式很简单,只需要在调用在线检测接口请求参数中指定了回调通知参数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字符串,数据结构如下:

    机审证据信息回调示例:

    {
                "taskId":"894c3dca9a4948ecb862c8e5e1f53a8f",
                "callback":"自定义内容",
                "dataId":"400421",
                "censorSource":2,
    	    "duration";100,  
                "evidences":{
                    "action":2,
                    "asrStatus":2,
                    "startTime":1603703546866,
                    "endTime":1603703564296,
                    "content":"嗯。",
                    "segments":[
                        {
                            "label":100,
                            "level":2,
                            "subLabels":[
                                {
                                    "details":{
                                        "evidence":"嗯(分)"
                                    },
                                    "subLabel":"100080"
                                }
                            ]
                        }
                    ],
                    "url":"http://as.dun.163.com/v1/liveaudio/segment/play?SpeakerId=401338",
                    "speakerId":"401338",
    		"segmentId":"37d9d4612a094d698683619c62539341"
    							
                }
      }
      
    

    人审证据信息回调示例:

    {
           "taskId":"2e81550098974e30b59b6f364348a2b9",
           "callback":"",
           "dataId":"157473",
           "censorSource":"0",
           "reviewEvidences":{
                    "action":4,
                    "actionTime":1587634142122,
                    "spamType":828,
                    "spamDetail":"2132",
                    "warnCount":0,
                    "promptCount":2,
                    "segments":[]
            }
    }
    
    Online Chat Tel:95163223