Communitygithub.com

课件视频制作技能

将课件幻灯片(slides.json + .pptx + 幻灯片图像)转化为完整的叙述型教学视频(1080p mp4),使用本地文本转语音语音合成(Kokoro支持英语及其他语言,VieNeu支持越南语),每个卡片和步骤与叙述同步出现,包含多种转场、手绘注意力圈、音效、钢琴背景音乐、暂停倒计时、独立的.vtt/.srt字幕、真实屏幕录制(含教程课程的平滑滚动)以及质量测量报告。遵循教学视频标准,仅重新渲染已更改的幻灯片。

课件视频制作技能 是什么?

该技能旨在将单节课的幻灯片面板(由 `lesson-slide-designer` 技能生成)自动转化为高质量的教学视频。它生成1920x1080、30fps的MP4视频文件,配合同步叙述、动态卡片揭示、多种转场效果、手绘圈注、音效和钢琴背景音乐。支持英语(Kokoro)和越南语(VieNeu)的本地文本转语音,无需联网。它还会生成独立的VTT/SRT字幕文件,用于技术教程的平滑滚动屏幕录制,以及详细的质量报告。该技能采用智能增量渲染(仅处理更改的幻灯片),特别适合制作Udemy课程视频、旁白幻灯片演示或说明视频。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/chuonglife/lesson-video-producer-skill/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

课件视频制作技能 是做什么的?

将一课的幻灯片面板转化为完成的教学视频:合成语音朗读旁白,每个卡片、步骤或行正好在语音到达时出现,转场各不相同,轻柔的音效标记每次揭示,钢琴背景音乐在语音下方自动降音,学习者暂停时显示倒计时,关键项获得手绘圆圈,字幕作为单独文件输出,真实的屏幕录制嵌入教程课程。一次一课;运行它,查看它,然后交付。

输入来自lesson-slide-designer技能:slides/<course>/<lesson>/slides.json、<file_name>.pptx和_preview/slide-NN.png。如果缺失,请先构建面板。来自越南语版本 (kieu、loi_doc、_kiem/) 的面板也可读取。

输出在videos/<course>/<lesson>/ (镜像幻灯片路径;否则为<slides folder>/video/):

