口播稿 → 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
一条命令跑完:
fmode-mv talk "三分钟讲清楚什么是多租户数据隔离" --duration 90
fmode-mv talk "三分钟讲清楚什么是多租户数据隔离" \
--duration 90 \
--audience "中小企业技术负责人" \
--points "痛点,方案,成本对比,落地建议"
产物 work/script.json + work/script.md(可直接改)。
{
"title": "数据隔离,到底怎么隔离?",
"durationSec": 90,
"hook": "你以为你的数据是私有的?其实……",
"cta": "想搞清楚自己的架构,评论区聊。",
"hostAnchor": "Asian man in his 30s, short neat black hair, ...",
"sections": [{ "name": "开场钩子", "text": "..." }],
"fullText": "完整口播稿(TTS 用这个)"
}
要点:
hostAnchor 是讲者外貌锚点,作用与产线 A 的 appearanceAnchor 完全一样。已有稿子直接给文件,跳过自动撰写:
fmode-mv talk --script my-script.md --duration 120
(会按 --duration 切分镜;稿子是 md/txt 均可,会自动剥掉 markdown 标记)
避坑:
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(女,活泼)。
避坑:
fmode-mv storyboard --script work/script.md --duration 90 --shots 8
(fmode-mv talk 内部会自动调用这一步)
与产线 A 分镜的区别:
| 产线 A | 产线 B | |
|---|---|---|
| 镜头类型 | broll / perf |
broll / talking |
| 新增字段 | — | narration(对应口播原文) |
| 字幕来源 | 歌词 | subtitle(≤20 字,单行) |
| 节奏依据 | 音乐节拍 | 口播语义分段 |
要点:
talking)越多,没有唇形驱动时画面越尴尬。
提示词里已要求 talking 镜头的 lipSync 总数 ≤ 3。narration,这是字幕与画面同步的依据。避坑:
--points 里把可视觉化的东西写清楚(「三个并列的方块表示租户」),
或者事后手工改 work/storyboard.json 里那几镜的 description/imagePrompt 再重生成关键帧。fmode-mv keyframe --from work/storyboard.json --dry-run # 先看
fmode-mv keyframe --from work/storyboard.json
同产线 A。讲者一致性靠 appearanceAnchor(来自 hostAnchor),逻辑完全一致。
产线 B 的额外建议:
styleKeywords),
这样多镜头剪在一起不会有明显的「换了个空间」的割裂感。clean minimal infographic style, flat design, no text
—— 否则 AI 会在图里塞满乱码文字。产线 B 与产线 A 共用这三步,命令完全一致:
# ④ 锁定讲者(不换脸的关键)
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 起有了实测可用的替代:
fmode-mv jimeng digital-human \
--ref out/character/3-全身.png \
--audio work/audio/voiceover.mp3 \
--prompt "固定机位,手臂自然轻微挥动,神情专注自信,眼神直视镜头"
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 会打印时长),再决定分镜时长。# 全自动
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 特有的两条经验:
talking 镜头上)。