智能音频流审核
接口简介
音频流审核功能为音频流的内容审核场景提供涉政,国歌,色情,广告,娇喘,音色标签,唱歌等内容的识别,并且可以依据具体的业务场景进行配置,帮助您提前防御内容风险,提高审核效率,净化网络环境,提升用户体验。
接口规格
提交音频流识别请求
请求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> 的取值请参考七牛鉴权 |
请求参数: 放在 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> 的取值请参考七牛鉴权 |
请求参数: 放在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元/小时