Communitygithub.com

kajisho5/sound-design-skill

Musikbetten (BGM) und Soundeffekte für ein Video als WAV-Dateien mit vollständiger Herkunft, die an audio-production-skill MIX übergeben werden – lokal generiert (ACE-Step 1.5 für BGM, EzAudio für SFX, beide optional installierbar, niemals heruntergeladen) oder aus der eigenen Bibliothek des Benutzers mit deklarierter Lizenz ausgewählt, getrimmt und geloopt (kein Motor). Nahtlose Loop-Betten und Übergangs-Stinger, die auf einen Schnitt getaktet sind. Verwenden Sie dies, wenn Sie aufgefordert werden, Hintergrundmusik oder ein Musikbett einer bestimmten Länge und Stimmung, einen Soundeffekt (eine Tür, Schritte, ein Whoosh), ein loopbares Bett oder einen Stinger, der auf einen Schnitt landet, zu erstellen, einen Ordner mit lizenzierter BGM/SFX aufzubauen oder zu durchsuchen oder einen Bibliothekstitel an eine Szene anzupassen. EzAudio läuft nur, nachdem der Benutzer über seine Trainingsdaten informiert wurde. Alle Vorgänge sind EXPERIMENTELL; hier wird nichts gemischt.

Was ist sound-design-skill?

Dieses Skill ermöglicht die lokale Generierung von Hintergrundmusik (BGM) und Soundeffekten (SFX) für Videoproduktionen, entweder durch KI-Modelle (ACE-Step 1.5 für BGM, EzAudio für SFX) oder durch die Verwaltung einer benutzereigenen, lizenzierten Soundbibliothek. Die generierten Ergebnisse werden als WAV-Dateien mit vollständiger Herkunftsangabe (Provenance) ausgegeben und sind für die nahtlose Übergabe an das audio-production-skill MIX zur weiteren Bearbeitung (Platzierung, Ducking, Lautstärkeanpassung) konzipiert. Es bietet Funktionen zum Importieren von Sounddateien mit Lizenzinformationen, zum bibliotheksbasierten Auswählen und Anpassen von Titeln an eine bestimmte Dauer, zum Erstellen nahtloser Loops und präziser Stinger, die auf Schnitte getaktet sind. Jegliche Vorgänge, die auf KI-Modellen basieren (insbesondere EzAudio), erfordern ausdrückliche Zustimmung des Benutzers aufgrund von Trainingsdatenbeschränkungen.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kajisho5/sound-design-skill/tree/HEAD

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht sound-design-skill?

Führe sound-design <befehl> ... --json aus (installiert mit pip install -e ., Python >= 3.9, nur Standardbibliothek). Mit --json enthält stdout genau ein JSON-Dokument, nur ASCII. Sondieren, Schneiden, Zusammenfügen und Lautstärke erfolgen über ffmpeg-skill, gefunden über --ffmpeg-skill DIR, $SOUND_DESIGN_FFMPEG_SKILL_DIR, $VIDEO_AGENT_FFMPEG_SKILL_DIR, ~/.claude/skills/ffmpeg-skill, ./vendor/ffmpeg-skill oder ../ffmpeg-skill. sound-design doctor --json gibt an, welche Engines OK, MISSING oder INCOMPATIBLE sind, das Rechengerät und den GPU-Speicher und wie jede Engine installiert wird; es lädt nie etwas herunter.

AufgabeBefehl
Ein 60 s Musikbettsound-design generate-bgm --prompt "ruhiges Klavierbett" --tags "ambient,70 bpm" --duration 60 -o bett.wav --seed 42 --json (10-600 s)
Ein 120 BPM Bett für ein 15 s Lyrikvideo, mit seinem Beat-Rastersound-design generate-bgm --prompt "fröhlicher Pop" --duration 15 --bpm 120 --time-signature 4 -o pv.wav --json (wird 16 s = 8 Takte; pv.beats.json daneben)
Gleiches, mit Text / auf der CPUfüge --lyrics lyrics.txt / --device cpu hinzu (Standard instrumental, --device auto)
Ein Bett aus dem größeren 4B XL Modell (Opt-in, eine GPU mit >= 20 GB)sound-design generate-bgm --prompt "filmische Streicher" --duration 60 -o bett.wav --model acestep-v15-xl-turbo --json (siehe "Auswahl des BGM-Modells")
Ein Soundeffekt (nach Zustimmung des Benutzers, siehe unten)sound-design generate-sfx --prompt "eine Holztür schließt" --tags "innen" --duration 3 -o tuer.wav --seed 7 --acknowledge-ezaudio-training-data --json (ganze Sekunden, 1-10)
Hinzufügen der eigenen Datei eines Benutzers zu einer Bibliotheksound-design library-import track.wav --library ./sounds --licence CC-BY-4.0 --credit "Musik: Name" --kind bgm --tags klavier --mood ruhig --loopable --json
Hinzufügen eines heruntergeladenen Stock-Tracks mit seinen Lizenzdatensound-design library-import track.mp3 --library ./sounds --licence CC-BY-4.0 --title "Morgenlicht" --author "Aiko Tanaka" --licence-url https://creativecommons.org/licenses/by/4.0/ --licence-file LICENSE.txt --provider Freesound --kind bgm --json (füge --attribution "<zeile>" hinzu, wenn die Quelle eine angibt, --content-id registered nur, wenn die Quelle dies sagt)
Was in einer Bibliothek ist, mit Lizenzen und Längensound-design library-index ./sounds --loudness --json
Ein Bibliothekstitel, angepasst auf 60 ssound-design library-pick ./sounds --kind bgm --tags klavier --duration 60 -o bett.wav --json (füge --file <pfad> hinzu, um den Titel zu benennen, --crossfade 0.5 für Loops)
Ein nahtloser 8 s Loop eines Betts (für Loops in einem Schnitt)sound-design loop-bed bett.wav -o loop.wav --duration 8 --search 1 --json (Quelle mindestens so lang wie Dauer + Crossfade; der Loop-Punkt wird innerhalb von --search s gesucht)
Ein 1 s Whoosh, dessen Spitze auf den Schnitt bei 0.5 s trifftsound-design stinger whoosh.wav -o stinger.wav --duration 1 --peak-at 0.5 --type whoosh --json
Überprüfung der Übergänge einer geloopten Dateisound-design seam-check loop-x10.wav --period 8 --json (oder --seams 8,16; beende mit 1, wenn ein Übergang fehlschlägt)
Effekte auf den Schnitten und Betonungs-Beschriftungen (ein Cue-Blatt für MIX)sound-design sfx-cues --cuts 1.0,2.5,4.75 --emphasis 3.2 --library ./sounds --min-spacing 0.25 -o cues.json --json (Schnitt = Whoosh, Betonung = Pop, außer --effect cut=<name>; --file ding=ding.wav für einen generierten Effekt)
Gleiches, keine Datei wird innerhalb von 30 s wiederholt, und helle Popssound-design sfx-cues --cuts 1.0,12.0,25.0 --emphasis 3.2 --library ./sounds --min-reuse-spacing 30 --character pop=bright -o cues.json --json (beides Opt-in; siehe unten)
Was installiert istsound-design doctor --json, sound-design engines --json
Was dieses Skill deklariertsound-design contract --json (Alias skill --json)

Jeder Vorgang akzeptiert --timeout S und --ffmpeg-skill DIR; diejenigen, die eine Datei schreiben, akzeptieren --overwrite (eine vorhandene Ausgabe wird ohne diese verweigert); die Generatoren akzeptieren auch --seed (wird gezogen und aufgezeichnet, wenn weggelassen) und --offline. Die Ausgabe ist eine neue .wav; die Eingabe wird nie verändert, und eine Ausgabe erscheint vollständig oder gar nicht, nachdem ffmpeg-skill probe sie überprüft hat.

Wann verwenden

  • Der Benutzer hat Musik oder Effekte mit einer bekannten Lizenz (gekaufte Pakete, beauftragte Titel, CC0 / CC BY): zuerst den Bibliotheksmodus. library-import jede Datei mit ihrer Lizenz, dann library-pick für jede Szene. Keine Engine läuft und nichts wird KI-generiert (ai_generated: false).
  • Nichts Passendes in der Bibliothek: generate-bgm (ACE-Step) oder generate-sfx (EzAudio), wenn doctor die Engine als OK anzeigt.
  • Dann immer übergebe die WAV und ihre Herkunft an audio-production-skill MIX, das sie platziert, unter Sprache duckt und die Lautstärke einstellt. Dieses Skill mischt, duckt oder normalisiert nicht.

Loops und Stinger

  • loop-bed und stinger betreiben keine Engine. Sie nehmen eine WAV, die Sie bereits haben (ein Ergebnis von generate-bgm, generate-sfx oder library-pick, oder die Datei des Benutzers), bearbeiten sie nur über ffmpeg-skill und messen das Ergebnis; ihre Lizenz und Engine bleiben in der eigenen Herkunft der Quelle, also geben Sie beide weiter.
  • Das Ende eines Loops läuft ohne Klick in seinen Anfang über: wiederholen Sie ihn Ende an Anfang, ohne Crossfade. Das Ergebnis meldet die gefundene Loop-Länge (loop.length, innerhalb von --search von --duration), wie ähnlich das überblendete Material ist (loop.similarity; eine Warnung unter 0.5) und die gemessene Nahtstelle (seam). Eine ganze Anzahl von Takten loopt am besten.
  • Ein Stinger ist genau --duration lang und seine lautesten 10 ms liegen innerhalb von 10 ms von --peak-at (mindestens 20 ms von jedem Ende entfernt), sonst wird nichts geschrieben. Sage MIX, es --peak-at Sekunden vor dem Schnitt zu starten.
  • seam-check ist die eigene Loop-Überprüfung dieses Skills: Klick (±1 ms), Pegel und Oktavband-Spektrum von 1 s auf jeder Seite. qc-skill hat noch keine Loop-Naht-Prüfung.

Soundeffekt-Cue-Blätter

  • sfx-cues platziert nichts und entscheidet nichts: Die Zeiten stammen vom Aufrufer (aus der Schnittliste des Schnitts und den Betonungsbeschriftungen), ein Cue pro Zeit. Eine Zeit, die näher als --min-spacing an dem letzten behaltenen Cue liegt, wird verworfen (unter dropped mit Grund aufgelistet), niemals verschoben. Erfinden Sie niemals Betonungszeiten dafür.
  • Jeder Cue gibt an, welche Datei (file, from: Bibliothek oder eine benannte WAV, source: ihr Eintrag unter sources mit der Lizenz), wo sie beginnt (start; file_offset, wenn sie vor 0 beginnen würde), ihren gain_db, um --level dBFs zu erreichen, und ob ihr Peak (Whoosh, Rise, ...) oder ihr Einsatz (Pop, Ding, ...) auf der Zeit liegt. Bibliothekseffekte benötigen eine deklarierte Lizenz, ausgewählt wie library-pick nach dem Effektnamen als Tag. Übergeben Sie das Blatt an audio-production-skill MIX mit den Lizenzen der Quellen.
  • Die gleiche Datei erneut (Opt-in, standardmäßig aus). --min-reuse-spacing S: Ein Ereignis, dessen Effekt die gleiche Datei (gleiche SHA-256) abspielen würde wie ein Cue, der weniger als S s früher behalten wurde, nimmt die nächste Bibliotheksdatei für diesen Effekt in der Rangfolge (die erstplatzierte, wann immer sie frei ist; niemals zufällig). Wenn keine andere berechtigte Datei vorhanden ist, oder für einen --file Effekt, wird das Ereignis verworfen (dropped[].by: min_reuse_spacing), niemals verschoben und niemals mit einem anderen Effekt versehen. substitutions und jedes substituted in jedem Cue geben an, welche Datei welche ersetzt hat. Die --min-spacing Prüfung kommt zuerst; ein verworfenes Ereignis zählt für keine der beiden Regeln. Vorgeschlagen: 30 s für einen Talking-Head-Schnitt; kürzer für schnelle Schnitte, da ein Effekt mit N Dateien höchstens N Cues in beliebigen S s hat; lassen Sie es aus, wenn ein einzelner charakteristischer Klang gewünscht wird. Informieren Sie den Benutzer, wenn Cues verworfen wurden.
  • Charakter (Opt-in). --character pop=bright (oder "character": ["bright"] eines Ereignisses, das dieses ersetzt) behält nur die Bibliotheksdateien für diesen Effekt, deren Tags oder Stimmung jedes Wort tragen. Es gleicht ab, was die Bibliothek bereits sagt; es erschließt oder fügt niemals einen Tag hinzu, und keine passende Datei ist INPUT_NOT_FOUND: importieren Sie die Datei oder taggen Sie sie, raten Sie nie. Zu verwendende Wörter in library-import --tags / --mood und hier: bright, dark, warm, metallic, soft, hard, punchy, subtle, short, long, high, low, rising, falling, airy, playful (andere Wörter passen auch).

Fragen Sie den Benutzer vor EzAudio

EzAudio (generate-sfx) wurde auf YouTube-Audio (AudioSet, VGGSound, AudioCaps) trainiert, das nicht für das Training durch seine Eigentümer lizenziert ist. Aufgrund der Entscheidung des Eigentümers wird der Benutzer darüber informiert, bevor es ausgeführt wird. Ohne --acknowledge-ezaudio-training-data stoppt generate-sfx mit CONFIRMATION_REQUIRED (Exit 8), bevor etwas unternommen wird; die Nachricht gibt den Hinweis auf Englisch und Japanisch. Zeigen Sie dem Benutzer diese Nachricht und übergeben Sie das Flag nur, nachdem er zugestimmt hat; fügen Sie es niemals selbst hinzu. contract --json (das generate-sfx Tool) und doctor --json (checks.operations.sfx) tragen confirmation_required: true, damit ein Orchestrator zuerst fragen kann. Die Bestätigung wird in der Herkunft aufgezeichnet, und jedes SFX-Ergebnis wiederholt die Trainingsdatenwarnung: geben Sie sie weiter.

Lizenzen im Bibliotheksmodus

  • library-import verweigert eine fehlende, leere oder Platzhalterlizenz (unknown, n/a, ...) mit LICENCE_REQUIRED (Exit 2). Fragen Sie den Benutzer nach der Lizenz; füllen Sie niemals eine aus.
  • Eine Lizenz wird genau wie deklariert aufgezeichnet, mit verified: false. Dieses Skill prüft oder löscht keine Lizenzen: sagen Sie "deklariert als CC-BY-4.0", niemals "geprüft".
  • library-index meldet eine Datei ohne deklarierte Lizenz als licence: "unknown", und library-pick verwendet sie niemals (sie wird unter excluded mit Grund aufgeführt).
  • Geben Sie die Warnungen weiter: eine nicht-kommerzielle Bedingung, eine Bedingung ohne Bearbeitung bei einer getrimmten oder geloopten Datei, eine CC BY-Lizenz ohne Gutschrift, eine seit dem Import geänderte Datei. Behalten Sie die Gutschrift bei allem Veröffentlichten.
  • Stock-Tracks. Importieren Sie, was der Benutzer heruntergeladen hat, mit dem, was die Quelle angibt: --licence, --licence-url und/oder --licence-file (kopiert in licences/), --title, --author, --provider, --attribution, --content-id. Das Skill lädt nichts herunter; doctor listet Stock-Quellen auf (MISSING ohne API-Schlüssel, MANUAL ohne API) ruft sie aber niemals auf. Die Quittung (licence.attribution im library-pick Ergebnis und Herkunft, handoff.credit_line) trägt die Gutschriftszeile: die deklarierte, sonst die Gutschrift, sonst für CC BY eine, die nur aus deklarierten Teilen zusammengesetzt ist (gewarnt: überprüfen Sie sie). Setzen Sie sie in die Videobeschreibung oder die Abspann Credits. Ein Track, der als --content-id registered deklariert wurde, wird gewarnt: Der Upload könnte einen Claim erhalten, also informieren Sie den Benutzer vor der Veröffentlichung.
  • Anpassung: Innerhalb von max(0.1 s, 1 %) wird die Datei ganz verwendet; eine längere Datei wird getrimmt (kein Fade: MIX blendet); eine kürzere Datei wird mit einem Crossfade nur geloopt, wenn sie mit --loopable importiert wurde, sonst wird sie ausgeschlossen. Die gleiche Bibliothek und Abfrage ergeben immer die gleiche Datei.

