Communitygithub.com

サウンドデザインスキル

ビデオ用のBGM(バックグラウンドミュージック)と効果音をWAVファイルとして生成し、完全な来歴情報を付与してオーディオ制作スキルMIXに引き渡します。ローカル生成(ACE-Step 1.5 for BGM、EzAudio for SFX。どちらもオプションインストールで、ダウンロードは行いません)またはユーザー自身のライブラリからライセンスが宣言されたファイルを選択、トリミング、ループさせることができます。シームレスなループBGMやカットに合わせたトランジションスティンガーも作成可能です。

サウンドデザインスキル とは?

このスキルは、ビデオ編集におけるBGM(バックグラウンドミュージック)と効果音(SFX)の生成、管理、編集を担当します。主に3つのモードで動作します。1) AI生成モード:ACE-Step 1.5を使用してBGMを、EzAudioを使用してSFXをローカル生成します。2) ライブラリモード:ユーザーがライセンスを明示的に宣言したファイル(購入パック、委託制作、CC0/CC BYライセンスなど)をインポートし、ライブラリとして管理します。3) 編集モード:生成またはライブラリから選択したファイルをループ化、スティンガー化、シームチェックし、カットに合わせた効果音キューシートを作成します。すべての操作はffmpeg-skillに依存しており、Python 3.9以上と標準ライブラリのみで動作します。JSON出力をサポートし、他のAIエージェントやオーケストレーションツールとの連携が容易です。BGM生成はテンポ指定(BPM)が可能で、ビートグリッドも出力されます。ただし、すべての操作はEXPERIMENTAL(実験的)であり、生成結果は必ず聴取確認が必要です。また、EzAudioの使用には、その学習データ(YouTube音声を含む)についてユーザーに事前に説明し、同意を得る必要があります。ライセンス管理機能は、ファイルのライセンス確認やクリアランスを行うものではなく、あくまでユーザーが宣言した情報を記録・伝達します。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

sound-design-skill

sound-design <command> ... --json を実行(pip install -e . でインストール、Python >= 3.9、標準ライブラリのみ)。--json を付けると、stdoutは正確に1つのJSONドキュメントのみを出力し、ASCIIのみを使用します。プロービング、カット、結合、ラウドネスはffmpeg-skillを通じて行われ、--ffmpeg-skill DIR、$SOUND_DESIGN_FFMPEG_SKILL_DIR、$VIDEO_AGENT_FFMPEG_SKILL_DIR、~/.claude/skills/ffmpeg-skill、./vendor/ffmpeg-skill、または../ffmpeg-skillの順で検索されます。sound-design doctor --jsonは、各エンジンがOK、MISSING、INCOMPATIBLEのいずれであるか、計算デバイスとGPUメモリ、および各エンジンのインストール方法を表示します。このコマンドは何もダウンロードしません。

