asteroid は,音源分離(audio source separation)のツールキット.
【目次】
【文献】
Ryosuke Sawata, Stefan Uhlich, Shusuke Takahashi, Yuki Mitsufuji, All for One and One for All: Improving Music Separation by Bridging Networks, CoRR, abs/2010.04228v4, 2021.
PDF: https://arxiv.org/pdf/2010.04228v4.pdf
【関連する外部ページ】
【インストールの判断】 Build Tools for Visual Studio は,開発ツールセットである. Visual Studio は統合開発環境であり,いくつかの種類があり,Build Tools for Visual Studioの機能を含むか連携して使用するものである.インストールは以下の基準で判断してください:
Visual Studio 2022 をインストールする際に,「C++ によるデスクトップ開発」を選択することで, Build Tools for Visual Studio 2022 の機能も一緒にインストールされる.
不明な点がある場合は,Visual Studio 全体をインストール を行う方が良い.
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行
次のコマンドは,Build Tools for Visual Studio 2022と VC2015 再配布可能パッケージをインストールするものである.
起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行
次のコマンドは,Visual Studio Community 2022と VC2015 再配布可能パッケージをインストールするものである.
起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.
Pythonは,プログラミング言語の1つ. Gitは,分散型のバージョン管理システム.
【手順】
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行
次のコマンドは,Python ランチャーとPython 3.10とGitをインストールし,Gitにパスを通すものである.
次のコマンドでインストールされるGitは 「git for Windows」と呼ばれるものであり, Git,MinGW などから構成されている.
winget install --scope machine Python.Launcher winget install --scope machine Python.Python.3.10 winget install --scope machine Git.Git powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\Git\cmd\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
【関連する外部ページ】
【サイト内の関連ページ】
【関連項目】 Python, Git バージョン管理システム, Git の利用
【サイト内の関連ページ】 NVIDIA グラフィックスボードを搭載しているパソコンの場合には, NVIDIA ドライバ, NVIDIA CUDA ツールキット, NVIDIA cuDNN のインストールを行う.
【関連する外部ページ】
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行することにより, PyTorch 2.3 (NVIDIA CUDA 11.8 用)がインストールされる. 但し,Anaconda3を使いたい場合には別手順になる.
事前に NVIDIA CUDA のバージョンを確認しておくこと(ここでは,NVIDIA CUDA ツールキット 11.8 が前もってインストール済みであるとする).
PyTorch で,GPU が動作している場合には,「torch.cuda.is_available()」により,True が表示される.
python -m pip install -U --ignore-installed pip python -m pip uninstall -y torch torchvision torchaudio torchtext xformers python -m pip install -U torch torchvision torchaudio numpy --index-url https://download.pytorch.org/whl/cu118 python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
Anaconda3を使いたい場合には, Anaconda プロンプト (Anaconda Prompt) を管理者として実行し, 次のコマンドを実行する. (PyTorch と NVIDIA CUDA との連携がうまくいかない可能性があるため,Anaconda3を使わないことも検討して欲しい).
conda install -y pytorch torchvision torchaudio pytorch-cuda=11.8 cudnn -c pytorch -c nvidia py -c "import torch; print(torch.__version__, torch.cuda.is_available())"
【サイト内の関連ページ】
【関連する外部ページ】
コマンドプロンプトを管理者として実行: 別ページ »で説明
cd /d c:%HOMEPATH% rmdir /s /q asteroid git clone --recursive https://github.com/asteroid-team/asteroid cd asteroid python -m pip install -r requirements.txt python setup.py develop
https://github.com/asteroid-team/asteroid/blob/master/notebooks/00_GettingStarted.ipynb に記載の手順による.
cd /d c:%HOMEPATH% cd asteroid curl -O https://www.merl.com/demos/deep-clustering/media/female-female-mixture.wav asteroid-infer "mpariente/DPRNNTasNet-ks2_WHAM_sepclean" --files female-female-mixture.wav
female-female-mixture_est1.wav
female-female-mixture_est2.wav
female-female-mixture_est.wav
https://github.com/asteroid-team/asteroid/blob/master/notebooks/00_GettingStarted.ipynb に記載の手順による.
次のコマンドを実行
cd /d c:%HOMEPATH% cd asteroid python -m jupyter qtconsole
Python プログラムの実行
Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.
Python のまとめ: 別ページ »にまとめ
python
from asteroid.models import BaseModel import soundfile as sf # 'from_pretrained' automatically uses the right model class (asteroid.models.DPRNNTasNet). model = BaseModel.from_pretrained("mpariente/DPRNNTasNet-ks2_WHAM_sepclean") # You can pass a NumPy array: mixture, _ = sf.read("female-female-mixture.wav", dtype="float32", always_2d=True) # Soundfile returns the mixture as shape (time, channels), and Asteroid expects (batch, channels, time) mixture = mixture.transpose() mixture = mixture.reshape(1, mixture.shape[0], mixture.shape[1]) out_wavs = model.separate(mixture) # Or simply a file name: model.separate("female-female-mixture.wav") import numpy as np import matplotlib.pyplot as plt import librosa import librosa.display def show_magspec(waveform, **kw): return librosa.display.specshow( librosa.amplitude_to_db(np.abs(librosa.stft(waveform))), y_axis="log", x_axis="time", **kw ) est1 = sf.read("female-female-mixture_est1.wav")[0] est2 = sf.read("female-female-mixture_est2.wav")[0] fig, ax = plt.subplots(1, 2, figsize=(15, 5)) show_magspec(est1, sr=8000, ax=ax[0]) show_magspec(est2, sr=8000, ax=ax[1])