Communitygithub.com

拟音

在无声或粗剪里找出每一个该响的点,把 CC0 音效对准那一帧,再听回来,直到每一声都落地。

拟音 是什么?

拟音给没有声音的画面,或音效偏晚、被埋住、削波的粗剪补声音。它先标出该响的瞬间,从 Openverse 取 CC0 音效,剪好长度,再用 ffmpeg 贴到那一帧。回听这一遍核对同步和电平,过了才算这一声完成。音效库不需要账号。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ekcheungAI/foley-skill/tree/HEAD/foley

在你喜欢的 AI 中提问

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

文档

foley: 精准落帧的音效

你无法听到。earshot是你的耳朵:绝不要说某个音效“听起来合适”或“同步”,而应引用earshot的数值。 SKILL_DIR 以下 = 本技能自己的文件夹(技能加载时会显示其基础目录)。在视频文件夹中工作。将你制作的所有内容放在视频旁的 foley/ 下。

需求

  • ffmpeg 和 ffprobe 在PATH中,Python 3.10+。
  • earshot 在PATH中:uv tool install "earshot[mcp] @ git+https://github.com/Leonxlnx/earshot" 然后 earshot doctor --fetch(约1.1 GB模型,仅CPU)。
  • 需要互联网访问Openverse(匿名限制:每分钟约20个请求,每天200个)。

1. 找到提示点(先观察,再测量)

  1. python3 SKILL_DIR/scripts/find_cues.py VIDEO --out foley/cues-candidates.json 打印运动峰值(帧间变化)并将接触印片写入 foley/sheets/。
  2. 阅读接触印片。为每个需要声音的时刻命名(打击、脚步声、门声、快速转身的呼哧声、撞击、环境背景),并选择其精确帧;利用运动峰值缩小范围,但要相信你所看到的。跳过你实际上看不到的接触点。
  3. 写入 foley/cues.json:[{"id": "hit1", "t": 0.625, "kind": "hit", "what": "拳头击打张开的手掌"}, ...]。

2. 获取CC0音效

为每种类型,使用2–4个搜索词:python3 SKILL_DIR/scripts/fetch_cc0.py "punch impact" foley/sounds/hit --limit 8。 它只保留 source=freesound 且许可为 license=cc0 的结果,并将标题、创作者、许可和来源页面记录在 foley/sounds/sources.json 中。CC0无需署名,但如果用户将音效用于商业用途,请告知他们打开来源页面:Openverse不保证许可的准确性。

3. 用earshot挑选和修剪

  • earshot rank "<该时刻听起来像什么>" foley/sounds/<kind> --top 3 --out foley/rank-<kind>.json。描述声音,而非画面(例如“一声短暂而尖锐的巴掌打在摊开的手掌上”)。
  • earshot find FILE "<相同关键词>" --kind event --top 3 --out foley/find-<id>.json 用于一次性音效;对于环境背景使用 --kind texture。拒绝标记为“头截断”或“尾截断”的修剪片段。
  • 记下每个修剪片段的同步点:对于打击音效是攻击点(起始 + 约5毫秒);对于呼哧声是最响点,而非起始点。

4. 放置

写入 foley/plan_v1.json(参见 scripts/mix.py 头部)并运行 python3 SKILL_DIR/scripts/mix.py foley/plan_v1.json。画面被复制,从不重新编码。

5. 回听并修复(重要部分)

  1. earshot timeline OUT.mp4 --cues "t1,t2,..." --out foley/timeline_v1.json
  2. python3 SKILL_DIR/scripts/check.py foley/timeline_v1.json id1,id2,... foley/check_v1.json 当听到的起始点在画面帧的40毫秒内且电平比背景至少高6 dB时,该提示通过。
  3. 仅修复未通过的部分,根据测量量进行调整:
    • 延迟/提前 → 按偏移量移动该事件(呼哧声通常延迟,因为其峰值在起始之后出现);
    • 掩蔽(比背景低6 dB)→ 提高该事件或降低背景;
    • 真实峰值高于-1 dBTP或削波 → 降低最响的打击音效(限制器无法捕捉前几个采样上的瞬态)。
  4. 写入 plan_v2.json,渲染,再次回听。重复直到所有通过且真实峰值 ≤ -1 dBTP。
  5. 响度:纯音效轨道通常峰值较高,约-20 LUFS,真实峰值 ≤ -1 dBTP。这是预期的;最终的响度设置在编辑阶段与语音/音乐一起处理。不要在这里将其推得更大。

6. 报告

写入 foley/report.md:每个提示(时间、帧、内容),使用的文件(标题、创作者、CC0来源页面),第一次回听的偏移和电平,你更改的内容,以及最终数值。明确说明这些检查是基于earshot的测量,而非人工听感,并建议用户自己听一遍。

规则

  • 仅使用CC0音效,除非用户另有要求。绝不可在未记录 sources.json 行的情况下使用音效。
  • 不要凭空捏造一个你未在画面中看到的打击。不要说某个音效“听起来合适”,而应引用earshot的数据。
  • 保持原始视频不变;输出 <name>-sfx.mp4。

相关技能