StemDeck: DemucsとTauriを活用した無料・ローカル完結型の6トラックAI音源分離
StemDeckは、クラウドへのサブスクリプションやアップロードを一切行わずに、ボーカル、ドラム、ベース、ギター、ピアノを分離できるオープンソースのローカルファーストなステム抽出スタジオです。
Moises、LALAL.AI、Splitter.aiなどのクラウドベースのステム分離ツールにより、ミュージシャン、リミキサー、プロデューサーにとってトラックの分解が身近なものになりました。しかし、これらのサービスには利用制限、未発表音源に関するプライバシーの懸念、そして継続的な月額サブスクリプションがほぼ必ず伴います。
StemDeckは、ローカルファーストのオーディオ分離スタジオを提供することで、これらの課題を解決します。クラウドへの依存ゼロ、アカウント不要、データアップロードなしで、マシン上で直接最大6つのステム(ボーカル、ドラム、ベース、ギター、ピアノ、その他)を抽出します。
StemDeckのアーキテクチャ
StemDeckは、高性能なMLモデルと操作しやすいWebネイティブのスタジオUIを組み合わせ、軽量なクロスプラットフォームのデスクトップシェルでラップしています。
+-------------------------------------------------------------+
| StemDeck Desktop (Tauri v2) |
| +-------------------------------------------------------+ |
| | Frontend (Vanilla JS + Web Audio) | |
| | - Multi-lane Canvas Waveforms - Per-stem VU Meters | |
| | - Loop Regions & Scrubbing - Live Mixer Bus | |
| +-------------------------------------------------------+ |
| │ SSE / REST API |
| +──────────────────────────▼────────────────────────────+ |
| | FastAPI Backend (Python 3.12) | |
| | - Demucs (htdemucs_6s) [CUDA / MPS / CPU] | |
| | - UVR-MDX-NET Karaoke 2 (Lead/Backing Vocal Split) | |
| | - Librosa (BPM & Key) | Pyloudnorm (BS.1770 LUFS) | |
| | - FFmpeg Transcoding & Custom Mixdown Engine | |
| +-------------------------------------------------------+ |
+-------------------------------------------------------------+
- 分離エンジン: PyTorch経由でMeta AIの
htdemucs_6sモデルを活用。Linux/Windows上のNVIDIA CUDA、macOS上のApple Silicon MPSを自動検出してバインドし、GPUがない場合はCPUスレッドに適切にフォールバックします。 - ボーカル分割:
UVR-MDX-NET Karaoke 2モデル(audio-separator経由)を使用したオプションのセカンドパスをサポートし、リードボーカルとバッキングボーカルを個別に分離します。 - オーディオ解析: BPM(
librosa経由)、キーおよびスケールの信頼度(Albrecht-Shanahanピッチプロファイル経由)、統合ラウドネス測定(pyloudnormITU-R BS.1770経由)を含むトラックメタデータを自動抽出します。 - フロントエンド & DAWミキサー: 重量級のフロントエンドフレームワークを使わずに構築されています。バニラJavaScriptとHTML5
<canvas>による最小/最大サンプル描画、Web Audio APIによるポストゲインRMSモニタリング、ソロ/ミュートロジック、位相のズレない正確なループ再生を採用しています。 - デスクトップシェル: Tauri v2(Rust + ネイティブシステムWebView: macOSではWKWebView、WindowsではWebView2)を採用。
主な機能
- 6ステム分離: 一般的な非圧縮・圧縮フォーマット(
MP3、WAV、FLAC、OGG/Opus、MP4、M4A)のドラッグ&ドロップ、またはYouTube URLの直接入力に対応。 - スマートなサブセット抽出: ステムのサブセット(例: ベースとドラムのみ)を選択すると、StemDeckが自動的に選択外の補完ミックス(フルミックスから選択項目を引いたもの)を含む
Originalバッキングトラックレーンを作成し、誤った音の重複を防ぎます。 - ブラウザ内での非破壊ミキシング: リアルタイムVUメーターを備え、各ステムトラックごとのリアルタイムゲイン調整、ソロ、ミュート、モニター操作が可能。
- 即時ミックスエクスポート: FFmpegの
amixを通じて結合されたmix.wavステムや、個別に分離されたオーディオファイルをその場で生成。
クイックスタートとインストール
1. ネイティブデスクトップバイナリ
macOS(Apple Silicon arm64およびIntel x64)およびWindows(CPU版またはパッケージ済みCUDAバンドル)向けのビルド済みバイナリがGitHub Releasesから直接入手可能です。初回起動時に必要な環境をセットアップし、モデルの重み(約170 MB)をローカルデータディレクトリにダウンロードします。
2. PythonとUVを使用したローカル実行
Webサーバーを直接実行したい場合:
# リポジトリのクローン
git clone https://github.com/stemdeckapp/stemdeck && cd stemdeck
# macOS / Linux 自動セットアップ(ffmpegとuvが必要)
./run.sh setup
./run.sh start
NVIDIA GPUを搭載したWindows PowerShellの場合:
# uvで依存関係をインストール
uv sync
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# デバイスを設定してFastAPIサーバーを起動
$env:STEMDECK_DEMUCS_DEVICE = "cuda"
uv run uvicorn app.main:app --host 127.0.0.1 --port 8000 --timeout-graceful-shutdown 5
3. Dockerによるデプロイ
GPUパススルーを有効にして公式GHCRコンテナを実行します:
docker run -d --name stemdeck \
-p 8000:8000 \
--runtime=nvidia \
-e NVIDIA_VISIBLE_DEVICES=all \
-e STEMDECK_PERSIST_LIBRARY=1 \
-v /local/jobs:/app/jobs \
-v /local/cache:/cache \
ghcr.io/stemdeckapp/stemdeck:edge
REST APIとジョブワークフロー
StemDeckは、ジョブ監視用のServer-Sent Events (SSE) とともに、洗練されたRESTインターフェースを提供します:
| メソッド | エンドポイント | 説明 |
|---|---|---|
POST |
/api/jobs |
ローカルファイルのマルチパートアップロードまたは { "url": "...", "stems": [...] } を送信 |
GET |
/api/jobs/{id}/events |
ジョブの進行状況(ダウンロード、解析、分離、ミックス)を配信するSSEストリーム |
GET |
/api/jobs/{id}/stems/{stem}.wav |
特定のステム音声(vocals.wav、bass.wav、drums.wavなど)をストリーミング |
POST |
/api/jobs/{id}/cancel |
実行中のサブプロセスパイプラインを直ちに終了し、作業ディスク領域をクリーンアップ |
PATCH |
/api/jobs/{id}/sections |
マーカー境界と波形アノテーションを保存 |
まとめ
高度なモバイル連携や独自の10ステム分離モデルが必要な場合は、商用SaaSプラットフォームも選択肢の1つです。しかし、完全なプライバシー保護、無制限の利用、ローカルオフライン処理を求めるプロデューサー、採譜者、ミュージシャンにとって、StemDeckは魅力的なオープンソースのDAWスタイルのワークフローを提供します。