本文提供了调用语音反垃圾检测相关功能的API接口和具体参数说明,旨在帮助您编写程序构建HTTP调用请求。

  • 关于如何构造HTTP请求,请参见请求结构
  • 您也可以直接选用已构造好的HTTP请求,具体请参见SDK参考

提交语音检测任务

描述

业务接口/green/voice/asyncscan

提交异步检测语音检测任务。支持对语音流或语音文件进行检测,判断其中是否包含违规内容。
说明 语音异步检测默认使用中文语音检测引擎,仅支持少数英文单词。如果您需要检测纯英文语音,请通过工单联系我们进行调整。
检测任务提交成功后,可以通过调用查询异步语音检测任务接口获取检测结果,您也可以通过callback方式设置回调接口来获取检测结果。
说明 该API接口为收费接口,具体参考计费说明
语音流限制说明
  • 支持检测的语音流格式:.m3u8、.flv
  • 语音流支持的协议:HTTP、RTMP
  • 语音流时长 < 24小时
语音文件限制说明
  • 支持的语音文件大小 < 100 M
  • 支持的语音文件时长 < 30分钟
  • 支持的音频文件格式:.mp3、.wav、.aac、.wma、.ogg、.m4a、.amr
  • 支持的视频文件格式:.avi、.flv、.mp4、.mpg、.asf、.wmv、.mov、.rmvb、.rm

关于scene与label参数

在提交检测任务时,您需要指定scenes场景参数;而在检测返回结果中,则包含与您指定的场景对应的label结果分类参数。

在语音反垃圾中,scene与label的对应关系如下:
场景 描述 scene label
语音检测 识别语音中的违规内容。
说明 默认识别语言为中文。如果您需要识别英文内容,请提交工单联系阿里云技术支持人员。
antispam
  • normal:正常文本
  • spam:含垃圾信息
  • ad:广告
  • politics:涉政
  • terrorism:暴恐
  • abuse:辱骂
  • porn:色情
  • flood:灌水
  • contraband:违禁
  • meaningless:无意义
  • customized:自定义(比如命中自定义关键词)

请求参数

关于在请求中必须包含的公共请求参数,请参考公共参数

请求body是一个JSON对象,字段说明如下:
名称 类型 是否必需 描述
bizType 字符串 该字段用于标识业务场景。针对不同的业务场景,您可以配置不同的内容审核策略,以满足不同场景下不同的审核标准或算法策略的需求。您可以通过云盾内容安全控制台创建业务场景(bizType),或者通过工单联系我们帮助您创建业务场景。
scenes 字符串数组 指定检测场景,取值:antispam
live 布尔型 是否为直播流。默认为false,表示为普通语音文件检测;若需要检测语音流,该值必须传入true。
callback 字符串 异步检测结果回调通知您的URL。支持HTTP和HTTPS。具体结构见callback返回参数说明
说明 该字段为空时,您必须定时检索检测结果。
seed 字符串 随机字符串,该值用于回调通知请求中的签名。
说明 提供callback时,必须提供该参数。
tasks JSON数组 检测任务列表,JSON数组中的每个元素是一个结构体,最多支持100个元素。每个元素的具体机构见voice结构体参数说明

callback说明

如果您在请求参数中指定了回调通知参数callback,被回调callback值,即一个HTTP(S)协议接口的URL,则需要支持POST方法,传输数据编码采用utf-8,并且支持两个表单参数checksumcontent。系统将按以下描述的生成规则和格式设置checksum和content的值,调用您的callback接口返回检测内容。

您服务端接收到我们推送的结果后,返回的HTTP状态码为200时,表示推送成功,其他的HTTP状态码均视为您接收失败,我们将最多重复推送16次。

表 1. callback返回参数说明
名称 类型 是否必需 描述
checksum String 用户uid + seed + content拼成字符串,通过SHA256算法生产。用户UID即账号ID,您可在阿里云控制台上查询。为防篡改,您可以在获取到推送结果时,按此算法生成字符串,与checksum进行一次校验。
content String JSON字符串格式,请自行解析反转成JSON对象。具体结构见data字段说明
表 2. voice结构体参数说明
名称 类型 是否必需 描述
clientInfo JSON结构体 客户端信息,参见公共参数中的公共查询参数。
服务器会把全局的clientInfo和此处独立的clientInfo合并。
说明 独立的clientInfo优先级更高。
dataId 字符串 用于标识一次调用。
url 字符串 需要检测的语音文件或语音流下载地址。

返回参数

返回结果说明,参见返回结果

返回body中的Data字段是JSON数组,每一个元素包含如下字段:

名称 类型 是否必需 描述
code 整型 错误码,和HTTP的status code一致。
msg 字符串 错误描述信息。
dataId 字符串 对应请求中的dataId
taskId 字符串 该检测任务的ID,可用于轮询检测结果。

示例

