Communitygithub.com

z1fex/12-声音设计与混音

为一部3D卡通动画电影设计声音——包括原创音乐背景、每个可见动作的精细拟音、故事节拍上的重音、相对于人声的计量电平、重要打击前的停顿,使用引擎的24种合成效果,并最终母带至-14 LUFS。在画面锁定后使用。

12-声音设计与混音 是什么?

该技能(z1fex/12-sound-design-and-mix)专为3D卡通动画电影提供完整的声音设计与混音工作流,适用于Claude Code、Cursor等AI开发环境中的AI编程代理。它定义了一套基于合成(无采样)的24种效果库,涵盖运动拟音(如whoosh、swish)和故事重音(如slam、ding),每种效果都有详细的频率、时长和分层设计说明。工作流要求每个可见动作都有拟音,每个故事节拍都有重音,并通过精确的LUFS电平计量确保各层(人声、音乐、拟音、重音)相对电平不受干扰。最终输出母带至-14 LUFS的立体声主混音及各分轨WAV文件。该技能基于MIT许可的earshot声音设计实践(github.com/Leonxlnx/earshot),核心代码位于`recipe/tools/sound.py`,完全合成生成,无需任何采样素材。它主要面向动画后期制作中的AI辅助声音设计工程师,帮助在画面锁定后高效、一致地完成高质量声音设计。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/z1fex/3D-Cartoon-Style-Animation-Claude-Skill/tree/HEAD/skills/12-sound-design-and-mix

在你喜欢的 AI 中提问

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

文档

12 · 声音设计与混音

所有者指示(第1轮):"每个动作都要有轻微音效,涵盖一切。" 效果设计遵循 earshot 的文档化运动设计实践(github.com/Leonxlnx/earshot,MIT;docs/motion-sfx-techniques.md,docs/SFX.md);我们 recipe/tools/sound.py 中的代码是自有的,不使用任何采样。

分层

层电平备注
人声−16 LUFS(语音参考 ≈ −19 dBFS,400 ms RMS)占据运行时长的 93–98%
音乐背景低于人声 18 LU,无闪避原创,C大调(C–Am–F–G,100 BPM):马林巴、拨奏贝斯、垫音、底鼓、沙锤。在重钩子处降至仅垫音(musicDrop: [start, end])
拟音低于人声约 15 dB(滴答声约 21,鸟鸣约 22)每个可见动作都有一个声音
重音低于人声约 9 dB仅限故事节拍,每分钟至多约 20 个,最大重音前 0.35 秒音乐下降 7 dB(stop: true)
母带−14 LUFS 集成值,真峰值 −1.5 dBTP两遍线性 loudnorm

效果(24 种,在 sound.py 中)

类型层级用途设计
whoosh(大动作时 long: true)拟音进入新地点、大摄像机运动通过三个移动频带(1 : 1.6 : 2.5)跟随速度的粉红噪声;声像扫描;峰值落在提示点上
swish拟音手臂、书本、手势、投掷细亮闪烁,0.2 秒
pop拟音标题出现、物体上的面部替换、小物件的到来调性尖音向上扫描至主音,滴答声,后续铃声
tick拟音计数器的每一步细小明亮的敲击声,带有变化的音调(轮循)
tap拟音小物件着陆、计数器归零阻尼木块
flip拟音日历翻页纸的沙沙声和静止声
slap拟音通知或纸张拍打上墙宽带拍击和颤动
creak(dur)拟音门和铰链通过木制共振的粘滑脉冲
click拟音开关、标志亮起相距 35 毫秒的按压和锁定声
light拟音标志发光轻柔嗡嗡声和与主音调相符的小钟声
chirp拟音户外生活(少量使用)两个小鸟哨声
rattle拟音树叶、颤抖以颤抖速率变化的滤波噪声爆发
slide拟音滑动或侧移轻柔吱嘎滑动声
stretch(dur)拟音橡胶、琴弦绷紧、表面弯曲渐强的粗糙吱嘎声
whir(dur)拟音磁带转完、机构转动棘轮卡嗒声叠加颤动
chalk(dur)拟音在黑板上书写、划掉内容被笔画切割的粗糙频带
roll(dur)拟音滚动的东西以滚动速率滚动的低沉隆隆声加上表面滴答声
thunk重音软物体着陆(苹果落在草地上)沉闷的落体声加上低通瞬态
thud重音重物摆放从 90 Hz 降至 42 Hz 的次声,带有主体和瞬态
slam重音关门木制主体、破裂声、锁闩声以及石拱房间尾音
snip重音切割两个刀片卡嗒声和金属铮声
boing重音弹簧、蹦床摇摆下降的音调
twang重音拨动绷紧的琴弦带有音高摇摆的谐波泛音
ding重音数字落定、回报C6 铃声,带有非谐波泛音

要添加效果:编写 fx_<name>(rng, …) 返回单位峰值的单声道或立体声数组(一起峰值的分层需分频带以免冲突;任何移动的元素上使用移动滤波器;调性部分在 C 大调;无前导静音;结尾有短淡出),将其添加到 FX、REL 以及 ACCENT 或拟音集合,如果接受 dur 参数则也添加到 SUSTAINED。

提示(在 film.mjs 中)

{ t: W(17) - LEAD, type: 'slam', gain: 1, stop: true }            // 一个带音乐下降的重音
{ t: W(53) - 0.05, type: 'whir', gain: 0.8, dur: 1.4 }              // 一个持续拟音
...changes(a, b, value, 0.06).map(t => ({ t, type: 'tick', gain: 0.7 }))   // 计数器每次变化一个滴答声
  • t 是声音攻击落地的时间(whoosh:其峰值落地的时间);混音器将其提前 10 毫秒,绝不晚于画面。
  • gain 在该类型的电平内调整(0.5 ≈ −6 dB)。每个提示获得 ±1.2 dB 的随机变化和各自的噪声种子,因此重复不会听起来完全相同。
  • 根据故事板的声音列逐镜头编写提示。每个可见动作都有一个;每个重音落在一个故事节拍上。

电平是测量的,而非猜测的

sound.py 将人声电平调整至 −16 LUFS,测量语音参考(说话时的中值 400 ms RMS),并将每个效果设置为其最大 400 ms 位于与该参考相差 REL[type] dB 处。在第 1 轮第 3 版中,这使重音的中值为 −9 dB,拟音相对于人声为 −15 dB。检查任何混音: python -I recipe/tools/sfx-levels.py <outDir> <outDir>/cue-sheet.txt

输出

stem-voice.wav,stem-music.wav,stem-sfx.wav,mix.wav(母带完成),cue-sheet.txt(每个放置的效果及其层级和电平),以及最终的 MP4(H.264 从无声渲染复制,AAC 192 kb/s)。

许可

这里的一切都是合成的。如果所有者提供音乐曲目,他们必须持有其许可;将其设置为 −34 LUFS 的背景音乐,无闪避,并保留效果。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能