【轉】spleeter分離伴奏和人聲



近日,Deezer開源了一個名為Spleeter項目,該項目利用深度學習對音樂曲目進行源分離。它使用Keras和TensorFlow構建,Spleeter可以幫助音樂信息檢索(MIR)領域的研究機構,充分利用最先進的源分離算法的強大功能,它以基於Tensorflow的Python庫的形式出現,包含針對2、4和5個詞干分隔的預訓練模型。

 

什么是源分離?

音樂錄音通常是幾個單獨樂器音軌的組合(主音,鼓,貝斯,鋼琴等)。
音樂源分離的任務是:給定混合音我們是否可以恢復這些分離的音軌(有時稱為tems)
在這里插入圖片描述
這個任務的應用范圍非常廣泛:比如混音、上混音、主動聆聽、教育目的,還可以預處理其他任務,例如轉錄。
通過多種樂器的混合,像Spleeter這樣的源分離引擎會輸出一組單獨的音軌或詞干。
有趣的是,我們的大腦非常擅長分離樂器。只需專注於該曲目中的一種樂器,您就可以與其他樂器完全區別開來,並且聽到它。但這並不是真正的分離,您仍然可以聽到所有其他部分。
在許多情況下,可能無法准確恢復已混合在一起的各個音軌。因此,面臨的挑戰是盡可能地逼近它們,也就是說,在不造成太多失真的情況下,盡可能地接近原作。
多年來,來自世界各地的數十個傑出研究團隊探索了許多策略。
近來,取得了突破性的進步,這主要歸功於機器學習方法的進步。
為了跟蹤最新進展,人們一直在國際評估活動中比較他們的算法。所以我們知道Spleeter的性能與提出的最佳算法相匹配。
此外,Spleeter非常快。如果您運行的是GPU版本,則預期分離速度比實時速度快100倍,這使其成為處理大型數據集的理想選擇。

數據集
mushdb

使用手冊

命令 描述
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
  • 數據集必須在CSV 文件中描述 : 一個用於訓練 ,一個用於 驗證(用於生成訓練數據)。
  • JSON配置文件,收集所需的培訓和路徑的所有參數 的CSV 文件。

評估模型

為了評估模型,您需要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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM