White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

DockerでGeforceを使ってSpleeterを回す

(この記事は以前Qiitaに投稿したものの転載になります。)

Spleeter(https://github.com/deezer/spleeter) という、python+Tensorflowを使った、音声分離アプリケーションがあります。これを使うと楽曲のファイルからヴォーカルだけを抜き出したりできます。

使い方も上のサイトやこちらに書いてあったりするのですが、nvidia-dockerが古いだとか、GPU使ってないだとかで決め手に欠けています。ですので今まとも?な方法のメモ書きを残します。(本当は漏れのない手順書を書きたいとこでしたが、実施から時間が経って記憶から抜けている部分もあります・・)

自分で構築するのが面倒な人は、参考の1, 2を使うとよいでしょう。ただし録音に使ったデータがクラウド上に保存されるのかどうかは保証できません。

動作確認環境

  1. AMD Ryzen 3700X
  2. ASRock B450M Steel Regend
  3. メモリ: 32GB
  4. (ブランド不明)Geforce GTX 1080Ti
  5. Ubuntu 18.04 server
  6. nvidia公式driver

導入手順

ホストマシン(Dockerを呼び出すマシン)にnvidiaの公式ドライバを入れます。おそらくCUDAドライバあたりも必要です。

  • Docker ceを入れる

最新のnvidia-dockerがDocker ce 19.03を要求するので、入れます。Ubuntu標準dockerではダメです。 https://docs.docker.com/install/linux/docker-ce/ubuntu/

最近のはnvidia-docker2がdeprecatedされており、最新のnvidia-dockerではspleeterに書かれているコマンドでは実行出来ないので注意してください。

https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)

  • spleeterを入れて使う

https://github.com/deezer/spleeter/wiki/2.-Getting-started#using-docker-image

nvidia-dockerではなく、docker run --gpus all等を使う必要があります(allは手持ちのGPUによって変えてください)。

例: docker run --gpus all -v $(pwd)/output:/output deezer/spleeter:gpu separate -i audio_example.mp3 -o /output

参考

  1. spleeter使って分離してくれるサービス https://moises.ai/

  2. Spleeterを簡単に使えるGoogle colaboratoryのノートを作成しました. https://qiita.com/Ryo0o0oOO/items/65acd38f4034800388c0