Communitygithub.com

Ahmed-OC/motion-video-skills

生成带有逐词时间轴的配音:通过 edge-tts(默认)实现免费多语言 TTS,支持本地 Kokoro/Piper 或 ElevenLabs——并使用 faster-whisper 将任意音频转换为单词时间戳。输出 vo.mp3、单词/字幕 JSON(每页 1–3 个单词,含逐词时间窗口)以及可嵌入的 vo.js,适用于画布/网络视频管道。当用户需要旁白、配音、TTS、配音轨道、任何语言的文字转语音或视频/动画的单词同步字幕(TikTok/Hormozi 风格)时使用。

motion-video-skills 是什么?

该技能是一个全面的 TTS(文本转语音)配音生成器,专为视频制作中的逐词字幕同步而设计。它利用 edge-tts 提供免 API 密钥的多语言 TTS,支持法语、英语、日语、西班牙语等多种语言,并提供了详细的语音选择表。脚本 `vo_gen.py` 可以生成音频文件(vo.mp3)、逐词时间戳 JSON 文件(包含单词级和字幕级时间信息)以及一个 Base64 编码的 JavaScript 文件,便于在浏览器画布或视频管道中直接使用。此外,技能还涵盖了本地 TTS 引擎(Kokoro、Piper)、付费服务(ElevenLabs)以及通过 faster-whisper 从现有音频提取时间戳的进阶方案。它特别强调了边缘案例处理(如 edge-tts 版本问题和 HTTP 403 错误),并提供了音频混合和字幕风格的最佳实践。该技能适用于 Claude Code、Cursor 等 AI 编码助手,帮助开发者快速为视频添加专业级配音和同步字幕。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Ahmed-OC/motion-video-skills/tree/HEAD/skills/tts-voiceover

在你喜欢的 AI 中提问

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

文档

TTS 配音——带逐词时间轴的旁白

单词时间轴是实现字幕精确弹出和场景节奏跟随的关键。务必先生成配音,再根据实际时间轴进行动画制作——切勿颠倒顺序。

快速入门(免费,无需 API 密钥)

pip install edge-tts
python scripts/vo_gen.py --text "Pythagore. Dans un triangle rectangle…" --voice fr-FR-DeniseNeural --rate -4%

输出(默认前缀为 vo):

  • vo.mp3 — 音频文件
  • vo_words.json — { words:[{text,fromMs,toMs}], captions:[{startMs,durationMs,text,tokens[]}] } 其中字幕按页分组,每页最多 3 个单词(间隔 >700ms 自动分页),并包含逐词时间窗口
  • vo.js — window.VO_B64(Base64 编码的 mp3)+ window.VO_DATA(JSON 数据),可直接嵌入画布/视频流水线:<script src="vo.js">,然后通过 decodeAudioData 播放,使用 VO_DATA.captions 绘制字幕

列出可用语音:python scripts/vo_gen.py --list-voices fr(也支持 en, ja, es, de, pt, zh, ar…)。

语音菜单(快速选择)

语言沉稳叙述者活力声音
frfr-FR-DeniseNeuralfr-FR-HenriNeural
enen-US-AriaNeuralen-US-GuyNeural
jaja-JP-NanamiNeuralja-JP-KeitaNeural
eses-ES-ElviraNeurales-ES-AlvaroNeural
dede-DE-KatjaNeuralde-DE-ConradNeural
ptpt-BR-FranciscaNeuralpt-BR-AntonioNeural
zhzh-CN-XiaoxiaoNeuralzh-CN-YunjianNeural

语速语法:--rate -4% 放慢 / +10% 加快。较短的句子能获得更清晰的单词边界;只需重新生成出错的那一句,无需重做整个音轨。

注意事项(实战经验)

  • edge-tts ≥ 7:默认情况下关闭了单词边界——必须设置 boundary="WordBoundary"(vo_gen.py 已传递该参数)。错误表现:音频正常,但 words 为空。
  • 服务返回 HTTP 403:您的 edge-tts 版本太旧,无法适应当前令牌方案——请执行 pip install -U edge-tts(如果系统安装被锁定,请使用虚拟环境)。
  • 原始流中单词偏移量的单位为 100 纳秒;除以 10⁴ 转换为毫秒。

替代方案与升级

  • Kokoro(pip install kokoro)— 本地神经 TTS,8200 万参数,支持多种语言。
  • Piper — 完全离线,速度快,按语言下载语音包。
  • ElevenLabs — 付费服务,多语言 v2;with-timestamps API 返回字符级时间戳,可直接用于字幕。
  • VOICEVOX(日语)— 本地 HTTP API(localhost:50021),提供按音素划分的时间戳(非常适合日语口型动画)。
  • 将现有音频 → 通过 faster-whisper 生成单词时间戳:
    pip install faster-whisper
    python - <<'EOF'
    from faster_whisper import WhisperModel; import json
    m = WhisperModel("small"); segs, _ = m.transcribe("track.mp3", word_timestamps=True)
    json.dump([w._asdict() for s in segs for w in s.words], open("words.json","w"))
    EOF
    

混入视频(快速参考)

将人声、背景音乐和音效作为独立音轨处理,然后:音乐背景音量控制在配音下方 −18…−22 LUFS,使用 ffmpeg sidechaincompress(以配音为触发信号)进行闪避处理,最终执行 loudnorm=I=-14:TP=-1.5:LRA=11 标准化。 推荐的字幕样式:粗体大写,每弹幕 1–3 个单词,当前播放单词使用强调色并放大约 20%,背后添加黑色背景条或描边以增强对比度,并避开平台界面区域。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能