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.
| Aufgabe | Befehl |
|---|---|
| Ein 60 s Musikbett | sound-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-Raster | sound-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 CPU | fü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 Bibliothek | sound-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 Lizenzdaten | sound-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ängen | sound-design library-index ./sounds --loudness --json |
| Ein Bibliothekstitel, angepasst auf 60 s | sound-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 trifft | sound-design stinger whoosh.wav -o stinger.wav --duration 1 --peak-at 0.5 --type whoosh --json |
| Überprüfung der Übergänge einer geloopten Datei | sound-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 Pops | sound-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 ist | sound-design doctor --json, sound-design engines --json |
| Was dieses Skill deklariert | sound-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-importjede Datei mit ihrer Lizenz, dannlibrary-pickfür jede Szene. Keine Engine läuft und nichts wird KI-generiert (ai_generated: false). - Nichts Passendes in der Bibliothek:
generate-bgm(ACE-Step) odergenerate-sfx(EzAudio), wenndoctordie Engine alsOKanzeigt. - 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-bedundstingerbetreiben keine Engine. Sie nehmen eine WAV, die Sie bereits haben (ein Ergebnis vongenerate-bgm,generate-sfxoderlibrary-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--searchvon--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
--durationlang 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-atSekunden vor dem Schnitt zu starten. seam-checkist 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-cuesplatziert 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-spacingan dem letzten behaltenen Cue liegt, wird verworfen (unterdroppedmit 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 untersourcesmit der Lizenz), wo sie beginnt (start;file_offset, wenn sie vor 0 beginnen würde), ihrengain_db, um--leveldBFs 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 wielibrary-picknach 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--fileEffekt, wird das Ereignis verworfen (dropped[].by: min_reuse_spacing), niemals verschoben und niemals mit einem anderen Effekt versehen.substitutionsund jedessubstitutedin jedem Cue geben an, welche Datei welche ersetzt hat. Die--min-spacingPrü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 istINPUT_NOT_FOUND: importieren Sie die Datei oder taggen Sie sie, raten Sie nie. Zu verwendende Wörter inlibrary-import --tags/--moodund 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-importverweigert eine fehlende, leere oder Platzhalterlizenz (unknown,n/a, ...) mitLICENCE_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-indexmeldet eine Datei ohne deklarierte Lizenz alslicence: "unknown", undlibrary-pickverwendet sie niemals (sie wird unterexcludedmit 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-urlund/oder--licence-file(kopiert inlicences/),--title,--author,--provider,--attribution,--content-id. Das Skill lädt nichts herunter;doctorlistet Stock-Quellen auf (MISSINGohne API-Schlüssel,MANUALohne API) ruft sie aber niemals auf. Die Quittung (licence.attributionimlibrary-pickErgebnis 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 registereddeklariert 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
--loopableimportiert 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_generateundaudio.library_importhaben den LebenszyklusEXPERIMENTAL. 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
--bpmwird 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.jsongeschrieben und alstempo_mapzurü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
warningsweiter.
Engines (optional)
| Op | Engine | Installation |
|---|---|---|
generate-bgm | ACE-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 .venv | doctor gibt die exakte Zeile aus; setze SOUND_DESIGN_ACESTEP_PYTHON (und SOUND_DESIGN_ACESTEP_CHECKPOINTS, sonst den Hugging Face Cache) |
generate-sfx | EzAudio-XL (MIT Code und Gewichte, Flan-T5-XL Apache-2.0) in einem eigenen Checkout und .venv | doctor 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 |
| Bibliotheksmodus | keine | nichts 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-turbovor allem mitINSUFFICIENT_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 durchxpu-smibemerkt; 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 mitMODEL_NOT_FOUNDunderror.details.installgibt die Zeile, zum Beispieluv run acestep-download --model acestep-v15-xl-turbo --di
…
[abgeschnitten für Übersetzung]