返回 Skill 列表
extension
分类: 其它无需 API Key

视频配音

视频教学配音合成技能。当用户需要为录屏视频添加语音讲解、将文字转语音、合成视频配音时触发此技能。 适用场景:录制教学视频、配音合成、操作教程、PPT配音等。 特点:操作简单,只需在 WorkBuddy 里说一句话,自动完成一切。

person作者: user_a5827f21hubcommunity

🎬 视频教学配音合成工具

在 WorkBuddy 里使用,把文字讲解和操作视频自动合成带配音的成品视频


🔔 首次加载指引(AI 必读)

加载本技能后,必须立即向用户推送以下信息(不要等用户问):

  1. 使用方法摘要
  2. 文案模板文件路径,让用户能直接找到
  3. deliver_attachments 把模板文件发送给用户

推送格式如下:

🎬 视频配音技能已就绪!

📋 使用方法:
1. 用文本编辑器打开文案模板,填写时间点和讲解文字
2. 告诉我:视频路径 + 文案路径 + 音色(可选)+ 字幕(可选)
3. 我会先确认参数,确认后自动合成

📝 文案模板路径:
   scripts/script_template.md

💡 示例:"帮我合成视频配音,视频在 D:\教程\demo.mp4,文案在 D:\教程\script.md,用男声,加字幕"

🎙️ 可选音色:晓晓(女声,默认)/ 云希(男声)/ 晓伊(活泼女声)
📝 可选字幕:默认不加,说"加字幕"即可开启
⏱️ 配音溢出:默认冻结最后一帧(配音比视频长时画面定格),可改为慢放

然后调用 deliver_attachments 把模板文件发给用户:

  • 文件路径:scripts/script_template.md

⛔ 执行前确认(AI 必读,强制)

收到视频和文案路径后,AI 绝对不能直接执行脚本!必须先向用户确认以下参数:

确认流程

  1. 用户提供了视频路径 + 文案路径
  2. AI 补全未指定的参数(使用默认值)
  3. AI 向用户展示参数汇总,等用户确认或修改
  4. 用户确认后,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(微软免费语音),可以跳过此步骤,无需配置讯飞凭证。 如需使用讯飞超拟人语音,则需要配置一次,之后长期有效。

配置步骤

  1. 注册讯飞开放平台账号 地址:https://www.xfyun.cn/services/smart-tts

  2. 创建应用并开通服务

    • 登录控制台:https://console.xfyun.cn
    • 「我的应用」→「创建应用」
    • 开通「超拟人语音合成(精品发音人)」服务
  3. 复制凭证到 config.py 打开 scripts/config_example.py,按注释提示填入:

    • SPARK_APP_ID
    • SPARK_API_KEY
    • SPARK_API_SECRET
    • SPARK_WS_URL(控制台中复制的 WebSocket 地址)
    • 保存为 scripts/config.py(去掉 _example
  4. 验证配置 运行测试,确认讯飞 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 会自动:

  1. ✅ 读取您的视频和文案
  2. ✅ 把文字变成语音
  3. ✅ 合成最终视频
  4. ✅ 把成品发给您

📦 成品效果

直接在 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:0501: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: 按以下步骤排查:

  1. 检测原视频是否有音频

    ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1 视频.mp4
    
    • 无输出 = 原视频无音频轨道(正常,只需添加配音)
    • 有输出 = 原视频有音频(配音会替换原音频)
  2. 如需保留原音频 + 混合配音,需要手动使用 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
    
  3. 常见原因

    • 录屏时没有勾选"录制音频"
    • 原视频从无声素材剪辑而来
    • 配音文件本身问题(检查方法:直接双击 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 | 详细说明 |


⚠️ 注意事项

  1. 时间连续:每个段落的结束时间 = 下一个的开始时间
  2. 内容简洁:每段建议 10-30 个字,太长听起来不自然
  3. 文件路径:路径中不要有奇怪符号
  4. 网络要求:edge-tts 需要网络连接(生成语音);ffmpeg 需要用户自行安装

📝 变更日志

| 版本 | 日期 | 变更内容 | |------|------|----------| | 1.6 | 2026-05-07 | ✅ 移除 pandas 依赖:去掉 xlsx/csv 支持,只保留 .md 格式,彻底消除供应链风险;新增音频诊断:合成前自动检测原视频音频轨道,FAQ 新增音频问题排查指南 | | 1.5 | 2026-05-07 | ✅ 双引擎融合:新增讯飞 Spark TTS 支持(--engine spark),用户可自由选择 edge-tts 或讯飞 |