# PJ2026-0204 音频成片需求规格

## 修改历史

| 版本 | 更新日期 | 变更说明 |
| --- | --- | --- |
| v0.1 | 2026-07-13 | 定义本地配音、可调语速、字幕时间线、成片和自动检查的目标能力。 |

## 正文

## PJ2026-0204 音频成片需求规格

## 1. 文档控制

| 字段 | 内容 |
| --- | --- |
| 编号 | PJ2026-0204 |
| 短名 | 音频成片 |
| 层级 | L1 方向 |
| 规格状态 | 已生效 |
| 需求规格模板 | [ISO/IEC/IEEE 29148 需求规格模板](../../templates/iso-iec-ieee-29148-requirements-spec-template.md) |
| 上级规格 | [PJ2026-02 智媒工厂总规格](PJ2026-02-smart-media-factory.md) |
| 规格治理索引 | [PJ2026-02 智媒工厂总规格](PJ2026-02-smart-media-factory.md) 第 7 章 |

本文采用 ISO/IEC/IEEE 29148 需求规格模板的项目裁剪版。

正文只定义：

- 本地配音、时间线、字幕、音视频合成和媒体质量的预期终态；
- 对应验收契约。

## 2. 目的和范围

### 2.1 目的

音频成片的目标是：

- 把已审核文稿和确定性视觉场景合成为自然、清晰、同步的视频候选；
- 使用本地开源语音、可调语速和精确时间线；
- 支持可重复生成；
- 让编辑者只重跑声音、字幕或渲染；
- 避免因媒体参数变化而重做资讯采集和编辑策划。

### 2.2 范围内

- 中文和技术术语的口播文本规范化、分段、读音检查入口和本地 TTS 推理。
- 音色、基础速度、后处理语速、停顿、响度、采样率和缓存策略。
- 分段 WAV、整轨 WAV、句级时间线和场景时长分配。
- SRT、ASS 字幕的切分、换行、样式、尾部停顿和字幕安全区关系。
- HTML 场景逐帧捕获、字幕烧录、音视频编码、封面和场景时间线。
- 媒体流、分辨率、时长、响度、峰值、字幕尾部和完整解码检查。

### 2.3 范围外

- 文稿事实、叙事和专业对象说明，归 [编辑策划](PJ2026-0202-editorial-planning.md)。
- 场景版式、来源画面和动效语义，归 [视觉制作](PJ2026-0203-visual-production.md)。
- 使用外部付费配音、数字人、视频生成或云渲染服务。
- 把自动响度、媒体探测或字幕生成结果当作最终听感和表达批准。
- 未经授权复用第三方音乐、音效、配音或视频片段。

## 3. 术语表

| 术语 | 定义 |
| --- | --- |
| 配音单元 | 与开场和大纲、故事或来源场景对应的结构化可朗读文本。 |
| 原始语音缓存 | 按文本、模型、音色和缓存版本索引的 TTS 原始推理结果。 |
| 后处理语速 | 在原始 TTS 输出后以确定倍率调整时长的音频处理参数。 |
| 句级时间线 | 每个配音分段的场景身份、开始、结束、停顿和音频路径记录。 |
| 字幕提示 | 具有开始、结束、文本和场景身份的单条 SRT/ASS 内容。 |
| 场景时间线 | 最终成片中每个视觉场景的真实起止时间和章节身份。 |
| 响度归一 | 将整轨旁白处理到目标综合响度和真峰值约束的过程。 |
| 发布候选视频 | 通过自动技术检查、等待人工复核和批准的最终编码 MP4。 |

## 4. 系统边界和接口

本规格把音频成片作为媒体合成和技术质量能力看待，不负责内容事实和最终发布决定。