文件说明
<file_name>.mp4视频: 1920x1080, 30 fps, H.264, AAC 48 kHz, -16 LUFS
<file_name>.<lang>.vtt / .srt单独的字幕文件,从不烧录 (否则会覆盖幻灯片文字);上传.vtt作为字幕
<file_name>.narration.txt干净的旁白,每行一个口语节拍;`
<file_name>.storyboard.json / .md事件发生时间:从pptx测量的区域、每行出现的时间、效果、转场、圆圈、缩放、倒计时;.md用于人工审查
<file_name>.voice.mp3 + .timeline.json旁白及其每行精确的开始和结束时间 (行缓存于.voice.mp3.cache/)
<file_name>.events.json、.audio.mp3音效事件及三层混音
video.json (可选,由你编写)每张幻灯片的覆盖设置:揭示行、转场、停留、圆圈、缩放、屏幕录制
_check/contact-NN.png (成片视频的关键帧)、<file_name>.report.md (测量数据)、voice-review.txt (Whisper审查)、voice-exceptions.txt
_segments/每张幻灯片渲染一个片段,当该幻灯片未更改时重用

工具:Python 3.10+ (需安装python-pptx、numpy、Pillow;opencv-python用于平滑录制,faster-whisper用于语音审查);Node 18+ (需安装puppeteer-core,在assets/engine中运行npm install) 以及Chrome、Chromium或Edge;ffmpeg/ffprobe。语音:Kokoro (pip install kokoro soundfile) 或 VieNeu-TTS,均为Apache 2.0许可且本地运行。如果引擎位于自己的虚拟环境中,请设置KOKORO_PYTHON或VIENEU_PYTHON指向该Python解释器。GPU有助于加速,但不是必需的。

工作流程

步骤0. 读取面板并确定简报

  1. 读取slides.json (旁白、制作说明、幻灯片类型) 并查看_preview/contact-sheet.png。如果课程源代码存在,读取它以了解学习者练习和提问的位置。
  2. 读取references/video-standards.md (标准:单一主题、脚本、开头-主体-结尾、转场、互动) 和references/motion-and-sound.md (每种幻灯片类型的处理方式,以及为什么视频必须动感但不显得杂乱)。
  3. 确定:语言和语音 (slides.json中的language字段;英语默认使用Kokoro的am_michael,女性使用af_heart,其他Kokoro语言根据语音前缀,越南语使用VieNeu);课程是否需要真实的屏幕录制 (任何教授点击、打字或软件的课程:是的,见步骤2);哪些问题幻灯片需要暂停及暂停时长;哪些内容需要圆圈或缩放。旁白已在幻灯片步骤中为文本转语音编写。不要在此处重写教学内容;仅当语音读错单词时修复其发音。

步骤1. 构建故事板并审查

python scripts/storyboard.py slides/<course>/<lesson>/slides.json

读取<file_name>.storyboard.md:每张幻灯片的区域、每行出现的行号、转场、停留、圆圈。对照motion-and-sound.md的第4节检查:第三个卡片在语音到达第三个想法时出现;相邻元素从不共享同一种转场;问题幻灯片停留;类似“circle answer B”的注释应产生一个圆圈。使用video.json(参见templates/video.example.json) 修复并重新运行。“未找到区域”表示幻灯片整体显示:对于image类型可以,对于其他类型请检查pptx。

步骤2. 真实屏幕录制 (操作演示、动手实践和软件课程)

当课程教授操作时,展示真实操作。绝不用截图或模拟页面代替。规则见references/screen-recording.md。简而言之:

  1. 准备窗口:私密浏览器窗口或干净账户,无通知,侧边栏无真实姓名。在Windows上,运行python scripts/record_screen.py --list查看窗口标题。
  2. 录制:python scripts/record_screen.py videos/<course>/<lesson>/clips/S07-name.mp4 --window "<title>" --seconds 40 --size 1280x720 [--crop-top 90] [--scroll "6:200:4"] (在Windows上;其他系统使用OBS或ffmpeg)。你自己通过浏览器工具进行操作,或让用户操作。仅使用--scroll或页面内平滑滚动 (window.scrollBy({top: 200, behavior: 'smooth'})每0.6到0.8秒一次),不要逐段滚动。每次结果后保持静止3到5秒;长结果缓慢滚动 (150到250像素/秒) 以便学习者阅读。
  3. 每次录制后运行check_motion.py。如果有跳跃残留:python scripts/smooth_scroll.py <in> <out>,然后再次测量直到归零。检查剪辑顶部条带,查找账户名称和杂项标签页。
  4. 在video.json中声明:"S07": {"clip": {"file": "clips/S07-name.mp4", "mode": "frame", "speed": "auto"}}。幻灯片应为image或two-column类型,并带有大画框;将剪辑的第一帧放在上面 (composite_clips.py --first-frame clips/S07-name.mp4 slides/<course>/<lesson>/S07-first-frame.png) 并重建面板,使剪辑淡入时无跳跃感。
  5. 使用--extend参数运行make_video.py:当录制时长超过其旁白时,会自动添加静音。切勿将录制速度提高到1.25倍以上。

步骤3. 一条命令渲染

python scripts/make_video.py slides/<course>/<lesson>/slides.json [--extend]

九个步骤:故事板、旁白 (通过gpu_lock.py)、Whisper审查、渲染计划、三层混音、画面 (无头Chrome,逐张幻灯片)、屏幕录制、字幕、最终检查。对于超过3分钟的课程,请在后台运行 (首次渲染大约每分钟视频需要一到两分钟,幻灯片级别的修复只需几秒)。当它停止时:

  • 语音审查 (_check/voice-review.txt):Whisper先整体听一遍,然后仅对可疑行进行重新生成和检查,最多3轮。它会过滤掉Whisper对短词的自身错误、在音乐上虚构的短语,以及第二次、有提示的监听能正确听出的内容;仅对长词、术语、名称或连续多个词停止。监听具体位置 (ffmpeg -ss 1:23 -t 4 -i <voice.mp3> clip.wav)。如果语音错误,在make_voice.py的PRONUNCIATION中添加音标修正 (字幕保持真实拼写) 或更改slides.json中的单词;如果Whisper听错,将单词添加到_check/voice-exceptions.txt。然后使用--from-step 2 (缓存行不会被重新生成)。
  • 最终检查失败 (_check/<file_name>.report.md):修复原因 (使用--music-db调整响度、平滑录制以消除跳跃、重新渲染以调整时长) 并从该步骤重新运行。

步骤4. 交付前检查

  1. 查看_check/contact-NN.png (每张幻灯片三帧:进入时、稳定时、即将离开时),对照references/quality-checks.md中的检查清单:封面补丁覆盖了文字、缩放裁剪了文字、转场时两张幻灯片同时可见、文字上的倒计时、录制内容超出画框、空白的第一帧。要仔细检查某一时刻:node assets/engine/render.mjs sheet <storyboard.json> <timeline.json> _check/zoom --from 40 --to 46 --every 0.25。
  2. 聆听两处:前20秒和一处转场 (ffmpeg -ss 0 -t 20 -i <mp4> -vn test.mp3)。音效可听见但明显低于语音,音乐低沉。
  3. 使用video.json或脚本修复,再次渲染 (仅重新渲染更改的幻灯片),再次查看,直到完全通过。在查看最新渲染的接触画面之前,切勿报告视频已完成。

步骤5. 汇报

向用户提供:mp4和vtt路径;实际时长;语音和语速 (每秒词数);幻灯片、效果、暂停;检查报告 (裁决、LUFS、跳跃);合成的录制;添加到发音表或Whisper例外列表的单词;留下的警告及其原因。展示接触画面。

连续多节课

在整个课程中保持相同的语音、音乐音量和音效;各课之间的差异不应超过1.5 LU (比较每份报告的LUFS行)。发音表和Whisper例外列表随时间增长;不要重置。录制文件保存在videos/<course>/<lesson>/clips/中,每次录制使用新文件名。如果面板被拆分为多个主题视频 (V<k>-<name>/slides.json),则逐个子面板进行渲染。

原则

  • 标准是固定的 (video-standards.md):每视频一个主题、脚本、开头-主体-结尾、各部分之间的口语转场、互动。节奏、画面和声音是你发挥创造力的地方。
  • 画面和声音互相补充;语音从不直接读取幻灯片。 区域在语音到达时出现;正在被朗读的文字不会移动。
  • 与屏幕一致的暂停:说“请暂停视频”的旁白得到3秒停留且无倒计时 (学习者手动暂停;运行中的计时器旁边若出现“60秒”标签会矛盾)。没有这句话的问题幻灯片按照其指定时间暂停,最多60秒,并伴有倒计时。
  • 注意力圆圈:对于答案和类似“circle B”的注释,使用明确的圆圈;带有强调词阅读的想法会自动生成一个淡出的圆圈;卡片使用椭圆,行使用圆角框;每张幻灯片最多三个。
  • 默认关闭光标。 绘制指针大多数观众会认为是游离的鼠标。在video.json中设置{"_all": {"cursor": true}}可打开演示风格视频的光标;光标沿曲线移动,在文字外停留,并且决不在标题、章节、关键信息或结束幻灯片上显示。
  • 生动但不杂乱:每5到10秒有变化,任何静态内容不超过25秒;但每个画面只有一个焦点,没有旋转或翻转,每分钟最多16个音效,转场音效仅在幻灯片切换时出现,音乐比语音低17到23 dB。
  • 语音是人们首先感受到的质量。 不要对拉伸后听感不佳的模型进行时间拉伸 (VieNeu);改用更长的暂停来减慢。Whisper审查不是可选项:发音错误的术语是教学错误。
  • 字幕是单独文件,从不烧录。
  • 视频阶段不改变内容:不添加新想法,不编造数字。旁白问题应回到课程或幻灯片步骤处理。
  • 运行、测量、查看后再交付:响度、跳跃、时长、接触画面。
  • 录制就是录制:没有截图代替操作;滚动必须测量平滑度。
  • 要添加转场、效果或音效:扩展assets/engine/video.js、scripts/storyboard.py和references/motion-and-sound.md中的表格,渲染测试,查看,然后使用。

参考资料

  • references/video-standards.md:音视频学习材料的教学标准,映射到幻灯片类型,以及平台规范 (Udemy等)。
  • references/motion-and-sound.md:区域和动作的推断方式,幻灯片类型表格,运动数字,音轨,video.json语法,如何保持学习者清醒。
  • references/narration-voice.md:Kokoro和VieNeu,语速,发音修正,Whisper审查。
  • references/screen-recording.md:录制窗口,平滑滚动,测量和平滑跳跃,合成,隐私。
  • references/quality-checks.md:最终检查和接触画面检查清单的阈值。
  • templates/video.example.json:每张幻灯片的覆盖设置。

相关技能