Newer
Older
rpg / apps / game / tools / aiaudio / manifest.json
{
  "run": "a1-pipeline",
  "date": "2026-09-09",
  "model": "AudioLDM2 (cvssp/audioldm2), RTX 3090 fp16 (torch 2.14.0+cu130), diffusers 0.35.2 + transformers 4.49.0",
  "env": "~/.cache/rpg-ai/venv-aiaudio (pinned; diffusers 0.40 несовместим с transformers 4.x — _update_model_kwargs_for_generation удалён в 5.x)",
  "license_note": "веса CC-BY-NC-SA 4.0 — решение A1 (2026-09-09, пользователь): строим пайплайн на AudioLDM2, игра некоммерческая; главный путь плана (Stable Audio Open Small) остаётся опцией — пайплайн манифест-driven, смена модели = новый gen-скрипт с тем же CLI",
  "pipeline": "npm run aiaudio gen [id[:seed]...] -> post.py (ресэмпл 22050, нормализация 0.85, loopify 1 с) -> npm run aiaudio promote <id> <seed> -> assets/audio/<promote>.wav; sfx — без лупа (_fx) и без promote (SFX_KEYS пуст, спек-синтез E4)",
  "timing": "10 с аудио, 100 шагов: GPU ~15 с; CPU fp32 12 ядер ~3.5 мин",
  "loop_check": "post.py --check: скачок на шве против максимума межсэмплового diff в середине записи",
  "criterion": "ambience/layer — лучше процедурного эталона (tools/audio/gen.mjs) на слух; sfx — лучше спек-синтеза (data/sfxSpecs.ts); апрув — пользователь на слух",
  "items": [
    {
      "id": "amb_ponds",
      "kind": "ambience",
      "promote": "ambience/ponds",
      "seeds": [
        1,
        2
      ],
      "duration": 10,
      "gate": "approved",
      "approved_seed": 1,
      "date": "2026-09-09",
      "positive": "field recording, calm misty pond at dusk, gentle water lapping, soft wind through reeds, occasional distant croaking, eerie quiet melancholic atmosphere, seamless ambience",
      "note": "эталон ambiencePonds; луга молчат по дизайну, луп прудов апрувнут A0"
    },
    {
      "id": "amb_zvenets",
      "kind": "ambience",
      "promote": "ambience/zvenets",
      "seeds": [
        1,
        2
      ],
      "duration": 10,
      "gate": "approved",
      "approved_seed": 1,
      "date": "2026-09-09",
      "positive": "field recording, quiet rural settlement at dusk, low distant metallic bell toll, soft wind, faint rustling, somber melancholic atmosphere, seamless ambience",
      "note": "эталон ambienceZvenets; апрувнут A0"
    },
    {
      "id": "amb_meadows",
      "kind": "ambience",
      "seeds": [
        1,
        2
      ],
      "duration": 10,
      "gate": "hold",
      "date": "2026-09-09",
      "positive": "field recording, desolate burned field, cold dry wind blowing over dead grass, occasional faint debris rattling, bleak post-fire emptiness, seamless ambience",
      "note": "в игре луга без амбиента (тишина пепла) — клипы держим как запас"
    },
    {
      "id": "amb_ponds_night",
      "kind": "ambience",
      "promote": "ambience/ponds_night",
      "seeds": [
        1,
        2
      ],
      "duration": 10,
      "gate": "approved",
      "approved_seed": 1,
      "date": "2026-09-09",
      "positive": "field recording, pond at night, deeper water lapping, night insects, distant eerie echoes, dark oppressive quiet, seamless ambience",
      "note": "эталон ambiencePondsNight; апрувнут A0"
    },
    {
      "id": "amb_tower_hum",
      "kind": "layer",
      "promote": "ambience/tower_hum",
      "seeds": [
        1
      ],
      "duration": 10,
      "gate": "approved",
      "approved_seed": 1,
      "date": "2026-09-09",
      "positive": "deep metallic resonance hum, giant bell tower vibrating, low sustained drone with slow shimmer, ominous and ancient",
      "note": "слой layerTowerHum; апрувнут A0"
    },
    {
      "id": "amb_rust_grove",
      "kind": "ambience",
      "promote": "ambience/rust_grove",
      "seeds": [
        1,
        2,
        3
      ],
      "duration": 10,
      "gate": "approved",
      "positive": "field recording, dead forest of rusted metal trees wrapped in black cables, wind through cable strands causing faint creaks and rare distant metallic chimes, low rustle of ash, somber mysterious atmosphere, seamless ambience",
      "note": "новое A1: роще свой луп (seed 2 — тихий, редкие яркие скрипы); заменил подстановку прудов",
      "approved_seed": 2,
      "date": "2026-09-09"
    },
    {
      "id": "amb_old_siding",
      "kind": "ambience",
      "promote": "ambience/old_siding",
      "seeds": [
        1,
        2,
        3
      ],
      "duration": 10,
      "gate": "approved",
      "positive": "field recording, abandoned railway siding in ash wastes at dusk, faint metallic squeak of old rails, cold wind over ash ground, very distant low machinery pulse, desolate quiet, seamless ambience",
      "note": "новое A1: разъезду свой луп (seed 3 — событийная огибающая, скрипы рельсов); заменил подстановку прудов",
      "approved_seed": 3,
      "date": "2026-09-09"
    },
    {
      "id": "amb_zvenets_night",
      "kind": "ambience",
      "promote": "ambience/zvenets_night",
      "seeds": [
        1,
        2,
        3
      ],
      "duration": 10,
      "gate": "hold",
      "positive": "field recording, quiet rural settlement at night, very low distant bell resonance, cold night wind, sparse faint insect chirps, deep somber quiet, seamless ambience",
      "note": "оставляем процедурный эталон: у него огибающая живее (dyn 0.46 против 0.09–0.18) — отбор по метрикам, пользователь делегировал решение"
    },
    {
      "id": "layer_houses",
      "kind": "layer",
      "promote": "ambience/houses",
      "seeds": [
        1,
        2
      ],
      "duration": 10,
      "gate": "hold",
      "positive": "quiet interior murmur of old wooden settlement houses, faint wood creaks, muffled domestic sounds behind walls, hearth crackling far away, close perspective, seamless ambience",
      "note": "оставляем процедурный эталон: тихий с событиями треска (dyn 2.28, rms 0.03) против ровных AI-клипов"
    },
    {
      "id": "layer_wind",
      "kind": "layer",
      "promote": "ambience/wind",
      "seeds": [
        1,
        2,
        3,
        4
      ],
      "duration": 10,
      "peak": 0.6,
      "gate": "approved",
      "positive": "field recording, cold wind howling across a vast burned field, long slow gusts that swell and fade away, faint low mournful whistle, occasional light debris rattling far away, quiet distant perspective, seamless ambience",
      "note": "новое A1 (фидбек: завывание, периодическое затухание, тихий): пик 0.6 поверх игрового гейна слоя 0.25–0.4",
      "approved_seed": 3,
      "date": "2026-09-09"
    },
    {
      "id": "layer_ponds_water",
      "kind": "layer",
      "promote": "ambience/ponds_water",
      "seeds": [
        1,
        2
      ],
      "duration": 10,
      "gate": "hold",
      "positive": "gentle pond water lapping softly against a shore, calm small ripples, quiet close-up foley, seamless ambience",
      "note": "оставляем процедурный эталон: dyn 0.67 против 0.15–0.26 у AI"
    },
    {
      "id": "sfx_step",
      "kind": "sfx",
      "seeds": [
        1
      ],
      "duration": 2.5,
      "gate": "candidate",
      "positive": "single soft footstep on dry crumbly ash and dead grass, short subtle crunch, close up, dry foley",
      "note": "SFX-кандидаты A0/A1: в игре спек-синтез E4; promote после сравнения на слух (нужен файловый SFX-путь)"
    },
    {
      "id": "sfx_click",
      "kind": "sfx",
      "seeds": [
        1
      ],
      "duration": 1.5,
      "gate": "candidate",
      "positive": "single short UI click, soft wooden tap, clean and dry, interface sound",
      "note": "SFX-кандидат"
    },
    {
      "id": "sfx_bell",
      "kind": "sfx",
      "seeds": [
        1,
        2
      ],
      "duration": 5,
      "gate": "candidate",
      "positive": "single bronze bell strike, resonant metallic ring with long natural decay, solemn, temple bell, one hit only",
      "note": "SFX-кандидат; эталон bellHit"
    },
    {
      "id": "sfx_whoosh",
      "kind": "sfx",
      "seeds": [
        1
      ],
      "duration": 2,
      "gate": "candidate",
      "positive": "single quick air whoosh, fast swing passing by, short swoosh transition",
      "note": "SFX-кандидат; эталон whoosh"
    },
    {
      "id": "sfx_hit",
      "kind": "sfx",
      "seeds": [
        1
      ],
      "duration": 2,
      "gate": "candidate",
      "positive": "single dull impact hit, heavy blunt thud with brief echo, combat punch sound, one hit only",
      "note": "SFX-кандидат"
    },
    {
      "id": "sfx_pickup",
      "kind": "sfx",
      "seeds": [
        1
      ],
      "duration": 2,
      "gate": "candidate",
      "positive": "single gentle collect chime, soft bright pling, short delicate pickup sound, one note only",
      "note": "SFX-кандидат; эталон motepick"
    },
    {
      "id": "sfx_drop",
      "kind": "sfx",
      "seeds": [
        1
      ],
      "duration": 2,
      "gate": "candidate",
      "positive": "single water drop into calm pond, soft plop with tiny ripple, close up, one drop only",
      "note": "SFX-кандидат; эталон капли ambiencePonds"
    }
  ]
}