多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

PPT Master 音频旁白与视频导出实战指南:从演讲者备注到带旁白 PPTX 与 MP4

PPT Master 音频旁白与视频导出实战指南:从演讲者备注到带旁白 PPTX 与 MP4 PPT Master 音频旁白与视频导出实战指南从演讲者备注到带旁白 PPTX 与 MP4【免费下载链接】ppt-masterAI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations,>项目地址: https://gitcode.com/GitHub_Trending/ppt/ppt-master本文是 PPT Master 项目GitHub_Trending/ppt/ppt-master中docs/zh/audio-narration.md的深度技术解读。PPT Master 能把每页演讲者备注speaker notes自动转成逐页音频旁白默认基于微软 Edge 在线神经语音edge-tts也可切换 ElevenLabs、MiniMax、Qwen TTS、CosyVoice 获取高质量或复刻音色再把音频嵌入 PPTX、甚至交给本机 PowerPoint 导出成 MP4 视频。读完本文你将掌握旁白 / 字幕的产物结构、两条 PPTX 嵌入路径、四种以上 provider 的调用方式、旁白 cue 与对象动画的同步机制以及视频导出三条交付路径的取舍。本文所有命令与路径均以当前仓库实际内容为准旁白实现细节可对照共享后处理阶段文档 skills/ppt-master/workflows/stages/generate-audio.md 阅读。你会得到什么旁白功能的完整产物清单运行旁白生成后项目目录会产出一套与 SVG 页面对齐的资源。以 deck 名为project_path示例见 examples/ 下的项目结构为例逐页音频每页一个文件位于project_path/audio/文件名与 SVG 页对齐如01_cover.mp3、02_market_landscape.mp3。逐页字幕provider 原生计时路径Edge、ElevenLabs、MiniMax 以及支持时间戳的 CosyVoice 音色会从同一次合成返回的 provider 计时生成同名 SRT如01_cover.srt。每个文件使用以00:00:00,000为原点的页内时间轴provider 返回的词级或字符级时间戳会被重组为同一套紧凑 cue。来源清单audio/manifest.json完整生成成功后才原子写入只记录 provider、模型、音频/字幕格式、相关音色参数以及代替云端 voice ID 原文的 SHA-256 指纹。它不包含逐页清单、产物哈希或 API Key正常生成过程不会读取它——它只用于追溯这套旁白是哪来的。旁白 cue 同步产物当选择旁白 cue 同步且存在规范的 [animations.json] 时会派生无点击的narration_animations.json与旁白无关的自定义动画仍保留规范配置中的原始计时。两个动画 sidecar 都不存在时旁白导出不创建 sidecar而是继承基础导出的已解析 motion。PPTX 时间轴总字幕audio/total.srt当存在逐页 SRT 时可基于最终 PPTX 的实际计时生成时间轴与成片一致用于诊断而不是交付字幕。交付用外挂字幕PowerPoint 导出视频后video_subtitles.py会把冻结的旁白文本与最终视频的实际音轨对齐生成视频同名的外挂 SRT——字幕始终是外部文件PPT Master 不把字幕嵌入 PPTX也不烧录进 MP4。此外演讲者备注原样保留不会被改写。真正进入 PPTX 的旁白音频必须是 PowerPoint 可靠格式m4aAAC、mp3或wav内置生成路径默认输出mp3若 provider 返回pcm、opus、flac需先转码再嵌入。它是怎么做到的旁白生成链路解析备注本身就是为 TTS 写的口播稿。PPT Master 的 notes 规范刻意产出适合朗读的散文——没有[过渡]/[停顿]舞台标记也没有要点/时长这类 meta 行——念出来的内容就是页面上的内容。这是旁白质量的地基。AI 替你选音色。提出旁白需求后AI 依据 deck 主语言zh-CN/en-US/ja-JP/ko-KR等与所选 provider 拉取或解释可用音色挑出候选并为每个写一句中文调性说明如稳重男声·适合财报同时按 notes 信息密度给出语速/风格推荐。配置一次确定。Default Generate 与 Enhance Native 会一次性确认 provider、音色、语速、是否嵌入 PPTX、是否继续导出视频五个决策Quick 直接采用明确值并自动补齐其余项。执行。Edge、ElevenLabs、MiniMax 与支持时间戳的 CosyVoice 依据同一次合成返回的 provider 计时写音频 SRTQwen 与显式 CosyVoice 纯音频模式只写音频。随后按需导出带音频 PPTX再到 Windows 上调用 PowerPoint 原生编码器或走实时放映录制。从源码结构看这条链路由 skills/ppt-master/scripts/notes_to_audio.pyTTS 逐页合成、skills/ppt-master/scripts/narration_sync.pycue 同步与字幕合并、skills/ppt-master/scripts/svg_to_pptx.py重导出嵌入以及 skills/ppt-master/scripts/tts_backends/ 目录下五个后端实现backend_edge.py、backend_elevenlabs.py、backend_minimax.py、backend_qwen.py、backend_cosyvoice.py协作完成。该共享阶段被标注为上下文无关它只读取notes/*.md并查询所选 TTS 音色目录不负责选择顶层生成路线也不修改页面设计。值得注意的是旁白生成存在一个硬性前置依赖notes_to_audio.py在发送任何 TTS 请求前会确认每个页面的备注可读且非空Generate 项目从svg_output/*.svg解析备注花名册Enhance Native 项目从analysis/slide_index.json解析。缺失或空备注会返回退出码2此时必须先补齐备注再重跑绝不带着部分音频继续。两条嵌入路径录制的计时和旁白 vs. 底层音频嵌入旁白要进入 PPTX有两种 CLI 参数路径。二者对应 skills/ppt-master/scripts/svg_to_pptx.py 的重导出能力命令用途--recorded-narration audio准备 PowerPoint 的录制的计时和旁白。要求每页都有音频并写入页面自动推进时间。用于旁白视频导出。重导出文件保存为exports/name_timestamp_narrated.pptx。--narration-audio-dir audio底层音频嵌入能力。只嵌入匹配到的文件允许部分页面有音频。用于测试或后续手工整理。导出文件同样带_narrated后缀。--narration-start-floor 0.8可选的页前参数从目标页转场开始计到旁白启动的最短秒数。默认0.8设为0表示转场结束后立即开始。--narration-padding 0.5可选的页尾参数旁白结束后、页面推进前的静默停留秒数。默认0.5。两个计时参数可独立省略或覆盖。转场结束后的实际静默时间为max(0, narration_start_floor - transition_duration)——即旁白不会早于页面转场结束启动而调整起始下限也不会拉长转场本身。配套约束可对照 skills/ppt-master/workflows/stages/generate-audio.md 第 4 步--recorded-narration路径要求每条时长可被ffprobe读取且对象动画不得使用--animation-trigger on-click因为 PPT Master 不生成对象级点击计时必须用after-previous或with-previous。旁白只改变页面推进层已解析的页间转场效果不变-t none仍保持无转场视觉效果页面推进时间 页前起始下限 音频长度 页尾 padding。在recorded-narration之外的--narration-audio-dir模式则没有这些严格要求。怎么触发在对话里一句话开始deck 导出后直接对 AI 说即可例如你: 给这个 PPT 生成音频 你: 帮我用日语给这个 deck 配一个温柔女声的旁白 你: Generate narration for this deck and re-export with audio embedded.Generate 路线在最终 Stage 2 将 Narration Audio 的有效结果解析为开启时会主动运行该阶段后续的明确指令仍优先于主动默认值。剩下的流程由 AI 全包。支持的语言与音色清单凡是edge-tts支持的 locale 都能用——大约 90 个覆盖中文全部主要变体zh-CN普通话 /zh-TW台湾普通话 /zh-HK粤语、英文美/英/澳/印、日语、韩语、法语、德语、西班牙语、葡萄牙语、俄语、阿拉伯语等。任意 locale 的全量音色清单可用下面命令查询python3 skills/ppt-master/scripts/notes_to_audio.py --list-voices --locale ja-JP脚本内置了一份经检验的COMMON_VOICES精选清单定义见 skills/ppt-master/scripts/tts_backends/backend_edge.py例如zh-CN-XiaoxiaoNeural女声、普通话、清晰自然、默认推荐、zh-CN-YunjianNeural男声、稳重、zh-HK-HiuGaaiNeural女声、粤语、en-US-GuyNeural男声、美式英语等。AI 选音时优先考虑同时覆盖男女声并结合 deck 调性做最终推荐。进阶手动调用脚本完成全流程想跳过 AI 流程直接跑命令可按下面的步骤链执行各脚本均为仓库内真实路径# 1. 确保备注已切分后处理 Step 7.1仅 Generate 路线需要 python3 skills/ppt-master/scripts/total_md_split.py project_path # 2A. 用 edge-tts 生成 MP3/SRT 对默认无需 API Key python3 skills/ppt-master/scripts/notes_to_audio.py project_path \ --voice zh-CN-YunjianNeural --rate 0% # 2B. 用 ElevenLabs 生成 MP3/SRT 对需要 ELEVENLABS_API_KEY export ELEVENLABS_API_KEYyour-elevenlabs-api-key python3 skills/ppt-master/scripts/notes_to_audio.py project_path \ --provider elevenlabs \ --voice-id elevenlabs-voice-id \ --elevenlabs-model eleven_multilingual_v2 # 2C. 用 MiniMax 生成 MP3/SRT 对支持系统音色或复刻 voice_id export MINIMAX_API_KEYyour-minimax-api-key # 默认使用国内地址海外访问可设置 # MINIMAX_TTS_BASE_URLhttps://api.minimax.io/v1/t2a_v2 python3 skills/ppt-master/scripts/notes_to_audio.py project_path \ --provider minimax \ --voice-id minimax-voice-id \ --minimax-model speech-2.8-hd # 2D. 用 Qwen TTS 仅生成音频系统音色或复刻音色不返回时间戳 export DASHSCOPE_API_KEYyour-dashscope-api-key python3 skills/ppt-master/scripts/notes_to_audio.py project_path \ --provider qwen \ --voice-id qwen-voice \ --qwen-model qwen3-tts-flash \ --qwen-language-type Chinese # 2E. 用支持时间戳的 CosyVoice 音色生成 MP3/SRT 对 export COSYVOICE_API_KEYyour-dashscope-api-key python3 skills/ppt-master/scripts/notes_to_audio.py project_path \ --provider cosyvoice \ --voice-id cosyvoice-voice \ --cosyvoice-model cosyvoice-v3-flash # 3-4. 仅当选择旁白 cue 同步且逐页 SRT 与规范 animations.json 都存在时 # 输出整套 SRT 的指纹再对照每页 SVG 内容组与 SRT cue 编写 # narration_timing.json没有对应口播的组不写 cue # 后续按正常动画顺序出现。 python3 skills/ppt-master/scripts/narration_sync.py fingerprint project_path # 4. 从规范 animations.json 派生无点击的 narration_animations.json python3 skills/ppt-master/scripts/narration_sync.py animations project_path \ --narration-start-floor 0.8 --narration-padding 0.5 --force # 5A. 与旁白 cue 同步的自定义动画使用派生 sidecar python3 skills/ppt-master/scripts/svg_to_pptx.py project_path \ -o final_narrated_pptx --recorded-narration audio \ --narration-start-floor 0.8 --narration-padding 0.5 \ --animation-config narration_animations.json \ --inherit-motion-from base_postflight_report # 5B. 与旁白无关的自定义动画使用规范计时 python3 skills/ppt-master/scripts/svg_to_pptx.py project_path \ -o final_narrated_pptx --recorded-narration audio \ --narration-start-floor 0.8 --narration-padding 0.5 \ --animation-config animations.json \ --inherit-motion-from base_postflight_report # 5C. 没有动画 sidecar继承基础导出的 motion包括 -a auto python3 skills/ppt-master/scripts/svg_to_pptx.py project_path \ -o final_narrated_pptx --recorded-narration audio \ --narration-start-floor 0.8 --narration-padding 0.5 \ --inherit-motion-from base_postflight_report # 6. 存在逐页 SRT 时按最终 PowerPoint 计时合并 python3 skills/ppt-master/scripts/narration_sync.py subtitles project_path \ --pptx final_narrated_pptx --force # 7. Windows 可选通过 PowerPoint 导出 raw 视频并等待完成 python3 skills/ppt-master/scripts/powerpoint_video.py --check python3 skills/ppt-master/scripts/powerpoint_video.py \ final_narrated_pptx -o exports/raw_powerpoint_video.mp4 # 8. 原生导出分支的最终 motion 存在音效 cue 时生成独立 SFX stem 与 # 验收后的混音成片。默认转场音约 35%对象音约 25%最终限幅 -1 dBFS。 python3 skills/ppt-master/scripts/video_sound_mix.py project_path \ --pptx final_narrated_pptx \ --trace final_narrated_trace \ --video exports/raw_powerpoint_video.mp4 \ -o exports/final_mixed_video.mp4 --force # 9. 存在逐页 SRT 时把冻结的旁白文本与最终视频音轨对齐 # 第 8 步执行过就使用 mixed选择录屏则使用验收后的 capture否则使用 raw。 python3 skills/ppt-master/scripts/video_subtitles.py project_path \ --video final_delivery_video --language language --force要点补充Quick Generate会在所选命令后追加--quick-generate --with-notes。原生导出混音分支存在已解析音效 cue 时还需在所选导出命令追加--conversion-trace final_narrated_trace实时放映录制不依赖该 trace 交付声音。edge 模式下--voice是必填项云端 provider 使用--voice-id。edge 默认并发生成最多 3 页音频/SRT可用--concurrency N调整排查连接问题时设--concurrency 1参数校验见 notes_to_audio.py 第 395-404 行要求至少为 1。云端 provider 保持串行。Provider 能力与参数选择不同 provider 的字幕能力差异很大选择前务必对照下表相关默认值由 notes_to_audio.py 参数定义与 tts_backends/ 实现支撑Provider逐页 SRT原始计时当前默认裁决Edge支持词级保留所选神经网络音色与0%只有 notes 密度确实需要时才小幅调速。ElevenLabs支持原文字符级对齐保留eleven_multilingual_v2与mp3_44100_128适合稳定长文旁白。显式调速使用--elevenlabs-speed 0.7-1.2eleven_v3表现力更强但波动更大Flash v2.5 更偏延迟与成本。MiniMax支持词级保留speech-2.8-hd、32 kHz 单声道 MP3 默认值除非所选音色或交付目标另有要求。Qwen不支持当前 TTS 响应无计时保留稳定版qwen3-tts-flash单语 deck 明确指定--qwen-language-type。当前接口固定返回 WAV不提供格式、采样率或数值语速控制见 backend_qwen.pyoutput_extension()返回.wavInstruct 模型可通过指令控制表达。不为了不存在的时间戳盲目换模型。CosyVoice有条件支持词级保留兼容系统音色的cosyvoice-v3-flash与 24 kHz MP3 默认值。复刻/设计音色使用其所属模型v3.5 音色必须显式选择匹配的 v3.5 模型。CLI 会在发送请求前拒绝越界参数ElevenLabs 的stability/similarity/style必须落在0.0-1.0、语速落在0.7-1.2CosyVoice 的音量0-100、语速0.5-2.0、音高0.5-2.0、采样率均按 provider 官方范围校验见 notes_to_audio.py 第 567-583 行的范围表。Qwen 的--qwen-instructions只在模型名含instruct时允许且依赖指令时需配合--qwen-optimize-instructions。--cosyvoice-audio-only只能搭配 CosyVoice 使用。CosyVoice 的时间戳能力取决于模型与音色组合cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-plus、cosyvoice-v3-flash、cosyvoice-v2的复刻音色支持以及官方音色清单中明确标记支持时间戳的系统音色支持。模型与音色家族必须匹配若所选音色无法返回计时且只想要音频可传入--cosyvoice-audio-only。Qwen 为什么只生成音频当前 Qwen TTS 的 HTTP 与实时响应都只返回音频不含词级或字符级对齐。PPT Master 因此保留 Qwen 纯音频路径绝不用理论时长估算 SRT。需要逐页字幕时请选择 Edge、ElevenLabs、MiniMax 或支持时间戳的 CosyVoice 音色。字幕的生成规则与原子发布在 provider 原生计时路径上MP3/SRT 来自同一次合成请求Edge同一流式请求同时产出audio/stem.mp3与audio/stem.srt。字幕切分规则是句末标点必定结束一条字幕单条超过默认 20 个可见字符时优先在逗号、分号或冒号处拆分仍然过长才在最近的词边界拆分可用--subtitle-max-chars调整上限默认值DEFAULT_SUBTITLE_MAX_CHARS 20定义于 backend_edge.py。相邻字幕最多允许 100 毫秒的计时重叠后一句起点会移到前一句终点超过该范围则报错不发布。每页 SRT 以页内00:00:00,000为原点保留 EdgeWordBoundary的实际时间含首条字幕前的静音。相关常量与边界钳制逻辑见 backend_edge.py 的_clamp_small_overlaps与format_word_timed_srt。MiniMax同一次非流式 T2A 请求获取词级字幕并下载返回的 JSON 时间戳。ElevenLabs使用/with-timestamps接口从同一 JSON 响应读取音频和原文字符级对齐。CosyVoice开启 HTTP 流式响应与word_timestamp_enabled使用同次合成返回的完整音频 URL 和词级时间戳。四条路径统一使用标点优先、受--subtitle-max-chars约束的重组逻辑做精确文本校验字幕拼接后的文本必须与口播原文逐字符一致并用临时文件 原子os.replace的方式成对发布音频与 SRT见 tts_backends/backend_common.py 的publish_staged_pair失败时回滚旧文件保证永远不会出现音频新、字幕旧的错配产物。整理后的紧凑 cue 还会被复用于语义动画映射。audio/是唯一的当前旁白集来源由 manifest 记录因此默认不创建 provider 子目录。重新生成前脚本会移除过期的manifest.json与total.srt仅生成音频的 provider 还会移除同名的旧逐页 SRT。只有明确要保留另一套 provider 结果时才使用单独的显式输出目录。manifest.json的 schema 结构如下源码见 notes_to_audio.py 第 287-307 行云端 provider 的voice_ref会替换为sha256:指纹{ schema: ppt-master.narration.v1, generated_at: 2026-09-07T05:00:00Z, provider: edge, model: edge-tts, voice_ref: zh-CN-YunjianNeural, audio_format: mp3, subtitles: { format: srt, timing: word, max_visible_chars: 20 } }旁白 cue 同步让对象动画跟随字幕当选择旁白 cue 同步且存在规范自定义动画时动画配置文件的关系是刻意分离的narration_timing.json是语义映射文件记录整套有序 SRT 的 SHA-256、可选的旁白起始下限、页尾 padding、有序 SVG 组 ID 和可选的 1-based cue 编号。cue字段为该组口播对应的字幕编号省略cue的组保留规范相对时间例如标题只在用户明确选择narration-cued时才绑定 cue。animations.json保持只读由narration_sync.py animations深拷贝并派生narration_animations.json保留转场、效果、时长、顺序与显式effect: none只改写触发/延迟值使其适合无点击播放。与 cue 绑定的动画使用和嵌入音频相同的页前起始下限未绑定 cue 的标题或装饰动画保留规范相对时间。包含effects[]的分组仍只映射一条 cue第一条有效动画行锚定该 cue后续动画行保留相对延迟。narration_sync.py animations会拒绝过期的 SRT 指纹通过narration_sync.py fingerprint读取当前值并用当前 SVG 校验组 ID。若没有narration_timing.json而直接派生则采用位置映射组 N → cue N并在后续对象可能提前显形时给出警告——该警告视为必修项应补齐语义计划后重新派生。narration_timing.json的示例结构{ version: 1, srt_sha256: sha256 of the ordered page-local SRT set, narration_start_floor: 0.8, narration_padding: 0.5, slides: { 01_title: { groups: [ { id: page-title, cue: 1 }, { id: supporting-visual } ] } } }在旁白 cue 同步下导出动画的选用遵循下表对照 generate-audio.md 第 4 步的 sidecar 状态表Sidecar 状态行为narration_animations.json存在且选择旁白 cue 同步使用它只有规范animations.json且选择旁白 cue 同步阻塞直到同步创建派生 sidecar规范animations.json存在且 motion 与旁白无关传--animation-config animations.json不声明对象同步两者都不存在不创建 sidecar继承基础报告的 deck motion旁白不影响最终 SVG 的文本流模式在一个禁用自动换行的可编辑文本框中保留作者断行即可旁白不要求每一行拆成独立文本框。使用复刻音色克隆声音四个云端 provider——ElevenLabs、MiniMax、Qwen、CosyVoice——都支持复刻音色edge不支持复刻。职责切分很明确复刻本身在 provider 侧完成——你上传一段干净录音平台返回voice_idPPT Master 只做消费侧工作拿到voice_id后用这个音色逐页朗读备注不会把你的样本上传到任何地方。Provider复刻入口样本时长ElevenLabsVoices → Add Voice → Instant / Professional Voice Cloning1 分钟Instant/ 30 分钟以上ProfessionalMiniMax语音克隆10 秒 – 5 分钟Qwen TTSDashScope 控制台 → 语音合成 → 声音复刻10 秒 – 5 分钟CosyVoiceDashScope 控制台 → 语音合成 → 音色复刻10 秒 – 5 分钟复刻完成后在聊天里直接给出voice_id即可AI 会跳过音色推荐环节直接使用你: 用 MiniMax 我克隆的音色生成旁白voice_id 是 xxxxxxx 你: 用我在 ElevenLabs 复刻的 voice id abc123 生成也可以直接跑脚本python3 skills/ppt-master/scripts/notes_to_audio.py project_path \ --provider minimax --voice-id 你的复刻 voice id \ --minimax-model speech-2.8-hd把--provider minimax换成elevenlabs/qwen/cosyvoice即可切换平台--voice-id对复刻音色与系统音色的处理完全一致。Cloud provider 的音色清单可用--list-voices列出例如export ELEVENLABS_API_KEYyour-elevenlabs-api-key python3 skills/ppt-master/scripts/notes_to_audio.py --provider elevenlabs --list-voices注意事项授权——只复刻自己拥有的、或拿到明确授权的声音provider 服务条款禁止冒用他人声音。语言覆盖——复刻音色会继承说话人的口音中英混合等多语 deck建议挑对样本语言组合处理较好的 providerElevenLabseleven_multilingual_v2与 CosyVoice 通常最宽容。字幕能力——ElevenLabs 复刻音色与受支持的 CosyVoice 复刻音色可生成 provider 原生计时 SRTQwen 复刻音色在当前 API 下仍只生成音频。Provider 保留策略——只要音色仍存在于你的 provider 账户对应voice_id即可持续复用保留、删除与过期规则以各平台政策为准。依赖与密钥配置旁白功能的核心依赖如下已写入 skills/ppt-master/requirements.txtedge-tts7.2.8python3 -m pip install edge-ttsedge-tts调用微软在线 TTS 服务生成时需要联网生成后的音频是本地文件PowerPoint 播放与视频导出都不再依赖网络。云端 TTS provider 不需要额外 Python 包直接通过 HTTPS 调用按 .env.example 的 Audio narration TTS 一节配置对应 API Key。支持的环境变量包括ELEVENLABS_API_KEY、MINIMAX_API_KEY、QWEN_API_KEY、COSYVOICE_API_KEY、DASHSCOPE_API_KEYQwen/CosyVoice 也可用以及可选端点覆盖MINIMAX_TTS_BASE_URL、QWEN_TTS_BASE_URL、COSYVOICE_TTS_BASE_URL。密钥解析顺序当前进程环境变量或按当前目录 → skill 安装目录 → 仓库根目录 →~/.ppt-master/.env顺序读取第一个存在的.env文件。导出后混入动画音效需要系统PATH中可用的ffmpeg/ffprobe以及numpy最终视频字幕对齐另需stable-tspython3 -m pip install numpy stable-ts自动 MP4 导出不增加 Python 依赖但要求Windows PowerPoint 2016 与 Windows PowerShellmacOS 或没有兼容 PowerPoint 的机器保留带旁白 PPTX改用手动导出。实时放映录制不增加 PPT Master 依赖但需要桌面版 Windows PowerPoint 与能捕获放映画面及应用/系统音频的录屏器录屏器是可选工具不是项目依赖。录制计时导出路径还需要ffprobe读取真实音频时长以写入页面推进时间。导出为视频三条交付路径只能选一条带旁白的 PPTX 就绪后把内容变成视频有三条互斥的路径路径适用情况声音结果原生CreateVideo需要自动、可重复的流程原生包含旁白存在已解析转场 / 对象 cue 时必须运行video_sound_mix.py。PowerPoint 实时放映录制明确希望成片包含 PowerPoint 实际播放的全部声音录屏已包含旁白和原生 cue不能再运行video_sound_mix.py。手工执行创建视频自动化不可用但可接受 PowerPoint 编码器声音边界与原生CreateVideo相同这不是录屏。路径一原生 CreateVideo 自动导出Windowspython3 skills/ppt-master/scripts/powerpoint_video.py \ final_narrated_pptx -o raw_powerpoint_video.mp4该命令使用录制的计时和旁白默认输出 1080p/30fps通过轮询 PowerPoint 的CreateVideoStatus在明确成功或失败后才返回。嵌入音频作为逐页旁白播放页面自动推进时间控制视频节奏。需要说明的是即使animations.json和 PPTX package 校验通过PowerPoint 的 raw MP4也不保证包含附着在转场或 Animation Pane 行上的声音。因此Generate 项目最终 narrated trace 含音效 cue 时要按前述第 8 步运行 video_sound_mix.py把每个转场 / 对象音效从理论 PPTX 时钟映射到 raw MP4 时钟复用逐页旁白相关性而不是直接叠加两套时间轴生成独立的 float SFX stem、把提示音降增益后与旁白unity 增益混音最后经 -1 dBFS 峰值限幅并输出独立 SFX stem 与机器可读 JSON 回执回执须证明stem 非静音、视频流哈希不变、最终音频变化且存在、时长一致、真实峰值不削波、混入音频与 stem 相关。默认增益约转场音 35%、对象音 25%。视觉视频流原样复制原生声音仍保留在可编辑 PPTX 中。字幕应基于 mixed MP4 对齐而不是 raw 中间产物。路径二录制 PowerPoint 实时放映显式选择这是显式选择的实时采集路径——PowerPoint 仍是渲染器和音频播放器录屏器只负责捕获输出。操作要点用桌面版 Windows PowerPoint 打开最终带旁白 PPTX从第一页开始全屏放映使用 deck 已有的自动翻页和无点击对象计时不录编辑界面或演讲者视图。只捕获与 deck 宽高比一致的全屏画面关闭通知鼠标离开画面。常规目标 1920×1080、稳定 30fps。只开一路应用/系统音频捕获关闭麦克风不能同时捕获桌面音频和应用音频会产生回声。48kHz 是推荐录制设置不是硬要求。第一页开始前提前录制声音拖尾结束后停止保留原始录屏后只裁去首尾缓冲。验收包含视频流与音频流、旁白清楚、所有 cue 各出现一次、动画与转场完整、无掉帧/通知/桌面 UI。存在逐页 SRT 时对裁切后的录屏运行video_subtitles.py对齐字幕。当前录屏验收依赖人工检查PPT Master 不会声称它具有机器化 cue 回执。若 cue 盖住旁白或削波应调整素材重新录制或改走带确定性增益与限幅的原生导出加混音路径。Linux 可完整准备带旁白 PPTX、音频、计时和字幕但播放端仍需要真实的桌面版 Windows PowerPoint。路径三手工创建视频回退Windows / MacOffice 2016打开exports/里那份带旁白的.pptx。文件 → 导出 → 创建视频。选清晰度以及使用录制的计时和旁白。创建视频→ 保存为.mp4Windows 也支持.wmv。若配置了原生转场 / 对象动画音效先运行声音混合命令否则 PowerPoint 导出即为最终视频。再对最终视频运行可选的video_subtitles.py对齐命令它会把同名 SRT 写在视频旁边。注意平台差异PowerPoint for Mac 可以手动导出 MP4/MOV但微软明确说明其影片导出不会播放动画效果需要动画保真时应使用 Windows 自动导出路径。KeynoteMac可以读取嵌入旁白与分页计时并输出.m4v/.mov但这不构成PowerPoint 动画音效已进入成片的保证。video_subtitles.py使用stable-ts把冻结的旁白原文与最终.mp4/.wmv/.mov音轨强制对齐交付时可为显示效果拆分过长 cue且不会改写视频、备注或逐页字幕。经验值绕开常见的坑语速Generate PPTX 路线会依据最终 SVG 的独立信息组调整讲稿长度每页 2–5 句只是常见节奏而非上限。edge 默认0%对较密且刻意保留细节的讲稿可尝试-5%短小紧凑的讲稿用5%超出该范围需要明确理由。改某一页改对应的notes/page.md再重跑一次notes_to_audio.py 嵌入步骤 重新导出视频。整份 deck 重新合成成本很低单页迭代通常不到一分钟。混合语言 deck中文夹英文术语主流 locale 的神经语音对外语词处理得不错——按主语言挑音色先用一页试听再批量。生成旁白不需要麦克风原生导出不需要录制环节实时放映录制捕获应用/系统音频并关闭麦克风。重跑会复用同一份 notes 与参数但云端模型仍可能有轻微的非确定性差异。转场与动画的 Windows 保真度Windows 视频导出保留原生视觉页间转场与无点击对象动画动画音效走验收后的导出后混音或与其互斥的实时放映录制。Mac 影片导出存在前述限制。详见 docs/zh/animations.md。文件大小20 页全高清 deck 通常是 30–80 MB取决于图片量需要小文件分享时降到高清即可。小结PPT Master 的旁白与视频导出链路把演讲者备注 → TTS 合成 → 字幕重组 → PPTX 嵌入 → 视频交付串成了一条可重复的流水线默认edge-tts零配置可用需要时又可切换到四个云端 provider 获得高质量或复刻音色字幕始终是外部 SRT视频导出严格委托本机 Windows PowerPoint不做第二套渲染。英文版本见 docs/audio-narration.md共享后处理阶段与相关脚本的权威行为定义见 skills/ppt-master/workflows/stages/generate-audio.md 及 skills/ppt-master/scripts/ 目录下的notes_to_audio.py、narration_sync.py、powerpoint_video.py、video_sound_mix.py、video_subtitles.py。【免费下载链接】ppt-masterAI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations,>项目地址: https://gitcode.com/GitHub_Trending/ppt/ppt-master创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表