篇章
该文档是开发者在产品功能集成阶段 使用的中文段落跟读题型的技术说明文档
题型描述
支持中文段落跟读评测,支持实时反馈每个字的得分,以及音频对比等功能。
反馈段落总分,每句话的得分,每个字的得分,每个字的声韵母得分,声调得分,以及用户音频地址。
测评请求参数
字段 | 类型 | 可选 | 说明 |
coreType | String | 必选 | cn.pred.score表示中文篇章评分题型 |
attachAudioUrl | int | 可选 | 评测结果中是否返回音频url |
rank | int | 可选 | 总分评分分制 |
precision | double | 可选 | 设置打分精度,只支持0.1、0.5或者1,默认值为1(如果设置的值不是0.1或0.5则按1处理) |
refText | String | 必选 | 评分参考文本: |
outputPhones | int | 可选 | 输出结果包含字的声、韵母得分信息 只有设置0、1或2,默认值为0,不开启此功能 (1:返回的声韵母字符需要经过映射才能与实际对应; 2:返回实际的声韵母信息。 列如: |
feedback | int | 可选 | 1:表示开启实时反馈功能(实时反馈当前读的音频对应的文本位置信息) 0:默认值(不启用此功能) |
symbol | int | 可选 | 如果单字前有多个连续标点,只显示第一个标点;如果单字结尾有多个连续标点,只输出靠近结尾单字最近的三个标点; 只有设置0或1,默认值为0,不开启此功能 |
typeThres | int | 可选 | 打分松紧度(分数越高影响越小):1表示严格,2表示宽松,3表示非常严格,4非常宽松,0为默认值(不启用此功能) |
use_cws | int | 可选 | 启用分词功能(可更好支持多音字及数字); 只有设置0或1,0为默认值(不启用此功能) |
参数示例
{
"coreType":"cn.pred.score",
"rank":100,
"precision":0.5,
"attachAudioUrl":1
"refText":"山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。"
}
返回结果示例
{
"tokenId": "6126f94688bf5b0000080001",
"applicationId": "a148",
"audioUrl": "http:\/\/files.cloud.ssapi.cn:8080\/a148\/11ec06137cd7640182f2a148d26183d9",
"connect": {
"param": {
"app": {
"timestamp": "1629944134",
"applicationId": "a148",
"sig": "47dbc617da1b0ad2aedfc03c80455862502ed275"
},
"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": "1629944134",
"userId": "ssound_text",
"sig": "47dbc617da1b0ad2aedfc03c80455862502ed275",
"connect_id": "6126f94688bf5b00000a0002",
"clientId": "",
"applicationId": "a148"
},
"audio": {
"sampleBytes": 2,
"audioType": "ogg",
"sampleRate": 16000,
"channel": 1
},
"request": {
"request_id": "6126f94688bf5b0000090001",
"tokenId": "6126f94688bf5b0000080001",
"symbol": 1,
"precision": 1,
"attachAudioUrl": 1,
"refText": "山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。",
"coreType": "cn.pred.score",
"rank": 100
}
},
"recordId": "11ec06137cd7640182f2a148d26183d9",
"refText": "山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。",
"dtLastResponse": "2021-08-26 10:15:44:999",
"cloud_platform": {
"origin_audio_length": 45575
},
"result": {
"version": "0.0.80.2021.7.24.00:01:28",
"pron": 38,
"wavetime": 11990,
"accuracy": 38,
"pretime": 40,
"systime": 12491,
"res": "chn.pred.online.1.0",
"details": [
{
"text": "山不在高,",
"score": 64,
"fluency": {
"pause": 0,
"overall": 97,
"speed": 1
},
"snt_details": [
{
"char": "shan",
"tonescore": 99,
"dur": 360,
"end": 1260,
"chn_char": "山",
"score": 91,
"tone": 1,
"start": 900
},
{
"char": "bu",
"tonescore": 86,
"dur": 140,
"end": 1400,
"chn_char": "不",
"score": 56,
"tone": 2,
"start": 1260
},
{
"char": "zai",
"tonescore": 100,
"dur": 280,
"end": 1680,
"chn_char": "在",
"score": 94,
"tone": 4,
"start": 1400
},
{
"char": "gao",
"tonescore": 99,
"dur": 340,
"end": 2020,
"chn_char": "高,",
"score": 34,
"tone": 1,
"start": 1680
}
]
},
{
"text": "有仙则名。",
"score": 80,
"fluency": {
"pause": 0,
"overall": 95,
"speed": 1
},
"snt_details": [
{
"char": "you",
"tonescore": 99,
"dur": 260,
"end": 2320,
"chn_char": "有",
"score": 93,
"tone": 3,
"start": 2060
},
{
"char": "xian",
"tonescore": 99,
"dur": 340,
"end": 2660,
"chn_char": "仙",
"score": 94,
"tone": 1,
"start": 2320
},
{
"char": "ze",
"tonescore": 99,
"dur": 200,
"end": 2860,
"chn_char": "则",
"score": 89,
"tone": 2,
"start": 2660
},
{
"char": "ming",
"tonescore": 98,
"dur": 440,
"end": 3300,
"chn_char": "名。",
"score": 63,
"tone": 2,
"start": 2860
}
]
},
{
"text": "水不在深,",
"score": 84,
"fluency": {
"pause": 0,
"overall": 100,
"speed": 1
},
"snt_details": [
{
"char": "shui",
"tonescore": 85,
"dur": 340,
"end": 3900,
"chn_char": "水",
"score": 72,
"tone": 3,
"start": 3560
},
{
"char": "bu",
"tonescore": 99,
"dur": 160,
"end": 4060,
"chn_char": "不",
"score": 92,
"tone": 2,
"start": 3900
},
{
"char": "zai",
"tonescore": 100,
"dur": 240,
"end": 4300,
"chn_char": "在",
"score": 94,
"tone": 4,
"start": 4060
},
{
"char": "shen",
"tonescore": 100,
"dur": 360,
"end": 4660,
"chn_char": "深,",
"score": 91,
"tone": 1,
"start": 4300
}
]
},
{
"text": "有龙则灵。",
"score": 46,
"fluency": {
"pause": 1,
"overall": 59,
"speed": 2
},
"snt_details": [
{
"char": "you",
"tonescore": 88,
"dur": 320,
"end": 5020,
"chn_char": "有",
"score": 52,
"tone": 3,
"start": 4700
},
{
"char": "long",
"tonescore": 100,
"dur": 360,
"end": 5400,
"chn_char": "龙",
"score": 86,
"tone": 2,
"start": 5040
},
{
"char": "ze",
"tonescore": 94,
"dur": 40,
"end": 5440,
"chn_char": "则",
"score": 11,
"tone": 2,
"start": 5400
},
{
"tonescore": 85,
"dur": 540,
"chn_char": "灵。",
"start": 5460,
"char": "ling",
"end": 6000,
"score": 56,
"tone": 2,
"is_pause": 1
}
]
},
{
"text": "斯是陋室,",
"score": 82,
"fluency": {
"pause": 0,
"overall": 97,
"speed": 1
},
"snt_details": [
{
"char": "si",
"tonescore": 55,
"dur": 300,
"end": 7140,
"chn_char": "斯",
"score": 83,
"tone": 1,
"start": 6840
},
{
"char": "shi",
"tonescore": 55,
"dur": 180,
"end": 7320,
"chn_char": "是",
"score": 72,
"tone": 4,
"start": 7140
},
{
"char": "lou",
"tonescore": 94,
"dur": 280,
"end": 7600,
"chn_char": "陋",
"score": 76,
"tone": 4,
"start": 7320
},
{
"char": "shi",
"tonescore": 100,
"dur": 380,
"end": 7980,
"chn_char": "室,",
"score": 89,
"tone": 4,
"start": 7600
}
]
},
{
"text": "惟吾德馨。",
"score": 57,
"fluency": {
"pause": 0,
"overall": 80,
"speed": 2
},
"snt_details": [
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "惟",
"start": 0,
"char": "wei",
"score": 0,
"tone": 2,
"end": 0
},
{
"char": "wu",
"tonescore": 54,
"dur": 280,
"end": 8460,
"chn_char": "吾",
"score": 65,
"tone": 2,
"start": 8180
},
{
"char": "de",
"tonescore": 98,
"dur": 220,
"end": 8700,
"chn_char": "德",
"score": 70,
"tone": 2,
"start": 8480
},
{
"char": "xin",
"tonescore": 100,
"dur": 460,
"end": 9160,
"chn_char": "馨。",
"score": 97,
"tone": 1,
"start": 8700
}
]
},
{
"text": "苔痕上阶绿,",
"score": 72,
"fluency": {
"pause": 0,
"overall": 90,
"speed": 1
},
"snt_details": [
{
"char": "tai",
"tonescore": 99,
"dur": 240,
"end": 9600,
"chn_char": "苔",
"score": 85,
"tone": 2,
"start": 9360
},
{
"char": "hen",
"tonescore": 62,
"dur": 240,
"end": 9840,
"chn_char": "痕",
"score": 27,
"tone": 2,
"start": 9600
},
{
"char": "shang",
"tonescore": 40,
"dur": 260,
"end": 10100,
"chn_char": "上",
"score": 71,
"tone": 0,
"start": 9840
},
{
"char": "jie",
"tonescore": 67,
"dur": 240,
"end": 10340,
"chn_char": "阶",
"score": 76,
"tone": 1,
"start": 10100
},
{
"char": "lv",
"tonescore": 100,
"dur": 280,
"end": 10620,
"chn_char": "绿,",
"score": 96,
"tone": 4,
"start": 10340
}
]
},
{
"text": "草色入帘青。",
"score": 66,
"fluency": {
"pause": 0,
"overall": 96,
"speed": 1
},
"snt_details": [
{
"char": "cao",
"tonescore": 96,
"dur": 340,
"end": 11080,
"chn_char": "草",
"score": 88,
"tone": 3,
"start": 10740
},
{
"char": "se",
"tonescore": 91,
"dur": 220,
"end": 11300,
"chn_char": "色",
"score": 74,
"tone": 4,
"start": 11080
},
{
"char": "ru",
"tonescore": 100,
"dur": 200,
"end": 11500,
"chn_char": "入",
"score": 84,
"tone": 4,
"start": 11300
},
{
"char": "lian",
"tonescore": 100,
"dur": 340,
"end": 11840,
"chn_char": "帘",
"score": 82,
"tone": 2,
"start": 11500
},
{
"char": "qing",
"tonescore": 12,
"dur": 100,
"end": 11940,
"chn_char": "青。",
"score": 20,
"tone": 1,
"start": 11840
}
]
},
{
"text": "谈笑有鸿儒,",
"score": 0,
"fluency": {
"pause": 0,
"overall": 0,
"speed": 0
},
"snt_details": [
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "谈",
"start": 0,
"char": "tan",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "笑",
"start": 0,
"char": "xiao",
"score": 0,
"tone": 4,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "有",
"start": 0,
"char": "you",
"score": 0,
"tone": 3,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "鸿",
"start": 0,
"char": "hong",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "儒,",
"start": 0,
"char": "ru",
"score": 0,
"tone": 2,
"end": 0
}
]
},
{
"text": "往来无白丁。",
"score": 0,
"fluency": {
"pause": 0,
"overall": 0,
"speed": 0
},
"snt_details": [
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "往",
"start": 0,
"char": "wang",
"score": 0,
"tone": 3,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "来",
"start": 0,
"char": "lai",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "无",
"start": 0,
"char": "wu",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "白",
"start": 0,
"char": "bai",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "丁。",
"start": 0,
"char": "ding",
"score": 0,
"tone": 1,
"end": 0
}
]
},
{
"text": "可以调素琴,",
"score": 0,
"fluency": {
"pause": 0,
"overall": 0,
"speed": 0
},
"snt_details": [
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "可",
"start": 0,
"char": "ke",
"score": 0,
"tone": 3,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "以",
"start": 0,
"char": "yi",
"score": 0,
"tone": 3,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "调",
"start": 0,
"char": "diao",
"score": 0,
"tone": 4,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "素",
"start": 0,
"char": "su",
"score": 0,
"tone": 4,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "琴,",
"start": 0,
"char": "qin",
"score": 0,
"tone": 2,
"end": 0
}
]
},
{
"text": "阅金经。",
"score": 0,
"fluency": {
"pause": 0,
"overall": 0,
"speed": 0
},
"snt_details": [
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "阅",
"start": 0,
"char": "yue",
"score": 0,
"tone": 4,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "金",
"start": 0,
"char": "jin",
"score": 0,
"tone": 1,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "经。",
"start": 0,
"char": "jing",
"score": 0,
"tone": 1,
"end": 0
}
]
},
{
"text": "无丝竹之乱耳,",
"score": 0,
"fluency": {
"pause": 0,
"overall": 0,
"speed": 0
},
"snt_details": [
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "无",
"start": 0,
"char": "wu",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "丝",
"start": 0,
"char": "si",
"score": 0,
"tone": 1,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "竹",
"start": 0,
"char": "zhu",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "之",
"start": 0,
"char": "zhi",
"score": 0,
"tone": 1,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "乱",
"start": 0,
"char": "luan",
"score": 0,
"tone": 4,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "耳,",
"start": 0,
"char": "er",
"score": 0,
"tone": 3,
"end": 0
}
]
},
{
"text": "无案牍之劳形。",
"score": 0,
"fluency": {
"pause": 0,
"overall": 0,
"speed": 0
},
"snt_details": [
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "无",
"start": 0,
"char": "wu",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "案",
"start": 0,
"char": "an",
"score": 0,
"tone": 4,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "牍",
"start": 0,
"char": "du",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "之",
"start": 0,
"char": "zhi",
"score": 0,
"tone": 1,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "劳",
"start": 0,
"char": "lao",
"score": 0,
"tone": 2,
"end": 0
},
{
"dp_type": 1,
"tonescore": 0,
"dur": 0,
"chn_char": "形。",
"start": 0,
"char": "xing",
"score": 0,
"tone": 2,
"end": 0
}
]
}
],
"fluency": 48,
"info": {
"tipId": 0,
"clip": 0,
"snr": 10.968272,
"volume": 80
},
"rank": 100,
"delaytime": 44,
"overall": 38,
"integrity": 47,
"tone": 45,
"precision": 1
},
"eof": 1
}返回结果说明
键 | 类型 | 说明 | 使用建议 |
tokenId | string | 用户请求的唯一标识 | 可供参考 |
applicationId | string | 授权的评测账号,即Appkey | 内部参数 |
audioUrl | string | 用户音频下载地址: | |
recordId | string | 音频文件的唯一标识 | |
refText | string | 传入的评测文本 | |
dtLastResponse | string | 云端响应的时间点 | 内部参数 |
eof | int | 内部参数 | |
params | object | 回显客户端传入的评测请求参数 | |
- app | object | ||
- - applicationId | string | 授权账号 | |
- - userId | string | 用户标识 ,自定义字符串,方便定位排查问题 | |
- - timestamp | string | start时间 | |
- - sig | string | 校验码 | |
- request | object | ||
- - coreType | string | 使用内核 | |
- - tokenId | string | 用户请求的唯一标识 | |
- - refText | string | 评分参考文本 | |
- - rank | int | 评分分制 | |
- - precision | float | 打分精度 | |
- - attachAudioUrl | int | 评分结果中是否包含音频url | |
- audio | object | ||
- - sampleRate | int | 采样率 | |
- - channel | int | 声道 | |
- - sampleBytes | int | 每采样字节数,支持单字节和双字节 | |
- - audioType | string | 音频格式 | |
result | object | 评测结果 | |
- overall | float | 总分 | 内部参数 |
- precision | float | 评分精度 | 内部参数 |
-fluency | float | 流利度分 | |
- systime | int | 评测整个过程的总耗时,单位ms | |
- res | string | 评测本题型时,使用的资源名称 | 内部参数 |
-tone | float | 声调得分 | 保留备用 |
- accuracy | float | 发音得分(同pron字段) | |
-version | string | 引擎的版本,包含发布时间 | |
- rank | int | 评分分制 | |
- integrity | float | 完整度评分 | 建议字段 |
- pretime | int | 云端调用Start接口本身耗时,单位ms | |
- pron | float | 发音分 | 内部参数 |
-overall | float | 总分 | 建议字段 |
-delaytime | int | 云端从feed音频结束到获取结果的耗时,单位ms | 内部参数 |
-wavetime | int | 音频时长 | 可供参考 |
-realtime_details | array | 实时反馈信息 | |
-- char | string | 单字 | 供参考 |
-- dp_type | int | 0:表示正常读 1:表示漏读或者未读 2:表示重读 3:表示这个字不参与评分,起到注释作用 | 供参考 |
- info | object | ||
- - snr | float | 信噪比 | 可供参考 |
- - clip | float | 音频声音太高,出现截幅,范围(0\~1)。 此参数影响评分时,会设置相应的tipId值 | 内部参数 |
- - tipId | int | 音频质量 | 建议字段 |
- - volume | int | 如开启vad功能,返回此参数,表示录音的音量值 | 可供参考 |
- details | array | 单字详细得分 | 建议字段 |
- -fluency | object | 流利度情况 | |
- - -pause | int | 是否停顿 | |
- - -overall | float | 流利度总分 | |
- - -speed | int | 语速快慢,0:慢,1:正常,2:快 | 保留备用 |
- - snt_details | array | 单字发音得分 | 建议字段 |
- - - tone | int | 单字声调 | 0~4分别对应轻声、一声、二声、三声、四声 |
- - - tonescore | int | 单字声调得分 | |
- - - score | float | 单字得分 | |
- - - char | string | 单字对应的拼音 | |
- - - chn_char | string | 单字 | 可供参考 |
- - - end | int | 单字发音时间,单位为毫秒(ms) | |
- - - start | int | 单字在音频中的起始时间,单位为毫秒(ms) | |
- - text | string | 评测的句子 | |
- - score | float | 句子得分 | 可供参考 |
评测结果建议展现维度
维度 | 说明 | 详细 |
overall | 发音总分 | 对整个段落的发音情况进行总体评价 |
pron | 准确度 | 对整个段落的句子发音进行评价 |
integrity | 完整度 | 评测录音内容与待测句子的完整程度,只评测是否读完整 |
fluency.overall | 流利度 | 评测录音是否流利,与朗读的内容无关 |
detials[i].score | 句子得分 | 对句子中每个句子的发音评价。获取之前要进行非空判断 |
details[i] .snt_details[n].dp_type | 单词的增漏读 | 表示单词是否重读/漏读(参考对应题型的返回说明) |
评测失败时的返回结果
如果返回的评测结果中result结构为空,说明评测失败。
通过返回结果可以获取 errId 和 error,产品端可以根据相应错误码做续判断和处理。
错误码
错误码参考:评测错误码