Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
音楽はAI×トークンで扱おう!
Search
Masahiro Suzuki
June 29, 2022
Research
3
1.5k
音楽はAI×トークンで扱おう!
Music×Analytics Meetup Vol.8 登壇資料
https://muana.connpass.com/event/246874/
Masahiro Suzuki
June 29, 2022
Tweet
Share
More Decks by Masahiro Suzuki
See All by Masahiro Suzuki
Score Transformer (MMAsia'21)
suzuqn
0
190
Other Decks in Research
See All in Research
CoRL2024サーベイ
rpc
1
1.4k
AIトップカンファレンスからみるData-Centric AIの研究動向 / Research Trends in Data-Centric AI: Insights from Top AI Conferences
tsurubee
3
1.1k
ECCV2024読み会: Minimalist Vision with Freeform Pixels
hsmtta
1
380
Whoisの闇
hirachan
3
250
PetiteSRE_GenAIEraにおけるインフラのあり方観察
ichichi
0
250
テキストマイニングことはじめー基本的な考え方からメディアディスコース研究への応用まで
langstat
1
180
メールからの名刺情報抽出におけるLLM活用 / Use of LLM in extracting business card information from e-mails
sansan_randd
2
380
Leveraging LLMs for Unsupervised Dense Retriever Ranking (SIGIR 2024)
kampersanda
2
290
論文紹介: COSMO: A Large-Scale E-commerce Common Sense Knowledge Generation and Serving System at Amazon (SIGMOD 2024)
ynakano
1
350
[輪講] Transformer Layers as Painters
nk35jk
4
620
機械学習でヒトの行動を変える
hiromu1996
1
510
Elix, CBI2024, スポンサードセッション, Molecular Glue研究の展望:近年の進展とAI活用の可能性
elix
0
120
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
89
5.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
Agile that works and the tools we love
rasmusluckow
328
21k
RailsConf 2023
tenderlove
29
980
Build your cross-platform service in a week with App Engine
jlugia
229
18k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
30
2.1k
Being A Developer After 40
akosma
89
590k
The Language of Interfaces
destraynor
156
24k
A Philosophy of Restraint
colly
203
16k
How STYLIGHT went responsive
nonsquared
96
5.3k
Transcript
音楽は AI ×トークン で扱おう! ヤマハ (株) RDD 鈴木 正博 Music×Analytics
Meetup vol.8 2022/6/29
About me 鈴木 正博 (すずき まさひろ) • ヤマハ株式会社 • Webエンジニア
(PHP, JS, Selenium等) • PMもどき (Webサービス, Android/iOSアプリ開発) • AI研究者 (音楽情報処理; Python, C++) • 3~4年前に自力で研究を始め、R&Dへ • 研究 • 音楽情報処理/MIR (楽譜・アレンジ中心) • 音楽 • 楽器:ピアノ • 以前はよくサーキットイベントとか行っていた 研究者としては異色の経歴 @szqn_n 始めたて 2
今日の内容 (何の話をするか / しないか) AI / Blockchain Audio / MIDI
/ Score こっちの「トークン」じゃない! × 3
今日の内容 1. 音楽をAIで処理する有力な方法 = AI (Transformer系) × トークン 2. この方法で実現したAIの具体例
for 音楽の分析/生成とか やりたい人 (やってる人含め) ➢ この方法をご自身のツールボックスに for 音楽×AIに興味ある人 ➢ この分野の面白い例などご紹介できたら 4
AI (Transformer) の話
Transformer 全盛 NLP Image GPT3 / OPT-175B Imagen Vision Transformer
(ViT) = Transformer x Diffusion model 「チョコレートとマンゴーと ホイップクリームでできた白頭鷲」 CNNをリプレイス 「スイカみたいなボタン」の HTML生成 6
Transformer のしくみ • Attention • ボトルネックがない (vs. RNN/LSTM) • 長距離の依存関係を扱える
(vs. CNN) • 情報を「トークン」に切り分ける • 言葉の場合:単語 (word/sub-word) • 画像の場合:パッチ (細かく分割した画像片) • 「トークン」間で Attention を張って 関係性を学習 Attention Convolution RNN スイカ | みたいな | ボタン 7
音楽分野でも Transformer • Music Transformer (2018) • MIDIをトークンにして 音楽生成を学習 •
長くても一貫性のある音楽生成が可能に • Pop Music Transformer (2020) • 小節を意識した音楽生成が可能に vs. Transformer LSTM (RNN) MIDIもトークンにすれば 音楽をうまく扱える! 8
音楽のトークン化
[基礎知識] MIDIファイル 音の高さ タイミング 動作 時間差分を表す (単位はtick: 1拍=480ticks など) 音符ではなく動作
10
MIDIトークン 基本的な2種類 • MIDI-like • 動作をトークン化 • 1音 = 2つの動作
(note_on / note_off) • 前の動作との時間差分 • 基準:直前の動作 • REMI • 音符をトークン化 • 1音 = 1つの音の長さ (len) • 小節内を分割した位置 • 基準:小節線 MIDIそのまま 音符にまとめた … on_60 time_1 off_60 on_64 time_1 off_64 … 差分 動作 bar … … pos_2 note_60 len_1 pos_3 note_64 len_1 … 位置 小節線 音符 ※時間分解能:ここでは4分音符 = 1とする 小節線 ここが基準 MIDI-like REMI 11
MIDIトークン 発展形 • マルチトラック対応 • 多次元化 複数の属性を 多次元のトークンに MuMIDI MMM
CP (Compound Word) Octuple MIDI MIDI-like 各トラックを 直列に結合 1トークンで 複数の情報を表す 各トラックの音符を 時系列に並べる 12
MIDIトークン 制約と解決策 [制約] 拍子は固定 (ex. 4拍子のみ) • 小節線を基準に 音符の位置を表わす •
「拍」は 無視 ≒ すべての楽曲が同じ「拍子」と仮定 • 色々な拍子 (3拍子 / 4拍子 / …) の楽曲を扱いたい場合は困る [解決策] 「拍」もトークンに • 小節線 or 拍を基準に 音符の位置を表わす • 何拍子の楽曲でもOK bar … … beat note_60 len_1 beat note_64 len_1 … 拍 bar … … pos_2 note_60 len_1 pos_3 note_64 len_1 … 小節線 拍 Score Transformer (2021) 13
MIDI vs. 楽譜 (Score) MIDI 楽譜 調号 音部記号 拍子記号 声部
連桁 符幹の向き 段 MIDIにない要素 が 楽譜には多数存在 共通要素:音の高さ / タイミング 14
Scoreトークン • 楽譜をトークン化 楽譜もこうしてトークン化できる 登壇者の発明 Score Transformer (2021) 声部も表現 複数の段を
結合 15 楽譜要素をトークンに
[参考] Audioトークン • Audioもトークン化 • ViT のように スペクトログラムをパッチ化 • ViT
: 画像を分類 (何が写ってる?) • AST : 音を分類 (何の音が鳴ってる?) • 画像で事前学習 → 音で転移学習 で精度向上 Audioもトークン化できる Audio Spectrogram Transformer (2021) Audioトークン ImageNet 16
トークンを使った音楽AI
AIピアノアレンジ AI アレンジ メロディ コード ピアノ アレンジ 難易度 MIDI MIDIトークン
(MIDI-like + Chord) chord_21 root_9 on_72 wait 18 off_72 on_72 wait_3 off_72 on_71 wait_3 chord_16 root_4 wait_12 off_71 on_64 wait_6 off_64 on_67 wait_6 chord_5 root_5 on_R72 on_R64 on_L33 wait_6 off_L33 on_L40 wait_6 off_L40 on_L48 on_L45 wait_6 off_R72 off_R64 on_R72 wait_3 off_R72 on_R61 wait_3 off_L48 off_L45 on_L40 MIDIトークン (MIDI-like + R/L) 18 Transformer
AIピアノアレンジ Demo 19 MIDI Transformer
MIDI to Score (浄書/楽譜化) Score MIDI ・左右パート分離 ・調推定 (+転調検出) ・楽譜要素推定
音部 / オクターブ指定 / 声部 / タイ結合 / 符幹の向き / 連桁 など 楽譜に必要な情報を推定 MIDIトークン (REMI + beat) Scoreトークン MIDI Score “Score Transformer: Generating Musical Score from Note-level Representation” (MMAsia 2021) R bar clef_treble key_sharp_3 time_3/4 note_E5 len_2 stem_down note_C#5 len_1/2 stem_down beam_start note_E5 len_1/2 stem_down beam_stop bar … L bar clef_bass key_sharp_3 time_3/4 note_G#3 note_E3 note_A2 len_2 stem_down note_G#3 note_E3 note_A2 len_1 stem_down bar … bar note_76 len_48 note_56 len_48 note_52 len_48 note_45 len_48 beat beat note_73 len_12 note_56 len_24 note_52 len_24 note_45 len_24 pos_12 note_76 len_12 bar … 20 Transformer
MIDI to Score (浄書/楽譜化) MIDIからの生成楽譜例 21 MIDI Score Transformer
指番号推定 note_77 → note_77_5 のように「トークン変換」を学習 bar bar 音高 と 指番号
を 1トークンで表現 note_77_5 note_71 tokenize R bar note_77_5 len_8 note_74_3 len_8 pos_8 note_76 len_8 note_73 len_8 pos_16 note_77 len_8 note_74 len_8 pos_24 note_76 len_8 note_72 len_8 pos_32 note_74 len_8 note_71 len_8 pos_40 note_72_4 len_8 note_69_2 len_8 bar note_71 len_16 note_67 len_16 指番号をトークン化 ・部分的に指番号をつける ・指番号を補完する “Piano Fingering Estimation and Completion with Transformers” (ISMIR2021 LBD) 22 MIDI Transformer
音楽版BERT • BERT : 汎用言語モデル • 大量の文章で pre-train • 少量の文章で
fine-tune → 様々な文章タスクが解ける • 例:感情分析, 文章分類, 質問に対する回答抽出 • 音楽版BERT : 汎用音楽モデル • 大量のMIDIで pre-train • 少量のMIDIで fine-tune → 様々な音楽タスクが解ける • 例:曲調分析, 作曲家推定, メロディ推定, 伴奏パターン提案 • 研究例 • MusicBERT (コード公開) • MidiBERT-Piano (学習済みモデル公開 / 音符レベル推論も) ← おすすめ Transformer だけでなく BERTベースも メロディ音符の推定 23 MIDI BERT
音楽AIまとめ • 音楽をトークンに → いろいろな音楽タスクが解ける • モデルの使い分け • Transformer (Encoder/Decoder):生成
/ 変換 / 推定 • BERT (Encoder-only):推定 / 分類 / 識別 • … • MIDI • Score • Audio • 生成 / 変換 • 推定 • 分類 / 識別 × • アレンジ • MIDI to Score • 指番号推定 • 音楽分析 = etc. トークン化で様々な音楽AIが学習できる! 24
Pythonライブラリ 音楽を処理するための
MIDIライブラリ • pretty-midi • 楽器・音符 という扱いやすい単位でオブジェクト化 • MIDIイベントそのままではなく • [注意]
基本単位は「時間 (sec.)」 • 音楽的な時間 (小節、拍) で扱いたいときは、 「 .time_to_tick() & .resolutionで割る」という一工夫が必要 pip install pretty_midi pm.time_to_tick() 先頭の楽器 音符一覧 26
Scoreライブラリ • music21 • 楽譜処理全般:楽譜の分析、編集、作成 など • 高機能、やや難解 • 多様なメソッド/プロパティが用意
• 全容把握は容易じゃない • 都度、ドキュメント検索が吉 • 楽譜をオブジェクト化 • オブジェクトの入れ子構造 Score Part Measure Voice pip install music21 27
MIDIトークン化 • MIDITok • MIDIを各形式でトークン化 • MIDI-like / REMI /
CP / MuMIDI など • id化されるので、意味を知りたいときは辞書から引く • 「拍」トークン対応版 • https://github.com/suzuqn/MIDITokenizer pip install miditok 28
Scoreトークン化 • Score Transformer (拙著論文) の公開コード • https://github.com/suzuqn/ScoreTransformer R bar
clef_treble key_sharp_3 time_3/4 note_E5 len_2 stem_down note_C#5 len_1/2 stem_down beam_start note_E5 len_1/2 stem_down beam_stop bar … L bar clef_bass key_sharp_3 time_3/4 note_G#3 note_E3 note_A2 len_2 stem_down note_G#3 note_E3 note_A2 len_1 stem_down bar … トークン化 逆変換 29
まとめ
音楽はAI×トークンで扱おう! AI トークン × 音楽分野でも Transformer系モデルは強い MIDI・楽譜・Audio すべてトークン化できる この組み合わせで 様々な音楽AIが実現できる
@szqn_n よければフォローお願いします! ご質問などもどうぞ! アイデア次第、お試しあれ! 31