foley: Soundeffekte, die auf den Frame treffen
Du kannst nicht hören. earshot ist deine Ohren: Sage nie, ein Sound „passt“ oder „ist synchron“, ohne eine earshot-Zahl.
SKILL_DIR unten = der Ordner dieses Skills (angezeigt als sein Stammverzeichnis, wenn der Skill geladen wird). Arbeite im Ordner des Videos. Lege alles, was du erstellst, unter foley/ neben dem Video ab.
Voraussetzungen
ffmpegundffprobeim PATH, Python 3.10+.earshotim PATH:uv tool install "earshot[mcp] @ git+https://github.com/Leonxlnx/earshot"dannearshot doctor --fetch(~1,1 GB Modelle, nur CPU).- Internet für Openverse (anonymes Limit: ca. 20 Anfragen pro Minute, 200 pro Tag).
1. Cues finden (schauen, dann messen)
python3 SKILL_DIR/scripts/find_cues.py VIDEO --out foley/cues-candidates.jsongibt Bewegungspeaks (Änderung von Frame zu Frame) aus und schreibt Kontaktabzüge nachfoley/sheets/.- Lies die Kontaktabzüge. Benenne jeden Moment, der einen Sound benötigt (Schlag, Schritt, Tür, Whoosh bei schneller Drehung, Sturz, Atmosphärenbett) und wähle seinen exakten Frame; nutze die Bewegungspeaks zur Eingrenzung, aber vertraue dem, was du siehst. Überspringe Kontakte, die du nicht wirklich sehen kannst.
- Schreibe
foley/cues.json:[{"id": "hit1", "t": 0.625, "kind": "hit", "what": "Faust trifft offene Handfläche"}, ...].
2. CC0-Sounds holen
Für jede Art 2–4 Suchwörter: python3 SKILL_DIR/scripts/fetch_cc0.py "Faustschlag Aufprall" foley/sounds/hit --limit 8.
Es behält nur license=cc0-Ergebnisse von source=freesound und protokolliert Titel, Urheber, Lizenz und Quellseite in foley/sounds/sources.json. CC0 benötigt keine Nennung, aber sag dem Benutzer, er solle die Quellseite öffnen, wenn die Nutzung kommerziell ist: Openverse garantiert nicht die Genauigkeit der Lizenz.
3. Mit earshot auswählen und trimmen
earshot rank "<wie der Moment klingt>" foley/sounds/<kind> --top 3 --out foley/rank-<kind>.json. Beschreibe den Klang, nicht das Bild („ein kurzer, scharfer Schlag einer Faust auf eine offene Handfläche“).earshot find DATEI "<gleiche Wörter>" --kind event --top 3 --out foley/find-<id>.jsonfür One-Shots;--kind texturefür ein Atmosphärenbett. Lehne Trims ab, die als Head Cut / Tail Cut markiert sind.- Notiere den Sync-Punkt jedes Trims: Bei Schlägen ist es der Attack (Start + ~5 ms); bei Whooshes ist es der lauteste Punkt, nicht der Start.
4. Platzieren
Schreibe foley/plan_v1.json (siehe Kopf von scripts/mix.py) und führe python3 SKILL_DIR/scripts/mix.py foley/plan_v1.json aus. Das Bild wird kopiert, nie neu kodiert.
5. Abhören und korrigieren (der wichtige Teil)
earshot timeline OUT.mp4 --cues "t1,t2,..." --out foley/timeline_v1.jsonpython3 SKILL_DIR/scripts/check.py foley/timeline_v1.json id1,id2,... foley/check_v1.jsonEin Cue besteht, wenn der gehörte Einsatz innerhalb von 40 ms des Frames liegt und mindestens 6 dB über dem Hintergrund liegt.- Korrigiere nur die nicht bestandenen um den gemessenen Betrag:
- zu spät / zu früh → verschiebe dieses Event um den Offset (Whooshes sind meist zu spät, weil ihr Peak nach dem Start kommt);
- zu leise (< 6 dB über Hintergrund) → erhöhe es oder senke den Hintergrund;
- True Peak über −1 dBTP oder Clipping → senke den lautesten Schlag (ein Limiter kann einen Transienten auf den ersten Samples nicht abfangen).
- Schreibe
plan_v2.json, rendere, höre erneut ab. Wiederhole, bis ALLE BESTEHEN und True Peak ≤ −1 dBTP. - Lautstärke: Eine reine Soundeffektspur ist peakig und misst normalerweise etwa −20 LUFS bei True Peak ≤ −1 dBTP. Das ist erwartet; stelle die endgültige Lautstärke später im Schnitt mit Sprache/Musik ein. Erhöhe hier nicht die Lautstärke.
6. Bericht
Schreibe foley/report.md: jeden Cue (Zeit, Frame, Beschreibung), die verwendete Datei (Titel, Urheber, CC0-Quellseite), den Offset und Pegel des ersten Abhörens, was du geändert hast, und die endgültigen Werte. Sage klar, dass die Prüfungen earshot-Messungen und kein menschliches Hören sind, und schlage vor, dass der Benutzer einmal selbst hört.
Regeln
- Nur CC0-Sounds, es sei denn, der Benutzer wünscht etwas anderes. Verwende niemals einen Sound ohne seinen
sources.json-Eintrag. - Erfinde keinen Schlag, den du nicht sehen kannst. Behaupte nicht, dass ein Sound „richtig klingt“; zitiere earshot.
- Lasse das Originalvideo unberührt; schreibe
<name>-sfx.mp4.