握手参数#
appKeystring可选appKey,签名鉴权时必填,token 鉴权时不带
timestampstring可选签名鉴权时必填,当前 Unix 时间戳,单位为秒
noncestring可选随机串,防重放
signaturestring可选签名鉴权时必填,被签名参数为 signature 之外的全部 query 参数
idempotencyKeystring可选幂等键,开始帧没带时取这里的值
tokenstring可选token 鉴权时必填,代替以上签名参数
会话流程#
wss://open.shengzhiai.com/api/v1/ws/evaluate,握手 query 带鉴权参数。
- 服务端发
{"event": "connected"}。 - 客户端发开始帧
{"cmd": "start", "coreType": "sentence", "referenceText": "今天天气很好", "language": "zh-CN", "idempotencyKey": "..."},开始帧接受原生整段评测config的全部字段,另可带"realtimeFeedback": true打开朗读进度。服务端回{"event": "started"}。 - 客户端发音频:二进制帧,推荐 640 字节一帧即 16 kHz 16 位单声道 20 毫秒,或文本帧
{"cmd": "audio", "data": "<base64>"}。开始帧带realtimeFeedback时,服务端在收音过程中下发朗读进度帧,见朗读进度。 - 客户端发
{"cmd": "end"},服务端回{"event": "result", "recordId": ..., "eof": 1, "result": {...}, "report": {...}, "asrText": {...}, "warnings": [...]}。同一幂等键的重放结果带"replayed": true。
一轮结束后要再发开始帧才能开始下一轮。错误帧为 {"event": "error", "code": 40001, "message": "..."},code 在原因是服务端业务错误时出现。
客户端消息#
{"cmd":"start"}文本帧必填开始帧,接受原生整段评测 config 的全部字段,另带 idempotencyKey,带 "realtimeFeedback": true 时打开朗读进度
二进制帧音频必填PCM 16 位小端,16 kHz,单声道,推荐 640 字节一帧,单帧不超过 128 KB
{"cmd":"audio","data":"<base64>"}文本帧可选音频的文本帧写法,与二进制帧二选一
{"cmd":"end"}文本帧必填结束帧,发出后等待终评
{"cmd":"ping"}文本帧可选应用层心跳,平台回 {"event":"pong"},不改变会话状态
服务端消息#
{"event":"connected"}文本帧必填连接建立
{"event":"started"}文本帧必填开始帧已受理,可以送音频
{"eof":0}文本帧可选进度帧,开始帧带 realtimeFeedback 时下发,格式见朗读进度,不含评分
{"event":"result"}文本帧必填终评,带 recordId,eof: 1,result,report,asrText,warnings,重放时带 "replayed": true
{"event":"error"}文本帧可选错误,带 message,原因是服务端业务错误时另带 code
{"event":"pong"}文本帧可选心跳回复,带服务端毫秒时间戳 ts