feat(video-pipeline): 实现 TTS 逐句分句生成与字幕精确对齐

TTS 阶段将长文本按标点切分为短句,逐句生成音频并记录每句时长到 `item.segments[]`。assemble 阶段优先使用 segments 的精确时长分配字幕时间线,无 segments 时回退到字数权重估算。同时优化音频上传流程,支持分段音频独立上传 OSS 并在配音时按段映射时间线。
This commit is contained in:
2026-05-01 14:41:28 +08:00
parent f5d47ec5db
commit 9d19437a29
4 changed files with 236 additions and 122 deletions

View File

@@ -82,8 +82,9 @@ node scripts/pipeline.js validate --manifest <path>
| `video` | 生成的视频路径 | videos |
| `videoDuration` | 视频时长Grok=6, VEO=8 | videos |
| `videoUrl` | 视频 OSS 公网 URL | videos |
| `audio` | TTS 音频路径 | tts |
| `audio` | TTS 音频路径(多句时为合并后的完整音频) | tts |
| `audioDuration` | 音频时长(秒) | tts |
| `segments` | 分句音频数组(仅多句时存在),见下方 | tts |
### Agent 审查时可操作
@@ -199,3 +200,17 @@ output/{account}_{YYYYMMDD}_{NNN}/
```
slug 从 `shotDesc` 派生slugify: 保留中文和字母数字,最多 20 字符)。
---
## segments[] 字段TTS 分句)
TTS 阶段自动生成。仅当 `script` 被切分为 2 句及以上时才写入。单句时不写 segments。
| 字段 | 说明 |
|------|------|
| `text` | 分句文本(已去除标点) |
| `audio` | 该句音频路径(相对 manifest |
| `duration` | 该句音频时长(秒) |
`item.audio` 指向所有分段合并后的完整音频,`item.audioDuration` 为各段累计时长。assemble 阶段优先用 `segments` 的精确时长对齐字幕,无 segments 时回退到字数权重估算。