状态:v0.1 研发拆解稿
所属子项目:02-P-NBL
Round:Round 4
日期:2026-06-03
输入文档:
让 English 用户可以主动下载并切换到 Parakeet English,同时保持 Moonshine 默认路径和中文 SenseVoice 路径不退化。
parakeet-en model profile。BackendNemoTransducer backend kind。T0 现状确认
T1 Parakeet profile
T2 Nemo transducer backend builder
T3 模型选择服务 API
T4 设置页模型选择 UI
T5 下载/切换状态处理
T6 单元测试和前端构建
T7 代码复审
T8 QA handoff
T9 测试包准备
重点文件:
privatevoice.src/internal/model/profile.goprivatevoice.src/internal/model/registry.goprivatevoice.src/internal/model/resolver.goprivatevoice.src/internal/engine/engine.goprivatevoice.src/internal/engine/engine_darwin.goprivatevoice.src/services/engine_service.goprivatevoice.src/frontend/src/components/settings/GeneralPage.svelte完成标准:
EngineService.DownloadCurrentModel()。工作内容:
ParakeetModelID = "parakeet-en"BackendNemoTransducer = "nemo_transducer"parakeet-en profile。encoder.int8.onnxdecoder.int8.onnxjoiner.int8.onnxtokens.txtProviderOrder 使用 cpu。DownloadURLs 使用官方 unified-en 0.6b int8 URL。完成标准:
GetModelProfile("parakeet-en") 可返回完整 profile。ValidateModelDir(parakeet-en) 校验准确。moonshine-en。工作内容:
NewWithResolvedModel 支持 BackendNemoTransducer。buildNemoTransducerConfig。Transducer.Encoder = resolved.Files["encoder"]
Transducer.Decoder = resolved.Files["decoder"]
Transducer.Joiner = resolved.Files["joiner"]
Tokens = resolved.Files["tokens"]
ModelType = "nemo_transducer"
Provider = "cpu"
完成标准:
HardwareInfo() 显示 Parakeet English · CPU。工作内容:
ListModelOptions()SelectModel(modelID string)DownloadModelByID(modelID string)DeleteModel(modelID string) 可暂缓,不作为本轮强制交付。ModelSelectionMode=manual。SelectedModelID。完成标准:
工作内容:
完成标准:
工作内容:
完成标准:
.downloads、.staging 不被判定为可用模型。后端:
cd privatevoice.src
go test ./... -count=1
前端:
cd privatevoice.src/frontend
npm run build
检查:
git diff --check
完成标准:
复审重点:
交付:
若 QA 预检通过:
2.1.22。.dmg。RELEASE_MANIFEST.md。