# ADR-0004: 自动字幕转写作为后端服务任务 状态:已接受。日期:2026-09-01。来源:借鉴 Concat 转写命令集与模型管理设计。 > 更新记录(2026-09-01):采纳 ADR-0005 后,转写提供者为插件贡献点(`registerTranscriptionProvider`),转写面板为预设插件;后端任务与配额协议不变。 ## 背景 Concat 的招牌智能功能之一是自动字幕:以 7 个转写命令(转写片段、取消、状态等)驱动本地 whisper 模型,模型文件按需下载并管理。其前提是桌面应用可在本地跑模型与 ffmpeg。 影策是服务端应用:模型渠道统一经后端中转(`custom-channel-relay` 的 `/api/ai/custom`),任务走任务队列与配额体系;素材已服务端化;时间线一期已有字幕数据与 SRT 解析/切分能力(`srt-parser`、`srt-resegment`),字幕轨道已是 `TimelineProject` v2 的一等轨道类型。 ## 决策 - 转写由 **Go 后端执行**(whisper.cpp 或服务化 ASR 作为后端任务),前端只提交"素材/片段 → 转写字幕"任务并展示进度,不直接调用模型。 - **转写提供者为插件贡献点**:预设插件经 `registerTranscriptionProvider` 声明前端可用的转写能力与 UI(如自动字幕面板、字幕工具),经宿主校验权限后调用后端任务;第三方插件可扩展新转写来源,但必须走同一任务协议。 - 转写结果以 SRT 形式写回时间线字幕轨道,复用一期 SRT 解析与按句/按词切分能力;前端可预览、编辑、重新转写。 - **不在浏览器运行 whisper**:模型体积、算力与移动端/低端设备不可控,且与既有"模型渠道走后端中转"的安全边界一致。 - 转写任务复用任务队列与配额体系;ASR 引擎可插拔(本地进程 / 云 ASR),后端服务内部切换,前端协议不变。 - TTS/配音等**生成式**语音能力走既有模型渠道(生成素材),与转写(分析已有素材)互不耦合,不在本决策范围内。 ## 后果 - 转写是异步任务而非即时命令:前端需要任务状态展示(进行中/成功/失败),失败可重试,重试不重复扣配额。 - 字幕轨道成为时间线一等公民:转写、人工编辑、导出烧录(ADR-0003 的 burn 步骤)共享同一字幕数据源。 - 模型权重与算力要求后端可插拔部署:本地 whisper.cpp 省成本、云 ASR 省运维,两者共用同一个任务协议。 - 前端转写能力集合随插件而变:默认预设提供 whisper 服务转写;第三方插件可增加转写来源,前端任务协议与字幕轨道数据形状保持稳定。