Communitygithub.com

video-audio: Sprecher, echte Musik, Beat-Effekte, -14 LUFS

Agent-Skill, der nur den Ton eines Kurzvideos oder Promos macht: Voiceover mit Ihrer geklonten HeyGen-Stimme, einer öffentlichen HeyGen-Stimme oder Gemini TTS, Untertitel an echter Sprache ausgerichtet, Musik und Effekte zuerst aus echten Aufnahmen, Beat- und Höhepunkt-Erkennung, ein Schnittplan für das Bild, dann ein Mix mit Musik unter der Stimme und ein Lautheits- und Sync-Check vor der Übergabe.

Was ist video-audio: Sprecher, echte Musik, Beat-Effekte, -14 LUFS?

Schritt 2 des Rezepts Launch-Video (der Ton), aus limboinf/video-skill (veröffentlicht am 2026-10-10; zwei Skills, video-audio für Ton und video-director für Bild; keine Lizenz angegeben). Das README enthält ein Ablaufdiagramm, Poster und ein 30-sekündiges Intro-Video, das mit den Skills gemacht wurde. Die Stimme kommt zuerst, weil ihre Länge die Filmlänge bestimmt; Untertitel werden an echten Sprechabschnitten ausgerichtet, nicht an TTS-Zeitstempeln. Musik und Effekte kommen zuerst aus der HeyGen-Bibliothek, aus GarageBand-Apple-Loops, wenn Takte exakt arrangiert werden müssen, und Code-Synthese nur für kurze Effekte, die fehlen. Er misst Tempo, Beats und Höhepunkt, damit der Höhepunkt auf den Schlüsselmoment fällt, und gibt dem Bild einen Einstellungsplan nach Beats. mix.py hält Musik beim Sprechen mindestens 12 dB unter der Stimme (Standard 15) und Effekte mindestens 6 dB darunter, zielt auf etwa -14 LUFS bei höchstens -1,5 dBTP True Peak und exportiert Stems; audio_qa.py prüft Längengleichheit, Lautheit, Spitzen, Lücken, Ausblendung und Schnitte auf dem Beat. Er behauptet nie, etwas zu hören: Die Daten prüfen, Sie urteilen.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

视频声音工作台

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

边界:只做声音。画面交给 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)。

Verwandte Skills