Communitygithub.com

video-audio:配音、真实配乐、卡点音效与 -14 LUFS 混音

只负责短视频或宣传片声音的 Agent 技能:用你的 HeyGen 复刻声音、HeyGen 公共声音或 Gemini TTS 配音,字幕按真实说话段落对齐;配乐和音效优先用真实录音;测拍点和高潮,给画面出卡点镜头时间表;最后混音,配乐压在人声下,交付前自检响度和音画同步。

video-audio:配音、真实配乐、卡点音效与 -14 LUFS 混音 是什么?

发布视频配方第 2 步(声音),来自 limboinf/video-skill(2026-10-10 发布;两个技能,video-audio 管声音、video-director 管画面;仓库未声明许可证)。README 里有工作流示意图、海报和一条用这套技能做的 30 秒介绍视频。配音先行,因为配音长度决定片长;字幕对齐到真实说话段落,不信 TTS 返回的字级时间戳。配乐和音效先从 HeyGen 曲库和音效库找,必须按小节精确编排时用 GarageBand 的 Apple Loops,代码合成只做库里没有的短音效。它会测 BPM、拍点和高潮,让高潮砸在关键画面上,并把按拍点排好的镜头时间表交给画面。mix.py 让配乐在说话时至少低 12 dB(默认 15),音效至少低 6 dB,成片约 -14 LUFS、真峰值不高于 -1.5 dBTP,并导出分轨;audio_qa.py 检查音画等长、响度、峰值、断档、结尾淡出和切点落拍。它从不假装能听:数据把关,好不好听由你判断。

兼容平台~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/limboinf/video-skill/tree/HEAD/skills/video-audio

在你喜欢的 AI 中提问

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

文档

视频声音工作台

把「这个视频要什么声音」拆成四层:配音 → 配乐 → 音效 → 混音,每层先从曲库找真实录音,最后交付可直接放进视频工程的音频文件。

边界:只做声音。画面交给 video-director(默认自己写代码逐帧渲染,用户点名时才用 HyperFrames、Remotion、剪映等);本 skill 只输出音频文件、字幕时间、时间点和音量建议。


来源优先级:先曲库,后编曲,最后才合成

顺序来源什么时候用脚本
1用户给的歌给了就必须用,不许换beats.py 测拍点
2HeyGen 曲库 / 音效库(默认)配乐和音效都先从这里找:真乐器、真录音,风格多。选定的曲子要卡拍,用 beats.py + beat_timeline.pyheygen_audio.py
3GarageBand 编曲曲库里找不到合适的,又必须按小节精确编排(抽鼓、再进鼓对准画面)时。按 loops.py --kits 实际列出的套件挑,别默认电子套件loops.py + arrange.py
4代码合成最后手段:库里确实没有、而且只是短音效synth.py

为什么合成排最后:模型合成的声音听多了都是一个味道(噪声上升、808 下坠、FM 叮),一条片子听下来就是「又是这一套」。曲库里是真实录音,每次能挑出不一样的东西。

arrange.py 能把几种来源放在同一个小节网格里混音、导出分轨。examples/hype-15s 演示的是这个机制,不是推荐的风格,别照着它的电音配方做下一条。

配乐和音效的硬规则

  1. 配乐贴主题,不自由发挥:先从主题和用户原话推出一句「这条片子听起来像什么」(情绪、能量、乐器)。产品介绍、项目宣传、发布片默认要动感、有推进力:鼓点干脆、往上走、有一个爆发的段落(有冲劲的摇滚、电影感打击乐、明快的 funk、有力的 hip-hop 律动)。慵懒爵士、lounge、lo-fi、氛围铺底这类只在用户要、或者内容就是安静的(睡前、冥想、怀旧)时用。
  2. 配乐和音效都不许盖过人声:音效在说话时至少比人声低 6 dB(mix.py 自动压)。有人说话时配乐至少比人声低 12 dB(默认 15)。用 mix.py 混,它按这个数算音量、混完再量一遍,不达标退出码 3。实测旧版手调的侧链压缩,说话时配乐只低 1.2 dB,基本一样响。
  3. 转场和关键帧都要有音效:每个切点一个转场音效(嗖、翻页、快门、胶片咔哒,按风格挑),每个关键动作一个命中音效(落下、揭晓、盖章、开灯)。都从曲库找,音量在人声下面。
  4. 候选先给用户听:2–3 首候选都在第 1 条推出的方向里(不是三种完全不同的曲风让用户猜),做成一个试听文件,和 video-director 的提案一起给用户确认。
  5. 对照作品记录:动手前读 ~/.video-skill/作品记录.md,最近 3 条用过的曲子、主乐器不重复;交付后追加。
  6. 不默认「电音全家桶」:riser + 808 下坠 + 冲击 + 品牌叮这一套合成声不当默认值。动感靠曲子本身的鼓和编排,不靠合成音效堆。

