实时语音评测:实时语音口语评测服务可实现对连续音频流的实时识别,并最终对用户的读音进行评测。
Hi,您好,欢迎使用有道智云智能语音评测服务。
如果您想快速体验服务,建议您前往 实时语音评测体验中心 或者在体验中心右下侧找到小程序二维码,扫描进行体验。
本文档主要针对需要集成实时语音识别服务HTTP API的开发工程师
,详细描述有道智云实时语音评测能力及如何集成的技术内容。
如果您有与我们商务合作的需求,可以通过以下方式联系我们:
商务邮箱: AIcloud_Business@corp.youdao.com
如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:
客服QQ:1906538062
智云语音技术交流QQ群:861723255
联系邮箱: zhiyun@corp.youdao.com
温馨提示:
应用ID
和应用密钥
;如果您还没有,请按照 新手指南 获取。有道实时评测服务对用户发音的完整度、流利度、准确度进行全方位评测,并能对发音错误、缺陷进行定位。
支持的音频格式为16K 采样率、16bits 精度的 pcm_s16le 音频,目前支持中、英文。
服务接口的调用分为认证、实时通信两阶段。
接口地址:
wss://openapi.youdao.com/stream_capt?{请求参数}
请求参数格式:
key1=value1&key2=value2&key3=value3&key4=value4
音频格式要求:
格式支持:wav(不压缩、pcm编码)
采样率:推荐16k。
编码:16bit位深的单声道
调用API需要向接口发送以下字段来访问服务。
字段名 | 类型 | 含义 | 必填 | 备注 | |
---|---|---|---|---|---|
appKey | String | 是 | 已申请的应用ID | ID | |
salt | String | 是 | 随机数 | uuid | |
curtime | String | 是 | 时间戳,1970-1-01 00:00:00 至当前的秒数 | 1522292849 | |
sign | String | 是 | 加密数字签名。 | ||
signType | String | 是 | 数字签名类型 | v4 | |
langType | String | 是 | 语言选择,接口目前支持中文(zh-CHS)、英文(en) | zh-CHS, en | |
format | String | 是 | 音频格式,支持wav | wav | |
channel | String | 是 | 声道,支持1 | 1 | |
version | String | 是 | api版本 | v1 | |
rate | String | 是 | 采样率 | 16000 | |
vadHeadSil | String | 否 | 前端静音检测,单位ms.范围:[100,10000] | 1000 | |
vadTailSil | String | 否 | 后端静音检测,单位ms.范围:[100,10000] | 2000 | |
strictness | String | 否 | 注:该参数仅中文接口支持。打分严格程度 1(儿童) 2(中等)3(严格 成人母语者),默认:2 | 1,2,3 |
签名
sign
生成方法如下:
sign=sha256(应用ID
+salt
+curtime
+应用密钥
)。
响应结果是以json形式输出,包含字段如下表所示:
字段 | 含义 | 说明 |
---|---|---|
errorCode | String | 状态码,详见状态码说明 |
action | String | 状态标识,started:握手,capt:评测,error:错误,close:关闭 |
requestId | String | 请求ID |
result | String | 识别结果数据 |
closeCode | String | 关闭的状态码 0正常关闭;1:前置静音超时;2:后置静音超时 |
服务端通过 text message 返回 json字符串的认证结果,参数示例:
成功:
{
"result": [],
"action": "started",
"errorCode": "0"
}
失败:
{
"result": "[]",
"action": "error",
"errorCode": "202"
}
认证成功之后,进入实时通信阶段,实时通信分为两个阶段:
1) 客户端发送待评测文本,如果不发送,会返回没有发送评测文本的异常
2)客户端发送音频流和结束标识,并接收转写结果或错误。
此阶段客户端通过 text message 发送评测文本。示例:
{"text":"have a good day"}
文本长度限制:英文不超过1000单词。音频时长不超过120s。
此阶段客户端通过 binary message 发送音频流,内容为音频的二进制数据,此过程的发送频率将影响文字结果展示的实时性。
建议以 200ms 间隔发送音频数据,若间隔超时 15s 以上,服务端将停止识别。
客户端完成所有音频数据的发送后,需发送一个特殊的 binary message 到服务端作为音频流
发送结束的标识,内容为:
{"end": "true"}
响应结果是以json形式输出,包含字段如下表所示:
字段 | 含义 |
---|---|
errorCode | 识别结果错误码,一定存在。 详细信息可见 错误代码列表 |
refText | 请求的文本 |
start | 音频中句子开始时间,单位是秒 |
end | 音频中句子结束时间,单位是秒 |
isFinal | 是否是最后一次返回 |
integrity | 句子完整度得分 |
fluency | 句子流利度得分 |
pronunciation | 句子准确度得分 |
speed | 语速,单词/分钟 |
overall | 句子综合评分 |
words | 单词评分数组 |
-word | 单词 |
-index | 词序,从0开始 |
-start | 单词开始时间,单位是秒 |
-end | 单词结束时间,单位是秒 |
-pronunciation | 单词准确度得分 |
-phonemes | 音素数组 |
--phoneme | 音素 |
--start | 音素开始时间,单位是秒 |
--end | 音素结束时间,单位是秒 |
--judge | 判断音素是否错误,true为发音正确,false为发音错误,同时calibration给出提示 |
--calibration | 如果发音错误,提示用户该发音像什么 |
--prominence | 重音程度,分数越高,当前音标越可能是重音,分数在[0,1] |
--stressRef | 元音重音参考/标准答案,如果为true,说明参考答案认为该元音应该发重音,辅音时无意义 |
--stressDetect | 在一个单词中,用户该音标发音为重音 |
{
"result": {
"refText": "day",
"pronunciation": 73.799362,
"start": 1.530000,
"words": [{
"pronunciation": 73.799362,
"start": 1.530000,
"index": 3,
"end": 1.950000,
"word": "day",
"phonemes": [{
"stressDetect": false,
"pronunciation": 48.216797,
"phoneme": "d",
"start": 1.530000,
"end": 1.650000,
"judge": false,
"calibration": "e",
"prominence": 0.920839,
"stressRef": false
}, {
"stressDetect": false,
"pronunciation": 99.381935,
"phoneme": "e",
"start": 1.680000,
"end": 1.950000,
"judge": true,
"calibration": "e",
"prominence": 1.000000,
"stressRef": false
}]
}],
"fluency": 86.899673,
"speed": 133.333313,
"integrity": 99.999992,
"service": "capt",
"overall": 92.249207,
"end": 1.950000,
"isFinal": false,
"status": "success"
},
"requestId": "9ad0101c-25f1-4336-90c2-e15d5c748e86",
"errorCode": "0",
"action": "capt"
}
目前支持中英文的语音评测。
语言 | 代码 |
---|---|
英文 | en |
中文 | zh-CHS |
支持格式 | 单次最大请求时长(s) | 支持语言 |
---|---|---|
wav | 120 | 中、英 |
错误码 | 含义 |
---|---|
101 | 缺少必填的参数,首先确保必填参数齐全,然后,确认参数书写是否正确。 |
102 | 不支持的语言类型 |
103 | 翻译文本过长 |
104 | 不支持的API类型 |
105 | 不支持的签名类型 |
106 | 不支持的响应类型 |
107 | 不支持的传输加密类型 |
108 | 应用ID无效,注册账号,登录后台创建应用并完成绑定,可获得应用ID和应用密钥等信息 |
110 | 无相关服务的有效实例,应用没有绑定服务实例,可以新建服,绑定服务。注:某些服务的结果发音需要tts服务,需要在控制台创建语音合成服务绑定应用后方能使用。 |
111 | 开发者账号无效 |
112 | 请求服务无效 |
113 | q不能为空 |
201 | 解密失败,可能为DES,BASE64,URLDecode的错误 |
202 | 签名检验失败,如果确认应用ID和应用密钥的正确性,仍返回202,一般是编码问题。请确保翻译文本 q 为UTF-8编码. |
203 | 访问IP地址不在可访问IP列表 |
205 | 请求的接口与应用的平台类型不一致,确保接入方式(Android SDK、IOS SDK、API)与创建的应用平台类型一致。如有疑问请参考入门指南 |
206 | 因为时间戳无效导致签名校验失败 |
207 | 重放请求 |
303 | 服务端的其它异常 |
304 | 会话闲置太久超时 |
401 | 账户已经欠费停止 |
9001 | 不支持的语音格式 |
9002 | 不支持的语音采样率 |
9003 | 不支持的语音声道 |
9004 | 不支持的语音上传类型 |
9005 | 不支持的语音识别 Language类型 |
9301 | ASR识别失败 |
9303 | 服务器内部错误 |
9411 | 访问频率受限(超过最大调用次数) |
9412 | 超过最大处理语音长度 |
403507 | 没有发送文本 |
403508 | 文本过长 |
403512 | 15s没有发送消息 |
403514 | 发送音频过短,请超过 |