语音质检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、8953(单声道话者分离) |
| callback_url | body | string | 否 | 质检后结果回调路径 |
| role_num | body | integer | 否 | 说话人数,只允许1/2,默认为1 (pid使用8953时参数传1) |
| enable_detection | body | boolean | 否 | 是否进行质检,默认false |
| enable_detection_detail | body | boolean | 否 | 是否返回质检结果详情,默认false |
| is_split_channel | body | boolean | 否 | 是否进行左右声道拆分,默认false 当开启为true时,计费时长=左声道有效时长(不含静音)+右声道有效时长(不含静音)(pid使用8953时参数传false) |
| 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}
