背景
#352 提出了“区分说话者”的需求,PR #414 已完成说话者分离的基础能力:每条字幕可以携带 speakerIds,角色信息能够在字幕合并、时间调整和重新对齐后保留,并可选择将 [Speaker N] 写入字幕文本。
下一步需要把底层识别结果变成普通用户能理解、能纠错、能持续复用的校对体验。自动说话者分离在串音、短句、噪声和音色相近时难免出错,产品不能把 Speaker 1/2 当作确定身份展示,也不能要求用户直接编辑技术标签。
用户问题
- 新手看到
Speaker 1 不知道它能否改名,也不知道改名会影响哪些字幕。
- 自动分离错误时,目前缺少低成本的单句纠正和批量归并能力。
- 同一角色被拆成多个编号时,逐句修正成本高。
- 未识别和多人重叠的字幕缺少明确、可检查的状态。
- 角色名如果直接写入字幕文本,容易污染后续翻译、配音和导出内容。
产品目标
- 用户进入校对台后无需配置,即可看懂“谁在说这句”。
- 单句纠错在一次点击入口内完成;同类错误可以批量处理。
- 角色名称、颜色和字幕归属作为结构化元数据保存,不依赖字幕正文。
- 角色调整沿用现有校对台的撤销/重做、保存和未保存提醒。
- 为“按角色分配配音音色”提供稳定、向后兼容的数据基础。
目标用户与核心故事
- 作为第一次使用角色分离的用户,我希望系统自动显示“角色 1、角色 2”,无需先理解说话者 ID。
- 作为字幕校对者,我希望点击某句的角色标签即可纠正归属,并立即看到结果。
- 作为长视频编辑者,我希望把误拆的两个角色合并,或把某角色的多句字幕批量移动到另一个角色。
- 作为内容创作者,我希望把“角色 1”改成“主持人”,且所有关联字幕和后续配音同步使用新名称。
- 作为审校者,我希望只查看某个角色、未分配或多人重叠的字幕,快速完成检查。
交互方案
1. 默认展示:无需设置即可开始校对
- 有角色信息的字幕行,在正文附近展示紧凑的颜色标记和角色名,例如
● 角色 1;不直接向用户展示裸数字 ID 或 [Speaker N]。
- 没有可靠归属的字幕显示
未分配,使用中性色并进入可筛选状态。
- 多人重叠字幕同时展示多个角色标签;第一个角色标记为主要角色,但不得丢弃其他角色信息。
- 没有说话者元数据的普通字幕保持当前界面和流程,不增加额外操作负担。
2. 单句纠正:点击角色标签即可分配
- 点击字幕行的角色标签,打开轻量选择菜单:现有角色、
未分配、新建角色。
- 选中后立即更新该句;角色操作进入现有撤销/重做栈。
- 多人重叠字幕可增加或移除角色,并明确哪个是主要角色。
- 新建角色默认按顺序命名为
角色 N,用户可稍后改名,不在当前动作中强制填写表单。
3. 角色管理:集中处理命名和批量错误
在校对台现有工具区提供“角色”入口,打开侧栏或弹层,按角色列出:颜色、名称、字幕句数。
支持:
- 重命名:修改后所有关联字幕即时同步。
- 修改颜色:从有限、可区分且兼顾深浅主题的色板选择;颜色仅作为辅助信息,名称始终可见。
- 定位/筛选:只看当前角色的字幕。
- 移动全部字幕:把该角色的所有字幕归到另一个角色。
- 合并角色:选择目标角色,确认影响的字幕数量后合并;字幕正文和时间轴不变。
- 删除空角色:仅允许删除没有关联字幕的角色;有字幕时引导先移动或合并。
批量操作必须展示影响范围,并支持撤销;避免把“合并角色”和“合并字幕段”混为一谈。
4. 快速检查与导出
- 在现有字幕筛选能力上增加:
全部、具体角色、未分配、多人重叠。
- 保存时将角色名/颜色/归属写入 sidecar 元数据,默认不修改字幕正文。
- 导出字幕时提供明确选项:
不写入角色名(默认)、在字幕中写入角色名。后者使用用户可见名称,不再以技术性的 [Speaker N] 作为唯一表达。
- 翻译、AI 优化和 TTS 处理正文时不得把角色标签当作需处理/朗读的内容。
数据与兼容性建议
在现有 speakerIds 上增加独立的角色名册,保持“不可变 ID”和“可编辑名称”分离:
interface SpeakerInfo {
id: number;
displayName: string; // 默认“角色 1”
color?: string; // 稳定的语义色标识
}
interface ProofreadDataFileV2 {
version: 2;
meta: ProofreadDataMeta;
speakers: SpeakerInfo[];
cues: ProofreadDataCue[]; // 继续使用 speakerIds
}
- 读取 v1 sidecar 时,根据全部 cue 的
speakerIds 自动生成名册,不要求用户手工迁移。
- 保存后可升级为 v2;角色重命名不得改写 cue 的稳定 ID。
未分配 是产品状态,不应伪造为一个真实说话者 ID。
- 多角色 cue 保留完整
speakerIds;主要角色用于列表主展示及后续默认配音。
- 角色数据需要在拆分、合并、删除、时间调整、重新对齐、保存和恢复后保持一致。
验收标准
实施拆分
非目标
- 不做声纹注册、真实人物身份识别或自动猜测人物姓名。
- 不做人脸识别或通过画面绑定角色。
- 不在本阶段重做完整多轨时间线或增加角色统计仪表盘。
- 不要求用户预先填写准确说话者数量;识别结果始终允许纠正。
依赖与关联
同类产品实践参考
背景
#352 提出了“区分说话者”的需求,PR #414 已完成说话者分离的基础能力:每条字幕可以携带
speakerIds,角色信息能够在字幕合并、时间调整和重新对齐后保留,并可选择将[Speaker N]写入字幕文本。下一步需要把底层识别结果变成普通用户能理解、能纠错、能持续复用的校对体验。自动说话者分离在串音、短句、噪声和音色相近时难免出错,产品不能把
Speaker 1/2当作确定身份展示,也不能要求用户直接编辑技术标签。用户问题
Speaker 1不知道它能否改名,也不知道改名会影响哪些字幕。产品目标
目标用户与核心故事
交互方案
1. 默认展示:无需设置即可开始校对
● 角色 1;不直接向用户展示裸数字 ID 或[Speaker N]。未分配,使用中性色并进入可筛选状态。2. 单句纠正:点击角色标签即可分配
未分配、新建角色。角色 N,用户可稍后改名,不在当前动作中强制填写表单。3. 角色管理:集中处理命名和批量错误
在校对台现有工具区提供“角色”入口,打开侧栏或弹层,按角色列出:颜色、名称、字幕句数。
支持:
批量操作必须展示影响范围,并支持撤销;避免把“合并角色”和“合并字幕段”混为一谈。
4. 快速检查与导出
全部、具体角色、未分配、多人重叠。不写入角色名(默认)、在字幕中写入角色名。后者使用用户可见名称,不再以技术性的[Speaker N]作为唯一表达。数据与兼容性建议
在现有
speakerIds上增加独立的角色名册,保持“不可变 ID”和“可编辑名称”分离:speakerIds自动生成名册,不要求用户手工迁移。未分配是产品状态,不应伪造为一个真实说话者 ID。speakerIds;主要角色用于列表主展示及后续默认配音。验收标准
speakerIds时,系统应在对应字幕行显示稳定颜色和用户可读角色名。角色 N名称且不要求额外设置。speakerIds时,系统应展示全部角色并允许修改主要角色,不静默丢失重叠信息。未分配,且用户可从该状态直接完成分配。实施拆分
SpeakerInfo和 sidecar v2,并实现 v1 兼容读取/迁移测试。非目标
依赖与关联
同类产品实践参考