帮助与文档 > 产品文档 > 智能语音服务 > API文档 > 实时语音评测
实时语音评测

实时语音评测 API 简介

概念解释

实时语音评测:实时语音口语评测服务可实现对连续音频流的实时识别,并最终对用户的读音进行评测。

说明

Hi,您好,欢迎使用有道智云智能语音评测服务。

如果您想快速体验服务,建议您前往 实时语音评测体验中心 或者在体验中心右下侧找到小程序二维码,扫描进行体验。

本文档主要针对需要集成实时语音识别服务HTTP API的开发工程师,详细描述有道智云实时语音评测能力及如何集成的技术内容。

如果您有与我们商务合作的需求,可以通过以下方式联系我们:

商务邮箱: AIcloud_Business@corp.youdao.com

如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

客服QQ:1906538062

智云语音技术交流QQ群:861723255

联系邮箱: zhiyun@corp.youdao.com

温馨提示:

  • 本文档主要针对开发人员,接入测试前需要在后台创建API应用,获取应用ID应用密钥;如果您还没有,请按照 新手指南 获取。
  • 平台向每个账户赠送50元的体验金,供用户集成前测试所用,具体资费规则详见 实时语音评测服务报价

接口说明

有道实时评测服务对用户发音的完整度、流利度、准确度进行全方位评测,并能对发音错误、缺陷进行定位。

支持的音频格式为16K 采样率、16bits 精度的 pcm_s16le 音频,目前支持中、英文。

服务接口的调用分为认证、实时通信两阶段。

接口地址:

wss://openapi.youdao.com/stream_capt?{请求参数}

请求参数格式:
key1=value1&key2=value2&key3=value3&key4=value4

音频格式要求

格式支持:wav(不压缩、pcm编码)
采样率:推荐16k。
编码:16bit位深的单声道

接口调用参数

调用API需要向接口发送以下字段来访问服务。

字段名类型含义必填备注
appKeyString已申请的应用IDID
saltString随机数uuid
curtimeString时间戳,1970-1-01 00:00:00 至当前的秒数1522292849
signString加密数字签名。
signTypeString数字签名类型v4
langTypeString语言选择,接口目前支持中文(zh-CHS)、英文(en)zh-CHS, en
formatString音频格式,支持wavwav
channelString声道,支持11
versionStringapi版本v1
rateString采样率16000
vadHeadSilString前端静音检测,单位ms.范围:[100,10000]1000
vadTailSilString后端静音检测,单位ms.范围:[100,10000]2000
strictnessString注:该参数仅中文接口支持。打分严格程度 1(儿童) 2(中等)3(严格 成人母语者),默认:21,2,3

签名sign生成方法如下:
sign=sha256(应用ID+salt+curtime+应用密钥)。

输出结果

响应结果是以json形式输出,包含字段如下表所示:

字段含义说明
errorCodeString状态码,详见状态码说明
actionString状态标识,started:握手,capt:评测,error:错误,close:关闭
requestIdString请求ID
resultString识别结果数据
closeCodeString关闭的状态码 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)支持语言
wav120中、英

错误代码列表

错误码含义
101缺少必填的参数,首先确保必填参数齐全,然后,确认参数书写是否正确。
102不支持的语言类型
103翻译文本过长
104不支持的API类型
105不支持的签名类型
106不支持的响应类型
107不支持的传输加密类型
108应用ID无效,注册账号,登录后台创建应用并完成绑定,可获得应用ID和应用密钥等信息
110无相关服务的有效实例,应用没有绑定服务实例,可以新建服,绑定服务。注:某些服务的结果发音需要tts服务,需要在控制台创建语音合成服务绑定应用后方能使用。
111开发者账号无效
112请求服务无效
113q不能为空
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类型
9301ASR识别失败
9303服务器内部错误
9411访问频率受限(超过最大调用次数)
9412超过最大处理语音长度
403507没有发送文本
403508文本过长
40351215s没有发送消息
403514发送音频过短,请超过