做科普短片,先把事实说对,再决定画面怎么动。本文用“月球明明在转,为什么我们总看到同一面?”做一条约40秒的原创图解短片:NASA 核源、ComfyUI 生成太空底图、代码绘制地月示意图、CosyVoice 合成旁白,最后导入剪辑软件核对字幕和节奏。
静音画面预览:ComfyUI 生成底图,地月图解和字幕后期绘制
先记住几个事实:月球确实在自转;它自转一周的时间,约等于绕地球一周,所以同一半球大体朝向地球。月球的远侧也不是“永久黑暗面”,太阳照明会随月球运动而变化。NASA 给出的绕行周期约为27.3天,而从一次新月到下一次新月约29.5天;两个周期的参照不同,地球在这段时间也继续绕太阳运行。NASA 月球常见问题和月相说明可核对这些事实。
先把一个知识点写成五个镜头
先写一句准确答案,再把它拆成“提问—反例—解释—纠正常见误会—补充数字”。不要先让图像模型自由发挥天文关系;生成模型很容易把轨道、太阳光和“朝向地球的一面”画错。练习包里的示意图由代码绘制,底图才由 ComfyUI 生成。
| 镜头 | 旁白 | 画面要说明什么 |
|---|---|---|
| 1 | 我们总看到月球熟悉的一面。它真的没有自转吗? | 地球与月球,引出问题 |
| 2 | 假设月球只绕地球、不自转,面对地球的月面就会一路改变。 | 固定朝向星空时,地球看到的月面会变化 |
| 3 | 月球绕地球一周,自己也正好自转一周;近侧因此大体朝向我们。 | 四个轨道位置的近侧都朝向地球 |
| 4 | 这叫同步自转。月球远侧并非永远黑暗,阳光也会照到那里。 | 远侧会经历白昼,不是永久黑暗 |
| 5 | 绕行一周约二十七点三天;朔到朔约二十九点五天。 | 地球也继续绕太阳运行,所以朔望月更长 |
旁白里的数字写成中文读法,画面上的数字则人工排成“27.3天”和“29.5天”。这样既方便 TTS 朗读,也能在画面里直接比较。练习稿在 input/narration.txt,镜头关系在 input/storyboard.json。
用 ComfyUI 做无字太空底图
先确认 ComfyUI 已经安装,且本机已有 Z-Image-Turbo、Qwen 3 4B 文本编码器和 AE VAE。练习脚本只向本机 127.0.0.1:8188 提交标准节点工作流,启动前会检查三份权重是否存在;缺任何一项就退出,不会去下载模型。若你还没有这些权重,先停在这里,不要为了跟做而消耗流量。
在练习包根目录运行:
"$HOME/ai-demo/ComfyUI/.venv/bin/python" scripts/generate_background.py
"$HOME/ai-demo/ComfyUI/.venv/bin/python" scripts/render_storyboard.py
第一条命令生成一张无字底图,第二条把地球、月球、轨道、朝向标记和中文说明排上去。画面中的物理关系由程序按固定坐标绘制,避免把“同一面始终朝向地球”交给模型猜。运行后检查 output/scene-01.png 至 scene-05.png,尤其核对第二、第三格中月面标记的方向。
本机 ComfyUI 0.38.0 使用已存在的 Z-Image-Turbo bf16、Qwen 3 4B 和 AE VAE 权重生成了底图;没有下载或更新模型。ComfyUI 的官方教程也说明了该模型的本地工作流和节点设置。输出样片把底图标成“AI生成”,地月图解为程序绘制。
用 CosyVoice 合成旁白
准备一段你有权使用的清晰中文参考音,并逐字写出它实际说的内容。CosyVoice 的零样本接口会根据参考音和参考文本生成目标语音;不要拿演员、客户、同事或其他人的声音试用,除非你获得了相应授权。练习包不含参考音或模型权重。
只有在 CosyVoice 3 模型和 WeText 本地缓存都已存在时,再运行下面的命令。脚本检查模型文件、设置 Hugging Face 与 ModelScope 离线模式,并把 WeText 资源解析固定到已有缓存;缺文件就报错退出,不尝试下载。脚本会自动加上 CosyVoice 3 所需的 You are a helpful assistant.<|endofprompt|> 前缀,因此参数只填写参考音里实际说出的文字:
"$HOME/ai-demo/CosyVoice/.venv/bin/python" scripts/synthesize_voiceover.py \
--cosyvoice-root "$HOME/ai-demo/CosyVoice" \
--model-dir "$HOME/ai-demo/CosyVoice/pretrained_models/Fun-CosyVoice3-0.5B" \
--prompt-wav /path/to/authorized-reference.wav \
--prompt-text "参考音里实际说出的文字" \
--narration input/narration.txt \
--output output/voiceover.wav
脚本按五行旁白分段合成,每段最多8秒,输出单声道 WAV 和运行摘要。若某行超时,不要硬压语速,先删去重复修饰词,再重新核对事实。CosyVoice 的用法见官方仓库;模型权重的用途和许可还需按官方模型卡核对。
本次本地合成使用 CosyVoice 仓库自带的示例参考音,只用于本机验证;没有把参考音或生成语音放进公开练习包。公开样片为静音画面预览。用自己的声音制作版本时,应把自己的旁白 WAV 放入剪辑软件,与五张图按顺序对齐。
做成短片并逐项复核
练习包的 scripts/assemble_preview.sh 把五张图做成每镜头8秒的慢推近样片。无旁白版用于预览画面:
bash scripts/assemble_preview.sh output/visual-preview.mp4
如需在本机合成带旁白版本,可把 WAV 作为第二个参数;不要将未经授权的参考音或旁白文件随包发布:
bash scripts/assemble_preview.sh local-only/complete-preview.mp4 output/voiceover.wav
导入剪辑软件后,逐句检查旁白、字幕、画面切换和停顿;确认“近侧”标记每一格都朝向地球,远侧受光的示意与旁白一致。不要把四张静态插画描述成完整的三维天体模拟。发布生成合成的音视频时,按适用规则和平台流程主动声明并使用标识功能;《人工智能生成合成内容标识办法》自2025年9月1日起施行,具体要求见办法全文。
本机实测和局限
本机使用 ComfyUI 0.38.0 / Z-Image-Turbo 生成底图,以 Pillow 绘制5张图解,再由 FFmpeg 输出40秒静音样片。CosyVoice 3 使用现有本地权重合成五段旁白,实际语音分别4.92、5.80、6.68、6.36、5.32秒,补静音至40秒;部分短句触发了“短于参考提示文本,效果可能较差”的模型提示。过程锁定离线模式,没有下载模型。
这次验证的是一段原创月球知识稿和本机合成链路,不是天文学教学效果评估。旁白没有做母语者审校或人工试听,视频没有在手机剪辑软件中做字幕同步验收;发布前仍要逐帧核对月面朝向,并亲自试听和校准时长。样片和练习包:月球同步自转科普动画练习包。练习包不含模型权重、参考音或生成语音。
如果准备继续完善字幕,可以接着看《视频自动加字幕怎么做?本地识别、校对、导出 SRT》。