edit | blame | history | raw

Round 4 QA 报告:Parakeet English 高级模型

状态:部分通过,待断网英文识别
日期:2026-06-03
测试分支:codex/round4-parakeet-english
当前实现 commit:ce96a0e

1. 自动化与构建

已通过:

  • go test ./... -count=1
  • npm run build
  • git diff --check
  • 本地 macOS arm64 App 构建、安装、签名验证
  • 本地 DMG hdiutil verify

相关日志:

  • logs/go-test-all-20260603-round4-after-qa-fix.log
  • logs/npm-run-build-20260603-round4-after-qa-fix.log
  • logs/git-diff-check-20260603-round4-after-qa-fix.log
  • logs/local-build-install-20260603-round4-after-qa-fix.log

2. 真机 QA 结果

结果 证据
English 默认模型 PASS English 状态默认 Moonshine,Parakeet 作为 Advanced/可选模型显示
Parakeet 下载 PASS 下载官方 sherpa-onnx-nemo-parakeet-unified-en-0.6b-int8-non-streaming 包,落盘到 models/parakeet-en
Parakeet 必需文件 PASS encoder.int8.onnxdecoder.int8.onnxjoiner.int8.onnxtokens.txt 均存在
Parakeet 加载 PASS 15:07:39 日志显示 ASR engine ready: Parakeet English · CPU
Parakeet 英文识别 PASS 15:11:04 识别 Do you understand me?,并写入历史
Moonshine 回退 PASS 15:13:04 日志显示 ASR engine ready: Moonshine English · CPU
Moonshine 英文识别 PASS 15:18:27 识别 This is a most shy fullback test.,并写入历史
中文 SenseVoice 回归 PASS 15:19:24 日志显示 ASR engine ready: SenseVoice · CoreML (Apple Neural Engine)
SenseVoice 中文识别 PASS 15:29:18 识别 这是中文 since voice 回归测试。,并写入历史
下载失败保护 PASS 中途 App 退出后 Moonshine 仍可用;补丁后下一次下载会清理旧 partial
用户数据保护 PASS history.jsonuserdict.jsonconfig.json 未丢失,历史持续写入

3. QA 预检发现的问题和修复

3.1 下载中 Engine UI 状态误导

现象:

  • Parakeet 下载过程中,旧 Moonshine 引擎仍可用,但 UI 曾显示 Engine Loading。

处理:

  • 前端只在已安装模型切换或下载完成后设置 Engine Loading;下载过程中保留当前引擎状态。

结果:

  • 补丁后下载期间 Engine 显示 Moonshine English · CPU,符合真实状态。

3.2 中途退出留下大体积 partial

现象:

  • Parakeet 下载中途 App 退出后,.downloads/parakeet-en 留下约 439 MiB partial。

处理:

  • DownloadProfile 在同模型新下载开始前清理旧 .downloads/<model> partial。

结果:

  • 补丁后重新下载时旧 partial 被清理,新 run 从 0 开始,最终成功安装。

4. 待完成项

  • Parakeet 断网英文识别。
  • 断网后重启 App,确认 Parakeet 仍可加载并识别。

5. QA 观察项

  • 中文回归测试后日志出现短时间多次模型初始化记录:sensevoice-zhmoonshine-ensensevoice-zh。最终状态回到 SenseVoice · CoreML (Apple Neural Engine),功能结果通过。建议后续继续观察是否存在设置页快速切换或异步 reload 触发的初始化交叉。