# 音频合规 API 文档
# 接口说明
基于智能特色语义分析及多语种识别技术,依托海量的样本数据,精准高效识别敏感、色情、辱骂等风险音频内容。
购买请点击API套餐购买 (opens new window)、APPID获取请点击API使用控制台 (opens new window)、快速体验请点击音频合规SaaS (opens new window)、交流讨论请点击讯飞开放平台社区 (opens new window)
# 接口Demo
部分开发语言Demo如下,其他开发语言请参照文档进行开发,欢迎大家到讯飞开放平台社区 (opens new window)交流集成经验。
音频合规API Demo java语言 (opens new window)
音频合规API Demo python语言 (opens new window)
# 接口要求
内容 | 说明 |
---|---|
传输方式 | http[s] (为提高安全性,强烈推荐https) |
请求地址 | https://audit.iflyaisol.com/audit/v2/audio https://audit.iflyaisol.com/audit/v2/query 注:服务器IP不固定,为保证您的接口稳定,请勿通过指定IP的方式调用接口,使用域名方式调用 |
Content-Type | application/json;charset=UTF-8 |
接口鉴权 | 签名机制,详情请参照下方接口鉴权 |
字符编码 | UTF-8 |
响应格式 | 统一采用JSON格式 |
开发语言 | 任意,只要可以向讯飞云服务发起HTTP请求的均可 |
适用范围 | 任意操作系统,但因不支持跨域不适用于浏览器 |
音频要求 | 音频格式支持mp3、alaw、ulaw、pcm、aac、wav格式,通过URL外链的音频时长建议限制在1小时内。 |
# 接口鉴权
# 1、鉴权参数列表
所有鉴权参数均放在url地址栏。
参数名 | 类型 | 必传 | 描述 |
---|---|---|---|
accessKeyId | String | 是 | 即为控制台获取的APIKey |
accessKeySecret | String | 是 | 即为控制台获取的APISecret |
utc | String | 是 | 当前时间,格式:"yyyy-MM-dd'T'HH:mm:ssZ", 服务端会校验传入的时间与服务器时间之间的误差,超过 30 分钟即为非法。 |
signature | String | 是 | 签名串,详细获取步骤234中有signature的获取参考 |
appId | String | 是 | 即为控制台获取的APPID |
uuid | String | 是 | 请求随机字符串, uuid有防重放的功能,如果调试,请注意更换uuid的值 |
# 2、第一步baseString获取
假设请求 url 中的查询参数为一个集合,将集合内满足条件的参数按照参数名 ASCII 码从小到大排序(字典序),使用键值对的格式(即 key1=value1&key2=value2…注意 value 需要 URLEncoder)拼接成字符串,得到baseString。示例如下:
特别注意以下3个规则:(1)参数值为空的不参与签名;(2)signature 参数本身不参与签名;(3)参数名区分大小写。
accessKeyId=simpleAPIKey&accessKeySecret=simpleAPISecret&appId=simpleAPPID&utc=2023-02-23T06%3A40%3A54%2B0000&uuid=44dfa903-adb2-45d3-a1fe-fd8a53f86b2a
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
注意:在实际使用时,simpleXXX需替换控制台的真实值。utc、signature、uuid的值请求时需要UrlEncode。以上utc示例时间UrlEncode前为2023-02-23T06:40:54+0000。randomStr用UUID.randomUUID()函数获得的值替换。
# 3、第二步根据baseString与accessKeySecret获取signature的值
根据得到的baseString和控制台获取的accessKeySecret(即APISecret),利用HMAC运算(HmacSHA1)生成签名byte[],然后使用base64编码得到signature,示例如下:
mH2xDQ5f+mO/Pi6DbrxXrzYQxF0=
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
注意:调试阶段可以与以上结果比对,需要保持baseString与第一步完全一致。
# 4、第三步拼接放到url地址栏
根据第二步获得的signature值,与url地址拼接得到最终地址栏结果,示例如下:
https://audit.iflyaisol.com//audit/v2/syncText?accessKeyId=simpleAPIKey&accessKeySecret=simpleAPISecret&utc=2023-02-23T06%3A40%3A54%2B0000&signature=mH2xDQ5f+mO/Pi6DbrxXrzYQxF0=&appId=simpleAPPID&uuid=44dfa903-adb2-45d3-a1fe-fd8a53f86b2a
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
注意:黑白名单使用鉴权与文本合规鉴权完全一致,只是url地址有变动。具体业务参数通过json以post的形式发送给服务端。
# 请求与返回示例
在调用业务接口时,均在 Http RequestBody中配置以下参数,请求与返回数据均为json字符串,示例如下。
# 1、请求json示例
{
"audio_list": [
{
"audio_type": "mp3",
"file_url": "https://xfyun-doc.xfyun.cn/static%2F16793792882352753%2F1.mp3",
"name": "xxx%2F1.mp3"
}
],
"notify_url": "http://wdfgdzx.top:8000/user/audio_video_callback" //替换为自己的回调地址
}
# 2、返回json示例
{
"code": "000000",
"desc": "请求成功",
"data": {
"request_id": "T20230321155903016bba833f177a000",
"audit_status": 2,
"result_list": [
{
"name": "xxx%2F1.mp3",
"suggest": "block",
"detail": {
"audios": [
{
"duration": 10,
"category_list": [
{
"category_description": "辱骂_人身攻击_重度人身攻击",
"word_list": [
],
"suggest": "block",
"category": "uncivilizedLanguage"
}
],
"offsetTime": "0",
"audio_url": "http://xxx",
"suggest": "block",
"content": "xxx"
},
{
"duration": 10,
"category_list": [
{
"category_description": "辱骂_人身攻击_重度人身攻击",
"word_list": [
],
"suggest": "block",
"category": "uncivilizedLanguage"
}
],
"offsetTime": "10",
"audio_url": "http://xxx",
"suggest": "block",
"content": "xxx"
}
]
}
}
]
},
"sid": "d7c868febced455399b373a976d3c3b8"
}
# 参数说明
# 1、请求参数说明
参数名 | 类型 | 必传 | 描述 |
---|---|---|---|
audio_list | List | 是 | 待识别音频列表,单次数量不能超过10个 |
audio_list.audio_type | String | 否 | 音频类型,如果不传,取 url 后缀名作为格式 支持类型:mp3、alaw、ulaw、pcm、aac、wav |
audio_list.file_url | String | 是 | 音频地址,长度限制 500字符以内 |
audio_list.name | String | 是 | 音频名称 |
notify_url | String | 否 | 回调地址,未传不进行回调 |
# 2、返回参数说明
参数名 | 类型 | 描述 |
---|---|---|
sid | String | 本次会话唯一id标识,用于排查接口调用问题 |
code | String | 会话调用成功标记: 000000 表示调用成功 其他数字 表示会话调用异常 |
desc | String | 对会话调用是否成功的描述 |
data | Object | 审核结果 |
data.request_id | String | 请求唯一标识 |
data.audit_status | Integer | 内容识别状态。 0:待审核 1:审核中 2:审核完成 4:审核异常 |
data.result_list | List | 内容识别结果 |
data.result_list[n].name | String | 待识别内容名称 |
data.result_list[n].suggest | String | pass:通过 review:疑似,建议人工复审 block:内容识别未通过 |
data.result_list[n].detail | Object | 内容识别详情,包含具体审核细节 |
data.result_list[n].detail.audios | List | 音频片段识别明细 |
data.result_list[n].detail.audios[n].suggest | String | pass:通过 review:疑似,建议人工复审 block:内容识别未通过 |
data.result_list[n].detail.audios[n].content | String | 音频中识别出来的文本内容 |
data.result_list[n].detail.audios[n].offsetTime | Integer | 该片段开始时间,单位秒 |
data.result_list[n].detail.audios[n].duration | Integer | 该片段持续时长,单位秒 |
data.result_list[n].detail.audios[n].audio_url | String | 音频片段地址 |
data.result_list[n].detail.audios[n].category_list[n].word_list | String | 关键词列表 |
# 常见问题
# 音频合规支持哪些音频格式的请求,音频大小限制是多少?
答:支持mp3、alaw、ulaw、pcm、aac、wav格式,通过URL外链的音频时长建议限制在1小时内。
# 音频合规对敏感词发音审核的同时,会有语义层面的审核吗?
答:会的。音频合规不仅对音频中敏感词发音进行审核,而且会结合音频语义进行审核,包括不限于国歌歪唱识别、违禁语音检测、辱骂语音检测、垃圾广告检测等。
# 支持对违规音频片段的定位吗?
答:支持。返回违规音频片段的同时,会返回违规的开始时间与持续时长,能够轻松定位违规发音在原音频中的位置。