Grenzen, die dem Benutzer mitgeteilt werden müssen

  • EXPERIMENTELL. audio.bgm_generate, audio.sfx_generate und audio.library_import haben den Lebenszyklus EXPERIMENTAL. Die Seed-Deterministik und Dauergenauigkeit der echten ACE-Step und EzAudio wurden noch nicht gemessen (die Tests verwenden Fake-Engines mit der gleichen API). Sagen Sie, das Ergebnis sei generiert und sollte angehört werden.
  • Generierte Musik wird nicht auf Ähnlichkeit mit bestehenden Aufnahmen überprüft; Musikerkennung und Urheberrechtsprüfungen sind nicht Aufgabe dieses Skills. Die Aussage zur kommerziellen Nutzung von ACE-Step ist die Behauptung des Anbieters.
  • Tempo. Mit --bpm wird die Länge zur nächsten ganzen Anzahl von Takten (eine Warnung sagt dies), so dass das Bett auf einer Taktlinie endet, und das Beat-Raster (jeder Beat, Downbeats, Taktlinien) wird als <name>.beats.json geschrieben und als tempo_map zurückgegeben. Das Raster ist das angeforderte mit dem ersten Beat bei 0 s (measured: false): ACE-Step wurde nach dem Tempo gefragt, aber wie gut es es hält, wird nicht gemessen. Geben Sie das Raster weiter; nennen Sie es nicht gemessen.
  • ACE-Step läuft nur DiT (sein Sprachmodell ist ausgeschaltet, bis die Qwen3-Basislizenzen überprüft sind), daher steuern Prompts den Stil, nicht die Struktur.
  • Lesen und geben Sie jeden Eintrag von warnings weiter.

Engines (optional)

OpEngineInstallation
generate-bgmACE-Step 1.5 (MIT Code und Gewichte; 2B turbo standardmäßig, 4B XL turbo mit --model), Python 3.11-3.12 in einem eigenen Checkout und .venvdoctor gibt die exakte Zeile aus; setze SOUND_DESIGN_ACESTEP_PYTHON (und SOUND_DESIGN_ACESTEP_CHECKPOINTS, sonst den Hugging Face Cache)
generate-sfxEzAudio-XL (MIT Code und Gewichte, Flan-T5-XL Apache-2.0) in einem eigenen Checkout und .venvdoctor gibt die exakte Zeile aus; setze SOUND_DESIGN_EZAUDIO_PYTHON und SOUND_DESIGN_EZAUDIO_DIR (Checkout mit ckpts/); Flan-T5-XL im Hugging Face Cache
Bibliotheksmoduskeinenichts zu installieren außer ffmpeg-skill

Auswahl des BGM-Modells

generate-bgm führt das ACE-Step 2B Turbo Modell aus, acestep-v15-turbo, es sei denn, --model sagt etwas anderes (Anforderungsschlüssel model). Es benötigt weniger als 4 GB GPU-Speicher und läuft auch auf der CPU (langsam). --model acestep-v15-xl-turbo wählt das XL Turbo Modell: ein 4B DiT, MIT wie der Standard, mit kommerzieller Nutzung der Ausgabe, die auf seiner eigenen Modellkarte angegeben ist. Wählen Sie es aus doctor --json, checks.operations.bgm.models, wo jedes Modell ready, seine Dateien, vram und install hat:

  • GPU-Speicher. XL benötigt eine GPU mit mindestens 20 GB, da dieses Skill es ohne CPU-Offload oder Quantisierung ausführt. Seine Modellkarte listet 12 GB (mit Offload und INT8), 16 GB (mit Offload), 20 GB (ohne Offload) und 24 GB (mit dem 4B LM) auf. Unter 20 GB, oder ohne GPU, stoppt generate-bgm --model acestep-v15-xl-turbo vor allem mit INSUFFICIENT_VRAM (Exit 3). Informieren Sie den Benutzer und bieten Sie das Standardmodell an (error.details.default_model): entfernen Sie --model. Apple Silicon zählt seinen einheitlichen Speicher, den die CPU teilt. Wenn der GPU-Speicher nicht gemessen werden kann (ROCm, Intel XPU), wird das Bett erstellt und eine Warnung sagt, dass es nicht überprüft wurde. Eine Intel GPU wird nur durch xpu-smi bemerkt; auf einer ohne, übergeben Sie --device xpu.
  • Herunterladen. Etwa 20 GB mehr auf der Festplatte, in das gleiche Checkpoints-Verzeichnis wie das Hauptmodell (SOUND_DESIGN_ACESTEP_CHECKPOINTS; ein Hugging Face Cache Snapshot funktioniert nicht für XL). Ohne dieses stoppt der Aufruf mit MODEL_NOT_FOUND und error.details.install gibt die Zeile, zum Beispiel uv run acestep-download --model acestep-v15-xl-turbo --di

…

[abgeschnitten für Übersetzung]

Verwandte Skills