human: 如何处理七牛云的智能多媒体服务智能音频流审核

gpt: [智能多媒体服务](https://developer.qiniu.com/dora) > API 文档 > 智能语音 >智能音频流审核

#  智能音频流审核

最近更新时间: 2021-09-01 10:52:55

# 接口简介

音频流审核功能为音频流的内容审核场景提供涉政，国歌，色情，广告，娇喘，音色标签，唱歌等内容的识别，并且可以依据具体的业务场景进行配置，帮助您提前防御内容风险，提高审核效率，净化网络环境，提升用户体验。

# 接口规格

## 提交音频流识别请求

**请求URL** : `https://censor-open.qiniuapi.com/anti_fraud/v2/audiostream`

**字符编码格式** : 请求及返回结果都使用 UTF-8 字符集进行编码

**请求方法** : POST

**建议超时时长** : 3s

**请求头部** :

字段 | 取值  
---|---  
Content-Type | application/json  
Authorization | Qiniu<AccessKey>:<Sign>   
**注意:** 用户请根据 AccessKey 和 SecretKey 生成鉴权，以便进行身份验证。<Sign> 的取值请参考[七牛鉴权
__](https://developer.qiniu.com/dora/kb/3702/QiniuToken)  
  
**请求参数** : 放在 HTTP Body 中，采用 json 格式，具体参数如下:

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
type | string | Y | 需要识别的违规类型，可选值:  
POLITICAL:涉政识别  
ANTHEN:国歌识别  
PORN:色情识别  
AD:广告识别  
MOAN:娇喘识别  
SING:唱歌识别  
如需做组合识别，通过下划线连接即可，例如AD_PORN_POLITICAL用于广告、色情和涉政识别。  
DEFAULT: 默认取值  
POLITICAL_PORN_MOAN_AD  
data | json_object | Y | 请求数据，最长1MB，详细内容参见下表  
callback | string | Y | 异步检测结果回调通知您的 URL，支持 HTTP 和 HTTPS  
  
其中，data的内容如下:

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
streamType | string | Y | 流类型:可选择：   
流地址：NORMAL  
声网录制：AGORA  
即构录制：ZEGO  
腾讯录制：TRTC  
url | string | N | 要检测的音频流 url 地址（当 streamType 为 NORMAL 时必传）  
agoraParam | json_object | N | 声网录制参数（当 streamType 为 AGORA 时必传），详见扩展参数  
zegoParam | json_object | N | 即构录制参数（当 streamType 为ZEGO时必传），详见扩展参数  
trtcParam | json_object | N | 腾讯录制参数（当 streamType 为 TRTC时必传），详见扩展参数  
tokenId | string | Y | 客户端用户账号唯一标识  
channel | string | Y | 见下文渠道配置表  
room | string | N | 房间号，建议传入  
returnAllText | bool | N | 值为 true 时，返回全量的音频流片段识别结果和文本内容  
值为 false 时，只返回有风险（riskType 为 REJECT）的音频流片段识别结果和文本内容  
默认是 false  
returnPreText | bool | N | 值为 true 时，返回的 content 字段包含违规音频前一分钟文本内容  
值为 false 时，返回的 content 字段只包含违规音频片段文本内容  
默认值为 false  
returnPreAudio | bool | N | 值为 true时，返回违规音频前一分钟音频链接。  
值为 false时 ，只返回违规片段音频链接。  
默认值为 false  
returnFinishInfo | bool | N | 音频流结束通知，可选值：  
false: 不返回状态码  
true: 回调参数增加 statCode 状态码  
默认值为 false  
initDomain | int | N | 当即构客户端初始化传入隔离域名该字段必传  
可选值：  
1：客户端初始化有隔离域名  
  
其中data.agoraParam内容如下：

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
appId | string | Y | 声网提供的 appId  
channel | string | Y | 声网提供的频道名  
token | string | N | 安全要求较高的用户可以使用Token进行认证，生成方式详见声网文档：  
https://docs.agora.io/cn/Interactive%20%20Broadcast/token_server?platform=All%20Platforms  
uid | int | N | 用户id，32位无符号整数。  
当token存在时，必须提供生成token时所使用的用户ID。  
注意，此处需要区别实际房间中的用户uid，提供给服务端录制所用的 uid 不允许在房间中存在。  
isMixingEnabled | bool | N | 分流/合流录制，默认合流录制  
值为 true:合流  
值为 false:分流  
合流是指一个直播房间一路流，分流是指一个麦位一路流  
channelProfile | int | N | 声网录制的频道模式，取值：   
0: 通信，即常见的 1 对 1 单聊或群聊，频道内任何用户可以自由说话；  
1: 直播，有两种主播和观众两种用户角色。  
默认值为0，即默认以通信模式录制。  
  
其中data.zegoParam内容如下

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
tokenId | string | Y | zego 提供的身份验证信息，用于 token 登陆  
streamId | string | N | 用户设置的音频流编号，唯一对应一路音频流，streamId 与 roomId 至少存在其中之一， 如果 streamId 与 roomId 同时存在， streamId 有效；当 streamId 生效时，服务端以用户为单位拉流。  
roomId | string | N | 用户设置的房间编号，唯一对应一个房间， streamId 与 roomId 至少存在其中之一，如果 streamId 与 roomId 同时存在，streamId 有效；当 roomId 生效时，服务端以房间为单位拉流。  
testEnv | bool | Y | 是否使用 zego 测试环境：  
值为true 时：测试环境，  
值为false 时：正式环境。  
默认值为 false  
  
其中data.trtcParam内容如下

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
sdkAppId | int | Y | 腾讯提供的 sdkAppId  
demoSences | int | Y | 录制类型可选值：  
分流录制：2  
合流录制：4  
userId | string | Y | 分配给录制段的 userId，限制长度为 32bit，只允许包含（a-z，A-Z），数字(0-9)以及下划线和连词符  
userSig | string | Y | 录制 userId 对应的验证签名，相当于登录密码  
roomId | int | N | 房间号码，取值范围：【1-4294967294】  
roomId 与 strRoomId 必传一个，若两者都有，值优先选用 roomId  
strRoomId | string | N | 房间号码，取值说明：  
只允许包含（a-z，A-Z），数字(0-9)以及下划线和连词符  
若您选用 strRoomId ，需注意 strRoomId 和roomId 两者都有时，值优先选用 roomId  
  
其中，渠道配置表的内容如下：

业务场景 | channel取值 | 备注  
---|---|---  
语音房 | VOICE_ROOM | 多人连麦语音房  
直播间 | LIVE_ROOM | 视频直播间  
语音聊天 | VOICE_CHAT | 两人语音聊天通话  
  
**返回参数** : 放在 HTTP Body 中，采用 json 格式，具体参数如下：

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
code | int | Y | 返回码  
message | string | Y | 返回码详情描述  
entryId | string | Y | 请求唯一标识  
  
## 异步回调识别结果

**回调策略：** 当用户收到推送结果，并返回 HTTP 状态码为 200 时，表示推送成功；否则系统将进行最多 12 次推送。

**请求方法：** POST

**字符编码格式：** 请求及返回结果都使用 UTF-8 字符集进行编码

**回调参数：** 放在 HTTP Body 中，采用 json 格式，具体参数如下：

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
code | int | Y | 返回码  
message | string | Y | 返回码详情描述  
entryId | string | Y | 请求唯一标识  
score | int | N | 风险分数（code 为 1100 且 riskLevel=REJECT时存在）  
取值范围[0,1000]，分数越高风险越大  
riskLevel | string | Y | 风险级别（code 为 1100 时存在）   
可能返回值：PASS，REVIEW，REJECT  
PASS：正常内容，建议直接放行  
REVIEW：可疑内容，建议人工审核  
REJECT：违规内容，建议直接拦截  
statCode | int | N | 审核状态：  
0 : 审核中  
1 : 审核结束  
detail | json_object | Y | 风险详情  
  
其中 detail 的内容如下:

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
beginProcessTime | int | Y | 开始处理的时间（13 位时间戳）  
finishProcessTime | int | Y | 结束处理的时间（13 位时间戳）  
audioUrl | string | Y | 音频片段地址，returnAllText 不传或为 false时只返回违规音频片段地址，  
returnAllText 为 true 时返回所有音频片段地址  
preAudioUrl | string | N | 违规内容前 1 分钟音频片段地址（该参数只有在请求参数中 returnPreAudio 是 true 情况下存在）  
audio_endtime | string | Y | 违规内容结束时间（绝对时间）  
audio_starttime | string | Y | 违规内容开始时间（绝对时间）  
audioText | string | Y | 音频片段文本  
content | string | N | returnPreText 为 true 时返回违规内容前一分钟文本和违规内容片段文本  
description | string | Y | 策略规则风险原因描述  
注：该参数为旧版 API 返回参数，兼容保留，后续版本将去除，请勿依赖此参数，仅供参考  
descriptionV2 | string | Y | 策略规则风险原因描述  
注：该参数为 API 返回参数，请勿依赖此参数，仅供参考  
matchedItem | string | N | 命中的具体敏感词（该参数仅在命中敏感词时存在）  
matchedList | string | N | 命中敏感词所在的名单名称（该参数仅在命中敏感词时存在）  
hits | json_array | Y | 展示风险详情，请勿依赖此参数，仅供参考  
model | string | Y | 规则标识，用来标识文本命中的策略规则。  
注：该参数为旧版 API 返回参数，兼容保留，后续版本将去除，请勿依赖此参数，仅供参考  
isSing | int | N | type 取值包含 SING 时存在：  
取值 0 ：表示检测不存在唱歌片段  
取值 1 ：表示检测存在唱歌片段  
requestParams | json_object | Y | 返回请求参数 data 中的所有字段  
riskType | int | Y | 标识风险类型，静音时不返回，可能取值：  
0：正常  
100：涉政  
110: 暴恐  
120: 国歌  
200：色情  
210：辱骂  
250：娇喘  
300：广告  
400：灌水  
500：无意义  
600 : 违禁  
700：其他  
720：黑账号  
730：黑 IP  
800：高危账号  
900：自定义  
riskTypeDesc | string | N | 风险原因描述  
room | string | Y | 房间号  
userId | int | N | 用户账号标识（仅分流情况下存在）。  
返回的userId 是实际房间中的用户 id，与请求参数中的 uid 无关。  
vadCode | int | N | 静音状态：  
0 ：静音片段  
1 ：非静音片段  
  
code 和 message 的列表如下:

code | message  
---|---  
1100 | 成功  
1902 | 参数不合法  
1903 | 服务失败  
9100 | 余额不足  
9101 | 无权限操作  
  
## 音频流关闭通知接口

**接口描述：** 该接口用于客户端通知服务端某个音频流已关闭

**请求 URL：** `https://censor-
open.qiniuapi.com/anti_fraud/v2/finish_audiostream`

**字符编码格式：** 请求及返回结果都使用 UTF-8 字符集进行编码

**请求方法：** POST

**建议超时时长：** 1s

**请求头部** :

字段 | 取值  
---|---  
Content-Type | application/json  
Authorization | Qiniu<AccessKey>:<Sign>   
**注意:** 用户请根据 AccessKey 和 SecretKey 生成鉴权，以便进行身份验证。<Sign> 的取值请参考[七牛鉴权
__](https://developer.qiniu.com/dora/kb/3702/QiniuToken)  
  
**请求参数：** 放在HTTP Body中，采用json格式，具体参数如下：

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
entryId | string | Y | 请求唯一标识  
  
**返回参数：** 放在HTTP Body中，采用json格式，具体参数如下：

参数名称 | 类型 | 是否必选 | 说明  
---|---|---|---  
code | int | Y | 返回码  
message | string | Y | 返回码详细描述  
  
# 示例

## 请求示例

    
    
    POST /anti_fraud/v2/audiostream HTTP/1.1
    Host: censor-open.qiniuapi.com
    Content-Type: application/json
    Authorization: Qiniu YnxrxOSvGotRZpqkZnMzl_euuoqRzOKUd6zwbRju:r6a-o2UpBg6A4puIMnkCExH8lE8=
    
    {
        "type": "POLITICAL_PORN_MOAN_ABUSE_AD",
        "data": {
            "streamType":"NORMAL",
            "url": "rtmp://xxx.co/test/test1?sign=xxx",
            "audioName": "xxxxxx",
            "returnAllText": true
        },
        "callback": "http://xxx.test/audio-stream-callback"
    }
    
    

## 返回示例

    
    
    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
        "code":1100,
        "message":"成功", 
        "entryrid":"5564f430ee6a1adb40f06d768b40316b",
    }
    
    

## 回调示例

    
    
    POST /xxxx HTTP/1.1
    Host: xxxx
    Content-Type: application/json
    
    {
        "code":1100,
        "message":"成功",
        "riskLevel":"PASS",
        "detail":{
            "beginProcessTime":1629773218229,
            "finishProcessTime":1629773218808,
            "audioUrl":"https://xxx.mp3",
            "audio_endtime":"2021-08-24 10:46:48",
            "audio_starttime":"2021-08-24 10:46:38",
            "audioText":"这是音频内容",
            "content":"这是音频内容",
            "description":"正常",
            "hits":[
            ],
            "model":"M1000",
            "requestParams":{
                "audioName":"xxxxxx",
                "returnAllText":true,
                "returnPreAudio":true,
                "returnPreText":true,
                "room":"",
                "streamType":"NORMAL",
                "tokenId":"1234",
                "url":"rtmp://xxx.co/test/test1?sign=xxx"
            },
            "riskTypeDesc":"正常",
            "room":"",
            "userId":0,
            "vadCode":1
        }
    }
    

# 错误码

code | message  
---|---  
1100 | 成功  
1902 | 参数不合法  
1903 | 服务失败  
9100 | 余额不足  
9101 | 无权限操作  
  
# 价格

1.2元/小时

以上内容是否对您有帮助？