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
[ECCV2024読み会] 衛星画像からの地上画像生成
elith
1
990
メタヒューリスティクスに基づく汎用線形整数計画ソルバーの開発
snowberryfield
3
680
新規のC言語処理系を実装することによる 組込みシステム研究にもたらす価値 についての考察
zacky1972
1
300
ニュースメディアにおける事前学習済みモデルの可能性と課題 / IBIS2024
upura
3
750
2024/10/30 産総研AIセミナー発表資料
keisuke198619
1
410
第79回 産総研人工知能セミナー 発表資料
agiats
3
190
VisFocus: Prompt-Guided Vision Encoders for OCR-Free Dense Document Understanding
sansan_randd
1
420
IM2024
mamoruk
0
200
湯村研究室の紹介2024 / yumulab2024
yumulab
0
370
Weekly AI Agents News!
masatoto
30
45k
[依頼講演] 適応的実験計画法に基づく効率的無線システム設計
k_sato
0
220
メールからの名刺情報抽出におけるLLM活用 / Use of LLM in extracting business card information from e-mails
sansan_randd
2
350
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
13k
Making the Leap to Tech Lead
cromwellryan
133
9k
Optimizing for Happiness
mojombo
376
70k
Building Adaptive Systems
keathley
38
2.4k
Navigating Team Friction
lara
183
15k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
360
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Writing Fast Ruby
sferik
628
61k
Visualization
eitanlees
146
15k
Thoughts on Productivity
jonyablonski
68
4.4k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
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