SuperAPI AI 工具集

edu-math-video

写作与研究

查看项目

更新于 10-16 04:01

技能介绍

用途

edu-math-video 用于把一道数学题(数学题、几何、代数、函数、行程问题等)制作成讲解/解题视频(讲解视频、解题视频、例题精讲、微课)。产出的视频规格为 16:9、1920×1080,带中文配音、中英双语字幕和手绘笔记本风格的动画,最终输出 MP4。

核心原则

画面跟着旁白走,而且图会“讲题”。每句旁白,图上都有一个动作把这句推理演出来(线段滑过去重合、三角形叠上去、相机转到俯视、动点移动等),不是只多出一条线或一个标签。每个动画都用“第 k 句旁白开始的时刻”S.at(k, f) 定时,绝不写死秒数。

流水线与结构

每个视频一个文件夹。流程为:script.json(旁白)经 build_audio.py(GLM-TTS + 合成音乐)生成 build/timeline.json + build/mix.wav + ../<name>.srt;anim.js + engine.js 按旁白时间点驱动动画;再由 node render.mjs video 输出 ../<name>.mp4。

本技能自带全部代码,不需要从别的项目复制文件:

  • template/:可直接运行的完整示例项目(直角三角形斜边中线题)。engine.js 是通用引擎(不改),anim.js / script.json / episode.json / problem.png 是每道题都要重写的。
  • shared/pron.py + shared/pron.json:读音控制(GLM-TTS 没有 SSML/拼音输入)。
  • examples/cone-parallel/:立体几何完整示例(anim.js + storyboard.md + script.json),含相机斜视↔俯视、侧面展开成扇形、内错角旋转、平面平移。做立体几何、圆、多问题时先读它。
  • scripts/:new_video.sh(建项目)、setup_check.sh(查环境)、make_problem_png.py(文字题→图片+高亮框)、problem_boxes.py(截图→高亮框坐标)、contact_sheet.py(截图拼图审查)。

使用方式(11 个步骤)

  1. 弄清题目,自己先把题解对:写已知条件清单、所求、关键思路、每一步计算、最终答案、验算方法。答案不确定或题目看不清时问用户。
  2. 建项目、查环境:bash SKILL/scripts/new_video.sh "$PWD" <ascii_folder_name>,再运行 setup_check.sh。通过标准为输出 ALL OK。
  3. 测试 TTS:cd PROJ && PY build_audio.py --say "你好,我们来看一道数学题。" 验证 key 和音色。
  4. 准备题目图片 problem.png 和高亮框:只有文字用 make_problem_png.py,有截图用 problem_boxes.py。把尺寸和框填进 anim.js 顶部的 PROBLEM。
  5. 写 episode.json 和 script.json:episode.json 含 title、output_name、pop_scenes;script.json 为幕的数组,每幕 {"scene": "英文id", "lines": [{"zh","tts","en"}]}。第一幕 intro 读题,最后一幕 outro 回顾加报答案。
  6. 写分镜 storyboard.md:按格式给每句旁白写“指/动/留/板书”,除首末幕外“动”不能空。先在顶部写图形清单。
  7. 读音与脚本检查,修到 0:cd PROJ && PY build_audio.py --check。要求未固定读音的生僻字/多音字为 0 且 script errors 为 0。
  8. 写 anim.js:按 storyboard.md 逐句实现,每个元素的出现时间等于旁白提到它的时刻。
  9. 免费预览:PY build_audio.py --preview && node render.mjs motion && node render.mjs stills auto && PY SKILL/scripts/contact_sheet.py .,并打开 build/sheet.png 逐张检查。
  10. 真正生成配音,自动听写核对,再检查画面:PY build_audio.py && PY build_audio.py --asr && node render.mjs stills auto && PY SKILL/scripts/contact_sheet.py .
  11. 渲染视频并交付:node render.mjs video 6(6 为并行浏览器页数,不是帧率;帧率固定 30)。输出 WS/<output_name>.mp4 和 WS/<output_name>.srt。

适用场景

适用于数学题讲解视频制作,包括几何题、代数题、函数题、行程问题、立体几何、圆、多问题等。examples/cone-parallel/ 提供了立体几何完整示例。

限制与要求

  • 退出码不是 0 就是没完成。--check 退出码 1(哪怕剩一个 ⚠ 多音字)、motion 退出码 1、截图有问题,都不能忽略继续。
  • tts 字段只能是能念出来的中文,不能含阿拉伯数字及 = + − × ÷ / ^ √ ∠ △ ∥ ° ( ) 等符号;字幕 zh 字段保留正常数学写法。
  • 读音必须固定,多音字标注写在该字后面(如 长[cháng])。
  • API Key 只能由用户提供。缺 GLM_API_KEY 时先问用户:配置 key 或用兜底引擎(edge-tts / macOS say)。不要编造 key、模型名或接口地址,不要把 key 打印或写进项目文件夹。默认音色为 chuichui(锤锤),可在 .env 用 GLM_VOICE 更换;模型为 glm-tts。
  • 所有画面内容在 y ≤ 860 以内(y≈9141044 为字幕框),图形放左半边,推导文字写在右边横线板上。
  • 不要修改 engine.js(除非用户要求换风格);不要把 node_modules、package*.json 复制进视频文件夹。
  • 无法听音频,需请用户试听读音并特别列出标注过读音的字。

环境与依赖

python 包用 PY -m pip install --user numpy requests pypinyin pillow。node 依赖在 WS 根目录装一次,所有视频共享。缺 GLM_API_KEY 时按 reference/glm-tts-setup.md 引导用户配置(推荐放 ~/.config/math-problem-video/.env)。TTS_ENGINE=auto(默认)在无 key 时会自动改用兜底引擎。部分细节(如具体时长、价格、费用)在提供的资料中暂未提供。