edit | blame | history | raw

Round 4 代码复审记录:Parakeet English 高级模型

状态:未发现研发自测阻断问题,待 QA 真机验证
日期:2026-06-03

1. 复审结论

本轮代码满足 Round 4 PRD 的研发交付边界,可以进入 QA。

2. 已重点复核

  • English 默认模型保持为 moonshine-en
  • parakeet-en 只挂在 English 的 UpgradeModelIDs 下。
  • 中文语言 profile 未加入 Parakeet。
  • 模型选择 API 会校验目标模型是否属于当前语言。
  • 手动选择 Parakeet 后,如果当前有效语言变为中文,resolver 会回落到中文默认 SenseVoice。
  • 未安装模型不能直接选择。
  • Parakeet 下载失败不会写入 SelectedModelID
  • Parakeet required files 缺失时不会被判定为可用模型。
  • Nemo transducer config 设置了 encoder、decoder、joiner、tokens、model type。

3. 残余风险

  • Parakeet 的真实 sherpa-onnx 初始化必须依赖真机下载后的模型文件验证,单元测试只能验证 config wiring。
  • 已安装但文件内容损坏的 Parakeet 仍可能在引擎初始化阶段失败;当前行为是显示引擎错误,QA 需要确认用户可以切回 Moonshine。
  • Parakeet 约 478 MiB 下载包,首次下载耗时和失败恢复需要真实网络测试。

4. 代码范围

  • privatevoice.src/internal/model/*
  • privatevoice.src/internal/modelselection/*
  • privatevoice.src/internal/engine/*
  • privatevoice.src/services/engine_service.go
  • privatevoice.src/services/config_service.go
  • privatevoice.src/frontend/src/components/settings/GeneralPage.svelte
  • privatevoice.src/frontend/src/lib/i18n/en.json
  • privatevoice.src/frontend/src/lib/i18n/zh.json

5. QA 预检发现与处理

  • 发现:Parakeet 下载过程中如果 App 中途退出,.downloads/parakeet-en 会保留大体积 partial。
  • 处理:DownloadProfile 现在会在同模型新下载开始前清理旧 partial。
  • 发现:Parakeet 下载时设置页 Engine 显示 Loading,但实际 Moonshine 仍可用。
  • 处理:前端只在已安装模型切换或下载完成后进入 Loading,下载过程中保留当前引擎状态。