Music2Vector
深層学習で音楽ジャンルの推定
音楽ジャンルの推定と言う目的は二の次で、分類機の中間層の特徴ベクトルで類似した音楽を提示させるのが目的。
メル周波数スペクトログラム
分類するにあたり、音声を以下のようにメル周波数スペクトログラムとして画像の形で表現し、それを入力とした。
メル周波数スペクトログラムは人間の知覚を考慮した周波数表現なので、音楽だし効果あるかも(適当)と思い採用。
モデル
普通のCNN。
各Convレイヤーの出力をプーリングしてそれらを結合、音楽の特徴ベクトルとした。 また勾配消滅対策として、最終Convレイヤーの出力と結合させ学習。
入力にDropoutを挟むことで画像のピクセルが無作為に抜け落ちて、画像の水増しの効果を得られると考えた。
学習
音声データセットは以下を用いた。
音声の1秒をメル周波数スペクトログラム変換、224x224にリサイズした。
トレーニングデータの0~450を訓練用、451~500をテスト用とした。
50エポック数回学習させ、テストデータのF1値は0.64となった。
手持ちの曲で試す
ジャンル推定
等間隔に1秒を60個サンプリングし、Label出力の平均を結果とした。
- Jazz
- Pop
『ToHo Rock』minimum electric design - "Run Girl Run"
London Elektricity - Just One Second (feat. Elsa Esmeralda) [Apex Remix]
RockがPopになったり、データセットに無い速いテクノ系がPopになったりと若干怪しいけどそれっぽいからいいや。
思えばDrum & BassかJazzかRockしか持ってないな...。
曲の類似度
音楽の特徴ベクトルをコサイン類似度により比較した。1に近いほど似ているはず。
等間隔に1秒を60個サンプリングし、Feature出力の平均を結果とした(多分よろしくない)。
「胎児の夢」を基準に
- Run Girl Run: 0.97
- Just One Second: 0.94
- TOWN-0 PHASE-5: 0.84
と、「Run Girl Run」が一番似ていることとなった。 両方とも電子音楽では無いので、それっぽいか...?