首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >workbuddy怎么把从提供PPT+啄字稿,至生成PPT宣讲视频

workbuddy怎么把从提供PPT+啄字稿,至生成PPT宣讲视频

原创
作者头像
用户12729432
发布于 2026-10-01 11:35:42
发布于 2026-10-01 11:35:42
630
举报

WorkBuddy 怎么把「PPT + 啄字稿」一键变成 PPT 宣讲视频

摘要:一套纯本地的完整链路——把每页备注里写好的逐字稿,用 GPT-SoVITS 克隆音色逐页配音,再把 PPT 渲染成 1920×1080 高清画面,最后用 ffmpeg 合成一条「逐页全屏 + 本人声音讲解」的 MP4 宣讲视频。全程不依赖云端 TTS,不额外装 Office 之外的任何重量级组件。

一、背景与痛点

做售前、培训、产品宣讲的人都有一个共同烦恼:PPT 做完了,逐字稿也写好了,但要录一条讲解视频,传统做法是「开着录屏软件,一边翻页一边照着稿念」。问题随之而来:

  • 念稿卡壳、口误,一条视频要反复录十几遍;
  • 翻页和声音对不齐,讲到第 5 页了画面还停在第 3 页;
  • 每次改一页稿子,整条视频都得重录;
  • 想用本人音色但本人没空、嗓子状态差,录出来效果不稳定。

有没有一种办法:稿子是现成的(PPT 备注里就有)、声音是本人的(克隆一份就行)、画面是原封不动的 PPT,三条线自动对齐,一键出片?

有。下面这套链路就能做到,核心工具是 WorkBuddy 里的「PPT 宣讲视频」能力,底层用本地 GPT-SoVITS 做音色克隆、PowerPoint COM 做渲染、ffmpeg 做合成。全部跑在本机,不碰云端 TTS,隐私和音色都自己掌控。

二、核心思路

整体只做四件事,每件事一个脚本:

  1. 提取逐字稿:把 PPTX 每一页备注栏的文字抽出来,一页一个 .txt;
  2. 逐页配音:用本地 GPT-SoVITS 的克隆音色,把每页稿子合成一段 .wav;
  3. 渲染画面:用 PowerPoint COM 把每一页导出成 1920×1080 的 .png;
  4. 合成视频:用 ffmpeg 按「一页画面 + 一段配音」的顺序拼成 MP4,页与页之间留 0.4 秒停顿。

关键点在于「音画按页对齐」:因为是先逐页配音、再逐页渲染,最后按同一序号拼接,所以第 N 页的声音天然对应第 N 页的画面,彻底解决翻页错位问题。而且改哪页,只需重新生成哪一页,不用整条重做。

三、分步实操

先说输入输出约定:输入是一个 .pptx,每页备注 = 该页的配音文字,一段到底;输出是同名的 _宣讲视频.mp4。

步骤 1:提取逐字稿

代码语言:bash
复制
python310\python.exe scripts\extract_script.py "D:\演示\方案宣讲.pptx"

跑完会在 deck_script/ 下生成 P01.txt 到 P0N.txt。脚本还会提示哪些页的备注是空的——空备注意味着这一页没有配音,合成时会变成静音画面,记得回头补上稿子。

步骤 2:逐页配音(耗时,必须后台跑)

代码语言:bash
复制
venv310\Scripts\python.exe scripts\infer_pages.py

跑完在 deck_audio/ 下生成 P01.wav 到 P0N.wav,采样率 32kHz 单声道。因为用 CPU 跑 GPT-SoVITS,大约 1 分钟/页,所以这条命令一定要放后台执行。已经生成过的页会自动跳过——想只改某一页,删掉对应 wav 或改对应 txt 再重跑即可。

步骤 3:渲染高清画面

代码语言:bash
复制
python310\python.exe scripts\render_pptx.py "D:\演示\方案宣讲.pptx" "D:\AI工具集\声音克隆工具\deck_slides"

在 deck_slides/ 下生成 P01.png 到 P0N.png,每张 1920×1080。这一步依赖本机装了 Microsoft PowerPoint。

步骤 4:合成 MP4

代码语言:bash
复制
venv310\Scripts\python.exe scripts\build_video.py "D:\演示\方案宣讲_宣讲视频.mp4"

合成逻辑是每页 -loop 1 循环画面 + 配音,末尾用 apad 补 0.4 秒停顿,-shortest 控制时长,再 concat 拼接。出片后建议跑一句校验:

代码语言:bash
复制
ffmpeg -i "D:\演示\方案宣讲_宣讲视频.mp4"

看 Duration 是否约等于「配音总时长 + 页数 × 0.4 秒」,对得上就说明音画没串台。

四、质检清单

  • 逐字稿一页对应一段,且已去掉「呃 / 嗯 / 啊」这类语气词;
  • 每页备注都非空,没有静音页;
  • 配音文件数与渲染画面数一致,序号一一对应;
  • 成片时长 ≈ 配音总时长 + 页数 × 0.4 秒;
  • 抽一页听效果,确认数字、英文缩写(如 WiFi6、802.1X)发音正常。

五、踩坑与对策

现象

原因

解法

渲染报「无法将^0保存到^1」

PowerPoint COM 不支持中文路径

先导出到英文临时目录,再拷贝回目标目录

渲染脚本偶发异常

win32com 的 gen_py 缓存损坏

改用 win32com.client.dynamic.Dispatch

ffmpeg 报找不到文件

相对路径在 subprocess 下失效

所有 -i、输出、concat 的 file 全部写绝对路径

含 WiFi6 / 802.1X 等英文时 TTS 报 LookupError

英文 G2P 缺 NLTK 语料

手动从 GitHub 拉 cmudict、averaged_perceptron_tagger_eng 两个 zip 解压到 nltk_data

提示音色克隆失败、音频被拒

参考音频超 10 秒(硬上限 3~10 秒)

裁剪到 6~8 秒,且 prompt_text 必须与参考音频逐字一致

Git Bash 下 ffmpeg 路径报错

Windows ffmpeg 不认 /d/ 风格路径

传 D:\ 反斜杠 Windows 路径 |

改稿后重出片发现还是旧的

单页已生成被自动跳过

删掉对应 wav / 改对应 txt 后再跑配音

六、小结

这条链路的真正价值在于把「写稿」和「出片」解耦:逐字稿是你本来就在写的东西(PPT 备注),声音是你一次性克隆好的本人音色,画面是你已经定稿的 PPT。三者各自独立、按页对齐、可局部重做。改一页稿不用重录整条,换一段措辞只需重新合成那一页的声音。

如果你也有「PPT 做好了、稿子写好了、就差一条讲解视频」的需求,不妨用 WorkBuddy 跑一遍上面的四步流程。上手时先拿一个 3~5 页的小 PPT 试跑通全链路,确认音色和节奏满意后,再套用到正式的宣讲材料上,效率会非常可观。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • WorkBuddy 怎么把「PPT + 啄字稿」一键变成 PPT 宣讲视频
    • 一、背景与痛点
    • 二、核心思路
    • 三、分步实操
      • 步骤 1:提取逐字稿
      • 步骤 2:逐页配音(耗时,必须后台跑)
      • 步骤 3:渲染高清画面
      • 步骤 4:合成 MP4
    • 四、质检清单
    • 五、踩坑与对策
    • 六、小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档