文章目錄
近日,Deezer開源了一個名為Spleeter項目,該項目利用深度學習對音樂曲目進行源分離。它使用Keras和TensorFlow構建,Spleeter可以幫助音樂信息檢索(MIR)領域的研究機構,充分利用最先進的源分離算法的強大功能,它以基於Tensorflow的Python庫的形式出現,包含針對2、4和5個詞干分隔的預訓練模型。
什么是源分離?
音樂錄音通常是幾個單獨樂器音軌的組合(主音,鼓,貝斯,鋼琴等)。
音樂源分離的任務是:給定混合音我們是否可以恢復這些分離的音軌(有時稱為tems)
這個任務的應用范圍非常廣泛:比如混音、上混音、主動聆聽、教育目的,還可以預處理其他任務,例如轉錄。
通過多種樂器的混合,像Spleeter這樣的源分離引擎會輸出一組單獨的音軌或詞干。
有趣的是,我們的大腦非常擅長分離樂器。只需專注於該曲目中的一種樂器,您就可以與其他樂器完全區別開來,並且聽到它。但這並不是真正的分離,您仍然可以聽到所有其他部分。
在許多情況下,可能無法准確恢復已混合在一起的各個音軌。因此,面臨的挑戰是盡可能地逼近它們,也就是說,在不造成太多失真的情況下,盡可能地接近原作。
多年來,來自世界各地的數十個傑出研究團隊探索了許多策略。
近來,取得了突破性的進步,這主要歸功於機器學習方法的進步。
為了跟蹤最新進展,人們一直在國際評估活動中比較他們的算法。所以我們知道Spleeter的性能與提出的最佳算法相匹配。
此外,Spleeter非常快。如果您運行的是GPU版本,則預期分離速度比實時速度快100倍,這使其成為處理大型數據集的理想選擇。
使用手冊
命令 | 描述 |
---|---|
train | 訓練源分離模型,您需要一個單獨的軌道數據集才能使用它 |
evaluate | 在musDB 測試集中進行預訓練的模型評估 |
要獲得有關separate 命令可用的不同選項的幫助 ,請鍵入:
spleeter separate -h
使用2stems模型
您可以使用默認的2個詞干 (人聲/伴奏)預訓練模型直接分離音頻文件, 如下所示:
spleeter separate -i audio_example.mp3 -o audio_output
-i 選項用於提供音頻文件名列表。
-o 是提供輸出路徑在哪里寫分離的wav文件。
由於該命令將下載預先訓練的模型,因此在第一次運行時可能會花費一些時間。如果一切順利,則應該獲得一個audio_output/audio_example 包含兩個文件的文件夾 : accompaniment.wav 和 vocals.wav。
使用4stems模型
您還可以使用預先訓練的4個主音色 (人聲/貝斯/鼓/其他)模型:
該 -p 選項用於提供模型設置。它可以是Spleeter 嵌入式設置標識符2 ,也可以是 JSON 文件配置的路徑 如:
這一次,它會生成四個文件: vocals.wav, drums.wav, bass.wav 和 other.wav。
目前,可以使用以下嵌入式配置:
spleeter:2stems spleeter:4stems spleeter:5stems
使用5stems模型
最后,開箱即用的還有經過預訓練的 5個 主音(人聲/貝斯/鼓/鋼琴/其他)模型:
spleeter separate -i audio_example.mp3 -o audio_output -p spleeter:5stems
這將產生五個文件: vocals.wav, drums.wav, bass.wav, piano.wav 和 other.wav
批量處理
separate 每次調用模型時,該命令都會構建模型,並在首次下載時進行下載。如果您處理單個音頻文件(尤其是簡短的音頻文件),則與單獨進行分離過程相比,此過程可能會很長。如果要分離多個文件,則建議通過一次調用進行所有分離 separate:
spleeter separate \ -i <path/to/audio1.mp3> <path/to/audio2.wav> <path/to/audio3.ogg> \ -o audio_output spleeter separate -i E:\Sabinetek\spleeter-master\DanceMonkey.mp3 -p spleeter:2stems -o output
訓練模型
為了訓練自己的模型,您需要:
評估模型
為了評估模型,您需要mushdb數據集。例如,您可以通過這種方式評估提供的4個詞干預訓練模型:
spleeter evaluate -p spleeter:4stems --mus_dir </path/to/musdb> -o eval_output
為了使用多通道維納濾波執行分離,您需要添加 --mwf 選項(以獲取報告的結果):
spleeter evaluate -p spleeter:4stems --mus_dir </path/to/musdb> -o eval_output --mwf
使用Docker映像
我們提供的圖像是為了將Spleeter 與 Docker一起使用 ( GPU 和 CPU 圖像)。您首先需要安裝 Docker,例如 Docker Community Edition。
建立影像
您可以使用docker build 命令從克隆的存儲庫構建映像 :
git clone https://github.com/deezer/spleeter cd spleeter #構建CPU映像。 docker build -f docker / cpu.Dockerfile -t spleeter:cpu。 #構建GPU映像。 docker build -f docker / gpu.Dockerfile -t spleeter:gpu。
運行容器
內置圖像入口點是 Spleeter的 主要命令 spleeter。因此,您可以 separate 使用docker run3命令運行此先前構建的映像來運行該 命令,並使用已安裝的目錄進行輸出寫入:
# Run with CPU : docker run -v $(pwd)/output:/output spleeter:cpu separate -i audio_example.mp3 -o /output # Or with GPU if available : nvidia-docker run -v $(pwd)/output:/output spleeter:gpu separate -i audio_example.mp3 -o /output
要通過GPU運行命令 ,應使用 nvidia-docker 命令而不是 docker command。此替代命令允許容器 從主機訪問 Nvidia 驅動程序和 GPU設備。
這將分離作為輸入提供的音頻文件(此處 audio_example.mp3 嵌入在生成的圖像中),並將分離的文件 vocals.wav 和 accompaniment.wav 您的計算機放在已安裝的輸出文件夾中 output/audio_example。
要使用自己的音頻文件,您需要在運行圖像時創建容器音量,我們也建議您創建一個用於存儲下載的模型的音量。這樣可以避免 Spleeter 每次運行映像時都下載模型文件。
為此,我們首先創建一些環境變量:
export AUDIO_IN='/path/to/directory/with/audio/file' export AUDIO_OUT='/path/to/write/separated/source/into' export MODEL_DIRECTORY='/path/to/model/storage'
然后我們可以separate 通過container 運行 命令:
# Run with CPU : docker run -v $(pwd)/output:/output spleeter:cpu separate -i audio_example.mp3 -o /output # Or with GPU if available : nvidia-docker run -v $(pwd)/output:/output spleeter:gpu separate -i audio_example.mp3 -o /output
non️至於非docker用法,我們建議您一次調用Spleeter 映像執行多個文件的分離
您可以使用 train 命令(您應該主要在GPU上使用 它,因為它在計算上非常昂貴)以及 使用musevalevaluate 對musDB測試數據集4 進行評估的 命令
# Model training. nvidia-docker run -v </path/to/musdb>:/musdb spleeter:gpu train -p configs/musdb_config.json -d /musdb # Model evaluation. nvidia-docker run -v $(pwd)/eval_output:/eval_output -v </path/to/musdb>:/musdb spleeter:gpu evaluate -p spleeter:4stems --mus_dir /musdb -o /eval_output
您需要請求訪問權限並從此處下載
在GPU上,分離過程應該非常快(在musdb測試集上應該少於90s),但是執行 museval 需要更多的時間(幾個小時)
windows下配置spleeter及測試
1.下載壓縮包到本地並解壓
github
2. 安裝ffmpeg(windows版)
win64版本ffmpeg
將依賴ffmpeg(.exe文件)放入spleeter目錄下
這里有直接下載好的
3.安裝spleeter
pip install spleeter
4.運行程序
spleeter separate -i E:\Sabinetek\spleeter-master\DanceMonkey.mp3 -p spleeter:2stems -o output
6.看效果
背景聲:
分離的聲音:
from:https://blog.csdn.net/weixin_42788078/article/details/102956046
from:https://blog.csdn.net/weixin_44253169/article/details/111152524