优谷·雅言SDK 文档2.0.0

安卓 SDK 变更记录

Android 核心 SDK com.shengzhiai.yugu:yugu-android-sdk 的版本记录,格式参照 Keep a Changelog,版本号遵循语义化版本。主版本号变化表示含破坏性变更。

查看 Markdown

2.1.0,2026-10-12#

新增#

  • 朗读进度:实时评测打开实时反馈后,onPartial 在收音过程中告知参考文本读到了哪里,原生与声通兼容两条通道都有,调用 end() 后最后一段音频的进度仍在终评之前回调。PartialResult 新增 readUnits,matchedUnits,totalUnits,帧里没有时为 -1,progress 为逐字或逐词的 ReadingWord 列表,取自 result.progress,帧里没有时为空列表,hasProgress 表示帧里是否带进度。声通兼容通道的进度帧另带声通格式的增量 result.words,SDK 不解析,保留在 raw 里。ReadingWord 为值类型,含 word,read,matched。进度只对 16 kHz,16 位,单声道 PCM 生效。
  • 原生实时评测的 EvaluateConfig 新增 realtimeFeedback,默认 false,构建器有同名方法。为 true 时开始帧带 "realtimeFeedback": true,为 false 时开始帧与 2.0.0 逐字相同,整段评测的 config 段始终不带该字段。声通兼容实时评测仍用 CompatConfig.realtimeFeedback,现在同样给出朗读进度。
  • 断线重连后服务端从零重新计算进度。REPLAY 策略下会话记住上一次回调的进度,只回调 readUnits 与 matchedUnits 都不小于上一次的进度帧,其余的丢弃,写一条 DEBUG 日志,界面上的进度不会倒退。DROP 策略下新会话只评测重连之后的音频,每次重连成功后新会话的进度照常回调。不带进度的中间帧照常回调。

变更#

  • 请求头 User-Agent 为 yugu-android-sdk/2.1.0。
  • 不带朗读进度的中间帧与 2.0.0 相同,只有 bytes,原有调用代码不需要修改。
  • 与 2.0.0 源码兼容,二进制兼容,按 2.0.0 编译的 Java 与 Kotlin 代码换用 2.1.0 后不需要重新编译。

2.0.0,2026-10-08#

新增#

  • 幂等键:evaluate,evaluateCompat,tts 自动带 Idempotency-Key,实时评测在握手参数与开始帧里带 idempotencyKey。重试与重连复用同一个键,结果给出 idempotencyKey 与 replayed。调用方可用 RequestOptions 与 SessionOptions 指定键。
  • REST 自动重试:RetryPolicy 指数退避加抖动,默认最多 3 次尝试,遵守 Retry-After,totalTimeoutMs 限制总耗时。每次重试回调 onRetry,写 WARN 日志。
  • 实时评测自动重连:SessionState 状态机,getState() 与 isActive() 状态查询,onConnected,onStarted,onReconnecting,onReconnected,onClosed 结构化回调,REPLAY,DROP,FAIL 三种断线缓冲策略,默认连续重连 8 次,合计约 23 秒,一次会话最多重连 24 次,15 秒心跳,握手超时与终评超时。协议类关闭码直接结束会话,大块音频按 32000 字节分帧发送。
  • 错误分类:YuguException 与 14 个按类别划分的子类,YuguErrors.isRetryable 可重试判定,ErrorCodes 错误码常量,WarningCode 警告码枚举,错误码表由 spec/errors.json 生成。
  • 生命周期:YuguClient.close(),会话的 cancel() 与 close(),录音器的 release(),全部可以重复调用。
  • 录音器:状态查询,暂停与继续,音量等级回调,最长时长,监听器注销,边录边送进实时会话,每条出错路径都释放麦克风。
  • 外部音频:AudioInput 接受字节数组,文件,输入流与裸 PCM,实时会话接受调用方自有的 PCM。
  • 本地音频预检:时长,大小,静音,音量,格式,可选 OFF,WARN,REJECT。整段上传上限 50 MB,实时评测一轮上限 10 MB。
  • 可观测性:日志级别,可替换的日志输出,凭据脱敏,指标回调 YuguEventListener。
  • 异步方法 evaluateAsync,evaluateCompatAsync,ttsAsync,getReportAsync,取消令牌 CancellationToken。
  • 结果模型:连读模式 ConnectedScores,开放题 OpenTaskScores,段落评测按句的逐字详分,resultRaw 与 rawJson 原始数据。
  • 发布到 https://open.shengzhiai.com/maven/:AAR,源码包,接口文档包,POM 与校验和。附带 Gradle Wrapper,单元测试与集成测试,JaCoCo 覆盖率报告,持续集成脚本 ci/android.sh,独立示例工程 demos/android-demo。

