儿童句子
该文档方便开发者在技术验证阶段 快速集成句子跟读题型的语音评测技术,适用于12岁以下儿童英文句子跟读评测功能
题型描述
对英文句子进行打分,支持音频比对与实时反馈功能。
反馈总分、流利度得分、准确度得分、完整度得分、每个单词的发音,以及单词的重音/升降调/意群停顿/连读、增漏读与停顿检查等。
测评请求参数
字段 | 类型 | 可选 | 说明 |
coreType | string | 必选 | en.sent_kid.score表示英文幼儿句子评测 |
refText | string | 必选 | 评分参考文本,支持整个句子, |
rank | int | 可选 | 评分分制,这个值可以任意设置,最终会根据与100的比例重新计算 |
precision | double | 可选 | 设置打分精度,只支持0.1、0.5或者1,默认值为1(如果设置的值不是0.1或0.5则按1处理) |
typeThres | int | 可选 | 打分松紧度(分数越高影响越小):1表示严格,2表示宽松,3表示非常严格,4非常宽松,0为默认值(不启用此功能) |
feedback | int | 可选 | 1:表示开启实时反馈功能(实时反馈当前读的音频对应的文本位置信息) 0:默认值(不启用此功能) |
attachAudioUrl | int | 可选 | 评测结果中是否返回音频url |
accent | string | 可选 | "accent":"en" 表示指定英式发音评测 |
参数示例
{
"coreType":"en.sent_kid.score",
"refText":"clap your hands",
"accent": 1,
"rank": 100,
"outputPhones":1,
"phdet": 1,
"attachAudioUrl":1
}返回结果示例
{
"tokenId": "60ffd5bc88bf5b0000040001", //客户端请求的唯一标识
"recordId": "11ebeebf6124c82ebcf3a14812619e1a", //数据在云端的唯一标识,请保存到产品数据库,方便排查问题
"applicationId": "aXXX", //提供的评测appkey
"audioUrl": "http:\/\/xxx.xxx.ssapi.cn:8080\/axxx\/11ebeebf6124c82ebcf3a14812619e1a", //用户音频下载地址
"dtLastResponse": "2021-07-27 17:45:34:615", //返回数据时间
"connect": {
"param": {
"app": {
"timestamp": "1627379132",
"applicationId": "aXXX", //提供的评测appkey
"sig": "7cb761d87ec0078199312fa4eff63f07ef1e72ea"
},
"sdk": {
"os": "6.2(9200)1",
"product": "",
"source": 7,
"protocol": 1,
"os_version": "6.2(9200)",
"arch": "586",
"version": 16778752
}
},
"cmd": "connect"
},
"params": {
"app": {
"timestamp": "1627379132",
"userId": "ssound_text", //产品自定义字符串, 建议每个用户的userid不同,方便定位问题
"sig": "7cb761d87ec0078199312fa4eff63f07ef1e72ea",
"connect_id": "60ffd5bc88bf5b0000060002",
"clientId": "",
"applicationId": "aXXX" //提供给产品的appkey
},
"audio":{ //请求评分的音频格式参数
"sampleRate":16000, //采样率
"channel":1, //声道,1是单声道,2是双声道。评测仅支持单声道
"sampleBytes":2,
"audioType":"ogg" //音频类型
},
"request": {
"request_id": "60ffd5bc88bf5b0000050001",
"phdet": 1, //音素检错,1表示使用此功能,默认为0,不启动;只能设置0和1
"rank": 100, //分制,默认是100表示百分制,这个值可以任意设置,最终会根据与100的比例重新计算
"tokenId": "60ffd5bc88bf5b0000040001",
"outputPhones": 1, //输出结果包含每个单词的音标分,只有设置0或1,默认值为0,不开启此功能
"refText": " let us play basketball, are you ok?(t:1).", //评测请求的文本
"coreType": "en.sent_kid.score" //评测请求的题型类型
}
},
"refText": " let us play basketball, are you ok?(t:1).",
"result": {
"overall": 76, //评测综合得分
"forceout": 0,
"precision": 1,
"systime": 4063, //云端评测计算的时长
"res": "eng.snt.online.1.0",
"rank": 100,
"rhythm": { //韵律度相关
"stress": 100, //重音总得分,检测需要重读的单词是否重读
"overall": 50, //对重读、意群停顿、升降调综合评估的一个得分
"tone": 100, //声调总得分,检测句末需要升调的发音是否升调
"sense": 0 //意群总得分,检测意群组合中,发音是否流利
},
"fluency": { //流利度相关
"pause": 0, //停顿次数
"overall": 94, //流利度得分
"speed": 1 //语速快慢(默认为0,漏读时也为0),0:慢,1:正常,2:快
},
"pron": 73, //发音得分(同accuracy)
"wavetime": 3990, //用户录音时长
"accuracy": 73, //发音得分(同pron)
"details": [ //每个单词打分详情
{
"stressref": 0,
"tonescore": 0,
"dur": 520,
"char": "let",
"liaisonref": 0, //连读标识:1表示设置单词连读,0表示单词不需要连读;默认全部为0
"liaisonscore": 0, //返回1或0,1表示实际与设置一致,0表示实际与设置不一致。获取之前要进行非空判断
"senseref": 0, //意群停顿标识:1表示设置单词意群停顿,0表示单词不需要意群停顿;结尾默认为1
"start": 620, //单词在音频中的开始时间,单位ms
"fluency": 99,
"score": 90, //单词的发音得分
"stressscore": 0, //重读反馈(0、1)
"toneref": 0, //升调反馈
"sensescore": 1, //意群停顿得反馈(0、1)
"phone": [ //当前单词的音素打分详情
{
"phid": "1", //此音素在当前单词音标中的位置,只有设置phdet才输出此字段
"ph2alpha": "l", //当前音素对应的单词中的字母(产品开发人员无须通过phid自己计算),只有设置phdet才输出此字段
"start": 620,
"char": "l", //音素
"score": 83, //音素得分
"end": 880,
"pherr": 0 //检测音素是否有错(0、1),只有设置phdet才输出此字段
},
{
"phid": "2",
"ph2alpha": "e",
"start": 880,
"char": "eh",
"score": 95,
"end": 1020,
"pherr": 0
},
{
"phid": "3",
"ph2alpha": "t",
"start": 1020,
"char": "t",
"score": 93,
"end": 1140,
"pherr": 0
}
],
"end": 1140, //单词在音频中的开始时间,单位ms
"accent": "ea" //请求评分时,如果指定英/美式发音accent参数不会返回该参数,未指定则返回结果中有accent字段
},
{
"stressref": 0,
"tonescore": 0,
"dur": 320,
"char": "us",
"liaisonref": 0,
"liaisonscore": 0,
"senseref": 0,
"start": 1200,
"fluency": 69,
"score": 90,
"stressscore": 0,
"toneref": 0,
"sensescore": 1,
"phone": [
{
"phid": "1",
"ph2alpha": "u",
"start": 1200,
"char": "ah",
"score": 92,
"end": 1400,
"pherr": 0
},
{
"phid": "2",
"ph2alpha": "s",
"start": 1400,
"char": "s",
"score": 88,
"end": 1520,
"pherr": 0
}
],
"end": 1520,
"accent": "ea"
},
{
"stressref": 0,
"tonescore": 0,
"dur": 240,
"char": "play",
"liaisonref": 0,
"liaisonscore": 0,
"senseref": 0,
"start": 1580,
"fluency": 95,
"score": 42,
"stressscore": 0,
"toneref": 0,
"sensescore": 0,
"phone": [
{
"phid": "1",
"ph2alpha": "p",
"start": 1580,
"char": "p",
"score": 0,
"end": 1640,
"pherr": 1
},
{
"phid": "2",
"ph2alpha": "l",
"start": 1640,
"char": "l",
"score": 79,
"end": 1700,
"pherr": 0
},
{
"phid": "3_4",
"ph2alpha": "ay",
"start": 1700,
"char": "ey",
"score": 89,
"end": 1820,
"pherr": 0
}
],
"end": 1820,
"accent": "ea"
},
{
"stressref": 0,
"tonescore": 0,
"dur": 760,
"char": "basketball",
"liaisonref": 0,
"liaisonscore": 0,
"senseref": 0,
"start": 1820,
"fluency": 96,
"score": 72,
"stressscore": 0,
"toneref": 0,
"sensescore": 1,
"phone": [
{
"phid": "1",
"ph2alpha": "b",
"start": 1820,
"char": "b",
"score": 98,
"end": 1900,
"pherr": 0
},
{
"phid": "2",
"ph2alpha": "a",
"start": 1900,
"char": "aa",
"score": 97,
"end": 2000,
"pherr": 0
},
{
"phid": "3",
"ph2alpha": "s",
"start": 2000,
"char": "s",
"score": 97,
"end": 2120,
"pherr": 0
},
{
"phid": "4",
"ph2alpha": "k",
"start": 2120,
"char": "k",
"score": 96,
"end": 2200,
"pherr": 0
},
{
"phid": "5",
"ph2alpha": "e",
"start": 2200,
"char": "ih",
"score": 95,
"end": 2260,
"pherr": 0
},
{
"phid": "6",
"ph2alpha": "t",
"start": 2260,
"char": "t",
"score": 80,
"end": 2400,
"pherr": 0
},
{
"phid": "7",
"ph2alpha": "b",
"start": 2400,
"char": "b",
"score": 61,
"end": 2460,
"pherr": 0
},
{
"phid": "8",
"ph2alpha": "a",
"start": 2460,
"char": "ao",
"score": 25,
"end": 2520,
"pherr": 0
},
{
"phid": "9_10",
"ph2alpha": "ll",
"start": 2520,
"char": "l",
"score": 49,
"end": 2580,
"pherr": 0
}
],
"end": 2580,
"accent": "en"
},
{
"stressref": 0,
"tonescore": 0,
"dur": 120,
"char": "are",
"liaisonref": 0,
"liaisonscore": 0,
"senseref": 0,
"start": 2700,
"fluency": 100,
"score": 93,
"stressscore": 0,
"toneref": 0,
"sensescore": 0,
"phone": [
{
"phid": "1_2_3",
"ph2alpha": "are",
"start": 2700,
"char": "aa",
"score": 93,
"end": 2820,
"pherr": 0
}
],
"end": 2820,
"accent": "en"
},
{
"stressref": 0,
"tonescore": 0,
"dur": 200,
"char": "you",
"liaisonref": 0,
"liaisonscore": 0,
"senseref": 0,
"start": 2820,
"fluency": 100,
"score": 46,
"stressscore": 0,
"toneref": 0,
"sensescore": 0,
"phone": [
{
"phid": "1",
"ph2alpha": "y",
"start": 2820,
"char": "y",
"score": 74,
"end": 2940,
"pherr": 0
},
{
"phid": "2_3",
"ph2alpha": "ou",
"start": 2940,
"char": "uh",
"score": 32,
"end": 3020,
"pherr": 0
}
],
"end": 3020,
"accent": "ea"
},
{
"stressref": 0,
"tonescore": 1,
"dur": 560,
"char": "ok",
"liaisonref": 0,
"liaisonscore": 0,
"senseref": 1,
"start": 3020,
"fluency": 100,
"score": 75,
"stressscore": 0,
"toneref": 1,
"sensescore": 1,
"phone": [
{
"phid": "1",
"ph2alpha": "o",
"start": 3020,
"char": "ow",
"score": 49,
"end": 3160,
"pherr": 0
},
{
"phid": "2",
"ph2alpha": "k",
"start": 3160,
"char": "k",
"score": 94,
"end": 3320,
"pherr": 0
},
{
"phid": "",
"char": "ey",
"start": 3320,
"score": 84,
"end": 3580,
"pherr": 0
}
],
"end": 3580,
"accent": "ea"
}
],
"info": {
"tipId": 0,
"clip": 0,
"snr": 33.928673,
"volume": 88
},
"statics": [
{
"score": 70,
"char": "l",
"count": 3
},
{
"score": 95,
"char": "eh",
"count": 1
},
{
"score": 87,
"char": "t",
"count": 2
},
{
"score": 92,
"char": "ah",
"count": 1
},
{
"score": 92,
"char": "s",
"count": 2
},
{
"score": 0,
"char": "p",
"count": 1
},
{
"score": 86,
"char": "ey",
"count": 2
},
{
"score": 79,
"char": "b",
"count": 2
},
{
"score": 95,
"char": "aa",
"count": 2
},
{
"score": 95,
"char": "k",
"count": 2
},
{
"score": 95,
"char": "ih",
"count": 1
},
{
"score": 25,
"char": "ao",
"count": 1
},
{
"score": 74,
"char": "y",
"count": 1
},
{
"score": 32,
"char": "uh",
"count": 1
},
{
"score": 49,
"char": "ow",
"count": 1
}
],
"delaytime": 30,
"integrity": 100,
"pretime": 1,
"version": "0.0.80.2021.6.29.10:28:00"
},
"eof": 1,
"cloud_platform": {
"origin_audio_length": 15366
}
}返回结果说明
键 | 类型 | 说明 | 使用建议 |
recordId | string | 音频文件的唯一标识 | 可供参考 |
tokenId | string | 用户请求的唯一标识 | 可供参考 |
applicationId | string | 授权的评测账号,即Appkey | 内部参数 |
dtLastResponse | string | 云端响应的时间点 | 内部参数 |
eof | int | 0表示返回未结束,后续还有其它的返回结果 1:表示本次评测所有的返回结束 | |
refText | string | 传入的评测文本 | 可供参考 |
params | object | 回显客户端传入的评测请求参数 | |
- app | object | ||
- - applicationId | string | 授权账号,即用户的Appkey | |
- - userId | string | 用户标识 | |
- - timestamp | string | start时间 | |
- - sig | string | 校验码 | |
- request | object | 评分请求参数节点 | |
- audio | object | 评分请求的音频参数节点 | |
result | object | 评测结果 | |
- version | string | 引擎的版本,包含发布时间 | 内部参数 |
- rank | int | 评分分制 | 内部参数 |
- precision | float | 评分精度 | 内部参数 |
- res | string | 评测本题型时,使用的资源名称 | 内部参数 |
- forceout | int | 内部参数 | |
- pretime | int | 云端调用Start接口本身耗时,单位ms | 内部参数 |
- systime | int | 评测整个过程的总耗时,单位ms | 内部参数 |
- delaytime | int | 云端从feed音频结束到获取结果的耗时,单位ms | 内部参数 |
- wavetime | int | 音频时长,单位ms | 可供参考 |
- overall | float | 总分 | 建议字段 |
- pron | float | 发音得分 | 内部参数 |
- integrity | float | 完整度评分 | 建议字段 |
- accuracy | float | 发音得分(同pron字段) | 建议字段 |
- fluency | object | 流利度评分(完整度为0时,流利度得分为0) | 建议字段 |
- - overall | float | 流利度总体得分(0-100) | 建议字段 |
- - pause | int | 停顿次数 | 可供参考 |
- - speed | int | 语速快慢(默认为0,漏读时也为0),0:慢,1:正常,2:快 | 可供参考 |
- rhythm | object | 韵律性评分 | 可供参考 |
- - overall | float | 韵律总体得分(sense占50%,stress和tone各占25%) (0-100) | 可供参考 |
- - sense | float | 意群得分(0-100) | 保留备用 |
- - stress | float | 重音得分(0-100) | 保留备用 |
- - tone | float | 句子升降调得分(0-100) | 保留备用 |
-realtime_details | array | 实时反馈信息 ,即使设置feedback后会显示此节点 | |
-- char | string | 单词 | 供参考 |
-- dp_type | int | 0:表示正常读 1:表示漏读或者未读 2:表示重读 | 供参考 |
- details | array | 单词详细得分 | 建议字段 |
- - char | string | 单词 | 建议字段 |
- - score | int | 单词发音得分 | 建议字段 |
- - fake_pron | int | 词单词不在词典(集外词),才会输出此字段。如果需要对集外词进行评测,可以通过refText传音标的方式进行评测。 | |
- - start | int | 单词在音频中的起始时间,单位为毫秒(ms) | 可供参考 |
- - end | int | 单词在音频中的结束时间,单位为毫秒(ms) | 可供参考 |
- - dur | int | 单词发音时间 | 可供参考 |
- - fluency | float | 流利度评分(0-100) | 保留备用 |
- - stressref | int | 重读标识 | 可供参考 |
- - stressscore | int | 重读得分(0、1) | 可供参考 |
- - toneref | int | 升调标识 | 可供参考 |
- - tonescore | int | 升降调得分(0、1) | 可供参考 |
- - senseref | int | 意群停顿标识 | 可供参考 |
- - sensescore | int | 意群停顿得分(0、1) | 可供参考 |
- - liaisonref | int | 连读标识 | 可供参考 |
- - liaisonscore | int | 连读得分(0、1) | 可供参考 |
- - dp_type | int | 单词正常朗读(不输出dp_type字段)、漏读(1)、重复读(2) | 正常:该字段不输出;单词漏读时, dp_type:1;重读时,dp_type:2。 |
- - is_pause | int | 停顿标记 | 当句子在某个单词处停顿,输出的该单词JSON字段中包含"is_pause": 1,正常情况不出现。 |
- - accent | string | 请求参数中配置accent时不返回此字段,否则返回此字段"accent":"ea" | |
- - phone | array | 当前单词对应的音素分 | 只有设置outputPhones,才有此字段 |
- - - char | string | 音素(当请求参数中设置accent时此字段为标准的英美式音素,否则为内部映射音素) | 可供参考 |
- - - score | float | 音素发音得分(0-100) | 可供参考 |
- - - phid | int | 此音标在当前单词音标中的位置 | 只有设置phdet才输出此字段 |
- - - pherr | int | 音素检错的结果 | 只有设置phdet才输出此字段 |
- - - ph2alpha | string | 音素对应的字母 | 只有设置phdet才输出此字段 |
- statics | array | 内部参数 | |
- - char | string | 音素 | 内部参数 |
- - count | int | 该音素出现的次数 | 内部参数 |
- - score | int | 音素平均发音得分(0-100) | 内部参数 |
- info | object | ||
- - snr | float | 信噪比,值越高越清晰,范围(0~40dB)此参数影响评分时,会设置相应的tipId值 | 可供参考 |
- - clip | float | 音频声音太高,出现截幅,范围(0\~1)。 此参数影响评分时,会设置相应的tipId值 | 内部参数 |
- - volume | int | 录音音量,范围(0~180dB) | 可供参考 |
- - tipId | int | 音频质量,详情请参考 tipId提示信息说明 | 建议字段 |
评测结果展现建议
维度 | 说明 | 详细 |
overall | 总分 | 对整个句子的发音情况进行总体评价 |
pron | 发音得分 | |
integrity | 完整度 | 评测录音内容与待测句子的完整程度,只评测是否读完整 |
accuracy | 准确度 | 对已读内容的发音评价,与完整度无关 |
fluency.overall | 流利度 | 评测录音是否流利,与朗读的内容无关 |
details[i].score | 单词得分 | 对句子中每个单词的发音评价。获取之前要进行非空判断 |
details[i].dp_type | 单词的增漏读 | 表示单词是否重读/漏读(参考对应题型的返回说明) |
detials[i].is_pause | 停顿字段 | 表示在读完某个单词后,有停顿 |
detials[i].speed | 表示语速 | 表示语速快慢(参考对应题型的返回说明) |
detials[i].fake_pron | 伪造发音 | 表示单词是否在词典中,如果不在词典中,会为单词预测发音 |
detials[i].stressref | 重读标识 | 1表示设置单词重读,0表示单词不需要重读;默认全部为0 |
detials[i].stressscore | 重读得分 | 返回1或0, 1表示实际重读与设置的一致,0表示实际与设置不一致。获取之前要进行非空判断 |
detials[i].toneref | 升降调标识 | 1表示设置单词升调,0表示设置单词降调;如果没有设置,结尾默认为0 |
detials[i].tonescore | 升降调得分 | 返回1或0,1表示实际与设置一致,0表示实际与设置不一致。获取之前要进行非空判断 |
detials[i]. senseref | 意群停顿标识 | 1表示设置单词意群停顿,0表示单词不需要意群停顿;结尾默认为1 |
detials[i]. sensescore | 意群停顿得分 | 返回1或0,1表示实际与设置一致,0表示实际与设置不一致。获取之前要进行非空判断 |
detials[i]. liaisonref | 连读标识 | 1表示设置单词连读,0表示单词不需要连读;默认全部为0 |
detials[i]. liaisonscore | 连读得分 | 返回1或0,1表示实际与设置一致,0表示实际与设置不一致。获取之前要进行非空判断 |
评测失败时的返回结果
如果返回的评测结果中result结构为空,说明评测失败。
通过返回结果可以获取 errId 和 error,产品端可以根据相应错误码做续判断和处理。
错误码
错误码参考:评测错误码