タスクコマンド
60秒の音楽BGMの生成sound-design generate-bgm --prompt "calm piano bed" --tags "ambient,70 bpm" --duration 60 -o bed.wav --seed 42 --json (10〜600秒)
15秒のリリックビデオ用120BPMのBGM、ビートグリッド付きsound-design generate-bgm --prompt "upbeat pop" --duration 15 --bpm 120 --time-signature 4 -o pv.wav --json (16秒 = 8小節になります。pv.beats.jsonが隣に生成されます)
同条件、歌詞あり / CPUで実行--lyrics lyrics.txt / --device cpu を追加 (デフォルトはインストゥルメンタル、--device auto)
より大きな4B XLモデルを使用 (オプトイン、20GB以上のGPUが必要)sound-design generate-bgm --prompt "cinematic strings" --duration 60 -o bed.wav --model acestep-v15-xl-turbo --json (「BGMモデルの選択」を参照)
効果音の生成(ユーザーの同意後、下記参照)sound-design generate-sfx --prompt "a wooden door closes" --tags "indoor" --duration 3 -o door.wav --seed 7 --acknowledge-ezaudio-training-data --json (秒単位、1〜10秒)
ユーザー自身のファイルをライブラリに追加sound-design library-import track.wav --library ./sounds --licence CC-BY-4.0 --credit "Music: name" --kind bgm --tags piano --mood calm --loopable --json
ダウンロードしたストックトラックをライセンス情報と共に追加sound-design library-import track.mp3 --library ./sounds --licence CC-BY-4.0 --title "Morning Light" --author "Aiko Tanaka" --licence-url https://creativecommons.org/licenses/by/4.0/ --licence-file LICENSE.txt --provider Freesound --kind bgm --json (ソースが提供する場合は--attribution "<line>"、ソースが明示する場合のみ--content-id registeredを追加)
ライブラリの内容(ライセンスと長さ)を表示sound-design library-index ./sounds --loudness --json
ライブラリのトラックを60秒にフィットさせるsound-design library-pick ./sounds --kind bgm --tags piano --duration 60 -o bed.wav --json (トラックを指定するには--file <path>、ループ用に--crossfade 0.5を追加)
BGMのシームレスな8秒ループの作成(編集内のループ用)sound-design loop-bed bed.wav -o loop.wav --duration 8 --search 1 --json (ソースは少なくとも duration + crossfade の長さが必要。ループポイントは--search秒以内で検索されます)
0.5秒のカットにピークが合う1秒のウーッシュ音sound-design stinger whoosh.wav -o stinger.wav --duration 1 --peak-at 0.5 --type whoosh --json
ループファイルの継ぎ目のチェックsound-design seam-check loop-x10.wav --period 8 --json (または--seams 8,16。継ぎ目不合格時に終了コード1を返す)
カットと強調キャプションに対する効果音(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 (カット=ウーッシュ音、強調=ポップ音。--effect cut=<name>で変更可能、--file ding=ding.wavで生成済み効果音を指定)
同条件、30秒以内に同じファイルを再使用せず、明るいポップ音を使用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 (両方ともオプトイン、下記参照)
インストール状況の確認sound-design doctor --json、sound-design engines --json
このスキルの宣言内容の確認sound-design contract --json (エイリアス: skill --json)

すべての操作は--timeout Sと--ffmpeg-skill DIRを受け付けます。ファイルを書き込む操作は--overwriteを受け付けます(これがないと既存の出力ファイルへの上書きは拒否されます)。生成系の操作は--seed(省略時はランダムに生成され記録されます)と--offlineも受け付けます。出力は新しい.wavファイルです。入力は決して変更されず、出力はffmpeg-skillのprobeでチェックされた後、全か無かで書き込まれます。

使用すべきタイミング

  • ユーザーが既知のライセンスを持つ音楽や効果音を持っている場合(購入パック、委託制作トラック、CC0 / CC BY ライセンスなど):最初にライブラリモードを使用します。各ファイルをそのライセンス情報と共にlibrary-importし、各シーンに対してlibrary-pickを実行します。エンジンは実行されず、AI生成は行われません(ai_generated: false)。
  • ライブラリに適切なものが見つからない場合: generate-bgm(ACE-Step)またはgenerate-sfx(EzAudio)を使用します。ただし、doctorが該当エンジンをOKと表示している場合に限ります。
  • その後、常に WAVファイルとそのprovenance(来歴情報)を audio-production-skill MIX に引き渡します。MIXがファイルの配置、発話下でのダッキング、ラウドネス設定を行います。このスキルはミキシング、ダッキング、ノーマライゼーションを行いません。

ループとスティンガー

  • loop-bedとstingerはエンジンを実行しません。既に持っているWAVファイル(generate-bgm、generate-sfx、library-pickの結果、またはユーザーのファイル)を入力として、ffmpeg-skillのみを使って編集し、結果を測定します。そのライセンスとエンジン情報は元のソースの来歴情報に残るため、両方とも引き継いで渡してください。
  • ループの終端は始端にクリックノイズなく接続されます。ファイルを終端から始端に繰り返し、クロスフェードは行いません。結果は、見つかったループ長(loop.length、--durationから--search以内)、クロスフェードされた素材の類似度(loop.similarity、0.5未満は警告)、測定されたラップ(seam)を報告します。ループは整数小節数が最適です。
  • スティンガーは正確に--durationの長さで、その最も音量の大きい10msが--peak-atの10ms以内に位置します(両端から少なくとも20ms以上離れている必要があります)。条件を満たさない場合、何も書き込まれません。MIXには、カットの--peak-at秒前にスティンガーを開始するように指示してください。
  • seam-checkはこのスキル独自のループチェックです。クリック(±1ms)、レベル、各1秒間のオクターブバンドスペクトルをチェックします。qc-skillはまだループシームチェックを持っていません。

効果音キューシート

  • sfx-cuesは何も配置せず、何も決定しません。時間は呼び出し元(編集のカットリストと強調キャプションから)が指定し、各時間に1つのキューが作成されます。--min-spacingよりも直近の保持キューとの間隔が短い時間はドロップされ(理由と共にdroppedにリストされます)、移動されることはありません。強調時間をこの機能のために新たに考案してはいけません。
  • 各キューは、使用するファイル(file、from:ライブラリまたは指定されたWAVファイル、source:ライセンスを含むsources内のエントリ)、開始位置(start、file_offsetは0より前の開始を示す場合があります)、--level dBFSに到達するためのゲイン(gain_db)、そしてそのピーク(ウーッシュ音、上昇音など)またはオンセット(ポップ音、ディン音など)がその時間に位置するかどうかを示します。ライブラリの効果音は、宣言されたライセンスが必要であり、効果音名をタグとしてlibrary-pickと同様に選択されます。キューシートは、ソースのライセンスと共に audio-production-skill MIX に渡してください。
  • 同じファイルの再使用(オプトイン、デフォルトではオフ)。 --min-reuse-spacing S:あるイベントが、S秒未満前に保持されたキューと同じファイル(同じSHA-256)を再生する場合、その効果音に対してランク順で次のライブラリファイルが使用されます(利用可能な場合は常に最初のランクのファイル、ランダムではありません)。他に適格なファイルがない場合、または--fileで指定された効果音の場合、そのイベントはドロップされ(dropped[].by: min_reuse_spacing)、移動されたり別の効果音に置き換えられたりすることはありません。substitutionsと各キューのsubstitutedは、どのファイルがどのファイルを置き換えたかを示します。--min-spacingチェックが先に行われます。ドロップされたイベントはどちらのルールにもカウントされません。推奨値:トークヘッド編集では30秒。速いカット編集では短め(N個のファイルがある場合、任意のS秒間に効果音は最大N個のキューしか持てないため)。特定の単一のサウンドシグネチャが必要な場合はオフにしてください。キューがドロップされた場合はユーザーに伝えてください。
  • キャラクター(オプトイン)。 --character pop=bright(またはイベントの"character": ["bright"]。こちらは--characterの指定を上書きします)は、その効果音に対して、タグまたはムードに指定されたすべての単語が含まれるライブラリファイルのみを保持します。ライブラリが既に言っていることと一致させるものであり、タグを推測したり追加したりしてはいけません。一致するファイルがない場合はINPUT_NOT_FOUNDとなります。ファイルをインポートするかタグを付けてください。推測は禁物です。library-import --tags / --mood およびこのオプションで使用する単語:bright, dark, warm, metallic, soft, hard, punchy, subtle, short, long, high, low, rising, falling, airy, playful(他の単語も一致対象となります)。

EzAudio 使用前のユーザーへの確認

EzAudio(generate-sfx)は、その所有者によってトレーニング用にライセンスされていないYouTube音声(AudioSet、VGGSound、AudioCaps)でトレーニングされています。所有者の決定により、ユーザーは実行前にその旨を通知されます。--acknowledge-ezaudio-training-dataがない場合、generate-sfxは何かを行う前にCONFIRMATION_REQUIRED(終了コード8)で停止します。メッセージには英語と日本語で注意事項が表示されます。ユーザーにそのメッセージを表示し、ユーザーが同意した場合にのみフラグを渡してください。自分でフラグを追加してはいけません。contract --json(generate-sfxツール)とdoctor --json(checks.operations.sfx)はconfirmation_required: trueを保持するため、オーケストレーターは事前に確認を求めることができます。同意は来歴情報に記録され、すべてのSFX結果はトレーニングデータに関する警告を繰り返します。これを引き継いで渡してください。

ライブラリモードでのライセンス

  • library-importは、ライセンスが欠落している、空である、またはプレースホルダー(unknown、n/aなど)である場合、LICENCE_REQUIRED(終了コード2)で拒否します。ユーザーにライセンスを尋ねてください。決して自分で入力してはいけません。
  • ライセンスは宣言された通りに記録され、verified: falseとなります。このスキルはライセンスの確認やクリアランスを行いません。「CC-BY-4.0 として宣言されました」とは言いますが、「クリアランス済み」とは言いません。
  • library-indexは、宣言されたライセンスがないファイルをlicence: "unknown"として報告し、library-pickはそのようなファイルを決して使用しません(理由と共にexcludedにリストされます)。
  • 警告を引き継いで渡してください:非商用条件、トリミングまたはループされたファイルに対する二次的著作物禁止条件、クレジット表示なしのCC BYライセンス、インポート後に変更されたファイル。公開するものにはクレジットを保持してください。
  • ストックトラック。 ユーザーがダウンロードしたものを、ソースが記載している内容と共にインポートします:--licence、--licence-url、--licence-file(licences/にコピーされます)、--title、--author、--provider、--attribution、--content-id。このスキルは何もダウンロードしません。doctorはストックソースをリストします(APIキーがない場合はMISSING、APIがない場合はMANUAL)が、それらを呼び出すことは決してありません。レシート(library-pickの結果と来歴情報内のlicence.attribution、handoff.credit_line)はクレジット行を保持します:宣言されたもの、次いでクレジット、CC BYの場合は宣言された部分のみから構成されたもの(警告:確認してください)。これを動画の説明またはクレジットに記載してください。--content-id registeredと宣言されたトラックについては警告が表示されます:アップロード時にクレームが発生する可能性があるため、公開前にユーザーに伝えてください。
  • フィット:差が最大(0.1秒、1%)以内であればファイルはそのまま使用されます。より長いファイルはトリミングされます(フェードは行いません。MIXがフェードを担当します)。より短いファイルは、--loopableと共にインポートされた場合のみクロスフェードでループされ、そうでない場合は除外されます。同じライブラリとクエリは常に同じファイルを返します。

ユーザーに伝えるべき制限事項

  • EXPERIMENTAL(実験的)。 audio.bgm_generate、audio.sfx_generate、audio.library_importのライフサイクルはEXPERIMENTALです。実際のACE-StepおよびEzAudioのシード決定性と継続時間精度はまだ測定されていません(テストでは同じAPIを持つフェイクエンジンを使用しています)。結果は生成されたものであり、聴取確認が必要であると伝えてください。
  • 生成された音楽は既存の録音との類似性をチェックしていません。 音楽認識と著作権チェックはこのスキルの役割ではありません。ACE-Stepの商用利用に関する声明はベンダーの主張であり、このスキルはそれを伝達するのみです。
  • テンポ。 --bpmを指定すると、長さは最も近い整数の小節数になります(その旨の警告が表示されます)。これによりBGMは小節線で終了し、ビートグリッド(すべてのビート、強拍、小節線)は<name>.beats.jsonとして書き出され、tempo_mapとして返されます。グリッドは要求されたもので、最初のビートは0秒にあります(measured: false)。ACE-Stepは要求されたテンポで生成されますが、そのテンポをどの程度正確に維持しているかは測定されていません。グリッドは渡してください。これを「測定済み」と呼んではいけません。
  • ACE-StepはDiTのみを実行します(Qwen3ベースのライセンスが確認されるまで言語モデルはオフ)。そのため、プロンプトはスタイルを誘導しますが、構造は誘導しません。
  • warningsのすべてのエントリを読み、引き継いで渡してください。

エンジン(オプション)

操作エンジンインストール
generate-bgmACE-Step 1.5(MITコードおよびウェイト。デフォルトは2B turbo、--modelで4B XL turbo)、Python 3.11-3.12、専用のcheckoutディレクトリと.venvdoctorが正確なコマンドを表示。SOUND_DESIGN_ACESTEP_PYTHON(およびSOUND_DESIGN_ACESTEP_CHECKPOINTS、設定されていない場合はHugging Faceキャッシュ)を設定
generate-sfxEzAudio-XL(MITコードおよびウェイト、Flan-T5-XL Apache-2.0)、専用のcheckoutディレクトリと.venvdoctorが正確なコマンドを表示。SOUND_DESIGN_EZAUDIO_PYTHONとSOUND_DESIGN_EZAUDIO_DIR(ckpts/を含むcheckout)を設定。Flan-T5-XLはHugging Faceキャッシュ
ライブラリモードなしffmpeg-skill以外にインストールするものはなし

BGMモデルの選択

generate-bgmは、--modelで別の指定がない限り、ACE-Stepの2B turboモデルacestep-v15-turboを実行します(リクエストキーmodel)。必要なGPUメモリは4GB未満で、CPUでも動作します(低速)。--model acestep-v15-xl-turboはXL turboモデルを選択します。4B DiTで、デフォルトと同じMITライセンスであり、出力の商用利用は独自のモデルカードに記載されています。doctor --jsonのchecks.operations.bgm.modelsから選択します。各モデルにはready、ファイル、vram、installが含まれます。

  • GPUメモリ。 XLには少なくとも20GBのGPUメモリが必要です。このスキルはCPUオフロードや量子化なしで実行するため、モデルカードでは12GB(オフロードおよびINT8)、16GB(オフロード)、20GB(オフロードなし)、24GB(4B LMあり)とリストされています。20GB未満の場合、またはGPUがない場合、generate-bgm --model acestep-v15-xl-turboは何かを実行する前にINSUFFICIENT_VRAM(終了コード3)で停止します。ユーザーに伝え、デフォルトモデルを提案してください(error.details.default_model)。--modelを削除します。Apple SiliconはCPUと共有するユニファイドメモリとしてカウントされます。GPUメモリが測定できない場合(ROCm、Intel XPU)、BGMは作成されますが、チェックされなかったという警告が表示されます。Intel GPUはxpu-smiを通じてのみ認識されます。これがないIntel GPU上では、--device xpuを渡してください。
  • ダウンロード。 ディスク上に約20GB追加され、メインモデルと同じチェックポイントディレクトリ(SOUND_DESIGN_ACESTEP_CHECKPOINTS、Hugging FaceキャッシュスナップショットはXLでは機能しません)に保存されます。ダウンロードがない場合、呼び出しはMODEL_NOT_FOUNDで停止し、error.details.installにインストールコマンドが表示されます。例:uv run acestep-download --model acestep-v15-xl-turbo --di(以下、truncated)

関連スキル