| 边界项 | 内容 |
| --- | --- |
| 外部使用者 | 编辑者、视频制作者、发布审核者和发布运营。 |
| 外部输入 | 配音单元、场景模型、HTML 动效、TTS/字幕/媒体 YAML、本地模型和可选背景音乐路径。 |
| 受控资源 | 原始语音缓存、分段音频、整轨音频、时间线、字幕、动效帧、MP4、封面和检查报告。 |
| 外部输出 | WAV、时间线 JSON、SRT、ASS、MP4、封面、场景时间线、媒体清单和检查结果。 |
| 用户接口 | TypeScript CLI 的配音、字幕、渲染和检查单步，音视频播放器及文件工件。 |
| 系统边界 | 音频成片负责“声音、字幕和画面是否技术同步并可播放”；不决定内容是否真实或是否公开发布。 |

## 5. 内部分工与下级索引

| 编号 | 模块或课题 | 规格位置 | 主责边界 | 上游依赖 | 下游支撑 |
| --- | --- | --- | --- | --- | --- |
| PJ2026-020401 | 本地配音 | 本规格 6.1 | 文本规范化、TTS、声音、语速和缓存 | 编辑策划、本地模型 | 音频时间线 |
| PJ2026-020402 | 音频时间 | 本规格 6.2 | 分段、停顿、整轨、响度和句级时间线 | 本地配音 | 字幕、场景时长 |
| PJ2026-020403 | 字幕生成 | 本规格 6.3 | 提示切分、时间码、SRT/ASS 和尾部关系 | 音频时间 | 视频合成 |
| PJ2026-020404 | 视频合成 | 本规格 6.4 | 场景帧、音频、字幕、编码、原子落盘和清理 | 视觉制作、字幕生成 | 媒体检查 |
| PJ2026-020405 | 媒体检查 | 本规格 6.5 | 流、尺寸、时长、响度、峰值、解码和工件完整性 | 全部媒体环节 | 发布运营 |
| PJ2026-020406 | 媒体重跑 | 本规格 6.6 | 参数影响范围、缓存复用和单步重新生成 | 流水线平台 | 编辑调试 |

本章图形描述音频成片的预期终态数据面。

### 5.1 目标数据面架构图

```mermaid
flowchart LR
  subgraph Inputs[媒体输入]
    Script[配音单元]
    Scenes[HTML 场景]
    Config[媒体 owning YAML]
    Models[本地 TTS 模型]
  end
  subgraph MediaPlane[音频成片数据面]
    Voice[配音与缓存]
    Timeline[音频时间线]
    Subtitle[字幕生成]
    Capture[确定性画面捕获]
    Encoder[FFmpeg 合成]
    Inspect[媒体技术检查]
  end
  Script --> Voice
  Models --> Voice
  Config --> Voice
  Voice --> Timeline
  Timeline --> Subtitle
  Scenes --> Capture
  Timeline --> Capture
  Capture --> Encoder
  Subtitle --> Encoder
  Timeline --> Encoder
  Encoder --> Inspect
  Inspect --> Candidate[发布候选媒体]
```

音频时间线是字幕和场景时长的共同时间事实。编码器只消费已登记输入，不负责修改文稿或场景语义。

### 5.2 目标数据流图

```mermaid
flowchart TD
  Units[配音单元] --> Normalize[口播规范化与分段]
  Normalize --> Cache{原始语音缓存命中}
  Cache -->|命中| Raw[原始分段 WAV]
  Cache -->|未命中| TTS[本地 TTS 推理]
  TTS --> Raw
  Raw --> Tempo[语速、停顿与响度]
  Tempo --> Audio[整轨 WAV 与句级时间线]
  Audio --> Cues[SRT / ASS]
  Audio --> SceneTime[场景时长]
  SceneTime --> Frames[HTML 绝对时间帧]
  Frames --> Encode[音视频编码]
  Cues --> Encode
  Audio --> Encode
  Encode --> Video[MP4、封面与场景时间线]
  Video --> Check[媒体检查报告]
```

缓存命中只复用与文本、模型、声音和缓存版本一致的原始语音。后处理结果和最终时间线必须按本次配置重新生成。

### 5.3 关键时序图

