语音质检API-邀测
接口描述:本接口共有两个部分,第一部分为语音质检,第二部分为质检规则管理。(本接口处于邀测阶段,请提交合作咨询申请测试)
准备工作
1、账户创建及appid鉴权信息获取可参考快速开发指南-准备工作。
2、access_token鉴权信息获取,可参考鉴权认证机制。
可点击下载python demo示例代码进行测试。
语音质检
语音质检任务创建
请求接口:http://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/detection
HTTP 方法:POST
Headers参数:
参数 | 参数值 | 是否必须 |
---|---|---|
Content-Type | application/json | 是 |
Body参数如下:
参数名称 | 位置 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
access_token | body | string | 是 | 携带用户信息的access_token |
speech_url | body | string | url和data二选一 | 可外网访问的音频文件url链接 |
speech_data | body | string | url和data二选一 | 音频文件base64结果 |
session_id | body | string | 是 | 音频质检任务唯一标识 |
sample_rate | body | integer | 否 | 音频采样率可选择8000或16000,默认8000 |
pid | body | integer | 是 | 音频识别模型id,可选择80006 |
callback_url | body | string | 否 | 质检后结果回调路径 |
role_num | body | integer | 否 | 说话人数,只允许1/2,默认为1 |
enable_detection | body | boolean | 否 | 是否进行质检,默认false |
enable_detection_detail | body | boolean | 否 | 是否返回质检结果详情,默认false |
is_split_channel | body | boolean | 否 | 是否进行左右声道拆分,默认false 当开启为true时,计费时长=左声道有效时长(不含静音)+右声道有效时长(不含静音) |
categories | body | array[string] | 否 | 应用到质检的规则,不填写默认全部 |
Body请求示例:
1 {
2 "access_token": "24.a7179f3da2d56aXXXXXXXXXXXXXXXX",
3 "speech_url": "https://xxxxx.wav",
4 "speech_data": "base64",
5 "session_id": "test20240220",
6 "sample_rate":16000,
7 "pid": 80006,
8 "role_num": 1,
9 "callback_url": "",
10 "enable_detection_detail": true,
11 "enable_detection": true ,
12 "is_split_channel": false
13 }
返回结果:
参数名称 | 类型 | 必选 | 说明 |
---|---|---|---|
error_code | integer | 是 | 请求状态码 |
error_message | string | 是 | 请求状态 |
result | object | 是 | |
+ session_id | string | 是 | 音频质检任务唯一标识 |
返回示例:
1 {
2 "error_code": 0,
3 "error_message": "请求成功",
4 "result": {
5 "session_id": "test20240220"
6 }
7 }
语音质检任务查询
请求接口:http://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/detection/result
HTTP 方法:GET
Headers参数:
参数 | 参数值 | 是否必须 |
---|---|---|
Content-Type | application/json | 是 |
Body参数如下:
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
access_token | body | string | 是 | 携带用户信息的access_token |
session_id | body | string | 是 | 音频质检任务唯一标识 |
Body请求示例:
1 {
2 "access_token": "24.a7179f3da2d56aXXXXXXXXXXXXXXXX",
3 "session_id": "test20240220"
4 }
返回结果:
参数名称 | 类型 | 必选 | 说明 |
---|---|---|---|
error_code | integer | 是 | 请求状态码 |
error_message | string | 是 | 请求状态 |
result | object | 是 | 语音质检结果 |
+push_status_desc | string | 是 | 推送状态描述 |
+session_id | string | 是 | 音频唯一标识 |
+state | integer | 是 | 质检过程的状态,不等于0、1、2为处理失败 |
+state_desc | string | 是 | 质检过程的状态描述分别为: "任务已提交,排队等待中" "执行中" "处理成功" |
+asr_text | string | 是 | 音频文件转写结果,句与句之间空格 |
+call_duration | integer | 是 | 通话持续时长,单位秒 |
+silence_duration | integer | 是 | 静音时长,单位秒 |
+asr_result | [object] | 是 | 转写结果 |
++sentence | string | 是 | 单句文本 |
++speaker_id | integer | 是 | 所属发言人 |
++begin_time | integer | 是 | 单句开始时间戳 |
++end_time | integer | 是 | 单句结束时间戳 |
++voice_speed | integer | 是 | 语速 |
++voice_power | integer | 是 | 音量 |
+pass_detection | string | 是 | 质检是否通过,"success"- 通过 "failed" - 不通过 |
+detection_result | [object] | 是 | 质检结果,返回录音命中的所有规则和对应关键词 |
++category | string | 是 | 规则类别 |
++keyword | [string] | 是 | 匹配的关键字 |
+detection_detail | object | 是 | 质检结果详情,配置了获取详情返回数据 |
++hit | boolean | 是 | 录音是否命中质检规则 |
++keyword | [string] | 是 | 录音命中的所有关键词 |
++detail | [object] | 是 | 句维度命中情况 |
+++text | string | 是 | 该句文本 |
+++hit | boolean | 是 | 该句是否命中质检规则 |
+++detail | [object] | 是 | 该句命中的质检分类 |
++++category | string | 是 | 质检分类 |
++++hit | boolean | 是 | 是否命中 |
++++keyword | [string] | 是 | 命中的分类下所有关键词 |
++++detail | [object] | 是 | 该句命中的该分类下的质检内容 |
+++++content | string | 是 | 质检内容 |
+++++hit | boolean | 是 | 是否命中 |
+++++keyword | [string] | 是 | 命中的关键词 |
返回示例:
1{
2 "error_code": 0,
3 "error_message": "请求成功",
4 "result": {
5 "session_id": "test20240220",
6 "state": 0,
7 "state_desc": "处理成功",
8 "asr_text": "你是谁? 我是小度",
9 "call_duration": 10,
10 "silence_duration": 5,
11 "asr_result": [
12 {
13 "sentence": "你是谁?",
14 "speaker_id": 0,
15 "begin_time": 1,
16 "end_time": 3,
17 "voice_speed": 0,
18 "voice_power": 0
19 },{
20 "sentence": "我是小度",
21 "speaker_id": 1,
22 "begin_time":,5,
23 "end_time": 7,
24 "voice_speed": 0,
25 "voice_power": 0
26 }
27
28 ],
29 "pass_detection": "failed",
30 "detection_result": [
31 {
32 "category": "类别1",
33 "keyword": [
34 "小度"
35 ]
36 }
37 ],
38 "detection_detail": {
39 "hit": 是,
40 "keyword": [
41 "小度"
42 ],
43 "detail": [
44 {
45 "text": "我是小度",
46 "hit": 是,
47 "detail": [
48 null
49 ]}]}}
50}
质检规则管理
质检规则查询
请求接口:http://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/detection/rule
HTTP 方法:GET
Headers参数:
参数 | 参数值 | 是否必须 |
---|---|---|
Content-Type | application/json | 是 |
Body参数如下:
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
access_token | body | string | 是 | 携带用户信息的access_token |
category | body | string | 否 | 规则类别,支持模糊搜索,不传则查询全部 |
page_no | body | integer | 否 | 分页规则-页数 |
page_size | body | integer | 否 | 分页规则-每页条数,默认10 |
Body请求示例:
1{
2 "access_token": "24.a7179f3da2d56aXXXXXXXXXXXXXXXX ",
3 "category": "类别1",
4 "page_no":1,
5 "page_size":1
6}
返回结果:
名称 | 类型 | 必选 | 说明 |
---|---|---|---|
error_code | integer | 是 | 请求状态码 |
error_message | string | 是 | 请求状态 |
results | object | 是 | 详情列表 |
+total | integer | 是 | 符合条件的规则总数 |
+rule | [object] | 是 | 查询到的规则 |
++category | string | 是 | 规则类别 |
++description | string | 是 | 规则类别描述 |
++content | [string] | 是 | 规则内容 |
返回示例:
1{
2 "error_code": 0,
3 "error_message": "请求成功",
4 "results": {
5 "total": 0,
6 "rule": [
7 {
8 "category": "类别1",
9 "description": "类别1的描述",
10 "contents": [ "贷款",
11 "会议||例会",
12 "缺货&&退款",
13 "!逾期",
14 "未偿还&&!逾期",
15 "(会议||例会) && (缺货||退款)"]
16 }
17 ]
18 }
19}
质检规则新增
请求接口:http://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/detection/rule
HTTP 方法:POST
Headers参数:
参数 | 参数值 | 是否必须 |
---|---|---|
Content-Type | application/json | 是 |
Body参数如下:
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
access_token | body | string | 是 | 携带用户信息的access_token |
category | body | string | 是 | 规则类别 |
description | body | string | 是 | 规则类别描述 |
contents | body | array[string] | 是 | 质检规则内容,每条质检规则内部可应用“或与非”逻辑关系 |
contents规则特殊说明:
一、A(包含A即为命中)
二、A||B (A或B包含任一即为命中)
三、A&&B (A与B均包含即为命中)
四、!B(不包含B即为命中)
五、A&&!B(包含A但不包含B即为命中)
六、用小括号隔开,可随意组合
Body请求示例:
1 {
2 "access_token": "24.a7179f3da2d56aXXXXXXXXXXXXXXXX ",
3 "category": "类别1",
4 "description": "类别1的描述",
5 "contents":["贷款",
6 "会议||例会",
7 "缺货&&退款",
8 "!逾期",
9 "未偿还&&!逾期",
10 "(会议||例会) && (缺货||退款)"]
11 }
返回结果:
名称 | 类型 | 必选 | 说明 |
---|---|---|---|
error_code | integer | 是 | 请求状态码 |
error_message | string | 是 | 请求状态 |
返回示例:
1{
2 "error_code": 0,
3 "error_message": "请求成功"
4}
质检规则修改
请求接口:http://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/detection/rule
HTTP 方法:PUT
Headers参数:
参数 | 参数值 | 是否必须 |
---|---|---|
Content-Type | application/json | 是 |
Body参数如下:
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
access_token | body | string | 是 | 携带用户信息的access_token |
category | body | string | 是 | 规则类别 |
description | body | string | 是 | 规则类别描述 |
contents | body | array[string] | 是 | 质检规则内容,每条质检规则内部可应用“或与非”逻辑关系 |
contents规则特殊说明:
一、A(包含A即为命中)
二、A||B (A或B包含任一即为命中)
三、A&&B (A与B均包含即为命中)
四、!B(不包含B即为命中)
五、A&&!B(包含A但不包含B即为命中)
六、用小括号隔开,可随意组合
Body请求示例:
1 {
2 "access_token": "24.a7179f3da2d56aXXXXXXXXXXXXXXXX ",
3 "category": "类别1",
4 "description": "类别1的描述",
5 "contents":["贷款",
6 "会议||例会",
7 "缺货&&退款",
8 "!逾期",
9 "未偿还&&!逾期",
10 "(会议||例会) && (缺货||退款)"]
11 }
返回结果:
名称 | 类型 | 必选 | 说明 |
---|---|---|---|
error_code | integer | 是 | 请求状态码 |
error_message | string | 是 | 请求状态 |
返回示例:
1 {
2 "error_code": 0,
3 "error_message": "请求成功"
4 }
质检规则删除
请求接口:http://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/detection/rule
HTTP 方法:DELETE
Headers参数:
参数 | 参数值 | 是否必须 |
---|---|---|
Content-Type | application/json | 是 |
Body参数如下:
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
access_token | body | string | 是 | 携带用户信息的access_token |
category | body | string | 是 | 待删除的规则类别 |
Body请求示例:
1 {
2 "access_token": "24.a7179f3da2d56aXXXXXXXXXXXXXXXX ",
3 "category": "类别1",
4 }
返回结果:
名称 | 类型 | 必选 | 说明 |
---|---|---|---|
error_code | integer | 是 | 请求状态码 |
error_message | string | 是 | 请求状态 |
返回示例:
1 {
2 "error_code": 0,
3 "error_message": "请求成功"
4}