>100 Views
September 30, 24
スライド概要
2019年8月の人工知能学会知識ベースシステム(KBS)研究会で行った招待講演で使用したスライドです。
日本大学 文理学部 情報科学科 北原研究室。 「Technology Makes Music More Fun」を合言葉に、音楽をはじめとするエンターテインメントの高度化に資する技術の研究開発を行っています。
音楽の知識表現: 自動作編曲への応用 日本大学 文理学部 情報科学科 北原 鉄朗 Twitter: @tetsurokitahara
自己紹介 ● 2002年3月: – 東京理科大学 理工学部 情報科学科 卒業 ● 2002年4月~2007年3月: – 京都大学 大学院 情報学研究科 – 指導教員: 奥乃 博教授 (後藤 真孝氏(産総研)) ● 2007年4月~2010年3月: – 関西学院大学 博士研究員 – 研究代表者: 片寄 晴弘 教授 ● 2010年4月~現在: – 日本大学 文理学部 専任講師→准教授 一貫して 音楽情報処理 の研究に従事
「音楽情報処理」とは 音楽とコンピュータが関わる全てを対象とする研究分野 オーディオ対象 音楽推薦 音楽情報検索 応用 寄り MIDI対象 ジャムセッション システム 能動的 音楽鑑賞 自動伴奏 N次創作支援 自動伴奏 自動採譜 類似度計算 ピッチ抽出 楽器練習支援 カラオケ 生成 新音楽I/F 歌声合成 演奏表情付け 楽音合成 基礎 寄り 演奏分析 作曲支援 BGM生成 自動作曲 旋律予測 楽曲分析
研究テーマ例(私の研究室の場合) 音楽を聴く人を助けたい 演奏する人を助けたい 複数人が同じBGMを ピアノ初見支援 MIDIギターの 精度向上 聴く場面の楽曲推薦 演奏時の筋活動の分析 歌う人を助けたい カラオケを盛り上げる スマートタンバリン ハモリ練習支援 音痴な人の分析 作曲する人を助けたい 旋律概形による作曲 ループシーケンサ マッシュアップの ための選曲支援 四声体和声の 自動生成 ベーシストの 特徴分析 etc 土台となる技術 HCI 音響信号処理 機械学習
音楽と情報科学/ITの関わり 音楽活動のための ツールとしてのIT シンセサイザー、 エレクトーンなど 情報科学研究の 題材としての音楽 人工知能、 知識情報処理 情報検索、 推薦システム DTM、DAW HCI
今日のAgenda 音楽のデータ表現 音楽の法則の知識表現 応用
音楽のデータ表現
音楽のデータ表現 コード(chord) C C D/F G コード認識 楽譜(score) 自動採譜(後段) ピアノロール (piano-roll) 自動採譜(前段) スペクトログラム (spectrogram) 周波数分析 (フーリエ変換など) 波形(waveform)
波形 vs スペクトログラム 波形 ● ● ● ● スペクトログラム 時間領域の表現 周波数に関することは 読み取れない 音楽的な内容・特徴を 読み取るのはほぼ無理 アナログ信号に対して 標本化・量子化を行う ことで得られる ● ● ● 時間・周波数表現 倍音の存在により、 複数音が重なった時の 読み取りは困難 波形に対して 短時間フーリエ変換を 繰り返すことで得られる
スペクトログラム vs ピアノロール スペクトログラム ● ● ● ピアノロール 時間・周波数表現 信号処理のみで得られる (パターン認識 不必要) 倍音がそのまま表示 ● ● ● 時間・音高平面上の 記号的表現 「音符」の集合 音符::= (発音時刻, 音高, 音長) 音色は読み取れない
ピアノロール vs 楽譜 ピアノロール 楽譜 ● ● ● 発音時刻や音長は、実際 の演奏に基づいて表示 ● 楽器演奏の記録方式で であるMIDIの視覚表現 ● 発音時刻や音長は、実際 の演奏とは異なる 音長などの細かな特徴は 指示記号として表現 演奏者に対する指示で、 解釈の余地がある
楽譜 vs コード表記 楽譜 コード表記 C C D/F G ● 具体的な演奏内容を指示 ● ● ● コード名で表記された コードをどう演奏するか 演奏者が考える ヴォイシングの違い (ド・ミ・ソ vs ド・ソ・ミ) は表現されない 楽器間の互換性は高い
なぜ、音楽は計算機利用が盛んか 記号的表現(楽譜、ピアノロール、コード名)の確立 その土台となっているのが「離散性」 音の 高さ 262Hz 277Hz 293Hz 311Hz 329Hz ・・・・・・ ド 音の 長さ ド# レ レ# ミ 0.25秒 0.5秒 1秒 0.125秒 2秒 (テンポ=120の場合)
なぜ離散的な値しか使わないのか (音の高さの場合) 1つに聞こえる音も、実はいくつもの音が重なってできている 振幅 440Hz(ラ)の音 基本周波数 同時に鳴らすと・・・ 周波数 振幅 660Hz(ミ)の音 振幅 紫の部分が重なる 基本周波数 周波数 周波数
もしも、片方の周波数がずれていたら・・・ 振 幅 440Hz(ラ)の音 基本周波数 同時に鳴らすと・・・ うなりの原因になる 周波数 振 幅 振 幅 620Hz(ミ♭)の音 基本周波数 周波数 周波数 基本周波数が 2:3 とか 3:4 だと「うなり」が起きない
周波数を選んでみよう 2つの音の周波数比が次のようになるように周波数を選ぼう ド:ソ=2:3 ソ:レ=2:3 ファ : ド = 2 : 3 ド:ミ=4:5 ソ:シ=4:5 ファ : ラ = 4 : 5 × 3/2 × 3/2 × 5/4 × 5/4 ド 264Hz × 5/4 レ ミ ファ ソ ラ シ ド レ 330Hz 396Hz 495Hz 594Hz 440Hz 297Hz 352Hz 528Hz ÷2 ×2 × 2/3 ※ 実際の周波数は少し異なる場合がある
純正律と平均律 純正律 周波数比に基づいて決めたドレミと周波数の関係 × 3/2 × 5/4 × 5/4 ド レ × 3/2 × 5/4 ソ× 2/3 ラ ミ ファ シ ド レ ※隣同士の周波数比が一定にならない 平均律 隣同士の周波数比が一定になるように決めた ドレミと周波数の関係 × 12√2 ・・・・・・ ド ド# レ レ# ミ (レ♭) (ミ♭) ファ ファ# ソ ソ# ラ ラ# シ (ソ♭) (ラ♭) (シ♭) ド ド# レ (レ♭)
このように、周波数軸を離散化することで、 離散的なモデルを使うことができる 以降、離散化された(記号的な)表現 (特に、楽譜、コード名)を前提に話を進める
音楽の法則の知識表現
音階 (スケール) ある楽曲において、主に使う音高を集めたもの 半音階 {ド, ド#, レ, レ#, ミ, ファ, ファ#, ソ, ソ#, ラ, ラ#, シ} 長音階 {ド, レ, ミ, ファ, ソ, ラ, シ} (ハ長調) 短音階 {ド, レ♭, ミ♭, ファ, ソ, ラ♭, シ♭} (ハ短調) ♭ ♭ ♭
長音階・短音階をunigramで表す ● ハ長調の楽曲は、主に {ド, レ, ミ, ファ, ソ, ラ, シ} が 使われるが、それらだけが使われるわけではない。 その傾向を確率モデル (unigram) で表す ハ長調の楽曲(約250曲)のunigram 0.25 このunigramに沿ってメロディを 0 ド レ ミ ファ ソ ラ シ 生成すれば、ハ長調っぽくなる?
その他の音階 五音階(ペンタトニックスケール) ● 長音階・短音階から5つの音を選んだ音階 ● 【例】沖縄音階 {ド, ミ, ファ, ソ, シ}(ハ長調の場合) 0.2 ブルーススケール ● ブルースで使われる音階 ● {ド, レ, ミ♭, ミ, ファ , ソ♭, ソ, ラ, シ♭, シ} 0 ド レ ミ ファ ソ ラ シ
音高の遷移をN-gramで表す 順次進行に比べて跳躍進行は頻度が低い ● 特に跳躍進行が連続することは滅多にない ● 順次進行 音高の遷移でbigramでモデル化 from to ド レ 跳躍進行 ミ ファ ソ ラ シ ド レ ミ ファ ソ ラ シ
和音(コード) ハ長調の音階の各音高に2つ上(3度上)の音を乗せて、 さらにその2つ上の音を乗せて和音を作る 和音の遷移の傾向を オートマトンで書く Dominant(D) Tonic(T) Sub-dominant(S) 和音の遷移の傾向 T (→ S) → D → T (ブルースなどだとちょっと違う場合もある) S T D
※ブルース の場合 コードの遷移をN-gramで表す 直前のコードがCの場合 コードの出現確率 0.2 0.5 0.18 0.45 0.16 0.4 0.14 0.35 0.12 0.3 0.1 0.25 0.08 0.2 0.06 0.15 0.04 0.1 0.02 0.05 0 0 C Db D Eb E F Gb G Ab A Bb B 直前のコードがFの場合 C 0.7 0.3 0.6 0.25 0.5 0.2 0.4 0.15 0.3 0.1 0.2 0.05 0.1 0 0 Db D Eb E F Gb G D Eb E F Gb G Ab A Bb B Ab A Bb B 直前のコードがGの場合 0.35 C Db Ab A Bb B C Db D Eb E F Gb G
メロディとコードの関係をHMMで表す C C Dm G 隠れ 状態 C C Dm G 観測 記号 ド ● ● ● ド ド ミ レ ド レ ミ レ メロディの背後にはコードがあり、これを隠れ状態とする メロディの各音高は、コード(=隠れ状態)に依存した 確率分布に従って出力されると考える 観測記号からの隠れ状態の推定で、和声付けができる
コード進行をPCFGで表す 言語と同様、コード進行は文脈自由文法で書ける 例1 H→T ● T → T T ● T → D T ● T → C ● D → G ● この文法で扱える コード進行の例: 「C G C」 例2 H→T ● T → T T ● T → D T ● T → T S ● T→C ● D → G ● S → F ● この文法で扱えるコード進行の例: 「C G C」「C F G C」 「C F C G C」 通常は、非決定的なので確率化したPCFGを用いる
PCFGにメロディも追加する [諸岡 他, 音響学会 2007] 導出規則にメロディの音高も入れると、 コード進行からメロディが生まれる過程を書ける 例 H→T ● T → T T ● T → D T ● T → C ● D → G ● H C→ド ● C → ミ ● G → レ ● ド→ド レ ● ミ → ミ ファ ● この文法は「ド レ ミ ファ」という メロディを受理でき、対応する コード進行は「C」 T T T C C ド ミ ド レ ミ ファ
2次元PCFG [Kameoka et al. ISMIR 2012] 縦・横両方に拡がるポリフォニー(多声音楽)のモデル ポリフォ ニーの例 時間軸・ 音高軸の それぞれに 導出規則 いずれの図も [Kameoka et al. ISMIR 2012] より
応用
応用 ● 自動採譜のトップダウンな知識として利用 ● 自動作曲・自動編曲に利用 – 作曲: 何か → メロディ – 編曲: メロディ(+何か) → 伴奏(コード進行含む) (あくまで便宜的な定義) ここでは、自動作曲・自動編曲への応用を取り上げる
(2013年度修了 鈴木峻平氏の研究成果) 【事例1】 四声体和声の自動生成 ソプラノパートが与えられ、残りの3パートを自動的に生成する PLAY C F Em G C C G7 C F C Am C G C
何が難しいのか C G7 C G7 同時に鳴る各パートの音の関係(同時性) ソプラノの音が「ミ」のときに、 そのときのバスの音が「ド」は妥当か? 旋律の横方向のつながり(継続性) ある音が「ミ」のときに、その次の音が「レ」は妥当か? 同時性と継続性の両方を満たす音を探す必要がある 和声学の分野で様々なルールが提案されているが、 すべてを矛盾なく適用するのは簡単ではない
ベイジアンネットワークの利用 直前の音 現在の音 次の音 個々の には、 各音名に対する 確率が入る。 y x は、 x の確率が y に依存 して決まることを表す 与えられる or 決定済 確率計算対象
データ 学習データ ● 賛美歌254曲 ● すべてハ長調に 移調して使用 評価データ ● 和声学の教科書 から抽出した 32個のメロディ
別の実行例
【事例2】 コードヴォイシング (関西学院大学 長田研との共同研究) 与えられたコード進行に対して 音の配置(ヴォイシング)を決定 エレクトーンに着目 ヴォイシングの例 C F G Naive C Jazzy 課題 テンションノート 音の省略 転回形 例: 9ths, 11ths, … ジャズなどで特に重要 不協和音や 物理的制約を避ける 音の流れをスムーズに
ベイジアンネットワークの利用
結果の一例 “Misty” (by Erroll Garner) 左手ヴォイシング • テンションノートが 付与された • 自然な転回形が 選択された ベースヴォイシング • ほとんどでルート音が 選択された b13th 9th 9th Non-root note Top tones are smoothly connected
【事例3】 (Universitat Pompeu Fabra との共同研究) 曲線描画に基づく即興演奏支援システム 画面上に「旋律概形」 を描くと、その場で メロディが生成
音高決定法 基本的なアイディア 3 曲線への近さ と 音楽的妥当性 の 両方を満たす音高列を 「遺伝的アルゴリズム」(GA)で探す C A F 適合度の設計 F(N) = w0 sim(N) + w1 seq(N) + w2 h(N) + w3 ent(N) 旋律概形 への近さ 音高遷移の もっともらしさ コードと 音高の 関係 メロディの 複雑さ ブルースの旋律53曲との比較に基づいて計算
(2017年度卒業 白石美南氏・小笠原梢氏の研究成果) 【事例4】 カラオケのためのハモリ練習支援システム この研究が目指すところ カラオケでハモりたい人が、ハモリパートを練習できる 原曲にハモリパートがなくてもハモれるようにしたい ● 原曲のハモリパート(ある場合)異なっても構わない ● ● 家などで1人で練習したい 技術的課題 ● ● ハモリパートの自動生成 ハモリパートの練習環境 の提供 解決策 ルール or 確率モデル 歌唱者の音高表示 などでフィードバック
ハモリパートの自動生成 何が難しいか M3 m3 P4 上ハモリ 主旋律 下ハモリ 解決策 HMMでモデル化 (別途、ルールベース の手法も実装) 主旋律に対して、 M3(半音4つ分)、 m3(半音3つ分)、 P4(半音6つ分) どれがいいかは、 調やコード進行 などに依存 ハモリ hi-1 hi hi+1 主旋律 ni-1 ni ni+1 伴奏 bi-1 bi bi+1
統一的なモデルに向けて レイヤーごとに時系列モデルを作り、レイヤー内の 時間的依存関係とレイヤー間の依存関係を記述 → 様々なタスクの統一的なモデルを作れるはず Chord-level (melody) Score-level or Pianoroll-level (bass) Spectrogramlevel
今後に向けて ● ● ● ● 大局的な依存関係をどう記述・学習するか – フレーズ単位の依存関係 – 曲の構成(A-B-Aなど)や繰返し構造 予測モデルとしての可能性 – リアルタイムシステムにするなら予測は不可欠 DNN(CNN、RNNなど)の活用 – 増えつつあるが、認識系の研究に比べて少数 評価をどうするか
まとめ ● ● メロディの音の遷移、コード進行のコードの遷移、 メロディとコードの関係を確率モデルで表現 それを用いて、自動作曲、自動編曲などを実現 音楽は数理的扱いに適した芸術メディア ● 数理モデルを用いた音楽理論の精緻化・再構築 ● 音楽を題材とした数理(特に時系列)モデルの研究 ● 音楽を題材とした数理モデルの教育 …などなど、様々な可能性アリ。ぜひ皆さんも算入を!