变更#

  • 默认基址改为 https://open.shengzhiai.com 与 wss://open.shengzhiai.com。
  • 最低系统由 minSdk 24 降到 minSdk 21,字节码由 Java 17 改为 Java 8。
  • 分数字段由整数改为 Double,保留平台给出的小数。
  • 结果的 report 与原始数据由 JSONObject 改为 Map,另有响应原文 rawJson,SDK 不再依赖 org.json。
  • 心跳由 20 秒改为 15 秒,未按时收到 pong 即判定连接失效,随后按策略重连。
  • 请求头 User-Agent 为 yugu-android-sdk/2.0.0。
  • 已开始发送的请求只由 SDK 按策略重发,OkHttp 只在连接失败,请求还没有发出时改连下一个地址,尝试次数可观测。

修复#

  • 原生整段评测只对铺平后的 10 个配置字段签名,配置里带其他字段时平台返回签名错误 2003。现在对 config 段原文签名,与平台规则逐字一致。
  • 报告查询把 recordId 计入签名,平台按空集校验,签名不符。现在报告查询签空集。
  • 分数用整数读取,例如 93.7 被截成 93。现在按小数读取。
  • 服务端在终评前关闭连接时没有任何回调,调用方会一直等待。现在会话一定以 onResult 或 onError 结束,最后回调 onClosed。
  • 录音器初始化失败时没有释放 AudioRecord,麦克风可能一直被占用。
  • 双栈网络里域名的第一个地址连不上时,请求不会改连其余地址,例如 IPv6 不通的网络里每次尝试都连 IPv6,重试用尽后失败。现在同一次尝试内改连下一个地址,不消耗重试次数,实时评测的握手同样改连。IPv6 丢包时先等满一次 connectTimeoutMs 再改走 IPv4,实时评测建连与升级的时限为 connectTimeoutMs 的 3 倍,留出改连的时间。

破坏性变更#

  • Maven 坐标与包名由 tech.dragonai.yugu 改为 com.shengzhiai.yugu。
  • 客户端改用 YuguClient.builder() 创建,鉴权写作 Auth.appKey(appKey, secretKey) 或 Auth.token(jwt),Auth.Sig 改名为 Auth.Signature。
  • 异常由继承 IOException 的 YuguClient.YuguException 改为继承 RuntimeException 的 com.shengzhiai.yugu.YuguException,按类别分为子类,httpCode 改名 httpStatus,bizCode 改名 code。
  • 整段评测的音频参数改为 AudioInput,另保留 ByteArray,File,InputStream 三个重载。语音合成参数改为 TtsRequest,声通兼容评测参数改为 CompatConfig,报告查询返回 ReportResult。
  • 实时评测回调接口 YuguClient.StreamCallback 改为 StreamListener,onError 的参数改为 YuguException,onPartial 的参数改为 PartialResult。实时评测方法改为接受 EvaluateConfig 与 CompatConfig。
  • Recorder 移到 com.shengzhiai.yugu.audio,startStreaming(listener) 改为 start(session) 与 Listener.onFrame。
  • EvalResult.dims 改名为 dimensions,warnings 由整数列表改为 Warning 列表。

逐项的改写方法见 升级到 2.0。

1.0.0,2026-06-24#

新增#

  • 首个版本,以源码包分发:整段评测,声通兼容整段评测,语音合成,报告查询,原生与声通兼容实时评测,录音器,签名器与签名一致性测试。
更新于 2026-10-12