在影片剪輯工作中,假設我們拿到了一段電影或者電視劇素材,如果直接在剪輯的影片中播放可能會遭遇版權問題,大部分情況需要分離其中的人聲和背景音樂,隨後替換背景音樂進行二次創作,人工智慧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也可以將人聲從環境音中分離出來,節省了二次錄製畫外音的環節。