233 Views
September 28, 24
スライド概要
2020年に大阪産業大学のゼミナールで講演(オンライン)したときのスライドです。
日本大学 文理学部 情報科学科 北原研究室。 「Technology Makes Music More Fun」を合言葉に、音楽をはじめとするエンターテインメントの高度化に資する技術の研究開発を行っています。
2020年12月23日 大阪産業大学 特別講演 音楽と情報科学 日本大学 文理学部 情報科学科 北原 鉄朗 http://www.kthrlab.jp/ Twitter: @tetsurokitahara
コメントスクリーンからのコメントのお願い ぜひ気軽に次のURLからコメントをつぶやいてください。 https://commentscreen.com/comments?&id=0mMAacQDRmiqOsRYPlN7
自己紹介 ● 札幌生まれ。41歳 ● 小~中学時代: – 家にあったPCをいじる(当時、PCをいじる≒プログラミング)。 – 某音楽教室でピアノや作曲を学ぶ(中学からはDTMも)。 ● 高校時代: バンド活動を始める。プログラミングもいろいろ手を出す。 ● 大学時代: 進学のため柏に引っ越す。 – 情報科学科に入学し、プログラミングを本格的に学ぶ。 – バンド活動も本格的に行う。 – 4年生からは、音楽情報処理の研究を始める。 ● 大学院時代: 京都の大学院に進学。 – 音楽情報処理の研究を本格展開。バンド活動はほとんど休止 ● その後: 関西の大学の研究員を経て、現在東京在住。
1. 音楽情報処理って何?
「音楽情報処理」って知ってる? 音楽とコンピュータが関わる全てを対象とする研究分野 オーディオ対象 音楽推薦 音楽情報検索 応用 寄り MIDI対象 ジャムセッション システム 能動的 音楽鑑賞 自動伴奏 N次創作支援 自動伴奏 自動採譜 類似度計算 ピッチ抽出 楽器練習支援 カラオケ 生成 新音楽I/F 歌声合成 演奏表情付け 楽音合成 基礎 寄り 演奏分析 作曲支援 BGM生成 自動作曲 旋律予測 楽曲分析
音楽と情報科学/ITの関わり 音楽活動のための ツールとしてのIT シンセサイザー、 エレクトーンなど 情報科学研究の 題材としての音楽 人工知能、 知識情報処理 情報検索、 推薦システム DTM、DAW HCI
日大文理 北原研で行われている 音楽情報処理 (あくまで一例) ● 自動作曲・自動編曲 C ● ● 音楽検索・音楽推薦 Am G A E E C C 音楽の非専門家の ための音楽創作支援 ● カラオケの楽しみを 拡張する試み
2. 日大文理 北原研で行われている 音楽情報処理研究をいくつか紹介
【事例1】 (2013年度修了 鈴木峻平氏の研究成果) 四声体和声の自動生成 ソプラノパートが与えられ、残りの3パートを自動的に生成する PLAY
何が難しいのか C G7 C G7 同時に鳴る各パートの音の関係(同時性) ソプラノの音が「ミ」のときに、 そのときのバスの音が「ド」は妥当か? 旋律の横方向のつながり(継続性) ある音が「ミ」のときに、その次の音が「レ」は妥当か? 同時性と継続性の両方を満たす音を探す必要がある
【事例2】 (Universitat Pompeu Fabra との共同研究) 曲線描画に基づく即興演奏支援システム 音楽の非専門家が即興演奏を楽しめるシステム 演奏しながら瞬時にメロディ を考えなければならない 技術的課題 非専門家向けの演奏UI メロディの自動生成 特別な訓練なしに ユーザが入力したデータから 直感的に簡単に使える 音楽的に妥当なメロディを得る
メロディの大まかな形 (旋律概形)を描くと、 メロディが生成される
(2017年度卒業 白石美南氏・小笠原梢氏の研究成果) 【事例3】 カラオケのためのハモリ練習支援システム この研究が目指すところ カラオケでハモりたい人が、ハモリパートを練習できる ● 原曲にハモリパートがなくてもハモれるようにしたい ● 原曲のハモリパート(ある場合)異なっても構わない ● 家などで1人で練習したい 技術的課題 ● ハモリパートの自動生成 ● ハモリパートが正しく歌えているかのフィードバック
HamoKara 主旋律 (薄いグレイ) ハモリパート(副旋律)を 自動生成 副旋律 (赤) 歌唱の音の高さ (濃いグレイ) 歌詞 自身のハモリ歌唱が正確かを 把握しながらハモリの練習をできる
3. 音楽の基礎知識
音名 いわゆる「ド」「レ」「ミ」のこと。オクターブの違いを考えない。 同じ音名(ド)で1オクターブ違うレ♭ ミ♭ ド♯ レ♯ ソ♭ ラ♭ シ♭ ファ♯ ソ♯ ラ♯ ド レ ミ ファ ソ ラ シ ド レ ミ ファ ソ ラ シ ド レ ミ ファ ソ ラ シ
音階 音名を並べたもの。7音や5音取り出して並べることが多い。 ハ長調の音階 ハ短調の音階 ※バリエーションが いくつかある ミ♭ ド レ ミ ファ ソ ラ シ ド レ ラ♭ シ ♭ ファ ソ 「ハ長調の音階」の音名を主に使った曲がハ長調の曲。 つまり、ハ長調の曲には、♯/♭の音名はめったに出ない。 主音。最後によく出てくる。使用頻度も高い。
音程 2つの音の高さの差 不協和を生む音程 半音10個分 半音6個分 半音1個分 この関係にある音を同時に 使うのは避けることが多い。 不安定な響きが欲しいときは あえて使うことも多い。 (ジャンルによっては多用される。) 半音2個分 半音11個分
自動でメロディを作るには… メロディに関する知識が、音楽理論としてまとまっている。 ハ長調の曲には、 ♯・♭の音はめったに出ない。 半音1・2・6・10・11個分の 音程は、不協和になる。 主音(ハ長調なら「ド」)で 終わることが多い。 これらの法則をプログラミングすればいいのでは? でも、これらは絶対じゃない(ジャンルによっても異なる)。 これらの法則は、いずれも出現頻度を表す。 (例: ◯◯のときは△△を使うことが多い/めったにない。) 多くのデータの分析して(天気予報のように)確率で表しては?
4. 音楽を確率で考えよう
確率って何だっけ? この袋から玉を1つ取り出すとき、 メロディに「ド」が出現する確率は? 青玉を引く確率は? 1つのメロディに「ド」「レ」「ミ」が 同時に出現する確率は? ド ド ド レ 同じ袋から玉を3つ取り出すとき、 青玉→赤玉→青玉 を引く確率は? (ただし、1回ごとに玉は戻す) ミ ミ ソ ソ ラ 世の中のすべてのメロディを 袋に詰めて、音符を取り出す。 実際には、その部分集合 を使う(標本という)。
確率を使ってメロディを作る2つの方法 1音1音ランダムに決める ド ド ミ ド レ ミ ソ ソ ラ 袋の中から玉を選ぶのと同じ 確率が最大になるドレミ の組み合わせを探す ドドド ⇒ 3/9 × 3/9 × 3/9 = 1/27 ドドレ ⇒ 3/9 × 3/9 × 1/9 = 1/83 ドドミ ⇒ 3/9 × 3/9 × 2/9 = 2/83 ...... ドドド なぜ確率最大なのか 不適切な音の組み合わせを 避けて作曲されているなら、 出現確率は、音の組み合わせ の適切さを表すといえる。
確率の表記法を確認しよう メロディの各音符に x1, x2, x3, ... という変数を割り当てる。 これらの変数には、各音名が入るものとする。 P(x1 = ド) ... 最初の音符の音名が「ド」である確率 P(x1 = ド, x2 = レ) ... 最初が「ド」で、次が「レ」である確率 ※コンマは「かつ」を意味する。 P(x2 = レ | x1 = ド) ... 最初の音符が「ド」という条件の下で、 その次の音符が「レ」である確率(条件付確率)
確率を使う注意点 ● メロディにどの音を選ぶかは、本来ランダムではない。 – おそらく、作曲者はそれなりの必然をもって選んでいる。 – でも、それは作曲者の中だけの必然。 – 外からそれが見えない以上、確率現象として扱うしかない。 ● 袋の玉と同様、ド・ド#・レ…シ(音名という)によって 選ばれる確率は違う。 – それぞれが選ばれる確率を「確率分布」という。 ● 先の例では、「ドの次のミ」と「レの次のミ」を区別しない。 – 条件付確率を使って、前の音からのつながりを考慮すべき。
考えてみよう その1 次の6つのメロディだけがある世界を考えよう。 ドミソ、 ソファミ、 ミレド、 ソミミ、 レミド、 ドレド ● P(x1 = ド) = ● x1, x2, x3を区別しないとき、 P(xn = ド) = ● P(x2 = ミ) = ● P(x2 = ミ | x1 = ド) = ● x1, x2, x3を区別しないとき、P(xn = ミ | xn-1 = ド) =
考えてみよう その2 次の6つのメロディだけがある世界を考えよう。 ドミソ、 ソファミ、 ミレド、 ソミミ、 レミド、 ドレド ● x1, x2, x3を区別しないとき、 この6つのメロディから 得られる確率分布に従ってメロディを作ったときに 「ドレミ」というメロディが得られる確率は?
適切な確率分布を用いる 一様分布を用いる データから学習する 0.20 0.15 ハ長調の場合 0.15 0.10 0.10 0.05 0.05 0.00 0.00 ドドレレミフフソソララシ ♯ ♯ ァァ ♯ ♯ ♯ ドドレレミフフソソララシ ♯ ♯ ァァ ♯ ♯ ♯ ハ長調らしい 音遣いになっている
前の音からのつながりを考慮する メロディに各音名が出現する確率 「ド」の次に各音名が出現する確率 0.20 0.30 0.15 0.20 0.10 0.10 0.05 0.00 0.00 ドドレレミフフソソララシ ♯ ♯ ァァ ♯ ♯ ♯ P(xn = ミ) 低 P(xn = ミ | xn-1 = ド) 高 P(x = ミ | x n = レ) n-1 ドドレレミフフソソララシ ♯ ♯ ァァ ♯ ♯ ♯ 「レ」の次に各音名が出現する確率 0.30 0.00 ドドレレミフフソソララシ ♯ ♯ ァ ァ♯ ♯ ♯
前の音からのつながりを考慮する 最初の音符 2つ目の音符 3つ目の音符 1つ前がないので、 P(xn=□) を使う 1つ前が「ド」なので、 P(xn=□ | xn-1=ド) を使う 1つ前が「レ」なので、 P(xn=□ | xn-1=レ) を使う 0.20 0.15 0.10 0.05 0.00 0.30 0.30 0.20 0.10 ドドレレミフフソソララシ ♯ ♯ ァァ ♯ ♯ ♯ 「ド」が選ばれた 0.00 ドドレレミフフソソララシ ♯ ♯ ァァ ♯ ♯ ♯ 「レ」が選ばれた 0.00 ドドレレミフフソソララシ ♯ ♯ ァァ ♯ ♯ ♯ 「ミ」が選ばれた
結果1 結果2 (ただし、「シ」の音のオクターブを1か所手動で修正) 結果3 (ただし、「シ」の音のオクターブを1か所手動で修正) デモ用プログラム(Google Colab): https://colab.research.google.com/drive/11W481YdiWSFaOvtncen1_kn3ev3fhin2?usp=sharing
ソプラノにアルトを付ける x1 x2 x3 x4 x5 x6 x7 ソプラノ x1x2x3... が 与えられたときに、 アルト y1y2y3... を決める y1 y2 y3 y4 1 y5 y6 y7 y1の決め方 P(y1 = □ | x1 = ソ) に従って乱数を得る。 2 「ミ」が選ばれた。 y2の決め方 P(y2 = □ | x2 = ラ, y1 = ミ) に従って乱数を得る。 これを α P(y2 = □ | x2 = ラ) P(y2 = □ | y1 = ミ) と近似する。 以下同様 (α: 和を1にするための定数)
x1 x2 x2=ラ, y1=ミ が決定済みとして y2を決めよう。 y1 y2 P(yn = □ | yn-1 = □) P(yn = □ | xn = □) ド yn ド シ ド xn ド yn-1 シ シ yn シ
x1 x2 x2=ラ, y1=ミ が決定済みとして y2を決めよう。 P(yn = □ | yn-1 = ミ) y1 y2 P(yn = □ | yn-1 = □) P(yP(y =□ | xn| =xn□) =□ = ラ) n n ド yn ド シ ド xn ド yn-1 シ シ yn シ
x1 x2 x2=ラ, y1=ミ が決定済みとして y2を決めよう。 P(yn = □ | yn-1 = ミ) y1 y2 この確率分布に基づいて ドレミを決める P(yn = □ | yn-1 = □) P(yP(y =□ | xn| =xn□) =□ = ラ) n n ド yn ド シ ド xn ド yn-1 シ yn-1 シ yn シ
考えてみよう その3 次の6つのメロディ(アルト付き)だけがある世界を考えよう。 x: ドミソ、 ソファミ、 ミ レ ド、 ソミミ、 レミド、 ド レ ド y: ドドミ、 ミ レ ド、 ソファミ、 ミドド、 レレド、 ソファソ ● P(yn = ド | xn = ミ) = ● P(yn = レ | xn = ミ) = ● P(yn = ド | yn-1 = レ) = ● P(yn = ド | xn = ミ, yn-1 = レ) = ● P(yn = ド | xn = ミ) P(yn = ド | yn-1 = レ) = 何番目に出るかは区別しないとする。
考えてみよう その4 次の6つのメロディ(アルト付き)だけがある世界を考えよう。 x: ドミソ、 ソファミ、 ミ レ ド、 ソミミ、 レミド、 ド レ ド y: ドドミ、 ミ レ ド、 ソファミ、 ミドド、 レレド、 ソファソ ● ソプラノ「ドレミ」が与えられたときに、 アルト「ソファソ」が出力される確率は? 何番目に出るかは区別しないとする。 デモ用プログラム(Google Colab): https://colab.research.google.com/drive/1mWWwMunql2USHEA9dBOoMraGQL__1CiT
5. さきほど紹介した研究事例で 確率の考え方がどう活かされているか
【事例1】 (2013年度修了 鈴木峻平氏の研究成果) 四声体和声の自動生成 ソプラノパートが与えられ、残りの3パートを自動的に生成する PLAY
実現方法 先の考えに従い、アルトに加えて テノール・バスを確率に基づいて決定する。 直前の音 現在の音 与えられる or 決定済 次の音 確率計算対象
データ 学習データ ● 讃美歌254曲 ● すべてハ長調に 移調して使用 『讃美歌 第2編 ともにうたおう』 (日本基督教団讃美歌委員会) 評価データ ● 和声学の教科書 から抽出した 32個のメロディ
別の実行例
【事例2】 (Universitat Pompeu Fabra との共同研究) 曲線描画に基づく即興演奏支援システム 画面上に「旋律概形」 を描くと、その場で メロディが生成
実現方法 基本的な考え方 旋律概形 10 確率に基づいて音名を決定 5 ※1つ前の音符が 「ド」の場合 P(xn = □ | xn-1 = ド, hn = ドミソ) 0 伴奏の和音 メロディの メロディの n個目の音符 (n-1)個目の音符 リズム決定 3 ≒ αP(xn=□ | xn-1=ド) P(xn=□ | hn=ドミソ) 旋律概形に沿ったメロディを得るために… 音名決定 ド ソ ミ α P(xn=□ | sn = 5) 旋律概形の縦軸の座標 ×P(xn=□ | xn-1=ド) P(xn=□ | hn=ドミソ) sn と xn が離れるほど確率が低くなるように設定 ブルースのメロディ 約50曲で学習
【事例3】 (2017年度卒業 白石美南氏・小笠原梢氏の研究成果) カラオケのためのハモリ練習支援システム 「ソプラノパートにアルトパートを付与」と同じ方法で ハモリパートを自動生成
6. 今のコンピュータは、 どの程度の曲を作れるのか
JamSketch (旋律概形による 即興演奏支援システム)を用いた実験 目的 JamSketch が生成したメロディが、 人間が演奏したメロディにどの程度近いか確かめる。 実験参加者 5名の演奏経験者(うち2名は即興演奏も経験) 1名の音楽未経験者 実験方法 1. 実験参加者に JamSketch と普通のキーボードで 即興演奏してもらう。 2. 両方のメロディを区別なく並べる。 3. 第三者が聴いて評価する。 ※ ここでは第三者による評価の結果は省略
実験参加者の詳細 演奏 音楽経験 実験で使用 演奏 即興 KB Syst. ? System s2 ? System s1 ? KB (P2) u2 P1 Yes Yes Yes No P2 Yes No Yes Yes ? KB (P1) u1 P3 Yes No No Yes ? System s4 P4 No No No Yes ? KB (P5) u3 ? System s3 ? KB (P6) u4 P5 P6 Yes Yes No Yes Yes Yes Yes No STOP
他の研究者による研究事例 ● DeepBach https://www.youtube.com/watch?v=QiBM7-5hA6o ● MiDiNet https://richardyang40148.github.io/TheBlog/midinet_arxiv_demo.html
現状の自動作曲技術(私見) ● 十分に多くのデータを与えれば、既存のスタイルを 踏襲した曲はまあまあ作れる。 ● よくある音遣いを学習して模倣しているだけで、 曲の良さを判断する「耳」があるわけではない。 ● どんな音遣いだと人々が感動するかを理解して 音を選んでいるわけではない。 ● コンピュータが新しい音楽を創造するのはもっと先? ● うまく活用すれば、現状でも十分つかえる。
7. おわりに
Take-home messages ● 音楽には、一定の法則がある。 – ハ長調なら「ド」の音で終わりやすい、♯/♭の付いた音 は出にくい、など。 ● 音楽の法則は、確率を使って記述することができる。 – データを集めれば、統計を使って自動で得ることも。 ● 確率の考え方を使えば、作曲もできる。 紹介した研究事例の多くは、本研究室の学生の研究成果です。 本学では、2月頃の大学院入試もありますので、 このような研究を行いたかったら、ぜひご連絡ください。
Follow me!! Check it out!! @tetsurokitahara http://www.kthrlab.jp/ @kthrlab YouTube 日大文理北原研