人工智慧AI庫Spleeter免費人聲和背景音樂分離實踐(Python3.10)

劉悅的技術部落格發表於2023-04-17

在影片剪輯工作中,假設我們拿到了一段電影或者電視劇素材,如果直接在剪輯的影片中播放可能會遭遇版權問題,大部分情況需要分離其中的人聲和背景音樂,隨後替換背景音樂進行二次創作,人工智慧AI庫Spleeter可以幫我們完成大部分素材的人聲和背景音樂的分離流程。

Spleeter的模型源來自最大的音樂網站Deezer,底層基於深度學習框架Tensorflow,它可以透過模型識別出素材中的背景音樂素材,從而判斷出哪些是背景音樂,哪些是外部人聲。

Spleeter安裝

在終端執行執行pip命令:

pip3 install spleeter --user

安裝成功之後,輸入命令,檢查Spleeter安裝路徑:

pip show spleeter

程式返回:

PS C:\Users\liuyue\www\videosite> pip show spleeter                                        WARNING: Ignoring invalid distribution -umpy (c:\python39\lib\site-packages)               Name: spleeter                                                                             Version: 2.3.2  
Summary: The Deezer source separation library with pretrained models based on tensorflow.  
Home-page: https://github.com/deezer/spleeter  
Author: Deezer Research  
Author-email: spleeter@deezer.com  
License: MIT  
Location: c:\users\liuyue\appdata\roaming\python\python39\site-packages                    Requires: ffmpeg-python, httpx, librosa, llvmlite, norbert, numpy, pandas, protobuf, tensorflow, typer

說明安裝成功。

如果不想在本地搭建深度學習環境,也可以透過Docker映象安裝。關於Docker,請移步:一寸當機一寸血,十萬容器十萬兵|Win10/Mac系統下基於Kubernetes(k8s)搭建Gunicorn+Flask高可用Web叢集,這裡不在贅述。

執行Docker命令:

docker pull deezer/spleeter:3.8-5stems

這裡程式加上預訓練模型大概需要1.73GB的硬碟空間。

Spleeter分離人聲和背景音樂

Spleeter同時支援影片和音訊檔案的人聲和背景音樂分離,Spleeter自帶三種預訓練模型:

1、人聲&伴奏聲分離模型 2 stems,分離出兩個音軌

2、鼓聲、貝斯聲及其它聲分離模型 4 stems,分離出4個音軌)

3、鼓聲、貝斯聲、鋼琴聲及其它聲分離模型 5 stems,分離出5個音軌)

後面兩種模型相對比較精細,它可以把人聲、鼓聲、貝斯聲、鋼琴聲各自分離成多個音軌,一般適合音樂行業的專業人士進行使用。

大多數情況下,我們只需要使用第一種模型 2 stems 即可,它將音訊分離成兩個音軌,人聲和背景音樂的聲音:

spleeter separate -o /output/ -p spleeter:2stems /test.mp3

這裡-o代表輸出目錄,-p代表選擇的分離模型,最後是要分離的素材。

首次執行會比較慢,因為spleeter會下載預訓練模型,體積在1.73g左右,執行完畢後,會在輸出目錄生成分離後的音軌檔案:

accompaniment.wav  
vocals.wav

accompaniment.wav代表人聲,vocals.wav是背景音樂。

如果是基於Docker安裝的,則需要執行對應的Docker命令:

docker run -v $(pwd)/output:/output deezer/spleeter:3.8-5stems separate test.mp3 -o /output

結語

Spleeter可以算是免費的人聲和背景音樂分離功能的最佳本地方案了,除了影視劇素材的人聲和背景音樂分離的二次創作,如果是在外部環境錄製的Vlog,環境音非常嘈雜,而又不得不現場錄音,那麼使用Spleeter也可以將人聲從環境音中分離出來,節省了二次錄製畫外音的環節。

相關文章