demusic について
demusicは、AI生成動画からBGMを検出して除去するローカルCLI兼MCPサーバーです。検出した区間だけを置き換え、会話や効果音、環境音を保ち、対象外の音声と映像ストリームは変更しません。
主な機能
- 01音楽が含まれる区間の検出
- 02検出区間のみを置換
- 03会話と歌声の保持
- 04ローカルDemucsまたはfal.aiで分離
- 05一括処理とJSON出力
活用シーン
- 01生成動画のBGM除去
- 02CIパイプラインでの音楽チェック
- 03編集前の動画フォルダー一括処理
MCP 対応
MCPサーバーは読み取り専用の検出ツール`check_music`と、入力を上書きせず処理済みコピーを作成する`remove_music`を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx demusicDEMUSIC_SEPARATORdemucs (local, needs demusic[demucs]) | fal (needs FAL_KEY) - default demucsFAL_KEYシークレットOptional: your fal.ai key when DEMUSIC_SEPARATOR=falDEMUSIC_FFMPEGPath to ffmpeg (default: ffmpeg on PATH)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
2掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | |
| threshold | number | いいえ |
詳細
demusic
demusic は、AI 動画モデル(Seedance、Kling、Veo、Hailuo、 Wan など)が生成クリップに組み込む背景音楽を除去し、セリフ、効果音、環境音を残します。 音楽がある「箇所」を検出して、その部分の音声だけを置き換えるため、クリップの残りの部分は そのままです。ローカルで無料、CLI + MCP サーバーに対応しています。
理由
ネイティブ音声対応の動画モデルは、求めていないBGMを追加することがよくあります。ショットの冒頭に数秒の音楽が入ったり、 セリフの下にパッド音が重なったりします。そのようなクリップを10本つなげると、 10曲が互いにぶつかり、自分の音楽を重ねられなくなります。
一般的な解決方法である、ボーカル除去を実行してボーカルだけを残す方法では、音楽と一緒に足音、 ドアの音、雨音、部屋の環境音まで失われます。また、そもそも音楽がないクリップにも適用してしまいます。demusic は、Dawnwood で制作するAIドラマのすべてのクリップに使用しているツールです。
- 分離:音声をステムに分離します(Demucs
htdemucs_6s、ローカルまたは fal キーを使用)。 - BGMとして十分な音量か? メロディーのステムが聞こえる音量(> -50 dBFS)である必要があります。
- 実際に音楽か? AudioSet 分類器が伴奏に2秒以上の音楽を検出する必要があります。エンジン音、銃声、部屋の環境音は手順2を通過しますが、この手順では除外されます。
- 該当箇所だけを除去:その部分の音声をセリフ+打楽器音/衝撃音に置き換え、0.25秒のクロスフェードを適用します。それ以外の部分では元の音声がそのまま残ります。映像はストリームコピーされます(再エンコードなし)。
意図的に保守的な検出を行います。音楽のない164本のクリップでは誤検出は2本、耳で確認して人が音楽ありと判定した87本のクリップでは33本を検出しました。検出できないのは音量が非常に小さいBGMです。音楽があると分かっているクリップでは、--threshold を下げるか --mode force を使用してください。
調整の詳細。
インストール
Python >= 3.10 と、PATH 上の ffmpeg が必要です。
pip install "demusic[demucs]" # local separation (pulls in PyTorch; CPU is fine)
# or, no torch, separation on fal.ai with your own key:
pip install "demusic[fal]" && export FAL_KEY=...
音楽分類器(約90 MBのONNX、BSD-3)は、~/.cache/demusic に一度だけダウンロードされます。
クイックスタート
# where is the music?
demusic check shot_012.mp4
# shot_012.mp4: MUSIC spans 0-2.8s melodic -42.1 dBFS p=0.34
# write shot_012.demusic.mp4 with the music removed
demusic strip shot_012.mp4
# a whole folder; clean copies of every file (unchanged ones copied) into clean/
demusic strip renders/*.mp4 --out-dir clean/
| option | 意味 |
|---|---|
--separator demucs|fal|DIR | ローカルのDemucs(デフォルト)、FAL_KEY を使った fal.ai、または分離済みのステムが入ったフォルダー(vocals.wav、drums.wav、bass/guitar/piano/other.wav または music.wav) |
--mode spans|whole|force | 音楽が検出された箇所だけを置き換える(デフォルト)/音楽が検出された場合はトラック全体を置き換える/検出せずに常に置き換える |
--threshold 0.3 | 分類器の音楽確率。0.2 にすると、誤検出率は高くなりますが、より音量の小さいBGMを検出します |
--loud-floor -50 | メロディーのステムの音量ゲート(dBFS) |
-o FILE / --out-dir DIR | 1ファイルの出力先/バッチ処理の出力先 |
--json | stdout に1つのJSONオブジェクトを出力します(files[] に music、spans、melodic_dbfs、strength、action、output を含みます) |
終了コード:0 正常(check の場合、音楽なし)、1 check で音楽を検出、2 使用方法、3 失敗。
CI またはレンダリングパイプラインで demusic check を実行すると、クリップにBGMがある場合にビルドを失敗させられます。
速度:分離処理はノートPCのCPUでおおむねリアルタイムです(10秒のクリップで約10~20秒)。GPUでははるかに高速になります。 検出処理自体は数百ミリ秒です。
Python
from demusic.core import process
r = process("shot.mp4", "shot.clean.mp4") # strip
r = process("shot.mp4", strip=False) # check only
print(r["music"], r["spans"])
AI エージェント(MCP)
claude mcp add demusic -- demusic mcp # Claude Code
# or any MCP client: command "uvx", args ["--from", "demusic[demucs]", "demusic", "mcp"]
ツール:check_music(読み取り専用)と remove_music(新しいファイルを書き込み、入力ファイルを上書きしません)。fal を使用するには、サーバー環境で DEMUSIC_SEPARATOR=fal を設定してください。
Claude スキルと AGENTS.md もあります。
制限事項
- シーン内にあることが意図された音楽(画面上のバンドやラジオなど)も、検出されると除去されます。そのようなクリップはスキップしてください。
- 除去された範囲内では、非打楽器系の効果音(水道の蛇口から流れる水、風など)も音楽と一緒に除去されます。Demucs には個別の効果音ステムがありません。範囲外では何も変わりません。
- 歌声はボーカルステムに入るため、残ります。
クレジット
Apache-2.0。demusic は各出力ファイルのcommentタグにcleaned with demusic by Dawnwoodを書き込みます。時間の節約になった場合は、その記載を残し、「demusic by Dawnwood」と記載してください。これはお願いであり、利用条件ではありません(NOTICEを参照)。
Dawnwoodが開発しました。Dawnwood は AI ドラマスタジオです。制作で使用しているその他のツール:dramapack(ショートドラマの納品パックと QC) · オープンソースプロジェクト一覧。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。