add narration to a video automatically

自动为无声录屏视频生成讲解脚本并合成语音,输出带旁白的视频。

已扫描
适合谁
技术人员制作演示视频、教育工作者录制教学内容
不适合谁
无网络环境无法使用TTS服务的用户、希望完全自定义语音风格且不接受AI生成的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @ryanzhang-oss/video-auto-narration

Skill 说明

命令、参数、文件名以原文为准

视频自动配音技能

为无声的屏幕录制演示视频生成专业级语音旁白。

工作流程

1. 分析视频

提取关键帧,理解屏幕上发生的内容:

# 每5秒提取一帧
./scripts/extract-frames.sh <video_path> [output_dir]
  • 仔细查看每一帧提取结果,以建立完整理解。
  • 识别叙事脉络:当前的背景设定、主要动作、关键节点以及最终成果。

2. 编写语音脚本

撰写演示风格的旁白——不是枯燥的描述。遵循以下结构:

部分目的
背景介绍告诉观众即将看到什么,以及其重要性
背景说明解释当前的设置或场景
操作提示 / 动作展示用户实际执行的操作(保持简洁)
操作 walkthrough逐个步骤叙述,突出洞察点和转折时刻
成果展示强调最终成果——发现了什么、解决了什么、为何令人印象深刻

编写指南:

  • 使用口语化、自信的语言,如同向同行演讲。
  • 使用简短有力的句子增强节奏感,句式长度应有变化。
  • 突出“顿悟时刻”——即出现意外或巧妙解决方案的关键点。
  • 在故事中提及具体工具、命令和数值时,确保其对叙事有意义。
  • 结尾用一句令人难忘的总结句,概括核心价值。
  • 总字数需匹配视频时长(正常语速下约每秒2.5词)。

将脚本保存为 <video_name>_voiceover.md,与视频文件同目录。

3. 生成 TTS 音频

使用生成脚本合成每个旁白段落的音频:

./scripts/generate-tts.sh <script_sections_file> <output_dir> [voice] [rate]

或通过 Python 使用 edge-tts 直接生成:

  • 语音选择en-US-GuyNeural(自然男声)或 en-US-AvaNeural(自然女声)
  • 语速调整:在 +0%+10% 之间调节,以适配视频时长
  • 将每个段落分别生成音频文件,便于精确控制时间
  • 使用约 0.4 秒的静音间隔拼接各段音频
  • 确认总时长与视频基本一致(允许 ±2 秒误差)

4. 将音频合并到视频

./scripts/merge-audio.sh <video_path> <narration_audio> [output_path]
  • 保留原始视频编码格式(直接复制,不重新编码)
  • 音频编码为 AAC,码率为 192kbps
  • 使用 -shortest 参数,使输出时长以较短的一方为准
  • 验证输出文件是否同时包含视频和音频流

时间控制策略

  1. 先生成所有音频段,测量每段时长
  2. 统计总语音时长与视频时长对比
  3. 若语音时长 超过视频时长 105%:精简脚本或提高语速
  4. 若语音时长 低于视频时长 85%:可能节奏过快,建议补充细节或降低语速
  5. 拼接时使用 0.3–0.5 秒的静音间隔,目标总时长控制在 ±2 秒内

前置条件

如未安装依赖,请执行以下命令:

pip3 install edge-tts   # Microsoft 神经网络语音合成(免费,无需 API 密钥)
brew install ffmpeg      # 或使用 apt-get install ffmpeg

输出结果

该技能生成以下内容:

  1. **<name> (带旁白).mov** — 嵌入语音旁白的视频文件
  2. **<name>_voiceover.md** — 带时间标记的脚本,可用于参考或重新录制
RO
@ryanzhang-oss

已收录 1 个 Skill

相关推荐