# Round 4 QA 报告:Parakeet English 高级模型 状态:真机 QA 已通过,测试包已生成并 tag,用户验收通过 日期:2026-06-03 测试分支:`codex/round4-parakeet-english` 当前实现 commit:`95c5cdd` ## 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.onnx`、`decoder.int8.onnx`、`joiner.int8.onnx`、`tokens.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 回归测试。`,并写入历史 | | Parakeet 重启持久化 | PASS | 重启 App 后配置保持 English + `parakeet-en`,15:48:53 日志显示 `ASR engine ready: Parakeet English · CPU` | | Parakeet 断网英文识别 | PASS | Wi-Fi 关闭窗口 `15:49:33 - 15:50:33`;15:49:59 识别 `An offline test`,15:50:05 识别 `An offline test, parakeet test.`,并写入历史 | | 下载失败保护 | PASS | 中途 App 退出后 Moonshine 仍可用;补丁后下一次下载会清理旧 partial | | 用户数据保护 | PASS | `history.json`、`userdict.json`、`config.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/` partial。 结果: - 补丁后重新下载时旧 partial 被清理,新 run 从 0 开始,最终成功安装。 ## 4. 用户验收 用户已于 2026-06-03 确认: ```text Round 4 用户验收通过 ``` 本状态表示 `2.1.22 build 20260603.1608` 从“验收候选包”升级为“验收通过包”。按发布版本规则,这仍不是 Developer ID notarized 正式发布包。 ## 5. 测试包 | 项 | 值 | |---|---| | Version | `2.1.22` | | Build | `20260603.1608` | | Source commit | `95c5cdd691f173ead217f7a3df8b46f7fc2b0737` | | Release tag | `v2.1.22-build20260603.1608` | | Release 目录 | `/Users/ar/Projects/VoiceSnap-2.1.1-Round4/Release/PrivateVoice-Input-2.1.22-build20260603.1608` | | arm64 DMG | `PrivateVoice Input-2.1.22-build20260603.1608-arm64-local.dmg` | | x86_64 DMG | `PrivateVoice Input-2.1.22-build20260603.1608-x86_64-local.dmg` | | Manifest | `RELEASE_MANIFEST.md` | | SHA256 | `SHA256SUMS.txt` | DMG 验证: - arm64 `hdiutil verify`:PASS。 - x86_64 `hdiutil verify`:PASS。 - arm64/x86_64 包内结构检查:PASS,均包含 `PrivateVoice Input.app` 和 `Applications -> /Applications` 链接。 - arm64/x86_64 包内 App 元数据:PASS,均为 `2.1.22 build 20260603.1608`。 - arm64 候选包安装到 `/Applications`:PASS,安装后 App 元数据和签名验证通过。 - 已安装候选包启动 smoke:PASS,启动日志显示 `version=2.1.22 build=20260603.1608`,并加载 `Parakeet English · CPU`。 ## 6. QA 观察项 - 中文回归测试后日志出现短时间多次模型初始化记录:`sensevoice-zh`、`moonshine-en`、`sensevoice-zh`。最终状态回到 `SenseVoice · CoreML (Apple Neural Engine)`,功能结果通过。建议后续继续观察是否存在设置页快速切换或异步 reload 触发的初始化交叉。 - 断网测试期间,日志和 `history.json` 均证明 Parakeet 离线识别成功;TextEdit 指定窗口未新增对应两句,疑似实际焦点切换到其他输入框。本轮将“模型离线识别和历史写入”作为通过依据,不把“指定 TextEdit 上屏”记为已验证事实。