工作流

  1. 配音先行,定时长:配音长度决定视频长度。读 references/voiceover.md。
    • voiceover.py tts 生成配音,三种来源:--source mine 你的 HeyGen 复刻声音(默认),heygen HeyGen 公共声音,gemini Gemini 3.8 Flash TTS(--style 控制语气)。复刻声音的默认引擎经常不可用,会自动换 orca → starfish 重试。
    • voiceover.py align 把稿子切成字幕,对到真实说话段落上,输出 cues.json。HeyGen 返回的字级时间戳是按字平均分的,不能用来卡字幕。
  2. 列出画面节拍点:爆点、转场、盖章、揭晓,各在第几秒。这是配乐和音效共用的时间表。字幕停留 ≥ 字数 × 0.25s + 0.5s,卡点不能牺牲可读性。
  3. 配乐:读 references/music.md。
    • 先写一句「这条片子听起来像什么」,用 heygen_audio.py search --type music 搜 3–4 首曲风不同的候选,拼成一段试听让用户挑。
    • 选定的曲子要卡拍:beats.py 测拍点和高潮,beat_timeline.py --key <关键时刻> 算出歌从哪秒开始放,并按拍点出镜头时间表交给画面。
    • 曲库里实在找不到、又必须按小节精确编排时,才用 loops.py + arrange.py 自己编。
  4. 音效:读 references/sfx.md。先从 HeyGen 音效库找真实录音,库里没有才合成。按密度档位排:只放转场和重点,或者再加关键词提示音。对齐公式:开始时刻 = 命中时刻 − 文件内峰值位置。
  5. 混音和响度:写 mix.json,跑 mix.py:配乐按人声自动压(说话时至少低 12 dB)、音效按峰值对齐、成片 -14 LUFS、真峰值 -1.5 dBTP、导出分轨。读 references/mixing.md。
  6. 交付前自检:audio_qa.py 查音画等长、响度、真峰值、配乐断档、结尾淡出、切点落拍。退出码 0 才交付。

不确定的风格先做试听:几段候选各 8–9 秒,拼成一个 A/B/C/D 文件发给用户挑,比口头描述有效得多。


铁律

  1. 同一套 loop 才能叠:GarageBand 的 loop 按歌分组(如「Cascade Bass / Lead / Pad」)。跨套件混用很容易跑调、错拍。
  2. 对齐的是命中点,不是文件开头:HeyGen 音效有 peak_offset,代码合成的音效由 synth.py 打印 peak。
  3. 字幕时间以真实音频为准:voiceover.py align 把稿子对到静音切出的真实段落上,不需要 whisper,也不信 TTS 返回的时间戳。
  4. 先做分轨再交付:混音时导出各来源的分轨,用户能听出每一层贡献了什么,也方便改单层。
  5. 用户点名的是硬要求:点名的歌、配音服务、「不要配乐」都照做。拿不到就在交付说明里写清原因和替代品,不许悄悄换成「差不多的」。
  6. 听不到就用数据验证:用 ebur128 查响度,用 volumedetect 查峰值和静音段,用波形图查结构。Agent 没有耳朵,靠数据把关,最终好不好听交给用户判断。

文件

文件内容什么时候读
references/voiceover.md复刻声音、引擎兜底、停顿写法、字幕对齐要配音时
references/music.md选来源、BPM 反推、编曲套路、卡点方法、试听做法要配乐时
references/sfx.md音效搜索词、代码合成配方、密度档位、对齐要音效时
references/mixing.md压人声、响度标准、视频工程里怎么放、验证命令每次收尾
scripts/voiceover.py列出声音 / TTS(复刻声音、HeyGen 公共声音、Gemini)/ 静音切段 / 字幕对齐
scripts/loops.py扫描 Apple Loops、按 BPM 和套件筛选
scripts/arrange.py按 plan.json 混出成曲和分轨
scripts/heygen_audio.py搜索和下载 HeyGen 音乐、音效
scripts/synth.py合成 riser / sub / ding / whoosh / tick
scripts/beats.py测现成曲子的 BPM、拍点、重拍、高潮、安静/响亮段用现成曲子要卡拍时
scripts/beat_timeline.py让高潮对准关键时刻,给出裁歌命令和按拍点排的镜头时间表同上
scripts/mix.py按 mix.json 混出成片声音和分轨,检查配乐有没有盖过人声每次混音
scripts/audio_qa.py交付前声音自检每次收尾
examples/hype-15s/三种来源合成 15 秒动感短曲的完整示例,bash make.sh 一键复现第一次用、或要一个起点时

依赖:ffmpeg、Python 3 + numpy、heygen CLI(已登录)、macOS 上的 GarageBand(只用到它的素材库 /Library/Audio/Apple Loops,不需要打开 App)。

相关技能