Communitygithub.com

演示旁白

适用于为任何视频、演示或幻灯片编写或生成旁白/画外音:专业的演讲者脚本规则、停顿标记、离线 Kokoro 语音、润色以及适应视频的混合处理。

演示旁白 是什么?

该技能提供了一套完整的端到端工作流程,用于创建高质量、类似真人演示者的视频旁白。它专为 AI 代理设计,强调脚本编写质量优于语音引擎选择,包含诸如“每行一个想法”、“结尾焦点”和“3 的法则”等严格的叙事规则,以确保旁白读起来像专业人士的演讲。其核心工具链包括使用离线 Kokoro 模型(50+ 种语音,支持混合)生成语音、自动润色处理(修剪、均衡、压缩)以及将旁白与静音视频和背景音乐精确混合(-16 LUFS,生成 SRT 字幕)。该技能集成了对脚本持续时间的高级预估(每个单词约 2.7 个口语词/秒)和漂移报告检查,以最小化重复生成的需要(每次重新生成约 25-40 秒),从而节省大量时间。它支持单扬声器脚本和带有多个角色的对话,并且可以从 Kokoro 升级到 ElevenLabs,同时通过`el_cache.py`保持缓存。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Sanjayyykumar/ai-essentials/tree/HEAD/skills/presenter-voiceover

在你喜欢的 AI 中提问

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

文档

演示旁白 是做什么的?

工具:$VIDEO_ROOT/voice/ 来自 video-generations(speak.py,speak_cast.py,polish_vo.py,mix_narration.py,el_cache.py);模型位于 $VIDEO_ROOT/models(python studio/get_models.py)。

1. 像演讲者一样写作(脚本比声音更重要)

  • 绝不照读屏幕。 屏幕文字陈述事实;旁白补充含义、情感或故事。如果一行文字与屏幕内容逐字重复,请重写或删除。例外情况:产品名称和最终标语。

  • 每行一个想法。 短句,6-12 个单词。使用英语口语,允许缩写。

  • 主线故事。 关注一个人物(例如,阿伦,阿尼塔,拉奥博士)并呼应他们;人们记住的是故事,而不是功能。

  • 结尾焦点。 将关键词放在短语最后(“……每个团队只持有一个。”);声音自然会重读它。上下文前置:“在……两点十四分,清晨,// 阿伦 // 倒下了。”

  • 3 的法则 用于列出好处和列表,节奏均匀。

  • 对比与转折: 问题 → “现在,想象一下……” → 解决方案。

  • 开头: 每个部分以一个锚点开头(“首先,对于家庭。”,“现在,走进医院。”)。

  • 结尾: 陈述句以句号结尾,语调下降、完结。以承诺或标语、明确的邀请结尾,然后说“谢谢。”

  • 节奏(公司风格): 语速缓慢、停顿过多会显得机械(“停顿太多,词语太少”)。默认使用流畅的演讲者节奏:

    • 大多数行速度为 1.00,长列表/解释为 1.02,标语和结尾为 0.95–0.97,0.93 仅用于唯一的情绪爆发点。
    • 每行最多一个 ... 保持节拍,且仅用于情感转折处(“两点十四分,清晨 ... 阿伦倒下了”,“如果 ... 它只需要一次点击呢?”)。少用 /;优先使用普通逗号。
    • 按此风格测量的语速:大约 每秒 2.6-2.8 个口语单词(af_kore)。预算 = 单词数 / 2.7 + 0.35 秒润色尾部;一行必须在下个视觉节拍前结束。
    • 在问题铺垫后和解决方案的情感高潮后(“比第一晚还要平静。”)留出故意的静默(1-1.5 秒,无旁白)。
    • 密度:一部 2.5 分钟的电影大约 230-250 个旁白单词;每个场景至少有一行,因此除计划中的静默外,没有场景的静默时间超过 3 秒。
  • 诚实: 无虚构结果;虚构名称和数据为演示数据。

  • 快速通道(为了节省时间): 编写所有行 → 使用上述预算估算时长 → 在生成前在文本中修复超限 → 只生成一次。在笔记本电脑上重新生成每行大约需要 25-40 秒,因此大部分时间都花在了需要重写的文本上。

2. 标记(旁白文件)

LINES = [(start_s, speed, text), ...],VOICE = '...',加上包含交付说明的文档字符串。示例:voice/examples/narration_demo.py。

  • / = 呼吸停顿(0.25 秒),// = 戏剧性停顿(0.55 秒),... = 保持节拍(0.8 秒)。
  • 在 voice/lexicon.py 中重新拼写引擎无法识别的名称(例如 Arun → “Aroon”,Dr → “Doctor”),并先测试一行。
  • 多角色对话:为 speak_cast.py 使用 LINES = [(key, voice, speed, text), ...](voice/examples/dialogue_demo.py)。

3. 语音

  • 引擎:通过 kokoro-onnx 使用 Kokoro,离线运行,50+ 种语音。推荐演讲者选择:af_kore / af_heart(冷静、自信的女性),hm_omega / hm_psi(印度男性),am_onyx(低沉男性),bm_george(英国男性),hf_alpha / hf_beta(印度女性)。支持混合:hm_omega:0.6,am_onyx:0.4。
  • 对于新的语音选择,为每个候选者渲染 3 个具有代表性的行(钩子、解决方案、标语),然后在完整运行前让用户挑选。
  • 无法强制词级重音;通过措辞、标点、停顿和速度来创造它。精确的重音需要人工录音。
  • 高级云端语音:voice/el_cache.py(ElevenLabs;每行计费一次,然后缓存)。

4. 生成 → 润色 → 混合

  1. python voice/speak.py <narration>.py work/vo [voice] — 可中断恢复;每个短语被单独读出,然后与标记的静音连接起来。
  2. python voice/polish_vo.py work/vo work/vo_polished — 修剪、温暖/清晰均衡、温和压缩、微妙的房间效果、渐弱尾部。
  3. python voice/mix_narration.py <silent.mp4> <music.wav> <narration>.py work/vo_polished <out.mp4> — 放置行,将长行最多加速 1.08 倍,仅在必要时后移后续行,回避音乐,-16 LUFS,写入 .srt。
  4. 检查漂移报告。 每行应与其视觉节拍相差约 0.5 秒以内。如果漂移累积,请缩短或删除一行(优先删除重复屏幕内容的行),并将开始时间移到其视觉节拍;重新混合,无需重新生成未修改的行。 要重做某些行,将它们的旧剪辑移开,重新运行 speak.py;它只会填充缺失的剪辑。保持剪辑编号与 LINES 同步。
  5. 交付 MP4 和 SRT。

相关技能