```mermaid
sequenceDiagram
  participant E as 编辑者
  participant V as 配音步骤
  participant T as 本地 TTS
  participant S as 字幕步骤
  participant R as 渲染步骤
  participant I as 检查步骤
  E->>V: 提交配音单步
  V->>T: 按分段查询缓存或本地推理
  T-->>V: 原始 WAV
  V->>V: 调速、停顿、拼接、响度归一
  V-->>E: 整轨 WAV 与句级时间线
  E->>S: 提交字幕单步
  S-->>E: SRT / ASS
  E->>R: 提交渲染单步
  R->>R: 按场景绝对时间捕获画面
  R->>R: 合成音频、字幕与视频
  R-->>E: MP4、封面与场景时间线
  E->>I: 提交检查单步
  I-->>E: 技术检查结果与人工复核提示
```

每一步都应使用已登记上游工件并可独立重跑。修改语速不应自动重新调用文稿 LLM；只改字幕样式不应重新执行 TTS。

## 6. 原子需求

### 6.1 MEDIA-L1-REQ-001 本地可配置配音

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| MEDIA-L1-REQ-001 | 本地配音 | PJ2026-020401 本地配音 | [编辑策划](PJ2026-0202-editorial-planning.md)、[流水线平台](PJ2026-0205-pipeline-platform.md) |

系统应使用本地开源中文 TTS 生成旁白，并由 owning YAML 管理引擎、模型、声音、采样率、分段长度、语速、停顿、缓存和响度参数。

口播文本规范化应：

- 处理注册符号、下划线、连接符、英文缩写和异常空白；
- 同时保留原始结构化文稿；
- 不改写事实或把技术标识变成错误词义；
- 在读音不确定时提供人工词表或改稿入口。

声音选择应满足：

- 自然、清晰并具有轻微表现力；
- 避免长篇机械平读；
- 允许替换更新的本地模型；
- 模型许可、文件哈希、运行资源和音色兼容性可复核。

默认后处理语速应为所选模型自然基线的 `1.2x`，并允许通过 owning YAML 调整。

修改语速后只重跑：

- 配音后处理；
- 时间线；
- 字幕；
- 渲染；
- 检查。

### 6.2 MEDIA-L1-REQ-002 精确音频时间线

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| MEDIA-L1-REQ-002 | 音频时间 | PJ2026-020402 音频时间 | PJ2026-020401 本地配音、[视觉制作](PJ2026-0203-visual-production.md) |

系统应为每个配音分段记录场景身份、文本、音频路径、开始时间、语音结束、停顿和总结束时间，并据此拼接整轨旁白和分配场景时长。

后处理语速应以确定倍率改变分段和整轨时长，停顿应固化进时间线。字幕和视频必须读取时间线工件，而不是重新读取后来可能变化的 YAML 停顿值。

整轨音频应实施可配置响度归一，并保留目标综合响度、真峰值、响度范围和实际检测值。拼接过程不得丢段、重段或把场景身份从时间线上移除。

### 6.3 MEDIA-L1-REQ-003 可读同步字幕

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| MEDIA-L1-REQ-003 | 同步字幕 | PJ2026-020403 字幕生成 | PJ2026-020402 音频时间、[视觉制作](PJ2026-0203-visual-production.md) |

系统应从句级时间线和实际配音文本生成 SRT 与 ASS，使两种字幕的文本、顺序和场景关系一致，并在格式量化允许误差内保持时间同步。

字幕切分应：

- 由最大字符数、最小字符数和最大行数约束；
- 优先按中文标点和语义边界断句；
- 不把长技术标识拆到难以理解的位置；
- 不让短词孤立闪现。

字幕样式应：

- 与视觉主题协调；
- 位于安全区；
- 具备足够字号、描边和背景对比。

最后一条字幕应在音频结尾前保留配置的尾部停顿，不覆盖片尾自然结束。

### 6.4 MEDIA-L1-REQ-004 确定性视频合成

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| MEDIA-L1-REQ-004 | 视频合成 | PJ2026-020404 视频合成 | [视觉制作](PJ2026-0203-visual-production.md)、PJ2026-020403 字幕生成 |

系统应按音频和场景时间线捕获确定性 HTML 动效帧，并使用本地开源媒体工具合成字幕、音频和视频。

视频编码参数由 owning YAML 管理，包括：