请求示例
{
    "scenes":["antispam"],
    "live":true,
    "tasks":[
        {
            "dataId":"1a90c9d6-6a81-42db-bbe1-e36102f3dd5e",
            "url":"http://xxxxx.com/test.flv"
        }
    ]
}
返回示例
{
  "msg": "OK",
  "code": 200,
  "requestId": "33921869-CF8A-4E62-8C31-44F37341FFC1",
  "data": [
    {
      "code": 200,
      "msg": "OK",
      "dataId": "1a90c9d6-6a81-42db-bbe1-e36102f3dd5e",
      "taskId": "voice3VayNFGf43J6S9mHYp1HYJ-123mfd"
    }
  ]
}

查询语音检测结果

描述

业务接口/green/voice/results

如果您在提交语音异步检测任务时未设置callback地址,则需要调用本接口轮询检测结果。
  • 对于语音文件检测任务,每次查询或者通过callback方式都会返回已检测完的语音检测结果(仅返回已检测完成的任务检测结果)。建议您将查询间隔设置为30秒,检测结果保留4个小时,并及时查询并保存结果。
  • 对于语音流检测任务,每次轮询会返回最近10段检测到的语音内容检测结果,建议您将查询间隔设置为30秒;如果通过callback的方式获取语音流检测结果,系统每次检测出语音内容后都会发送回调通知。
说明 该API接口为免费接口。

请求参数

关于在请求中必须包含的公共请求参数,请参考公共参数

请求body是一个JSON数组,字段说明如下:
名称 类型 是否必需 描述
body JSON数组 要查询的taskId列表,最大长度不超过100。

返回参数

返回结果说明,参见返回结果

返回body中的Data字段是JSON数组,每一个元素包含如下字段:
名称 类型 是否必需 描述
code 整型 错误码,和HTTP的status code一致。
  • 200:表示检测成功。
  • 280:表示处理中,需要继续轮询。
  • 其他:表示任务失败。
说明 只有返回280表示任务还在进行,需要继续轮询该任务的检测结果。返回其他值均表示该语音检测任务已结束;如果实际上该语音检测没有结束,而是因为网络异常等原因异常结束,您可以重新提交语音异步检测任务。
msg 字符串 错误描述信息。
dataId 字符串 对应的请求中的dataId
taskId 字符串 该检测任务的ID。
url 字符串 对应的请求中的URL。
new_url 字符串 如果检测内容为语音流,检测结束后会转存文件地址。签名时间为2分钟,需要及时转存。
说明 默认该字段不返回,需要请通过工单联系我们进行配置。
results JSON数组 检测成功时(code = 200)返回的检测结果。该结果包含一个或多个元素,每个元素是个结构体,对应一个场景。每个元素的具体结构描述见result结构体说明
表 3. result结构体说明
名称 类型 是否必需 描述
scene 字符串 检测场景,和调用请求中的场景对应。
label 字符串 检测结果的分类,与具体的scene对应。取值范围参考scene 和 label说明
suggestion 字符串 建议您执行的操作,取值:
  • pass:内容不违规,建议放行
  • review:内容可能违规,建议进行人工审核
  • block:内容违规,建议隔离
rate 浮点数 结果为该分类的概率,取值范围为[0.00-100.00]。值越高,表示越有可能属于该分类。

分值仅供参考,您需要关注labelsuggestion内容。

details JSON数组 语音对应的文本详情。每一句文本对应一个元素,包含一个或者多个元素,每个元素的具体结构见detail结构体说明
表 4. detail结构体说明
名称 类型 是否必需 描述
startTime 整型 句子开始的时间,单位是秒。
endTime 整型 句子结束的时间,单位是秒。
text 字符串 语音转换成文本的结果。
label 字符串 检测结果的分类,与具体的scene对应。取值范围参考scene 和 label说明
keyword 字符串 如果了命中用户自定义关键词,返回命中的关键词。
libName 字符串 如果了命中用户自定义关键词,返回关键词所在的词库。
url 字符串 如果检测的内容是语音流, 表示该段文本对应的语音流的临时访问地址。该地址有效时间为2分钟,需要及时转存。
说明 默认该字段不返回,需要请通过工单联系我们进行配置。

示例

请求示例
[
    "taskId1",
    "taskId2"
]
返回示例
{
    "msg":"OK",
    "code":200,
    "data":[
        {
            "code":200,
            "dataId":"3b4b73b1-0152-4aa6-83ad-33730ba8a5e5",
            "results":[
                {
                    "rate":99.91,
                    "suggestion":"block",
                    "details":[
                        {
                            "libName":"test",
                            "startTime":0,
                            "endTime":4065,
                            "label":"customized",
                            "text":"恶心的",
                            "keyword":"恶心"
                        },
                        {
                            "startTime":4430,
                            "endTime":10065,
                            "label":"normal",
                        "text":"测试,测试,哈哈哈"
                        },
                        {
                            "libName":"语音测试",
                            "startTime":11670,
                            "endTime":14685,
                            "label":"customized",
                            "text":"超低折扣,大甩卖",
                            "keyword":"甩卖"
                        },
                        {
                            "startTime":14685,
                            "endTime":16065,
                            "label":"ad",
                            "text":"微信12345"
                        }
                    ],
                    "label":"customized"
                }
            ],
            "taskId":"vc_f_1OsjIYTukH@4@AXkIQ9Oyh-1ov52Y"
        }
    ],
    "requestId":"5A7A6198-6960-4DDC-B67E-58A6F1A4B20F"
}