# 平替层回调 JSON 安卓与 iOS 声通平替层在回调里给出的结果 JSON 与错误 JSON。 来源:https://open.shengzhiai.com/sdk/v2/api/compat-layer/ 安卓 `com.stkouyu` 与 iOS `STKouyuEngine` 两个平替层的接口与声通 SDK 一致。`2.1.1` 起麦克风录音与送流默认走[声通兼容实时评测](https://open.shengzhiai.com/sdk/v2/api/ws-compat/)边录边传,结束帧之前连接失败时改用[声通兼容整段评测](https://open.shengzhiai.com/sdk/v2/api/evaluate-compat/),音频文件评测同样走整段评测。日志级别为 INFO 或 DEBUG 时请求带 `timing=1`,回调前去掉 `timing`,交给应用的结果 JSON 与不带时相同。回调里的结果 JSON 在兼容接口返回的基础上补齐声通外层字段: ```json {"tokenId": "3f0b6a1c9d2e4f5a8b7c6d5e4f3a2b1c", "recordId": "eval_xxx", "applicationId": "", "userId": "", "refText": "北京你好", "eof": 1, "dtLastResponse": "2026-10-08 12:00:00:123", "result": {"overall": 85}} ``` 请求带 `attachAudioUrl=1` 时,兼容接口的返回体顶层另有 `audioUrl`,为本次录音的下载地址,形如 `https://open.shengzhiai.com/rec//<文件名>`,保留 7 天,平替层把该地址原样放进回调 JSON。错误时回调 `{"tokenId": "...", "errId": 20009, "error": "...", "eof": 1, "applicationId": "..."}`。可重试的失败在重试用尽后统一给 errId 20009,其余服务端错误把平台错误码作为 errId,平替层本地错误为 60001 到 60009 与 90005,90011,见[错误码](https://open.shengzhiai.com/sdk/v2/api/errors/#声通平替层-errid)。接入方式见[从声通迁移](https://open.shengzhiai.com/sdk/v2/migrate/shengtong/)。 ## 兼容接口返回体 平替层在外层补齐 `tokenId`,`applicationId`,`userId`,`refText`,`dtLastResponse`。段落逐字条目 `sentences[].details[]` 缺少 `overall` 时补上取自 `scores.overall` 的值,缺少 `pronunciation` 时一并补上,其余内容逐字节不变。 ```json { "recordId": "eval_9cd006ba7b68", "result": { "paragraphs": [], "kernel_version": "1.0.0", "resource_version": "1.0.0", "overall": 94.6, "pronunciation": 100, "tone": 83, "fluency": 96, "rhythm": 78, "integrity": 100, "speed": 225, "rear_tone": "fall", "duration": "1.920", "numeric_duration": 1.92, "warning": [], "words": [ { "word": "今", "pinyin": "jin", "rawpinyin": "jin1", "symbolpinyin": "jīn", "charType": 0, "readType": 0, "tone": "tone1", "scores": { "overall": 78, "pronunciation": 78, "tone": 100, "overall_pron": 78, "prominence": 0 }, "span": { "start": 15, "end": 31 }, "pause": { "type": 0, "duration": 0 }, "phonemes": [ { "phoneme": "J", "phone": "j", "category": 0, "pronunciation": 78, "tone_index": "0", "span": { "start": 15, "end": 23 } }, { "phoneme": "IN", "phone": "in", "category": 1, "pronunciation": 78, "tone_index": "1", "span": { "start": 23, "end": 31 } } ], "normalized_syllables": [ { "syllables": "今", "pinyin": "jin", "tone": "tone1", "tone_sandhi": "tone1", "phoneme_span": [ 0, 1 ] } ], "word_parts": [ { "part": "今", "charType": 0, "beginIndex": 0, "endIndex": 0 } ], "phonics": [], "linkable": false, "syllables": [], "evidence": { "scored": false, "rms_db": -32.7, "rel_db": -0.5, "dur_ms": 160, "dur_ratio": 0.8, "sfgop": 0.625 }, "readStatus": "correct", "read_status": "correct" }, { "word": "天", "pinyin": "tian", "rawpinyin": "tian1", "symbolpinyin": "tiān", "charType": 0, "readType": 0, "tone": "tone1", "scores": { "overall": 95, "pronunciation": 95, "tone": 100, "overall_pron": 95, "prominence": 0 }, "span": { "start": 31, "end": 57 }, "pause": { "type": 0, "duration": 0 }, "phonemes": [ { "phoneme": "T", "phone": "t", "category": 0, "pronunciation": 95, "tone_index": "0", "span": { "start": 31, "end": 43 } }, { "phoneme": "IAN", "phone": "ian", "category": 1, "pronunciation": 95, "tone_index": "1", "span": { "start": 43, "end": 55 } } ], "normalized_syllables": [ { "syllables": "天", "pinyin": "tian", "tone": "tone1", "tone_sandhi": "tone1", "phoneme_span": [ 0, 1 ] } ], "word_parts": [ { "part": "天", "charType": 0, "beginIndex": 0, "endIndex": 0 } ], "phonics": [], "linkable": false, "syllables": [], "evidence": { "scored": false, "rms_db": -31.8, "rel_db": 0.5, "dur_ms": 240, "dur_ratio": 1.2, "sfgop": 0.917 }, "readStatus": "correct", "read_status": "correct" } ], "sentences": [ { "sentence": "今天天气很好", "index": 0, "scores": { "overall": 89, "pronunciation": 100, "fluency": 96, "integrity": 100 }, "details": [ { "word": "今", "pinyin": "jin", "rawpinyin": "jin1", "symbolpinyin": "jīn", "charType": 0, "readType": 0, "tone": "tone1", "scores": { "overall": 78, "pronunciation": 78, "tone": 100, "overall_pron": 78, "prominence": 0 }, "span": { "start": 15, "end": 31 }, "pause": { "type": 0, "duration": 0 }, "phonemes": [ { "phoneme": "J", "phone": "j", "category": 0, "pronunciation": 78, "tone_index": "0", "span": { "start": 15, "end": 23 } }, { "phoneme": "IN", "phone": "in", "category": 1, "pronunciation": 78, "tone_index": "1", "span": { "start": 23, "end": 31 } } ], "normalized_syllables": [ { "syllables": "今", "pinyin": "jin", "tone": "tone1", "tone_sandhi": "tone1", "phoneme_span": [ 0, 1 ] } ], "word_parts": [ { "part": "今", "charType": 0, "beginIndex": 0, "endIndex": 0 } ], "phonics": [], "linkable": false, "syllables": [] }, { "word": "天", "pinyin": "tian", "rawpinyin": "tian1", "symbolpinyin": "tiān", "charType": 0, "readType": 0, "tone": "tone1", "scores": { "overall": 95, "pronunciation": 95, "tone": 100, "overall_pron": 95, "prominence": 0 }, "span": { "start": 31, "end": 57 }, "pause": { "type": 0, "duration": 0 }, "phonemes": [ { "phoneme": "T", "phone": "t", "category": 0, "pronunciation": 95, "tone_index": "0", "span": { "start": 31, "end": 43 } }, { "phoneme": "IAN", "phone": "ian", "category": 1, "pronunciation": 95, "tone_index": "1", "span": { "start": 43, "end": 55 } } ], "normalized_syllables": [ { "syllables": "天", "pinyin": "tian", "tone": "tone1", "tone_sandhi": "tone1", "phoneme_span": [ 0, 1 ] } ], "word_parts": [ { "part": "天", "charType": 0, "beginIndex": 0, "endIndex": 0 } ], "phonics": [], "linkable": false, "syllables": [] } ] } ], "compositeReport": { "compositeScore": 94.6, "integrityScore": 100, "accuracyScore": 100, "toneVoiceScore": 83, "nasalsScore": 98, "pronunciationScore": 100, "phonemeScore": 100, "fluencyScore": 96, "fluentScore": 96, "readSpeedScore": 85, "readSpeed": 225, "skillScore": 78, "stopConnScore": 85, "stressScore": 32, "intonationScore": 100, "emotionScore": 76, "literalTotal": 95, "toneScore": 100, "completenessScore": 100, "skillSuggest": "重音变化不够明显,关键词应当适度强调(音高提升 / 时长延长 / 加强气流)。", "emotionSuggest": "第三声(上声)调值偏低。练习时走 214 曲线,先降再升。推荐练习『你好/美好/小狗』等词。" }, "yuguScores": { "overall": 88.9, "integrity": 100, "accuracy": { "overall": 100, "tone": 100, "nasal": 98, "phoneme": 100 }, "fluency": { "overall": 96, "speed_score": 85, "naturalness": 100 }, "reading_skill": { "overall": 78, "pause": 85, "stress": 32, "intonation": 100 }, "prosody": 78, "emotion": 76, "tone": 83, "rear_tone": "fall", "speed": 225, "duration_s": 1.92 }, "accuracy": 100, "reading_skill": 78 }, "audioUrl": "https://open.shengzhiai.com/rec/20261008/eval_9cd006ba7b68-7ea7c9bb6dfe7b5cde9e7fccd7ab3cf6.wav", "eof": 1 } ``` errId 的完整含义见[错误码](https://open.shengzhiai.com/sdk/v2/api/errors/#声通平替层-errid),平替层的接入步骤见[从声通迁移](https://open.shengzhiai.com/sdk/v2/migrate/shengtong/)。