PPT → 培训视频自动化生成
把 PPT/PPTX 一键转成带浑厚男声讲解的 MP4 培训视频。完整支持解说稿审核与局部自定义。
何时使用
- 把项目评审、对外汇报、课程讲义等 PPT 转成可独立播放的视频讲解
- 需要 1080p 视频,含中文男声 + 可选轻量背景乐
- 演示文稿 5-50 页,期望输出 5-30 分钟视频
- 解说稿由 AI 起草后需要逐句人工审核、微调
何时不要使用
- 视频时长 < 1 分钟(如产品 demo)→ 直接用屏幕录像
- 需要真人出镜讲解 → 用录屏软件
- 仅需要音频文件(不带画面)→ 直接调 TTS 即可
- 解说稿包含方言 / 多人对话 / 实时互动 → 不在自动化能力内
技术栈
- PPT → PNG:PowerPoint COM(Windows 必需)
- TTS:Microsoft Edge TTS(
edge-ttsPython 包,神经语音) - 视频合成:FFmpeg(8.x+,含 libx264 与 libass)
- 中文字体:Windows 内置
msyhbd.ttc(必装)
输入
1. PPT 文件
任意 .pptx(建议 16:9 宽屏,导出 1920×1080 PNG)
2. 解说稿 JSON
{
"title": "方案汇报",
"voice": "zh-CN-YunjianNeural",
"rate": "+0%",
"bgm": "ambient",
"resolution": "1920x1080",
"burn_subtitle": true,
"slides": [
{
"page": 1,
"text": "各位同事,今天我们分享...",
"golden": "全球法规风险系统化管理方案"
}
]
}
字段说明:
voice:Edge TTS 音色(见references/voice-options.md)rate:语速(+10%加速 /-5%减速)bgm:ambient(程序化环境氛围)/silent(无背景乐)burn_subtitle:是否烧入"金句"字幕golden:该页字幕文本(可选;不填则不显示该页字幕)
输出
output.mp4:最终视频output.frames/:每页 PNGoutput.audio/:每段 TTS MP3output.segments/:每页单段 MP4(用于局部重生成)output.bgm.wav:背景乐源文件output.narration.md:可读解说稿(含时长)output.audit.json:审核结果output.verify.json:自检报告
快速开始
# 安装依赖(一次性)
pip install edge-tts mutagen
# 1) 准备解说稿 JSON(可由 AI 起草后人工微调)
cp assets/narration-template.json my_narration.json
# 编辑 my_narration.json 填入每页 text 与 golden
# 2) 一键生成
python scripts/ppt2video.py run \
--ppt my_deck.pptx \
--script my_narration.json \
--output my_video.mp4
# 3) 仅审核解说稿(不生成视频)
python scripts/ppt2video.py audit --script my_narration.json
工作流(5 步)
- 依赖自检:检查 ffmpeg、edge-tts、中文字体、PowerPoint
- 解说稿审核:字数、语速、用词一致性、重复检测(可选 --audit-only)
- 导出 PNG:PPT → 1920×1080 高清帧
- TTS 生成:每页一段 MP3,4 路并发
- 视频合成:每段 MP4 → 拼接 → 混 BGM → 可选烧字幕 → 输出
每步可独立重跑(幂等):已存在的文件会被复用。
局部自定义(核心亮点)
| 需求 | 命令 |
|---|---|
| 只重跑第 7 页(修正该页解说) | ppt2video.py regen-page --ppt ... --page 7 --text "新解说..." |
| 第 12 页用女声(对比) | ppt2video.py set-voice --page 12 --voice zh-CN-XiaoxiaoNeural |
| 整片加速 10% | 编辑 JSON 的 rate: "+10%",再跑 run |
| 改背景乐 | ppt2video.py rebgm --input output.mp4 --output v2.mp4 |
| 不烧字幕 | ppt2video.py run ... --no-subtitle |
| 只跑 P3-P7 | ppt2video.py run ... --range 3-7 |
| 跳过已生成段 | 自动(--force 强制重跑) |
审核规则(audit 子命令)
| 维度 | 检查 | 建议 | |---|---|---| | 字数 | 每段 80-200 字 | <80 偏短,>200 偏长 | | 语速 | 估算 2.5-4.5 字/秒 | 太慢显得拖沓,太快不易懂 | | 填充词 | 检测"嗯/啊/这个/那么" | 建议删减 | | 重复 | 与相邻页、与全文其他段 | 避免车轱辘话 | | 术语一致性 | 同一概念不同叫法 | 报告"CoP"还是"量产一致性"要统一 | | 涉敏词 | 政治 / 商业机密词 | 提醒复核 | | 来源声明 | 数字断言 | "70% 召回"需注明出处 |
输出 audit.json:
{
"summary": {"warnings": 3, "errors": 0, "total_chars": 2800},
"issues": [
{"page": 9, "type": "speed", "level": "warn", "msg": "语速 5.2 字/秒(建议 2.5-4.5)"},
{"page": 5, "type": "terminology", "level": "info", "msg": "P5 用'REACH',P7 用'Reach',建议统一"}
]
}
关键约束
- Windows 必需:PowerPoint COM 不可跨平台
- 首次运行需联网:edge-tts 走 Microsoft 在线语音服务
- 中文字体必须:缺
msyhbd.ttc时字幕会变成方块 - 路径中含中文不会出错:所有中间文件落到
C:\Temp\ppt2video_{ts}\ASCII 目录
常见问题(详见 references/troubleshooting.md)
- TTS 失败 / 报"无法连接到 speech.platform.bing.com" → 检查代理
- 输出视频无声 → 看 ffmpeg 是否支持 aac 编码
- 字幕乱码 → 装 msyhbd.ttc 或改 force_style
- PPT 路径含中文 → 已自动处理,复制到 ASCII 临时目录
微信扫一扫