あきらぼ

テック系ブログ

【Tensorflow】【Python】PythonとSpleeterでYoutubeから動画をダウンロードして音楽とボーカル音声を分離して保存する。

こんにちは。

 

今回は音声と演奏を分けるSpleeterを使用してYoutubeから動画をダウンロードして音声と演奏を分けてみようと思います。

 

こんなことができるようになります。

www.youtube.com

 

 

 

 

Spleeter

Spleeterとは音楽ストリーミングサービス「dezzer」が公開しているオープンソースのTensorflowをつかったAIの演奏分離ライブラリになります。

 

Deezer Research - Spleeter

 

GitHub - deezer/spleeter: Deezer source separation library including pretrained models.

 

最大でボーカル / ドラム / ベース / ピアノ / その他 の5つの音に分解することができます(5 stems)

 

今回はボーカルと演奏の二つに分けていきます。

 

インストール

今回はYouTubeからPythonで動画をダウンロードするのにpytubeのパッケージを使います。

ダウンロードした動画から音声mp3の抽出はffmpeg、最後に音声分離のspleeterを使用します。

それぞれpipでインストールできるのでインストールします。

 

コード

コードはとりあえず以下のようにしました。

 

 

流れとしては

  1. pytubeでmp4として動画をYoutubeからダウンロード
  2. ffmpegでmp4から音声だけのmp3を抽出
  3. 抽出したmp3からspleeterでボーカル・演奏分離

みたいな感じです。

 

ちなみにSpleeterによる分離する音声の時間をdurationで決められるのですが、デフォルトで10分、伸ばしても1000秒程度までで、それ以上だとエラーを吐いてしまいます。

 

暇なときに10分毎に処理できるようにアップデートしようと思います。

 

あとは、出力されたmp3をうまく使えば冒頭の動画のようにできます。

 

コードのレポジトリはこちら。

GitHub - Aki-R/YouTube_Downloader

 

これでVtuber歌枠を編集しやすくなりました。