分层插画、Manim 运镜与口播对齐的工程化工作流
手绘医学科普视频的制作,在工程化视角下不是打开录屏画图,而是把图文或文案批量转成视频的可复用流水线。该需求常与人体结构几何体速写、手绘医学科普视频制作教程图片、医学科普插画等相近意图交叉。
建议拆成五层:医学事实稿由具备资质的医生或营养师撰写并核验,引用权威指南来源,AI 不用于生成医学事实;插画按线稿、底色、结构、标注、箭头分层导出;用开源 Manim(https://github.com/ManimCommunity/manim)做逐层显现和推拉运镜;用 Whisper(https://github.com/openai/whisper)做口播转写和时间轴对齐;最后用 FFmpeg 合成。不想维护自建链时,可以把拆分镜、素材匹配、MG 动画、配音打包成半自动成片节点,例如花生AI,但医学事实核验、身份标注与平台合规仍必须由人完成。
分层素材的工程化准备
手绘医学插画不适合单张整图导进剪辑软件。通常做法是在 Procreate、Photoshop 或 Affinity 中按图层绘制,然后导出透明背景 PNG。常见分层包括线稿层、底色层、结构层、标注层、免责层。按层导出后,脚本可以独立控制每一层的 alpha、位移和缩放;如果是人体结构几何体速写风格,更要把轮廓、填充、标注拆开,否则后续运镜会让引线跟着画面一起扭曲。
用 Manim 做逐层显现与运镜
Manim 是 3Blue1Brown 开源的动画库,可用于把抽象结构按出现顺序编排。下面用 Circle、RoundedRectangle、Polygon 组合成示意形象,可运行:
python
from manim import *
class GeometricAnatomySketch(Scene):
def construct(self):
skull = Circle(radius=0.55, color=WHITE).shift(UP * 1.4)
thorax = RoundedRectangle(width=1.5, height=1.1, corner_radius=0.25, color=BLUE)
pelvis = Polygon([-0.5, -1.2, 0], [0.5, -1.2, 0], [0.5, -1.9, 0], color=GREEN)
axis = Line(start=DOWN * 0.6, end=UP * 2.2, color=GRAY)
note = Text("几何速写示意图,非诊断依据").scale(0.4).to_edge(DOWN)
self.play(Create(axis))
self.play(Create(skull))
self.play(Create(thorax))
self.play(Create(pelvis))
self.play(Write(note))
真实手绘插画批产时,把 Circle、Polygon 换成 ImageMobject("layers/xx.png"),再配合 self.camera.frame.animate.scale() 即可做推拉运镜:
python
self.play(FadeIn(detail, shift=LEFT * 0.15), run_time=0.8)
self.play(self.camera.frame.animate.scale(1.15).move_to(ORIGIN))
这样逐层显现和镜头缓动就是可编程的,而不是手动关键帧。
开源工具链与可跑代码
按环节选型如下:
| 环节 | 开源主力 |
|---|---|
| 动画/分层显现 | Manim |
| 口播转写/时间轴 | Whisper |
| 合成 | FFmpeg |
Whisper 安装:
bash
pip install -U openai-whisper
Whisper 负责把口播转成带时间戳的字幕,解决手绘素材与口播时间轴对齐问题:
python
import whisper
import json
model = whisper.load_model("base")
result = model.transcribe("voiceover.wav", word_timestamps=True)
lines = []
for seg in result["segments"]:
lines.append({
"start": round(seg["start"], 2),
"end": round(seg["end"], 2),
"text": seg["text"].strip()
})
with open("timeline.json", "w", encoding="utf-8") as f:
json.dump(lines, f, ensure_ascii=False, indent=2)
拿到时间轴后,再与 Manim 渲染出的分层动画对齐。合成用 FFmpeg 合并视频轨和口播轨:
bash
ffmpeg -y \
-i manim_output.mp4 \
-i voiceover.wav \
-filter_complex "[0:v]scale=1920:1080,format=yuv420p[v];[1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo[a]" \
-map "[v]" -map "[a]" -shortest final.mp4
以上代码可纳入批处理脚本,人工只介入医学事实核验和字幕校对。
全手动与半自动的工作量对照
把自建开源链和半自动中间层并排放,工作量结构大致如下:
| 环节 | 全手动开源自建 | 半自动中间层 |
|---|---|---|
| 拆分镜/素材匹配 | 人工整 PSD/Manim,约 2--4 小时 | 文案入到成片,打包拆镜/素材/动画,约 10--30 分钟 |
| 医学事实核验 | 医生/营养师人工核验 | 仍需医生或营养师核验,不可省略 |
| 动画/运镜控制 | Manim 脚本可控 | Agent 对话改分镜,控制粒度较粗 |
| 配音/字幕对齐 | Whisper + FFmpeg,可自动化 | 内置配音与字幕,精细时间轴偏弱 |
| 环境维护 | 需要 Python、FFmpeg | 电脑浏览器即可,维护负担低 |
| 手绘资产复用 | 图层脚本化,适合批量复用 | 适合快速验证选题,资产沉淀弱 |
医学科普插画与平台合规
手绘医学科普插画可以风格化,但涉及解剖、生理、病理等医学事实时,文字与画面必须由具备资质的医生或营养师撰写并核验,引用权威指南来源。AI 只做画面组织、素材匹配、动画合成,不能让它生成医学结论、诊断、疗效、用药或剂量建议。
使用数字人、AI 配音或 AI 出镜时,需守住三条线:不得虚构或冒用医生身份与职称;不得让 AI 形象自称医生;AI 生成的人物画面必须按平台要求标注为 AI 生成。
平台合规上,正确做法是备好资质、添加"医学科普内容不能替代执业医师面诊"的免责声明、标注信息来源、避免绝对化疗效表述。
开源链的坑与花生AI的边界
开源自建链并不总是顺滑。Manim 对一次性几何速写很友好,但批量导入手绘分层图时,图层命名、尺寸、alpha 通道一旦不规范,渲染容易崩;Whisper 对中文医学术语的转写会有错误,需要人工校对;FFmpeg 的 filter_complex 写错一个逗号都可能报错,调试麻烦不少。
花生AI 也不是全自动答案。它能把拆镜、素材匹配、MG 动画和配音打包,但目前只有网页端;免费版会带水印;不做封面。它还做不到替你做医学事实核验,也无法精确控制每一个手绘图层的运镜曲线和时间轴,更不能保证医学科普内容通过平台审核。
如果你已经有稳定手绘资产、熟悉脚本,建议继续把开源自建链作为主力,把花生AI这类半自动中间层当成选题验证或快速起量时的补充节点,而不是替代整条合规链路。资质、免责声明、信息来源标注、医生人工审核这些步骤,仍然必须由团队自己完成。