- 帧率、编解码器、码率和像素格式；
- 质量、预设、快速起播和字体。

背景音乐默认为空。如启用，必须有明确授权、音量策略和人工听感复核。

成片应先写临时文件并在成功后原子替换正式 MP4。失败、中断或取消后应清理临时视频和可再生帧缓存，同时保留作业日志和失败证据。

### 6.5 MEDIA-L1-REQ-005 媒体技术验收

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| MEDIA-L1-REQ-005 | 媒体检查 | PJ2026-020405 媒体检查 | [发布运营](PJ2026-0206-publishing-operations.md)、[流水线平台](PJ2026-0205-pipeline-platform.md) |

系统应对发布候选执行自动技术检查，至少验证：

- 视频流、音频流和分辨率；
- 音视频时长和场景时间线对齐；
- 声明工件存在和来源引用可解析；
- 响度、真峰值和字幕尾部停顿。

检查应使用：

- 实际 MP4 和 WAV；
- 字幕和场景时间线；
- 工件清单；
- 结构化文稿和来源清单。

检查不能只验证作业返回成功。必要时应完整解码候选视频，以发现尾部损坏或编码中断。

所有必要检查为真只表示候选满足技术门槛。检查报告必须保留人工复核提示，明确读音、字幕观感、视觉版权、事实和平台合规仍需发布者判断。

### 6.6 MEDIA-L1-REQ-006 有界重跑与缓存

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| MEDIA-L1-REQ-006 | 媒体重跑 | PJ2026-020406 媒体重跑 | [流水线平台](PJ2026-0205-pipeline-platform.md)、[编辑策划](PJ2026-0202-editorial-planning.md) |

系统应支持配音、字幕、渲染和检查分别单步重跑，并依据参数影响范围复用安全缓存。

原始语音缓存键必须包含：

- 文本；
- 模型；
- 声音；
- 缓存版本。

只改后处理语速、停顿或响度时可复用原始 TTS。改变文本、模型、声音或规范化语义时必须失效相关缓存。

每次重跑应生成新的作业记录和结果摘要。正式工件可以更新为最新候选，但历史作业、成本和失败证据不得被改写为同一次成功。

## 7. 过程控制

### 7.1 追溯契约

- 每个音频、字幕和视频工件应能追溯到配音单元、场景时间线、媒体配置和候选版本。
- 自动生成文件、纯配置、锁文件和二进制工件应由对应生成器、校验器或 owning YAML 提供稳定归属。

### 7.2 原入口验收

- 通过 TypeScript CLI 分别单步运行 `voice`、`subtitles`、`render` 和 `inspect`。
- 使用媒体探测核对 WAV 与 MP4 时长、采样率、编码、帧率、分辨率、响度和真峰值。
- 核对分段时间线连续、场景身份完整、字幕文本一致和最后字幕尾部停顿。
- 抽听开头、中段、技术术语密集段和结尾，检查机械感、语速、停顿、读音和削波。
- 抽看各场景关键时间点和最终来源页，检查字幕安全区、动效同步和编码完整性。

### 7.3 依赖和许可控制

- TTS 模型、声音文件、字体和媒体组件必须在工具 YAML 或第三方清单中保留版本、来源、哈希和许可边界。
- 依赖安装缺失时应通过受控工具安装流程恢复，不使用未登记系统路径静默替代。
- 新模型必须先验证中文、英文术语、许可证、CPU/GPU 资源、推理速度和可复现部署，再改变默认声音。
- 任何外部音乐、音效或素材在许可未明确前保持禁用。

### 7.4 回写边界

- 朗读内容本身冗长、含错误符号或事实表达不适合口播时回写 [编辑策划](PJ2026-0202-editorial-planning.md)。
- 场景动效、关键信息位置或安全区问题回写 [视觉制作](PJ2026-0203-visual-production.md)。
- 作业取消、缓存、进度、日志或工件索引问题回写 [流水线平台](PJ2026-0205-pipeline-platform.md)。
- 技术检查通过后的事实、版权、平台和发布批准问题回写 [发布运营](PJ2026-0206-publishing-operations.md)。
