# Round 4 PRD:Parakeet English 高级模型 状态:v0.1 启动稿 所属子项目:`02-P-NBL` Round:Round 4 日期:2026-06-03 基线版本:`2.1.21 build20260603.1327` 基线 commit:`7bedb18` 关联文档: - [`../product-plan.md`](../product-plan.md) - [`../engineering-plan.md`](../engineering-plan.md) - [`../plan.md`](../plan.md) - [`../round-3/prd.md`](../round-3/prd.md) ## 1. 背景 Round 3 已完成 English 默认 Moonshine: - English UI 可用。 - English 默认 current model 为 `moonshine-en`。 - Moonshine 可下载、加载、断网识别。 - 中文 SenseVoice 路径已回归通过。 Round 4 不改变默认策略。Moonshine 仍然是 English 默认模型;Parakeet 是用户主动选择的高级模型。 ## 2. 本轮目标 Round 4 完成后: | 场景 | 期望结果 | |---|---| | English 用户未安装 Parakeet | 继续默认使用 Moonshine | | English 用户主动选择 Parakeet | 未安装则提示下载,安装后切换为 Parakeet | | English 用户从 Parakeet 切回 Moonshine | 立即切回 Moonshine,Parakeet 保留 | | 中文用户 | 不显示或不推荐 Parakeet,不影响 SenseVoice | | Parakeet 下载失败 | 不破坏 Moonshine、SenseVoice、userdict、history | 核心目标: - 新增 `parakeet-en` model profile。 - 新增 `nemo_transducer` backend builder。 - 新增 English 模型选择 UI。 - 用户可以在 `Moonshine English` 和 `Parakeet English` 之间手动切换。 - Parakeet 未安装时不能直接使用,必须下载并校验。 - Moonshine 保留,不自动删除。 ## 3. 本轮非目标 明确不做: - 不把 Parakeet 作为 English 默认模型。 - 不把 Parakeet 暴露给中文默认路径。 - 不接 Qwen3-ASR。 - 不做欧洲语言 UI。 - 不做 30+ 语言列表。 - 不做正式签名和 notarization。 - 不做 Apple Silicon 之外的平台扩展承诺。 - 不删除 Moonshine。 - 不自动迁移用户到 Parakeet。 ## 4. 模型选择决策 本轮选择: ```text model id: parakeet-en actual package: sherpa-onnx-nemo-parakeet-unified-en-0.6b-int8-non-streaming backend kind: nemo_transducer language: English tier: advanced ``` 选择 unified-en 0.6b int8 non-streaming,原因: - sherpa-onnx 当前官方页面列出该模型。 - 当前 Go 绑定 `v1.12.24` 支持 offline transducer + `ModelType=nemo_transducer`。 - 官方示例使用 `encoder.int8.onnx`、`decoder.int8.onnx`、`joiner.int8.onnx`、`tokens.txt`。 - 下载包约 `501350460` bytes,适合作为用户主动下载的高级模型,不适合作默认模型。 不选择旧计划里的 `sherpa-onnx-nemo-parakeet-tdt-0.6b-v2-int8` 作为默认实现对象,原因: - 当前 sherpa 官方页面优先展示 unified-en 0.6b。 - unified 包更新时间更新。 - 本轮只需要一个 English 高级模型,避免一次接入多个 Parakeet 变体。 ## 5. Parakeet Profile 新增 profile: ```text ID: parakeet-en DisplayName: Parakeet English BackendKind: nemo_transducer Tier: advanced SupportedLanguageIDs: en RecommendedFor: en Description: 高质量英文离线模型,适合英文长句、技术词和更高准确率需求。 ApproxSize: 约 478 MiB 下载包 InstallDirName: parakeet-en ProviderOrder: cpu NumThreads: 4 ``` 下载 URL: ```text https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-nemo-parakeet-unified-en-0.6b-int8-non-streaming.tar.bz2 ``` Required files: | Role | Required file | |---|---| | `encoder` | `encoder.int8.onnx` | | `decoder` | `decoder.int8.onnx` | | `joiner` | `joiner.int8.onnx` | | `tokens` | `tokens.txt` | ## 6. sherpa-onnx 配置 当前项目依赖: ```text github.com/k2-fsa/sherpa-onnx-go-macos v1.12.24 ``` Parakeet builder: ```go config.ModelConfig.Transducer.Encoder = resolved.Files["encoder"] config.ModelConfig.Transducer.Decoder = resolved.Files["decoder"] config.ModelConfig.Transducer.Joiner = resolved.Files["joiner"] config.ModelConfig.Tokens = resolved.Files["tokens"] config.ModelConfig.ModelType = "nemo_transducer" config.ModelConfig.NumThreads = resolved.Profile.NumThreads config.ModelConfig.Provider = "cpu" config.DecodingMethod = "greedy_search" ``` 保留: ```go config.FeatConfig.SampleRate = 16000 config.FeatConfig.FeatureDim = 80 ``` ## 7. 用户故事 ### 7.1 English 用户升级到 Parakeet 前置: - 当前语言为 English。 - Moonshine 已安装并可用。 - Parakeet 未安装。 操作: 1. 用户进入设置页。 2. 在模型区域看到: - Moonshine English - Parakeet English 3. 用户点击 Parakeet。 4. UI 显示下载确认和体积提示。 5. 用户确认下载。 6. 下载完成后自动切换到 Parakeet。 期望: - `ModelSelectionMode=manual` - `SelectedModelID=parakeet-en` - Engine 显示 `Parakeet English · CPU` - Moonshine 模型目录仍保留。 ### 7.2 English 用户切回 Moonshine 前置: - 当前使用 Parakeet。 - Moonshine 已安装。 操作: 1. 用户在模型区域点击 Moonshine English。 2. App 重新加载 Moonshine。 期望: - `SelectedModelID=moonshine-en` - `ModelSelectionMode=manual` - Engine 显示 `Moonshine English · CPU` - Parakeet 模型目录仍保留。 ### 7.3 中文用户不受影响 前置: - 当前语言为中文。 期望: - 继续默认 SenseVoice。 - 不自动下载 Parakeet。 - 不因为 Parakeet 下载失败影响中文识别。 ## 8. UI 要求 设置页新增模型选择区域。 English 状态显示: ```text Recognition Model Moonshine English Lightweight English model, recommended default. Parakeet English Higher quality English model, larger download. ``` 中文状态可以先显示中文模型路径,不强制暴露 Parakeet: ```text 识别模型 SenseVoice 轻量中文离线模型,默认推荐。 ``` 模型卡片至少展示: - 模型名称。 - 一行用途说明。 - 安装状态。 - 当前使用标记。 - 下载/使用按钮。 - 下载大小。 ## 9. 验收标准 Round 4 通过条件: - `parakeet-en` profile 正确。 - Parakeet required files 校验正确。 - Parakeet 可下载、校验、加载。 - English 用户可从 Moonshine 切到 Parakeet。 - English 用户可从 Parakeet 切回 Moonshine。 - Parakeet 下载失败不破坏 Moonshine、SenseVoice、userdict、history。 - 中文 SenseVoice 回归通过。 - 断网状态下 Parakeet 英文识别可用。 - QA 报告记录版本、build、commit、DMG、日志和关键证据。