AI音声解析・分離ソフトDemucsの検証レポート

# はじめに
## Demucs とは
・AI技術を利用して楽曲の各パートを分離・出力できるソフトウェアライブラリ
・開発元はMeta(Facebook)。オープンソースPJのため、無償で公開されている [2021年4月公開]

[Demucs の ソース](https://github.com/facebookresearch/demucs)
[Demoサイト](https://huggingface.co/spaces/akhaliq/demucs)

## Demucsを用いて私がやりたいこと
01) **楽曲データから直接Sampling!** DJing & Mixingに活用したい
02) 各パートを聴き込むことで、**より繊細なchoreograph**が出来るようになりたい
03) 各パートを聴き込むことで、**楽器演奏の練習効率をあげたい**

## 所見
・各パートの音域が綺麗に別れているのであれば、既存の音声データ編集ソフトでも同様のことが出来ると思います。しかし、そう単純ではない為そういった手段では分離をすることがこれまで出来ませんでした(※私が知る限り)
そういった経緯より、この技術は斬新かつ魅力的と感じます。

# 検証01
## Demucs動作環境
(上述の[GitHub](https://github.com/facebookresearch/demucs)より)
**言語: Python 3.7** + 各種パッケージ (PyPI もしくは anaconda )
※ ソースコード: pip/conda どちらからもインストール出来るとのこと

## 検証環境
Colaboratory (Googleが機械学習の教育及び研究用に無償で提供しているPython実行環境)

実行環境がセットアップ済みの[Hybrid Demucs from Colab](https://colab.research.google.com/drive/1dC9nVxk3V_VPjUADsnFu8EiT-xnU1tGH?usp=sharing)、こちらを利用して検証を進めてみます

## 準備/実行
### 01) Google Drive に 対象となる音楽データを格納
![01_Google Drive for demucs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50310/73d1f8e2-9108-98e0-af1e-0ddc2f643c7f.png)

**検証用楽曲データ①:**
```
Title:        fncy stream (skit)
Time:         1:27
Size:         2.9 MB
Bit rate:     256 kbps
Sample rate:  44,100 kHz
CH:           Stereo
Format:       AAC(.m4a)
```
Original
[公式のYouTubeCHより](https://www.youtube.com/watch?v=IrOaOb3aoMQ)

<iframe width="695" height="409" src="https://www.youtube.com/embed/IrOaOb3aoMQ" title="fncy stream (skit)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


**▽ 当該楽曲の大まかな構成**
```
0:02 飛行機の離陸音
0:11 CAのアナウンス
0:17 警報音
0:22 Organ
0:24 Poetry reading (ラストまで。伴奏としてOrgan、chorus、tweet of bird、synthesizer)
```
※ 私の主観より

### 02) ソースコードのビルド・デプロイ
**・ソースコードを一部改修**
```python
extensions = ["mp3", "wav", "ogg", "flac","m4a"]
# 対応する拡張子に「.m4a」の記述がなかったため、このように改修しました。
```

**・Colaboratory上に定義したコードを順次実行していく**
![02_demucs on colab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50310/32202073-b214-1b16-4f62-34e4237586d2.png)

**・所要時間**
無償なのにも関わらずColaboratoryのスペックは高いようで、ここまで数分で完了しました。
※ demoサイトはスペックが低いのか、解析・分離にとても時間が掛かったことからも

## 確認
**Demucsでは下記4種類に音声を分離。また、デフォルト出力形式は 320kbps の mp3とのこと**
- Vocal
- Bass
- Drum
- Others
![04_output.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50310/9ad66e32-9b77-fd14-8723-ceba81a2ed18.png)
![04_output02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50310/557970dc-d3ed-c942-98ed-40f3357b50de.png)

**実際に聴いてみて、どのように分離されたか確認**
・チェック用の動画は後述

| time | description | type | result |
|:----:|:------------|:----:|:------:|
| 0:02 | 飛行機の離陸音 | Drums | 💦 |
| 0:11 | CAのアナウンス | Vocal | 😊<OK |
| 0:17 | 警報音        | Other | 🚨<OK |
| 0:22 | piano        | Other | ♪<OK |
| 0:24 | Poetry reading | Vocal | 😊<OK |
| 0:24 | piano        | Other | ♪<OK |
| 0:24 | chorus       | Vocal | 😊<OK |
| 0:24 | tweet of bird | Vocal | 😊<OK |
| 0:24 | synthesizer as bass | Bass | 👍<OK |

・分離した各音声データをDJソフトを使って聴き比べた動画は下記
<iframe width="1039" height="636" src="https://www.youtube.com/embed/iKyxAYuVPnY" title="fncy stream (skit) by demucs" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

## 結果
**飛行機の離陸音がDrumと解釈された以外は、概ね人の認識どおりに分析されていた 🍀✨**
※ (推測) Drum音が含まれない楽曲だったため、取捨選択でそのような結果になったのかもしれません。そうだとしたら、それはそれで賢いですね。

# 検証02
**今度はもっとシンプルな楽曲を解析・分離してみる**

## 検証用楽曲データ②:
```
Title:        はじめてのチュウ(Rasmus Faber ver.)
Time:         3:59
Size:         8.2 MB
Bit rate:     256 kbps
Sample rate:  44,100 kHz
CH:           Stereo
Format:       AAC(.m4a)
```
Original
[公式のYouTubeCHより](https://www.youtube.com/watch?v=6SfLag6ktJc)
<iframe width="695" height="391" src="https://www.youtube.com/embed/6SfLag6ktJc" title="Anime Jazz Cover アニソン | Hajimete No Chuu (from Kiteretsu Daihyakka) | Platina Jazz プラチナジャズ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

## 結果
・チェック用の動画は後述
| type | time | impression |
|:----:|-----:|:-----------|
| Vocal | 0:17 | アカペラみたいでカッコいい♪ (※01) |
| Bass  | 0:01 | いい感じ♪😊 |
| Drum  | 0:01 | こちらもいい感じ♪ ハイハット、スネア、その他 がクリアに聴こえる。(※02) |
| Other | 0:01 | Horn隊、Pianoがクリアに聴こえ、心も身体もswingしちゃう感じ♪ |

(※01) しかし2:30 ぐらいに、Hornか何かの音が混じっている。流石に完璧に分離とまではいかないようだ
(※02) syntheっぽい音が混じっている箇所もあるが、全然使えるレベル◎

・分離した音声データを聴き比べ
<iframe width="1038" height="636" src="https://www.youtube.com/embed/INCWdlv7Wyc" title="はじめてのチュウ by demucs" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


# 結論
**目標に掲げた3点、いずれもdemucsを利用することで実現出来そうです◎**

# おわりに
## 私からのお願い
・上記検証データの参考としてYouTubeのリンクを掲載しましたが、既存の楽曲を利用する際はMusicianに敬意を表し、キチンと対価を支払って取得したものをご利用ください。DJを始めようと模索していた数年前、とある練習会で出会った方の中に違法DL(=劣化音源)でDJしているってのが居て、唖然としたことがありマス。。
**我々のQoLを上げてくれるMusic & Musicianにリスペクトを😊**

## 気軽に試してみましょう
・著作権の関係から今回利用した楽曲および分離したデータを直接公開することが出来ないのが残念ですが、デモサイトを利用して頂くことでdemucsの凄さを体験して頂けると思います。お試しあれ ◎

[デモサイト](https://huggingface.co/spaces/akhaliq/demucs)
![00_demo site.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50310/20a8c80a-2d6a-3170-0955-ac8b0d310070.png)
→ 画面左下に[test.mp3]とあります。そちらを使って体験してみてください

・因みに、このソフトに出会う前に私が作成したMixは[コチラ](https://www.mixcloud.com/mitzi2funk/)で公開しています。
折角Mixをつくるならば他の方とは違ったものをつくりたいと思い、フリーで公開されている環境音などをMixすることで全体を通してストーリー性を表現してみたものになります (2021年頃の2作品)

## 次に試してみたいAI技術
・写真データ(2次元データ)から 3Dモデリングできる[AIソフト](https://vcai.mpi-inf.mpg.de/projects/scene-aware-3d-multi-human/)

[説明動画](https://www.youtube.com/watch?v=L4aXzlbx22I)

特殊な機材がなくとも写真一枚から3Dモデリングが出来る模様。個人的にコチラにも興味があり近々検証したいと考えています。
(ソースコードは5日前に公開されたばかり ['23/02/15(wed)時点])