--- name: space-video-subtitle description: 视频字幕全流程——语音转写、口播式断句、AI 校对纠错(专有名词/同音字/标点)、生成 SRT/ASS,并可选烧录进视频。当用户说「上字幕」「转写这条视频」「生成 srt」「字幕校对」「断句」「烧录字幕」「硬字幕」「subtitle」时触发。输入是视频或音频,输出是校对过的字幕文件,可选带字幕的成片。 --- # space-video-subtitle · 字幕 字幕不是「转写完就行」。口播字幕要**断句舒服、专名正确、和画面对齐**。分四步。 ## 流程 ```text 视频/音频 → ① 转写(带时间) → ② 口播式断句 → ③ AI 校对 → ④ 输出 SRT/ASS →(可选)烧录 ``` ### ① 转写 - 抽 16k 单声道 wav → ASR(SenseVoice / whisper / Volc 任一可用后端) - 产出带时间的词级或句级结果 ### ② 口播式断句 字幕断句和标点不一样,按**呼吸和语义**断,不按书面标点: - 一屏字幕 ≤ 一句能一眼读完(中文一般 ≤15 字/行,竖屏更短) - 在自然停顿处断,不把一个词组切两屏 - 语气词/口头语可保留(更真实),也可按用户偏好清掉 ### ③ AI 校对(最关键) ASR 初稿必错,重点纠三类: - **专有名词**:人名、产品名、英文缩写(Qoder、HyperFrames、MCP…)——建一个术语表喂进去统一 - **同音字**:中文 ASR 高发(「在/再」「的/得」「做/作」) - **标点与数字**:口播里的「百分之八十七」→「87%」按需规整 若有剪辑(`space-video-edit`),字幕**基于剪后视频重新转写再校对**,不能沿用原视频字幕。 ### ④ 输出 - `subtitles.srt`:通用 - `subtitles.ass`:需要样式(字体、描边、位置、逐字卡拉OK)时用 - 命名和成片对应 ## 烧录(可选) ```bash # 软字幕(可关) —— 封装进容器 ffmpeg -i in.mp4 -i subtitles.srt -c copy -c:s mov_text out.mp4 # 硬字幕(烧进画面) —— 带样式 ffmpeg -i in.mp4 -vf "subtitles=subtitles.ass" -c:a copy out_hard.mp4 ``` 竖屏注意字幕安全区(别被平台 UI 挡住),一般压在画面下方 1/5 以上。 ## 交接 - 上游:`space-video-edit` 的 `source_cut.mp4`,或任意成片/音频 - 下游:带字幕的成片 → `space-video-cover` 或直接发布 ## 依赖 `ffmpeg`、一个 ASR 后端;烧录 ASS 需 ffmpeg 带 libass。 ## 核心原则 - **断句按呼吸,不按标点** - **专名先建表**:术语表统一,避免同一个词半集对半集错 - **剪后重转写**:剪过的视频,字幕必须重新做