# 产线 B · AI 口播讲解视频完整 SOP > 口播稿 → TTS 配音 → 讲解画面 → 场景 B-roll → 剪辑成片。全程零实拍。 > > 与产线 A **共用同一套底层模块**(`chat` / `image` / **即梦** / `tts` / `ffmpeg`), > 只是编排顺序与镜头类型不同。先把 `references/pipeline-a-song-mv.md` 里的 > 「避坑」通用部分看一遍,本文只讲产线 B 特有的。 > > **v0.2**:画面链路已改用即梦(人物资产 / 场景图 / 图生视频实测可用); > 唇形驱动仍无通道,但可用即梦**数字人**替代。 --- ## 一、产线全景 ``` ① 口播稿 [chat ✅] → work/script.json + work/script.md ② TTS 配音 [tts ❌] → work/audio/voiceover.mp3(未开通,见第三节替代) ③ 讲解分镜 [chat ✅] → work/storyboard.json ④ 人物资产 [即梦 ✅] → out/character/{1-定妆照,2-上半身,3-全身,4-多视图}.png ⑤ 场景图+关键帧 [即梦 ✅] → work/scene/shot-XX.png(无人)+ work/frames/shot-XX.png(有人) ⑥ 图生视频 [即梦 ✅] → work/clips/shot-XX.mp4 ⑦ 对口型(可选) [即梦数字人 ✅] → 真人对口型镜头 ⑧ 剪辑合成 [本地 ✅] → out/talk.mp4 ``` 一条命令跑完: ```bash fmode-mv talk "三分钟讲清楚什么是多租户数据隔离" --duration 90 ``` --- ## 二、① 口播稿 ```bash fmode-mv talk "三分钟讲清楚什么是多租户数据隔离" \ --duration 90 \ --audience "中小企业技术负责人" \ --points "痛点,方案,成本对比,落地建议" ``` **产物** `work/script.json` + `work/script.md`(可直接改)。 ```jsonc { "title": "数据隔离,到底怎么隔离?", "durationSec": 90, "hook": "你以为你的数据是私有的?其实……", "cta": "想搞清楚自己的架构,评论区聊。", "hostAnchor": "Asian man in his 30s, short neat black hair, ...", "sections": [{ "name": "开场钩子", "text": "..." }], "fullText": "完整口播稿(TTS 用这个)" } ``` **要点**: - **字数按 3.6 字/秒估算**:90 秒 ≈ 324 字。写多了 TTS 会赶,画面也来不及切。 - `hostAnchor` 是讲者外貌锚点,作用与产线 A 的 `appearanceAnchor` 完全一样。 - 已有稿子直接给文件,跳过自动撰写: ```bash fmode-mv talk --script my-script.md --duration 120 ``` (会按 `--duration` 切分镜;稿子是 md/txt 均可,会自动剥掉 markdown 标记) **避坑**: - **口播稿里的数字要写成能读出来的形式**:「30%」读作「百分之三十」, 「API」在中文 TTS 里可能被念成字母,改成「接口」更稳。技能已在提示词里要求,但改稿时注意保持。 - 稿子改了**必须重跑分镜**(第 ③ 步),否则字幕和画面对不上。 --- ## 三、② TTS 配音 ⚠️ 平台暂无通道 ```bash fmode-mv tts --probe # 先看有没有得用 fmode-mv tts --from work/script.md --voice zh-CN-YunxiNeural ``` **现状**:网关**没有** TTS 路由(`/v1/audio/speech` 返回前端兜底页)。 **三条替代路线**: | 方案 | 做法 | 说明 | |---|---|---| | **A. 本地 edge-tts**(推荐) | `pip install edge-tts` | 免费、中文音色多;技能会**自动探测并使用**,无需改代码 | | B. 对接外部 OpenAI 兼容服务 | `export FEME_TTS_ENDPOINT=https://your-host/v1/audio/speech` | 需自建或采购 | | C. 自备配音 | `--voice my-voiceover.mp3` 或直接 `fmode-mv talk --voice my.mp3` | 真人配音也行 | **安装 edge-tts 后**,`fmode-mv tts --probe` 会显示: ``` 状态 可用 提供方 edge-tts(local) ``` 常用中文音色:`zh-CN-XiaoxiaoNeural`(女,默认)、`zh-CN-YunxiNeural`(男,年轻)、 `zh-CN-YunjianNeural`(男,沉稳)、`zh-CN-XiaoyiNeural`(女,活泼)。 **避坑**: - edge-tts 首次运行需要联网拉音色列表,离线环境会失败。 - 配音时长是**后面所有步骤的基准**:分镜时长、字幕时间轴都以配音实际时长为准。 所以**先配音、后分镜**(本产线的顺序就是这么排的)。 --- ## 四、③ 讲解分镜 ```bash fmode-mv storyboard --script work/script.md --duration 90 --shots 8 ``` (`fmode-mv talk` 内部会自动调用这一步) **与产线 A 分镜的区别**: | | 产线 A | 产线 B | |---|---|---| | 镜头类型 | `broll` / `perf` | `broll` / `talking` | | 新增字段 | — | `narration`(对应口播原文) | | 字幕来源 | 歌词 | `subtitle`(≤20 字,单行) | | 节奏依据 | 音乐节拍 | 口播语义分段 | **要点**: - **B-roll 要占多数**。讲者镜头(`talking`)越多,没有唇形驱动时画面越尴尬。 提示词里已要求 `talking` 镜头的 `lipSync` 总数 ≤ 3。 - 每个镜头都要有 `narration`,这是**字幕与画面同步的依据**。 **避坑**: - 讲数据/讲概念的段落,让 AI 生成「抽象概念画面」容易翻车。 更好的做法:在 `--points` 里把可视觉化的东西写清楚(「三个并列的方块表示租户」), 或者事后手工改 `work/storyboard.json` 里那几镜的 `description`/`imagePrompt` 再重生成关键帧。 --- ## 五、④ 关键帧 ✅ ```bash fmode-mv keyframe --from work/storyboard.json --dry-run # 先看 fmode-mv keyframe --from work/storyboard.json ``` 同产线 A。**讲者一致性靠 `appearanceAnchor`(来自 `hostAnchor`)**,逻辑完全一致。 **产线 B 的额外建议**: - 讲者镜头**尽量用同一景别与光线**(如「中景、正面、柔和侧光」写进 `styleKeywords`), 这样多镜头剪在一起不会有明显的「换了个空间」的割裂感。 - 需要「图表感」画面时,prompt 里明确写 `clean minimal infographic style, flat design, no text` —— 否则 AI 会在图里塞满乱码文字。 --- ## 六、④ 人物资产 · ⑤ 场景图 + 关键帧 · ⑥ 图生视频(v0.2 新增) 产线 B 与产线 A 共用这三步,命令完全一致: ```bash # ④ 锁定讲者(不换脸的关键) fmode-mv character-sheet --desc "35岁东亚男性,短发,身穿深灰针织衫,专业亲和" --limit 4 # ⑤ 场景图(无人)→ 关键帧(有人,多图参考) fmode-mv scene --from work/storyboard.json \ --character out/character/4-多视图.png # ⑥ 图生视频(第一镜首尾帧,其余首帧) fmode-mv video --from work/storyboard.json ``` > 产线 B 已有整链支持:`fmode-mv talk` 的第 [4/8]~[6/8] 步就是上面这三步, > 可用 `--character` / `--skip-character` / `--char-steps` / `--tier` / `--video-mode` 控制。 **产线 B 的特殊考虑**: - 口播视频的 `broll` 镜头用 **Ken Burns 兜底**(`--video-mode still`)**观感损失比 MV 小**—— 观众注意力在听觉信息上,画面只需「不静止、不跳戏」。 预算紧时,B-roll 用兜底、只给 `talking` 镜头花钱走即梦,是性价比最高的组合。 - `talking` 镜头如果不对口型,用 Ken Burns 推近会**放大「嘴不动」的问题**。 建议:`talking` 镜头要么做对口型(见第七节)、要么改成**手部动作/物件特写**,别做正脸大特写。 --- ## 七、⑦ 对口型(可选)—— 改用即梦数字人 ✅ 唇形驱动通道(`/lipsync/generations`)平台**仍无此路由**,但 v0.2 起有了**实测可用的替代**: ```bash fmode-mv jimeng digital-human \ --ref out/character/3-全身.png \ --audio work/audio/voiceover.mp3 \ --prompt "固定机位,手臂自然轻微挥动,神情专注自信,眼神直视镜头" ``` - 走即梦数字人 v1.5 三步(主体识别 → 视频生成),**¥1/秒**。 - 这是**真人对口型**,比唇形驱动通道更适合竖屏口播。 - 产线 B 场景下的建议: - 讲解视频**对口型的需求比 MV 强**(观众盯着讲者看),所以这一步值得花钱。 - 预算有限时:把讲者镜头压到 1~2 个,用**中景/中近景**,其余用 B-roll 盖过。 --- ## 八、⑦ 剪辑合成 ✅ ```bash fmode-mv assemble \ --from work/storyboard.json \ --voice work/audio/voiceover.mp3 \ --bgm work/audio/bgm.mp3 \ --out out/talk.mp4 ``` **与产线 A 的差异**: | | 产线 A | 产线 B | |---|---|---| | 主音轨 | `--music`(音量 1.0) | `--voice`(音量 1.0) | | 辅助音轨 | — | `--bgm`(自动压到 **0.18**) | | 卡点 | `--beat-sync` 用得上 | 一般不用(口播跟着语义走) | **混音规则**(`lib/ffmpeg.mjs` 的 `amix`): 多轨时按各自 `volume` 混,背景乐默认 0.18 —— 这个值是「人声清楚、音乐有存在感」的平衡点, 觉得音乐太响/太轻就调 `--bgm-volume 0.12` 或 `0.28`。 **避坑**: - 配音轨短于画面时,`-shortest` 会直接截断成片 → 成片比预期短。 **先确认配音时长**(`fmode-mv tts` 会打印时长),再决定分镜时长。 - 口播字幕建议**每屏 ≤ 20 字**(提示词已要求),太长会挤满画面下方。 --- ## 九、端到端速查 ```bash # 全自动 fmode-mv talk "主题" --duration 90 --points "要点1,要点2" # 分段(推荐) fmode-mv talk "主题" --duration 90 # ① 口播稿(只看 work/script.md,Ctrl-C 中断即可) vim work/script.md # ② 手工润色稿件(强烈建议) fmode-mv tts --from work/script.md # ③ 配音(装 edge-tts 后可用) fmode-mv storyboard --script work/script.md --duration 90 --shots 8 fmode-mv character-sheet --desc "讲者设定" --limit 4 # ④ 人物资产 fmode-mv scene --from work/storyboard.json --character out/character/4-多视图.png # ⑤ fmode-mv video --from work/storyboard.json # ⑥ fmode-mv jimeng digital-human --ref out/character/3-全身.png --audio work/audio/voiceover.mp3 # ⑦(可选) fmode-mv assemble --from work/storyboard.json --voice work/audio/voiceover.mp3 --bgm bgm.mp3 ``` **省钱组合(实测花费)**:④ 完整四步 ≈ ¥1.98 → ⑤ ≈ ¥0.42/镜 → ⑥ ≈ ¥1.41/镜(720p 5 秒)。 8 镜口播片:④⑤⑥ ≈ **¥16.6**。预算再紧就把 ⑥ 换成 `--video-mode still`(¥0)。 **产线 B 特有的两条经验**: 1. **稿件必须人工润色一遍**。AI 写的口播稿结构没问题,但「像人说的话」这点还差一口气。 TTS 会把书面语读得格外生硬,改稿的性价比比调任何参数都高。 2. **B-roll 占比决定成片观感**。讲者特写越少、B-roll 越多,成片越稳 (对口型失败的风险只在 `talking` 镜头上)。