Windows・GPU対応|ローカルPCで音源・動画を分離
音楽ファイルから、歌声だけを取り出したり、伴奏だけのカラオケ音源を作ったりできたら面白いよね。
このページでは、音源分離AI「Demucs」を使って、Windows PC内で音源を分離する方法を紹介します。
音源は外部サービスへアップロードせず、自分のPC内で処理できます。
このページでできること
🎤 歌声だけを取り出す
🎹 伴奏だけを取り出す
🥁 ドラム・ベースなどを含めた4分離を行う
💻 GPUを使わずCPUだけで音源を分離する
🎬 動画からボーカルや伴奏を分離する
🎤 分離したボーカルを元の動画へ戻す
はじめに|利用上の注意
Demucsおよび関連ソフトウェアの利用条件を確認のうえ、利用者自身の責任において利用してください。
本ページは、動作・分離品質・各PC環境での導入成功を保証するものではありません。
また、分離できるのは、自分が権利を持つ音源、または利用許可を得た音源に限ってください。
他人が権利を持つ楽曲・映像・配信音源などを、許可なく利用・公開・再配布することは避けましょう。
必要なもの
- Windows 10 または Windows 11
- Python 3.10
- NVIDIA製GPU(推奨・必須ではありません)
- インターネット接続
※GPUがなくてもCPUで動作します。処理速度はPCの性能や設定によって異なります。
※初回に必要なソフトウェア・AIモデルを取得します。
この記事では、以下の環境で動作確認しました。
- Windows 11
- NVIDIA GeForce RTX 3060 Laptop GPU
- VRAM:6GB
- メモリ:16GB
- Python 3.10
1. 作業用フォルダを作る
PowerShellを開き、次のコマンドを実行します。
mkdir C:\Tools\demucs
cd C:\Tools\demucs
2. Demucs専用のPython環境を作る
ほかのPythonツールに影響しないよう、Demucs専用の仮想環境を作ります。
py -3.10 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
コマンドの先頭に (.venv) と表示されたら、Demucs専用環境が有効になっています。
3. GPU対応版PyTorchを入れる
NVIDIA GPUを使う場合は、次のコマンドを実行します。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
続けて、Demucsをインストールします。
pip install demucs
4. FFmpegを入れる
音声や動画ファイルを読み込むため、FFmpegをインストールします。
winget install Gyan.FFmpeg.Shared
インストールが完了したら、PowerShellをいったん閉じて、新しく開き直してください。
5. GPUが使えるか確認する
PowerShellを開き直したら、Demucsの作業フォルダへ移動して仮想環境を有効にします。
cd C:\Tools\demucs
.\.venv\Scripts\Activate.ps1
次のコマンドを実行します。
python -c "import torch; print('PyTorch:', torch.__version__); print('CUDA使用可:', torch.cuda.is_available()); print('GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else '見つかりません')"
以下のように CUDA使用可: True とGPU名が表示されたら成功です。
PyTorch: 2.7.1+cu118
CUDA使用可: True
GPU: NVIDIA GeForce RTX 3060 Laptop GPU
6. ボーカルと伴奏の2分離を行う
分離したい音源を C:\Tools\demucs に入れます。
ここでは、ファイル名を test.mp3 とします。
次のコマンドを実行してください。
python -m demucs.separate -n htdemucs --two-stems=vocals --segment 6 --mp3 --mp3-bitrate 320 "test.mp3"
初回だけ、AIモデルのダウンロードが行われます。
処理が完了すると、次の場所にファイルが保存されます。
C:\Tools\demucs\separated\htdemucs\test\
├─ vocals.mp3 ← 歌声だけ
└─ no_vocals.mp3 ← 伴奏だけ(カラオケ用)
--segment 6 は、VRAM 6GB程度のGPUでも動かしやすい設定です。
7. ボーカル・ドラム・ベース・その他の4分離を行う
4種類に分けたい場合は、こちらのコマンドを使います。
python -m demucs.separate -n htdemucs --segment 6 --mp3 --mp3-bitrate 320 "test.mp3"
完了すると、次の4ファイルが作成されます。
vocals.mp3 ← 歌声
drums.mp3 ← ドラム
bass.mp3 ← ベース
other.mp3 ← そのほかの楽器・伴奏
8. GPUがないPCでCPUのみを使う
DemucsはNVIDIA製GPUがなくても、CPUのみで音源を分離できます。
CPUを明示的に使用する場合は、コマンドに -d cpu を追加します。
python -m demucs.separate -d cpu -n htdemucs --two-stems=vocals --segment 6 --mp3 --mp3-bitrate 320 "test.mp3"
CPUでの処理時間を測る
PowerShellの Measure-Command を使うと、処理全体にかかった時間を確認できます。
Measure-Command {
python -m demucs --two-stems=vocals -d cpu "test.mp3"
}
CPUのみでの実測例
i-Lineのテスト環境で、約3分42秒(222.3秒)の音源をCPUのみで「ボーカル+伴奏」に2分離してみました。
処理全体にかかった時間は、
約1分33秒(93.1秒)
でした。
GPUがない環境でも、今回のテストでは音源そのものの再生時間より短い時間で分離できました。
※処理時間はCPU性能、使用するモデル、音源、出力形式、設定などによって変わります。この結果はあくまで一例です。
9. 動画からボーカル・伴奏を分離する
Demucsは音声分離ツールですが、FFmpegと組み合わせることでMP4などの動画も扱えます。
基本的な流れは、
MP4動画 → WAV音声を抽出 → Demucsで分離 → 分離した音声を元動画へ戻す
です。
これにより、
🎤 映像+ボーカルだけ
🎹 映像+伴奏だけ
といった動画を作ることができます。
※動画についても、自分が権利を持つもの、または利用許可を得た素材を使用してください。
9-1. 動画から音声を取り出す
ここでは元動画を test.mp4 とします。
FFmpegを使って動画から音声だけをWAV形式で取り出します。
ffmpeg -i "test.mp4" -vn -c:a pcm_s16le "test_audio.wav"
-vn は動画を出力せず、音声だけを取り出す指定です。
9-2. Demucsでボーカルと伴奏を分離する
抽出した test_audio.wav をDemucsへ渡します。
python -m demucs --two-stems=vocals "test_audio.wav"
CUDA対応GPUが利用できる環境では、DemucsはGPUを利用できます。
処理が完了すると、通常は次の2つのファイルが作成されます。
vocals.wav
no_vocals.wav
vocals.wav:ボーカルno_vocals.wav:ボーカル以外の伴奏
9-3. ボーカルだけを元の動画へ戻す
元動画の映像と、Demucsで作成した vocals.wav をFFmpegで組み合わせます。
ffmpeg -i "test.mp4" -i "vocals.wav" -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -b:a 192k -shortest "test_vocals.mp4"
これで、
元動画の映像+ボーカルだけ
のMP4動画が完成します。
-c:v copy を指定しているため、映像は再エンコードせず、そのままコピーします。
9-4. 伴奏だけを元の動画へ戻す
今度は no_vocals.wav を使用します。
ffmpeg -i "test.mp4" -i "no_vocals.wav" -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -b:a 192k -shortest "test_no_vocals.mp4"
これで、
元動画の映像+伴奏だけ
のMP4動画が完成します。
動画音声をGPUで分離した実測例
i-Lineのテスト環境では、NVIDIA GeForce RTX 3060 Laptop GPUを使用して、約4分17秒(257.4秒)の動画から抽出した音声を「ボーカル+伴奏」に分離しました。
Demucs本体の分離処理は、
約11秒
で完了しました。
257.4/257.4 [00:11<00:00, 21.95seconds/s]
CUDAが利用できていることも確認しています。
CUDA: True
GPU: NVIDIA GeForce RTX 3060 Laptop GPU
※CPUでの実測とは使用した音源や出力条件などが異なるため、CPUとGPUの厳密な性能比較ではありません。
よくある確認ポイント
CUDA使用可: False と表示される
GPU版のPyTorchが入っていない、またはNVIDIAドライバーの状態に原因がある可能性があります。
まずはGPU対応版PyTorchのインストール手順を確認してください。
処理中にメモリ不足で止まる
GPUのVRAMが少ない場合は、--segment 6 を --segment 4 に下げると動くことがあります。
python -m demucs.separate -n htdemucs --two-stems=vocals --segment 4 --mp3 --mp3-bitrate 320 "test.mp3"
No module named demucs と表示される
Demucsをインストールした仮想環境が有効になっていない可能性があります。
cd C:\Tools\demucs
.\.venv\Scripts\Activate.ps1
PowerShellの先頭に (.venv) と表示されたことを確認してから、Demucsを実行してください。
Demucsの開発状況について
Demucsの開発状況や利用条件については、DemucsのGitHubリポジトリも確認してください。
なお、旧 facebookresearch/demucs 版は現在アーカイブされています。
最新の開発状況や利用方法については、現在のDemucsリポジトリを確認することをおすすめします。
現在のDemucsリポジトリ(adefossez/demucs)↗
また、Demucsなどのソフトウェア自体のライセンスと、処理する音源・動画の著作権や利用条件は別のものです。
音源や動画を使用・公開・再配布する場合は、それぞれの権利や利用条件を確認してください。
まとめ
Demucsを使うと、音楽を「歌声だけ」「伴奏だけ」に分離できます。
さらにFFmpegと組み合わせれば、動画から音声を取り出して分離し、
「映像+ボーカルだけ」
「映像+伴奏だけ」
といった動画を作ることもできます。
NVIDIA製GPUがあれば高速に処理できますが、今回のテストではCPUのみでも音源分離ができることを確認しました。
最初は環境づくりが少し必要ですが、一度準備すれば、PowerShellのコマンドで何度でも利用できます。
自分で作った曲や動画、利用許可のある素材で、いろいろ試してみてね🎤🎹🎬