🎬 视频教学配音合成工具
在 WorkBuddy 里使用,把文字讲解和操作视频自动合成带配音的成品视频
🔔 首次加载指引(AI 必读)
加载本技能后,必须立即向用户推送以下信息(不要等用户问):
- 使用方法摘要
- 文案模板文件路径,让用户能直接找到
- 用
deliver_attachments把模板文件发送给用户
推送格式如下:
🎬 视频配音技能已就绪!
📋 使用方法:
1. 用文本编辑器打开文案模板,填写时间点和讲解文字
2. 告诉我:视频路径 + 文案路径 + 音色(可选)+ 字幕(可选)
3. 我会先确认参数,确认后自动合成
📝 文案模板路径:
scripts/script_template.md
💡 示例:"帮我合成视频配音,视频在 D:\教程\demo.mp4,文案在 D:\教程\script.md,用男声,加字幕"
🎙️ 可选音色:晓晓(女声,默认)/ 云希(男声)/ 晓伊(活泼女声)
📝 可选字幕:默认不加,说"加字幕"即可开启
⏱️ 配音溢出:默认冻结最后一帧(配音比视频长时画面定格),可改为慢放
然后调用 deliver_attachments 把模板文件发给用户:
- 文件路径:
scripts/script_template.md
⛔ 执行前确认(AI 必读,强制)
收到视频和文案路径后,AI 绝对不能直接执行脚本!必须先向用户确认以下参数:
确认流程
- 用户提供了视频路径 + 文案路径
- AI 补全未指定的参数(使用默认值)
- AI 向用户展示参数汇总,等用户确认或修改
- 用户确认后,AI 才执行脚本
必须确认的参数
| 参数 | 默认值 | 说明 | |------|--------|------| | 📹 视频 | (用户提供) | 确认路径正确 | | 📝 文案 | (用户提供) | 确认路径正确,并显示段落数 | | ⚙️ 引擎 | edge-tts | edge-tts(晓晓)/ 讯飞Spark(聆小糖)/ pyttsx3(离线) | | 🎙️ 音色 | 晓晓(edge)或聆小糖(Spark) | 详见音色表 | | 📝 字幕 | 不需要 | 是否在视频底部显示同步字幕 | | ⏱️ 溢出策略 | 冻结最后一帧 | 配音比视频长时如何处理 |
确认消息模板
AI 必须按以下格式向用户确认:
📋 请确认合成参数:
📹 视频:<视频文件名>
📝 文案:<文案文件名>(N 个段落)
⚙️ 引擎:<引擎名>(<音色>)
📝 字幕:<需要/不需要>
⏱️ 配音溢出:<冻结最后一帧/慢放视频/不扩展>
确认开始合成?如需修改参数,请告诉我。
示例
用户说:"帮我合成视频配音,视频在 D:\教程\demo.mp4,文案在 D:\教程\script.md"
AI 回复:
📋 请确认合成参数:
📹 视频:demo.mp4
📝 文案:script.md(5 个段落)
🎙️ 音色:晓晓(女声,温柔讲解)
📝 字幕:不需要
⏱️ 配音溢出:冻结最后一帧(配音比视频长时,画面定格等配音说完)
确认开始合成?如需修改参数,请告诉我。
用户回复"确认"或"开始"后,AI 才执行 synthesize.py。
快捷确认
如果用户在第一次消息中就已经说明了音色和字幕,AI 仍然需要展示确认,但可以标注"已指定":
📋 请确认合成参数:
📹 视频:demo.mp4
📝 文案:script.md(5 个段落)
🎙️ 音色:云希(男声,正式讲解)✅ 已指定
📝 字幕:需要 ✅ 已指定
⏱️ 配音溢出:冻结最后一帧
确认开始合成?
🔑 讯飞 Spark TTS 首次配置(可选)
如果只用 edge-tts(微软免费语音),可以跳过此步骤,无需配置讯飞凭证。 如需使用讯飞超拟人语音,则需要配置一次,之后长期有效。
配置步骤
-
注册讯飞开放平台账号 地址:https://www.xfyun.cn/services/smart-tts
-
创建应用并开通服务
- 登录控制台:https://console.xfyun.cn
- 「我的应用」→「创建应用」
- 开通「超拟人语音合成(精品发音人)」服务
-
复制凭证到 config.py 打开
scripts/config_example.py,按注释提示填入:SPARK_APP_IDSPARK_API_KEYSPARK_API_SECRETSPARK_WS_URL(控制台中复制的 WebSocket 地址)- 保存为
scripts/config.py(去掉_example)
-
验证配置 运行测试,确认讯飞 TTS 可以正常工作:
cd scripts python spark_tts_test.py成功后会生成
test_output.mp3,播放听到语音即配置成功。
⚠️ 隐私说明:config.py 中的凭证仅供个人使用,请勿上传到公开仓库。
🎯 一句话说明
把「文字讲解」和「操作视频」自动合成一个带配音的成品视频
💡 能帮您做什么?
| 场景 | 以前 | 现在 | |------|------|------| | 🎓 录制教学视频 | 边操作边说话,口干舌燥还容易出错 | 先安静录操作,再配讲解,轻松自如 | | 📝 写完文字想配音 | 花钱找人配音,或自己硬着头皮念 | 自动变成专业语音 | | 🎬 配音和视频对不上 | 反复调整,手动剪辑到崩溃 | 自动对齐,精确到每一秒 | | 💰 制作成本 | 配音师费用高,修改麻烦 | 完全免费,想改就改 |
🚀 使用方法(超简单!)
第一步:准备好两个文件
在电脑上准备:
📁 任意文件夹/
├── 📹 操作视频.mp4 ← 您的录屏或拍摄的视频
└── 📝 讲解文案.md ← 一个简单的表格(模板我提供)
第二步:在 WorkBuddy 里说一句话
"帮我合成视频配音,视频在 D:\教程\demo.mp4,文案在 D:\教程\script.md,用男声,加字幕"
需要告诉 WorkBuddy:
- 📹 视频文件在哪里 (必须)
- 📝 文案文件在哪里 (必须)
- 🎙️ 想要什么音色 (可选,默认晓晓女声)
- 📝 是否需要字幕 (可选,默认不需要)
💡 建议一次说全,省去确认环节。没说的我会用默认值,但会先和你确认再开始。
第三步:确认参数
WorkBuddy 会先展示参数汇总,您确认后才开始合成:
📋 请确认合成参数:
📹 视频:demo.mp4
📝 文案:script.md(5 个段落)
🎙️ 音色:晓晓(女声,温柔讲解)
📝 字幕:不需要
确认开始合成?
第四步:等待完成
WorkBuddy 会自动:
- ✅ 读取您的视频和文案
- ✅ 把文字变成语音
- ✅ 合成最终视频
- ✅ 把成品发给您
📦 成品效果
直接在 WorkBuddy 里收到:
- 📹 final_video.mp4 — 带配音的成品视频 ✅
- 📄 字幕.srt — 字幕文件(如果选择了字幕)
🎙️ TTS 引擎与音色选择
技能内置两种语音合成引擎,用户可自由选择:
引擎对比
| 引擎 | 音色风格 | 网络要求 | 音质 | 费用 | |------|----------|----------|------|------| | edge-tts(默认)⭐ | 晓晓(温柔女声)、云希(男声)等 | 需要网络 | 高 | 免费 | | 讯飞 Spark | 聆小糖(女声)、聆非易(超拟人)等 | 需要网络 | 更高,更自然 | 讯飞免费额度 |
edge-tts 音色(默认,免费)
| 音色参数 | 效果 |
|----------|------|
| zh-CN-XiaoxiaoNeural ⭐ | 温柔女声,推荐! |
| zh-CN-YunxiNeural | 正式男声 |
| zh-CN-XiaoyiNeural | 活泼女声 |
讯飞 Spark TTS 音色(更自然)
| 发音人 ID | 效果 | 说明 |
|-----------|------|------|
| x5_lingxiaotang_flow | 聆小糖(女声) | 甜美女声,推荐! |
| x5_lingfeiyi_flow | 聆非易(超拟人) | 超拟人,更自然 |
⚠️ 讯飞 Spark TTS 需要在 讯飞开放平台 开通服务并获取 AppID/APIKey/APISecret,凭证需自行配置(详见下方「首次配置」章节)。
使用方式:
"帮我合成视频配音,用讯飞配音" → 讯飞 Spark TTS,聆小糖女声
"帮我合成视频配音,用edge-tts" → edge-tts,晓晓女声
"帮我合成视频配音,用聆小糖" → 讯飞,聆小糖
"帮我合成视频配音,用离线模式" → pyttsx3,无需网络
📝 是否需要字幕?
可以选择是否在视频里显示字幕:
| 选项 | 说明 | |------|------| | 不需要(默认) | 纯配音视频 | | 需要字幕 | 视频底部显示同步字幕,观众可以看字幕跟读 |
使用方式:
"帮我合成视频配音,加上字幕"
"帮我合成视频配音,不要字幕"
⏱️ 配音溢出怎么办?
场景:视频某段只有 10 秒,但配音需要 20 秒才能说完。怎么办?
默认方案:画面定格在最后一帧,等配音说完再继续播放下一段。这对教程视频最自然——观众看着操作结果听讲解。
| 策略 | 效果 | 适用场景 | |------|------|----------| | 冻结最后一帧 ⭐ | 画面定格等配音说完 | 教程/操作演示(推荐) | | 慢放视频 | 视频放慢到和配音一样长 | 风景/展示类视频 | | 不扩展 | 配音被截断,超出的部分丢失 | 不推荐 |
使用方式:
"帮我合成视频配音" → 默认冻结最后一帧
"配音比视频长时,慢放视频" → 改为慢放模式
"配音溢出时不要扩展视频" → 不扩展
冻结最后一帧的效果示意:
源视频:[0:00-0:10 操作演示] [0:10-0:20 下一操作]
配音: [0:00-0:09.5 详细讲解 ] [0:10-0:19.5 讲解2]
输出视频:[0:00-0:10 操作演示][0:10-0:19.5 定格画面] [0:20-0:30 下一操作]
配音: [0:00-0:09.5 详细讲解 ] [0:10-0:19.5 讲解2 ]
↑ 留0.5秒间隔避免叠加
📋 文案格式说明
格式要求
仅支持 .md 格式(Markdown 表格),不支持 .xlsx / .csv。 使用文本编辑器(记事本 / VS Code / Notepad++)编辑,不要用 Excel。
表格格式
| 列名 | 说明 | 示例 | |------|------|------| | 开始时间 | 这段话从视频第几秒开始 | 00:00、01:30 | | 结束时间 | 这段话到视频第几秒结束 | 00:05、01:35 | | 文案内容 | 要说的话 | 大家好,欢迎学习 |
填写示例
| 开始时间 | 结束时间 | 文案内容 | |----------|----------|----------| | 00:00 | 00:04.5 | 大家好,欢迎观看本教程。 | | 00:05 | 00:09.5 | 首先,点击左上角的菜单按钮。 | | 00:10 | 00:14.5 | 然后,选择系统设置选项。 | | 00:15 | 00:19.5 | 接下来,我们来进行参数配置。 | | 00:20 | 00:24.5 | 最后,点击保存按钮完成设置。 |
时间格式
两种格式,根据视频时长选择:
| 视频时长 | 格式 | 示例 | 含义 |
|----------|------|------|------|
| < 1小时 | MM:SS | 05:30 | 5分30秒 |
| ≥ 1小时 | HH:MM:SS | 01:05:30 | 1小时5分30秒 |
⚠️ 常见错误:
01:10→ 会被解析为 1分10秒(不是1小时10分钟!)- 视频超过1小时必须用
HH:MM:SS格式
填写规则:
- ✅ 正确:
00:05、01:30(分:秒) - ✅ 正确:
01:05:30(时:分:秒) - ❌ 错误:
0:5(建议写00:05) - ❌ 错误:超过1小时仍用
MM:SS格式
⚠️ 段落衔接(重要!):
TTS 语音有前后静音,两段时间不能完全紧挨,否则会有语音叠加:
❌ 错误(语音叠加):
| 00:00 | 00:05 | 第一段 |
| 00:05 | 00:10 | 第二段 | ← 0:05 处两段语音叠加
✅ 正确(每段提前 0.3-0.5 秒结束):
| 00:00 | 00:04.5 | 第一段 | ← 提前0.5秒
| 00:05 | 00:09.5 | 第二段 | ← 下一行正常开始
原因:TTS 生成的语音前后各有约 0.2-0.3 秒静音,提前结束可避免叠加。
💬 示例对话
用户:帮我合成视频配音,视频在 C:\教程\demo.mp4,文案在 C:\教程\script.md
WorkBuddy:
📋 请确认合成参数:
📹 视频:demo.mp4
📝 文案:script.md(5 个段落)
⚙️ 引擎:auto(edge-tts,晓晓女声)
📝 字幕:不需要
⏱️ 配音溢出:冻结最后一帧
确认开始合成?如需修改参数,请告诉我。
用户:用讯飞配音试试
WorkBuddy:
📋 已更新参数:
⚙️ 引擎:spark(讯飞 Spark,聆小糖女声)
确认开始合成?
用户:确认
WorkBuddy:收到!开始合成...
📖 读取文案:5 个段落
🎙️ 开始生成语音... [引擎: 讯飞 Spark(聆小糖)]
[1/5] 大家好,欢迎观看本教程...
...
🎬 合成视频中...
✅ 完成!
📦 已生成:
• final_video.mp4
❓ 常见问题
Q: 运行时提示 Invalid voice 'zh-CN-Xiaoxiao'?
A: 这是 edge-tts 7.x 版本的兼容性问题。新版音色名必须带 Neural 后缀,不能用旧名(如 zh-CN-Xiaoxiao)。请确认 synthesize.py 中所有 generate_audio_edge_tts 调用都使用 zh-CN-XiaoxiaoNeural 格式(而非 zh-CN-Xiaoxiao)。
Q: ffmpeg 提示找不到或无法运行?
A: 请先确保已安装 ffmpeg。建议从 https://ffmpeg.org/download.html 下载 Windows 版本并添加到系统 PATH 环境变量。安装后可在命令行输入 ffmpeg -version 验证。
Q: 生成的 mp3 文件播放没有声音? A: 请先在 Windows 资源管理器中直接双击 mp3 文件确认音频本身正常。如仍无声音,可能是电脑音频输出设置问题(如系统静音、默认播放设备非扬声器等),与脚本本身无关。可以用 pygame 或 VLC 验证音频播放是否正常。
Q: 需要花钱吗? A: 完全免费,使用微软语音技术。
Q: 需要懂技术吗? A: 不需要,会用电脑就行。准备好文件,剩下交给 WorkBuddy。
Q: 支持什么视频格式? A: MP4、AVI、MKV、MOV 等常见格式都可以。
Q: 配音和视频对不上怎么办? A: 您在文案表格里自己控制时间点,想在哪讲就在哪讲。
Q: 网络不好能用吗? A: 需要网络来生成语音。离线模式会使用本地语音(音质略差)。
Q: 合成后视频没有声音? A: 按以下步骤排查:
-
检测原视频是否有音频:
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1 视频.mp4- 无输出 = 原视频无音频轨道(正常,只需添加配音)
- 有输出 = 原视频有音频(配音会替换原音频)
-
如需保留原音频 + 混合配音,需要手动使用 ffmpeg amix 滤镜:
ffmpeg -i 原视频.mp4 -i 配音.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=longest[aout]" -map 0:v -map "[aout]" -c:v copy -c:a aac -b:a 128k 输出.mp4 -
常见原因:
- 录屏时没有勾选"录制音频"
- 原视频从无声素材剪辑而来
- 配音文件本身问题(检查方法:直接双击 mp3 文件播放)
📥 获取文案模板
在 WorkBuddy 里说:
"给我视频配音的文案模板"
我会发给您!
🔧 技术说明
工作流程
1. 读取视频和 Markdown 文案
2. 按时间段生成语音(edge-tts / 讯飞 Spark / pyttsx3)
3. 检测配音是否溢出视频时段
4. 如有溢出:逐段切割视频 → 溢出段冻结帧/慢放 → 重新拼接
5. 调整音频时间轴匹配扩展后的视频
6. 用 ffmpeg 合成视频和音频
7. 生成字幕文件(如需要)
8. 输出成品
依赖版本(固定,防供应链投毒)
| 包 | 固定版本 | 说明 |
|---|---------|------|
| edge-tts | 7.2.8 | 微软 TTS 语音合成 |
| pyttsx3 | 2.99 | 离线 TTS 备选 |
| websocket-client | 1.8.0 | 讯飞 Spark TTS WebSocket |
| ffmpeg | 用户自行安装 | 从 https://ffmpeg.org/download.html 下载,添加到 PATH 环境变量 |
⚠️ 无 pandas 依赖:文案读取使用纯 Python Markdown 解析,不依赖 pandas,避免供应链风险。
TTS 引擎参数
edge-tts 音色参数:
| 参数 | 音色 |
|------|------|
| zh-CN-XiaoxiaoNeural | 女声-晓晓(默认,温柔讲解) |
| zh-CN-YunxiNeural | 男声-云希(正式讲解) |
| zh-CN-XiaoyiNeural | 女声-晓伊(活泼讲解) |
⚠️ edge-tts 音色名均带
Neural后缀,使用旧名称会报错Invalid voice
讯飞 Spark TTS 发音人(需在讯飞控制台开通服务):
| vcn 参数 | 发音人 | 风格 |
|----------|--------|------|
| x5_lingxiaotang_flow | 聆小糖(默认) | 甜美女声 |
| x5_lingfeiyi_flow | 聆非易 | 超拟人,更自然 |
CLI 参数说明:
| 参数 | 说明 |
|------|------|
| --engine edge | 使用 edge-tts(默认) |
| --engine spark | 使用讯飞 Spark TTS |
| --engine pyttsx3 | 使用离线 pyttsx3(无网络时) |
| --spark-voice x5_lingxiaotang_flow | 讯飞发音人选择 |
📁 技能文件
| 文件 | 说明 |
|------|------|
| SKILL.md | 本文件 |
| scripts/synthesize.py | 核心处理脚本(支持 edge-tts + 讯飞 Spark TTS) |
| scripts/script_template.md | Markdown 文案模板 |
| scripts/config_example.py | 讯飞凭证配置模板(首次使用需配置) |
| scripts/spark_tts_test.py | 讯飞 TTS 测试脚本(可选使用) |
| scripts/README.md | 详细说明 |
⚠️ 注意事项
- 时间连续:每个段落的结束时间 = 下一个的开始时间
- 内容简洁:每段建议 10-30 个字,太长听起来不自然
- 文件路径:路径中不要有奇怪符号
- 网络要求:edge-tts 需要网络连接(生成语音);ffmpeg 需要用户自行安装
📝 变更日志
| 版本 | 日期 | 变更内容 |
|------|------|----------|
| 1.6 | 2026-05-07 | ✅ 移除 pandas 依赖:去掉 xlsx/csv 支持,只保留 .md 格式,彻底消除供应链风险;新增音频诊断:合成前自动检测原视频音频轨道,FAQ 新增音频问题排查指南 |
| 1.5 | 2026-05-07 | ✅ 双引擎融合:新增讯飞 Spark TTS 支持(--engine spark),用户可自由选择 edge-tts 或讯飞 |
微信扫一扫