直播音频异步检测接口帮助您检测直播音频中的违规内容和多维度的辅助信息，提供包括智能鉴黄、暴恐、涉政、违禁、广告、谩骂、涉价值观等违规内容识别能力，以及语音识别、语种检测、ASMR检测、娇喘检测、领导人声纹检测、涉政歌曲检测等多维度辅助信息能力，用于异步获取直播音频中的违规内容和多维度的辅助信息。

## 接口说明

该接口用于异步提交直播音频检测任务，并返回直播音频标识，支持通过http协议调用接口。

### 鉴权说明

易盾内容安全服务使用签名方法对接口进行鉴权，所有接口每一次请求都需要包含签名信息（signature 参数），以验证用户身份，防止信息被恶意篡改。目前支持MD5，SHA1，SHA256，SM3几种加密算法，详细信息，请参见[接口鉴权](https://support.dun.163.com/documents/588434426518708224?docId=588873466580275200)。

### 重试机制

普通拉流直播:
* 每次重试拉流间隔3秒，直至到达最大无连接时长。最大无连接时长默认为150秒，该参数业务侧可配置。

RTC直播:
* 每次重试间隔3秒，直至到达最大无连接时长。最大无连接时长默认为150秒，该参数业务侧可配置。
* 另外有最大无数据时长限制（即统计从上一次监听到流数据到现在时长），默认值：云信30分钟、其他RTC供应商是12小时，该参数业务侧可配置。

### 直播音频要求

* 直播音频支持类型：URL
* 直播音频支持检测方式：普通直播拉流检测、SDK监听检测
* 直播音频支持RTC服务商：云信、声网、即构、火山引擎、阿里云、腾讯云
* 直播音频支持流媒体协议：rtp、srtp、rtmp、rtmps、mmsh、mmst、hls、http、tcp、https等
* 直播音频拉流：拉流超时时间默认为150秒，超时后直播音频检测任务将自动停止
* 直播音频SDK监听检测：需调用停止接口进行停止

### 检测耗时

直播音频提交检测只是提交直播检测任务，拉流监听及检测这些逻辑异步完成，建议您将超时时间设置为2秒

### 历史版本

[v3版本直播语音提交检测接口请点此查看](https://support.dun.163.com/documents/2018082201?docId=274670742662205440)

## 请求

|名称|值|
|----|----|
|HTTP URL|http://as.dun.163.com/v4/liveaudio/check|
|HTTP Method|POST|

### 请求头

|名称|类型|必填|描述|
|----|----|----|----|
|Content-Type|String|是|固定值："application/x-www-form-urlencoded"|

### 请求参数

请求参数由公共参数和业务参数两部分组成。

#### 公共参数

公共参数包含密钥信息和参数签名信息，具体的公共参数请参考[请求公共参数](https://support.dun.163.com/documents/588434426518708224?docId=588874161605808128)。

#### 业务参数

|名称|类型|必填|最大长度|描述|
|----|----|----|----|----|
|version|String|是|4|接口版本号，值为v4.1|
|url|String|是|2048|使用拉流检测为直播流地址；使用[SDK](https://support.dun.163.com/documents/588434426518708224?docId=600817068811034624#SDK)检测请根据不同服务商生成相应的URL|
|dataId|String| 是| 128 |上传数据唯一标识，能够根据该值定位到该条数据，如对数据结果有异议，可以发送该值给客户经理查询|
| title | String | 否 | 512 | 直播语音标题 |
| ip | String | 否 | 128 | 用户IP地址 |
| account | String | 否 | 128 | 用户唯一标识，如果无需登录则为空 |
| nickname | String | 否 | 128 | 用户昵称 |
| gender | Number | 否 | 2 | 用户性别，0未知，1男，2女，在社交、直播场景建议抄送，辅助策略精准调优 |
| age | Number | 否 | 4 | 用户年龄 |
| roomNo | String | 否 | 128 | 主播房间号|
| accountLevel | String | 否 | 10 | 账号级别/主播级别(大写A-Z) |
| accountName | String | 否 | 30 | 账号名称/主播名称 |
| photo | String | 否 | 1024 | 主播头像 |
| backgroundImage | String | 否 | 1024 | 背景图 |
| cover | String | 否 | 1024 | 封面 |
| deviceId | String | 否 | 128 |用户设备 id，与易盾设备画像库匹配，明文请转大写传入；MD5加密请明文转大写后MD5计算，再转大写传入，建议抄送|
| deviceType |Number| 否 | 4 |用户设备id的类型，0:其他，10:IMEI，11:AndroidID，12:IDFA，13:IDFV，14:MAC ，20:IMEI_MD5，21:AndroidID_MD5，22:IDFA_MD5，23:IDFV_MD5，24:MAC_MD5，25:HarmonyOS|
| callback | String | 否 | 1024 |数据回调参数，调用方根据业务情况自行设计，当调用callback接口获取直播音频结果时，该接口会原样返回该字段，详细见直播音频离线检测结果获取。作为数据处理标识，因此该字段应该设计为能唯一定位到该次请求的数据结构，如对用户的昵称进行检测，dataId可设为用户标识（用户ID），用户修改多次，每次请求数据的dataId可能一致，但是callback参数可以设计成定位该次请求的数据结构，比如callback字段设计成json，包含dataId和请求的时间戳等信息，当然如果不想做区分，也可以直接把callback设置成dataId的值。 |
|callbackUrl | String |否 |512 | 离线结果回调通知到客户的URL。主动回调数据接口超时时间设置为2s，为了保证顺利接收数据，需保证接收接口性能稳定并且保证幂等性。 |
| uniqueKey | String | 否 | 256 | 客户个性化直播流唯一性标识，传入后，将以此值作为重复检测依据，若不传，默认以URL作为查重依据 |
|checkLanguageCode|String|否|2|指定语言检测音频内容，需以易盾标准填入，可选范围：zh:中文,en:英语,it:意大利语,id:印尼语,es:西班牙语,fr:法语,ms:马来语,tl:菲利宾语,th:泰语,de:德语,hi:印地语,ru:俄语,ar:阿拉伯语,vi:越南语,ja:日语,ko:韩语；不填以后台配置为准|
|checkSpeakerIds|String|否|200|指定监听必审列表范围内的数据，英文逗号分隔字符串，字符串长度不能超过200，分隔的数量不能超过20个，每个必须为数字且不能包含空格，有效参数如1000,2000,3000，无效参数如：1a,2b，仅(云信、声网、即构、腾讯)rtc监听模式下生效|
|noCheckSpeakerIds|String|否|200|指定不监听信任用户列表范围内的数据，英文逗号分隔字符串，字符串长度不能超过200，分隔的数量不能超过20个，每个必须为数字且不能包含空格，有效参数如1000,2000,3000，无效参数如：1a,2b，仅(云信、腾讯、声网)rtc监听模式下生效|
|extension|String|否|30000|自定义扩展参数，JSON字符串格式。如："{"keyName1":"value1","keyName2":"value2"}"|

### 请求体示例
```
url=testurl&version=v4.1&signature=xxx&secretId=xxx&businessId=xxx
```

## 响应

### 响应结果

响应字段如下，响应公共字段已省略，详细见[响应公共字段](https://support.dun.163.com/documents/588434426518708224?docId=588872712754794496)：

|名称|类型|必须返回|描述|
|----|----|----|----|
|result|Object|是|直播音频异步提交检测结果|
|&emsp;∟ taskId|String|是|易盾侧机审数据唯一标识，能够根据该值定位到该条数据，如对检测结果有异议，可以发送该值给策略经理查询|
|&emsp;∟ status|Number|是|请求结果，0成功，1失败|

### 响应体示例

```json
{
    "code": 200,
    "msg": "ok",
    "result": {
        "taskId": "*****",
        "status": 0   	
    }
}
```

重复检测返回结构

```
{
    "code":417,
    "msg":"返回原提交taskID值"
}
```

### 响应返回码

响应返回码由公共错误码和业务错误码两部分组成，[响应返回码](https://support.dun.163.com/documents/588434426518708224?docId=588872765795962880)

## 示例代码

### 服务端 SDK 接入

推荐使用我们提供的服务端 SDK 进行接入（目前支持 Java 和 Go 两种语言），不但可以节省接入成本，实现更快速的集成，并享有灵活的请求配置选项，同时 SDK 内置了错误重试、熔断降级等功能，提升服务可用性。点击 [服务端 SDK 接入指引](https://support.dun.163.com/documents/594247746924453888?docId=682781209345695744) 了解更多。

#### Github Demo 地址    

- [Java SDK Demo](https://github.com/yidun/yidun-java-sdk/blob/main/yidun-java-sdk-demo/src/main/java/com/netease/yidun/sdk/antispam/liveaudio/submit/v4/LiveAudioSubmitDemo.java)
- [Golang SDK Demo](https://github.com/yidun/yidun-golang-sdk/blob/main/yidun/demo/antispam/liveaudio/submit/v4/live_audio_submit_demo.go)

#### Gitee Demo 地址（Github 无法访问时选择）

- [Java SDK Demo](https://gitee.com/netease_yidun/yidun-java-sdk/blob/main/yidun-java-sdk-demo/src/main/java/com/netease/yidun/sdk/antispam/liveaudio/submit/v4/LiveAudioSubmitDemo.java)
- [Golang SDK Demo](https://gitee.com/netease_yidun/yidun-golang-sdk/blob/main/yidun/demo/antispam/liveaudio/submit/v4/live_audio_submit_demo.go)

 ### API接入

### HTTP API 接入

#### Github Demo 地址

- [PHP Demo](https://github.com/yidun/antispam-php-demo/blob/master/liveaudio/liveaudio_check.php)
- [Python Demo](https://github.com/yidun/antispam-python-demo/blob/master/audio/liveaudio_check.py)
- [Golang Demo](https://github.com/yidun/antispam-go-demo/blob/master/liveaudio/check/liveaudio_check.go)
- [Nodejs Demo](https://github.com/yidun/antispam-nodejs-demo/blob/master/liveAudioSubmitDemo.js)
- [C# Demo](https://github.com/yidun/antispam-csharp-demo/blob/master/LiveAudioSubmitApiDemoV4.cs)
- [JAVA Demo](https://github.com/yidun/antispam-java-demo/blob/master/src/main/java/com/netease/is/antispam/demo/audio/LiveAudioCheckAPIDemo.java)

#### Gitee Demo 地址（Github 无法访问时选择）

- [PHP Demo](https://gitee.com/netease_yidun/antispam-php-demo/blob/master/liveaudio/liveaudio_check.php)
- [Python Demo](https://gitee.com/netease_yidun/antispam-python-demo/blob/master/audio/liveaudio_check.py)
- [Golang Demo](https://gitee.com/netease_yidun/antispam-go-demo/blob/master/liveaudio/check/liveaudio_check.go)
- [Nodejs Demo](https://gitee.com/netease_yidun/antispam-nodejs-demo/blob/master/liveAudioSubmitDemo.js)
- [C# Demo](https://gitee.com/netease_yidun/antispam-csharp-demo/blob/master/LiveAudioSubmitApiDemoV4.cs)
- [JAVA Demo](https://gitee.com/netease_yidun/antispam-java-demo/blob/master/src/main/java/com/netease/is/antispam/demo/audio/LiveAudioCheckAPIDemo.java)