从幻灯片制作课程/培训视频
先阅读 video-studio。该技能已在一个22分钟的营销课程(从PDF文稿制作,要求“正常编辑,不要过多动态图形”,使用印度英语男声)上得到验证。请按以下结构重建:edit/course.py、render.py、mix.py。
流程
- 幻灯片 → 图片:
pdftoppm -r 200 -png raw/deck.pdf work/slides/p(或先将PPTX/Keynote导出为PDF)。查看每一页。 对于逐步构建,找到每个部分的方框(标题、要点1..n、图表、图片)——通过肉眼从图片中识别,或使用PIL的行/列非背景像素投影法——并将它们按幻灯片存储。 - 脚本 (
edit/course.py): 每张幻灯片包含:vo段落 +reveals[{box:[x,y,w,h], cue:"spoken word"}] + 可选的zoom方框。 写作目的是教学,而非照读幻灯片:引入课程主题(说明为什么重要),每个段落一个观点,给出示例,每个模块结尾做总结,语速约140-150词/分钟。如果目标受众需要,可使用印式英语。在生成任何配音之前,先展示脚本并获得用户批准(配音会消耗积分)。 - 预算检查:
eleven.py credits;一个22分钟的课程大约需要18k字符——Starter套餐每月40k字符,因此同月内可能无法全额重新配音一次完整课程。告知用户成本。仅用于测试时间的免费草稿配音可使用macOS自带的say命令。 - 配音: 每个段落执行
eleven.py tts "<text>" work/vo/<slide>_<n>.mp3 --voice 05QRrdNgiglhuYOaTQvw --speed 1.05 --words work/vo/<slide>_<n>.json(Prem级别,已批准)。按文本缓存——编辑一个段落只会重新生成该段落的配音。通过在文本中进行拼写修正来修复发音。段落之间拼接0.35秒,幻灯片之间拼接0.8秒;构建时间线JSON(幻灯片开始/结束时间、提示词时间戳)。 - 渲染 (
edit/render.py): 每张幻灯片以干净状态开始(仅显示标题),每个部分在对应的提示词上淡入/滑入;缓慢的缓动摄像机推拉(1.00 → 1.04)以及对于内容密集的幻灯片,放大到正在讨论的部分;幻灯片之间使用推动/滑动转场(0.4秒),左上角显示章节标签,细长的进度条,幻灯片编号。清晰度:从200 dpi的PNG渲染1920x1080分辨率的幻灯片,无模糊。低优先级,按模块分块渲染,以便可以从中断处恢复。 - 混音 (
edit/mix.py): 配音链(高通滤波80Hz、轻度压缩),背景音乐 -20 dB 带侧链闪避(assets/music/*underscore*),揭示时播放轻柔音效(弹出/嗖声 -14 dB),转场时播放音效(呼啸声 -12 dB)——比短视频特效要轻。母带处理至 -14 LUFS,--tp -2.0。 - 预览 → 批准 → 完成: 第一个模块使用
--scale 0.5,获取反馈,然后全部导出。qc.py --platform youtube。 - 打包: YouTube章节(每个幻灯片组/模块一个章节),包含课程大纲的描述,如果是课程平台则导出每个模块的文件(
exports/vN_module_<n>_<slug>.mp4),缩略图(thumbnail-designer),可选SRT字幕(captions_ass.py --style clean或根据配音词语生成)。
规则
- 视觉跟随语音:在提及之前不出现任何内容;任何重要内容都必须被提及过。
- 保留文稿本身的设计(这是客户的品牌);仅添加摄像机动画、揭示效果、章节标签和进度条。
- 仅使用文稿/用户提供的数据和声明。屏幕上的品牌名称即使为了语音而进行了拼写修正,也必须拼写正确。
- 如果用户去休息并放弃批准流程,仍保留预览和备注,以便他们在早上进行审核。