创始人拍夜市 SFX 走 CC0 真采样(烤肉滋滋/收银声真录音比合成贴)。7 个真实世界 foley 事件:6 换核验过的 CC0/公有领域真采样、1(切菜 chop)如实退回合成(无干净 CC0、Commons 搜空/freesound 要 OAuth,不硬凑)。 采样(逐个机读 Wikimedia Commons license 字段核验、下载+定稿两次复核,只收 CC0/PD 弃 CC-BY/CC-BY-SA): 烤肉滋滋 sizzle(PD)/收银钱箱 cash(PD,选硬币落金属钱箱真声)/金币叮当 coin(PD)/下单铃 bell(CC0)/ 顾客满意 applause(PD)/失败差评 buzzer(CC0);curl 直下→ffmpeg 裁≤2s 单声道淡入淡出→mp3 96k,共 106KB。 授权逐文件留痕 assets/audio/sfx/manifest.json+批次二音效CC0采样台账.md(clean-room/备案证据链)。 接线:采样懒加载(首手势后 decodeAudioData 不进首屏)、缺文件/解码失败/node 无 fetch 逐事件回落合成不崩。 证据:回归 logic-smoke 95/tree-check 15/单测 30 零倒退+两本账不破门(总 4.336MB≤10MB/首屏 1.13MB 一字不差、 采样懒加载不计首屏);成本 ¥0。真播听感待 mini-desktop 窗口人耳评。抽象/UI/设计音 20 类保留合成。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
56 lines
6.7 KiB
Markdown
56 lines
6.7 KiB
Markdown
# 音效 CC0 真采样台账 · 批次二(2026-07-07)
|
||
|
||
《夜市一条街》的真实世界厨房 foley 从分层合成换成 CC0/公有领域真采样。起因是创始人 2026-07-06 拍定夜市 SFX 走真采样而非合成——烤肉的滋滋声、收银的钱箱声,真录音的质感比振荡器合成贴得多。本批把七个经营内容事件逐个去找干净、可核验授权的真录音,找得到就换采样,找不到就如实退回合成,绝不为了凑齐而糊弄授权。
|
||
|
||
机器可读的逐文件授权清单是采样目录里的 `manifest.json`(源页 URL、直链、license、作者、字节、裁剪窗全留痕);本页是给人看的一页数与决策留痕。
|
||
|
||
## 采样来源与授权(逐条核验)
|
||
|
||
七个目标里六个拿到了干净的 CC0 或公有领域真录音,全部来自 Wikimedia Commons(其 license 字段可经 API 机器核验,`extmetadata.LicenseShortName` + `License` 两栏在下载当刻复核过一次,不是笼统的“免费”)。授权口径只收 CC0 与 Public domain(免授权、免署名);过程中命中的几个 CC-BY / CC-BY-SA 素材(一段现成的 “Cha Ching” 收银机、一段掌声、一个压电蜂鸣器)因为要求署名,一律不取。
|
||
|
||
| 音效 | 文件 | 采样内容 | License | 作者 | 源页 | 字节 / 时长 |
|
||
|---|---|---|---|---|---|---|
|
||
| 烤肉滋滋 | `sizzle.mp3` | 油锅煎炸 | **Public domain** | ezwa | [Frying fries…ogg](https://commons.wikimedia.org/wiki/File:Frying_fries_going_in_and_out_of_oil.ogg) | 22.3 KB / 1.79s |
|
||
| 收银钱箱 | `cash.mp3` | 硬币落入金属钱箱 | **Public domain** | ezwa | [Coins…metallic moneybox.ogg](https://commons.wikimedia.org/wiki/File:Coins_dropped_in_metallic_moneybox.ogg) | 17.0 KB / 1.35s |
|
||
| 金币叮当 | `coin.mp3` | 硬币落入木钱箱 | **Public domain** | ezwa | [Coins…wooden moneybox.ogg](https://commons.wikimedia.org/wiki/File:Coins_dropped_in_wooden_moneybox.ogg) | 13.5 KB / 1.05s |
|
||
| 下单铃 | `bell.mp3` | 自行车铃清脆一响 | **CC0 1.0** | qubodup | [Bell-ring.flac](https://commons.wikimedia.org/wiki/File:Bell-ring.flac) | 17.8 KB / 1.40s |
|
||
| 顾客满意 | `applause.mp3` | 鼓掌加欢呼 | **Public domain** | starlite | [Clapping hurray.ogg](https://commons.wikimedia.org/wiki/File:Clapping_hurray.ogg) | 24.8 KB / 2.00s |
|
||
| 失败差评 | `buzzer.mp3` | 蜂鸣器 | **CC0 1.0** | David Pride | [Buzzer.wav](https://commons.wikimedia.org/wiki/File:Buzzer.wav) | 11.0 KB / 0.85s |
|
||
|
||
四个来自 pdsounds.org 早年释入公有领域的现场录音(ezwa、starlite),两个来自 freesound 与 Cotswold Jam 的 CC0 释出(qubodup 的自行车铃、David Pride 的蜂鸣器),均经 Wikimedia Commons 转存并保留原始出处。收银用的其实是“硬币落金属钱箱”的真声——比一段合成 cha-ching 更贴夜市小摊那种把零钱往铁盒里一撂的动作,也正好对上工单里“收银 cha-ching/钱箱”的口径。
|
||
|
||
每个文件下载后统一走一道加工:curl 直下原始 ogg/flac/wav,ffmpeg 裁到两秒以内的活跃窗口(连续声如煎炸、鼓掌取最响的一段,脉冲声如落币、铃响、蜂鸣取起音到自然衰减),下混单声道 44.1kHz,首尾各加几十毫秒淡入淡出消除裁剪爆音,最后 libmp3lame 96k 编码。六个文件合计 106 KB,加清单 111 KB。
|
||
|
||
## 采样 vs 合成的分布
|
||
|
||
真实世界 foley 事件换采样,抽象与 UI 反馈音保留合成——后者本就是设计音,没有“真录音更贴”的诉求。
|
||
|
||
- **改播采样(6 类事件 → 6 个样本)**:下锅 `order`(下单铃 + 起锅滋滋两层走采样)、收银三档 `cash_low/mid/high`(高档额外叠一层散币叮当)、小费 `tip`、好评 `praise`、差评 `blame`。
|
||
- **保留合成(切菜 chop,1 类)**:见下节,如实退回。
|
||
- **本就合成、不在采样范围**:翻台、连击、断链、进货、缺货、解锁号角、升级、研发、雇佣、技能、潮汐、评论家登场、雨声、任务、成就 fanfare、图鉴、UI 点击、弹窗、广告位金光,以及出餐 `serve_ready`。这些是设计音或抽象反馈,合成足够。
|
||
|
||
接线上采样是懒加载:首个用户手势解锁 AudioContext 后才 fetch 解码六个样本,不进首屏字节账;解码完成前、文件缺失或加载失败,对应事件自动回落到原有合成声部,一行都没删,缺音不崩的红线不破。node 与 headless 环境没有 fetch 与 AudioContext,整条采样加载跳过,纯逻辑与门的契约不变。
|
||
|
||
## 未竟:切菜 chop 退回合成(如实)
|
||
|
||
切菜没找到干净的 CC0 真录音,退回合成。Wikimedia Commons 搜遍 chopping / cutting / cleaver / knife-cutting-board 全部落空;freesound 上确有 CC0 的切菜录音,但其原文件下载要 OAuth token,内网凭据档里没有,不硬凑;OpenGameArt 的 CC0 合集要逐层下钻且难以在无法试听的机器上核验音色。唯一现成的公有领域近似物是一段 “Knocking on wood or door”,但它是连续几下敲击、带空心门腔体的共鸣、没有切割的嘶声,在 6c6g 上没法试听确认它读起来像不像“刀落砧板”——按诚实协议,音色不可核验的样本不采。保留的合成 chop 本来就是照刀落砧板建模的(短噪声穿切 + 低频木墩 thock),比一段敲门声更贴,作为这一个音的兜底站得住。
|
||
|
||
结论:七个目标,六个真采样、一个合成兜底。
|
||
|
||
## 成本
|
||
|
||
零采买。六个样本都是 CC0 或公有领域,无授权费、无素材费。开销只有下载与转码的本机算力和时间,没有调用任何付费模型或接口(本批音效线与批次二美术线的 mmx 生图预算无关,不占其额度)。
|
||
|
||
## 验收
|
||
|
||
| 门 | 结果 |
|
||
|---|---|
|
||
| logic-smoke(95 断言,纯逻辑核) | exit 0,全过 |
|
||
| tree-check(15 静态可达查) | exit 0,全过 |
|
||
| 单测(30 用例:经济骨架/九门 driver/富三门/M2 系统/M3 注入缝) | 30 pass / 0 fail / 0 skipped |
|
||
| 构建 + 两本包体账 | build exit 0;账一总 4.336 MB ≤ 10 MB(过),首屏 1.13 MB ≤ 2 MB(过) |
|
||
|
||
采样落在 `assets/audio/` 下,构建记账里本就归 BGM 同级的懒加载项、不计首屏,所以首屏字节与改动前一字不差(1.13 MB),总账只多了这 111 KB。三个纯逻辑门与单测都不碰音效模块,零倒退。
|
||
|
||
浏览器里真实的 decodeAudioData 播放与听感未在本机验证——6c6g 禁 chrome,音频真播归 mini-desktop 的 CDP 窗口,与 M4 换装的九门回归一并排。样本文件本身由 ffmpeg 编码、ffprobe 复核为合法 MP3,路径解析沿用 Phaser 既有的相对 `assets/…` 惯例(M2 CDP 已 ACCEPT 过同款路径),接线正确性有据。
|