Googleの機械学習音楽ライブラリーMagentaが1.1.1へバージョンアップしました。
今回のバージョンアップの中心はドラムトラック生成モデルGrooVAEのアップデートとTFDS(Tensorflowデータセット)への対応です。
GrooVAE
まずはGrooVAEです。
GrooVAEはMusicVAE(マルチトラックの音楽生成モデル)の中のドラムトラック生成モデルなのですが、今回新たな学習済みデータとしてGroove MIDI DatasetのリリースとGrooveConverter(ドラムのノリを作るプログラム)のアップデートが実施されました。
GrooVAEについて解説しましょう
こちらはcanplayの講義やAI自動作曲研究会でも解説しているMagenta StudioのDrumfyです。
Drumifyは、動画の様に元楽曲のドラム以外の演奏(ベースなど)からそれにあったドラムパターンをノリをきちんと合わせて生成するアプリでした。
そのDrumifyで使用されたプログラム(GrooveConverter)や学習済みモデルがMusicVAEのGrooVAEモデルとして使用できる様になったとの事です。
GrooVAEではドラムのパターンを”楽譜”と”Groove”を2つに分けて学習します。
そして楽譜上の演奏データ(どのドラム楽器を楽譜的にどの拍で演奏するか)にGroove(強弱やタイミングのズレ)を加え、Beatとしてノリのあるドラムトラックを生成します。
下記の動画のイメージです。
Drumifyの時に解説した通り、この時の学習データはGoogleのオフィスでプロのドラマーがRoland TD-11 電子ドラムを使用して約15時間(13.6時間だそうです)演奏したデータを使用しています。
MusicVAE用にその学習済みデータがついにリリースされました、
データ内容
・収録時間13.6時間
・1150曲のドラムパターンMIDIファイル、約22000小節以上
・10人のドラマーが即興で演奏、全パターンの80%がプロフェッショナルのドラマーの演奏
・ほとんどの曲は4/4で演奏され、Fill inや短いビートの演奏も含む
・MIDIだけでなく音声合成したオーディオデータも学習データとしてリリース
Split | Beats | Fills | Measures (approx.) | Hits |
Train | 378 | 519 | 17752 | 357618 |
Validation | 48 | 76 | 2269 | 44044 |
Test | 77 | 52 | 2193 | 43832 |
Total | 503 | 647 | 22214 | 445494 |
使用ドラム音マップ
Pitch | Roland Mapping | GM Mapping | Paper Mapping | Frequency |
36 | Kick | Bass Drum 1 | Bass (36) | 88067 |
38 | Snare (Head) | Acoustic Snare | Snare (38) | 102787 |
40 | Snare (Rim) | Electric Snare | Snare (38) | 22262 |
37 | Snare X-Stick | Side Stick | Snare (38) | 9696 |
48 | Tom 1 | Hi-Mid Tom | Mid Tom (48) | 13145 |
50 | Tom 1 (Rim) | High Tom | High Tom (50) | 1561 |
45 | Tom 2 | Low Tom | Low Tom (45) | 3935 |
47 | Tom 2 (Rim) | Low-Mid Tom | Mid Tom (48) | 1322 |
43 | Tom 3 (Head) | High Floor Tom | Low Tom (45) | 11260 |
58 | Tom 3 (Rim) | Vibraslap | Low Tom (45) | 1003 |
46 | HH Open (Bow) | Open Hi-Hat | Open Hi-Hat (46) | 3905 |
26 | HH Open (Edge) | N/A | Open Hi-Hat (46) | 10243 |
42 | HH Closed (Bow) | Closed Hi-Hat | Closed Hi-Hat (42) | 31691 |
22 | HH Closed (Edge) | N/A | Closed Hi-Hat (42) | 34764 |
44 | HH Pedal | Pedal Hi-Hat | Closed Hi-Hat (42) | 52343 |
49 | Crash 1 (Bow) | Crash Cymbal 1 | Crash Cymbal (49) | 720 |
55 | Crash 1 (Edge) | Splash Cymbal | Crash Cymbal (49) | 5567 |
57 | Crash 2 (Bow) | Crash Cymbal 2 | Crash Cymbal (49) | 1832 |
52 | Crash 2 (Edge) | Chinese Cymbal | Crash Cymbal (49) | 1046 |
51 | Ride (Bow) | Ride Cymbal 1 | Ride Cymbal (51) | 43847 |
59 | Ride (Edge) | Ride Cymbal 2 | Ride Cymbal (51) | 2220 |
53 | Ride (Bell) | Ride Bell | Ride Cymbal (51) | 5567 |
使用したドラムデータは下記のリンクからダウンロード可能です。
(オーディオを含むデータは5G近くありますので注意)
オーデイオ含む
MIDIのみ
ダウンロードしてCSVファイルでパラメータの確認をしたのですが、学習データと評価データがどのくらいの比率で分けられているのか?などがわかって中々興味深かったです。
TensorFlowDataSetへの対応
今回よりTFDS(TensorFlowDataSet)へMagentaも対応しました。
これにより学習の際のハイパーパラメータ(バッチサイズや学習率など)の調整がより簡単にわかりやすくなります。
今後移行が進むであろうTensorFlow2.0へ向けた準備の側面もあると思われます。
記事投稿日:2019/5/3