確率 スペクトル包絡に基づく NMF 基底 生成 モデル を用いた 混合...
description
Transcript of 確率 スペクトル包絡に基づく NMF 基底 生成 モデル を用いた 混合...
確率スペクトル包絡に基づく NMF基底生成モデルを用いた混合楽音解析
神戸大学工学研究科◎ 中鹿 亘,滝口哲也,有木康雄
第 89 回音楽情報科学研究発表会
研究背景音楽信号処理の高い関心
コンピュータの著しい発展音楽信号の爆発的な増加
自動採譜技術の期待一般ユーザの音楽活動支援様々な音楽アプリケーションへ応用可能
2
音楽検索や音楽加工など
研究内容楽音解析 (≒ 自動採譜 )
楽音パラメータを推定
研究対象混合楽音の解析
3
音高、発音開始時刻、音価、強度など(調やテンポは推定しない)
複数の楽器によるポリフォニー音楽を解析いずれも非常に難しい問題
従来の楽音解析手法 非負行列因子分解 (NMF) による手法 [1]
非負行列 X を、2つの非負行列 W, H の積に分解
音楽信号のスペクトログラムを NMF で分解
4
[1] P. Smaragdis, 2003
観測スペクトル 基底行列
アクティビティ行列
音高の情報を含む
発音時刻などの情報を含む
X WH
問題点
教師なし NMF による楽音解析の問題点
5
スペクトルが混在している
スペクトルが倍音成分のみ⇒ 音高が求まる
教師なし NMF では、機械的に分解しているので意図しない基底が表れてしまう
教師なし NMF で解析
アクティビティ H 基底 W ⇒ 音高が求まらない
教師あり NMF による楽音解析の問題点 教師あり NMF… 基底行列が既知であると仮定
基底行列を予め学習しておく
6
観測スペクトル 基底行列
アクティビティ行列既知
X W
H
問題点 解析精度は高いが…全ての楽器機種、全ての音高について基底を用意するのは現実的ではない
研究の動機 教師なし NMF の問題点:意図しない基底が表れてしまう 教師あり NMF の問題点:全ての基底を用意するのは非現実的
7
楽器カテゴリの特徴量から,楽器の基底を全て表現できないか?
“ ピアノ”の特徴量
piano1piano3
piano4piano2
?
楽器カテゴリの特徴量1. 音階に依存しない特徴量にしたい…2. スペクトルの変動を吸収したい…
8
ある音階の微小に変動するスペクトルあらゆる音階のスペクトル
スペクトル包絡に着目
確率的なスペクトル包絡,確率スペクトル包絡 ( PSE ) を考える
PSE
確率的な表現をする
提案手法の流れ
9
スペクトログラム
教師なし NMF
スペクトログラム
教師あり NMF
学習信号 テスト信号
MIDI
拡張ガウシアンプロセス
PSEs
遺伝アルゴリズム確率スペクトル包絡の学習
音階ごとのスペクトルを求める教師ありNMFと遺伝アルゴリズムを組み合わせて曲を解析
楽器カテゴリの特徴を表す確率スペクトル包絡
学習ステージ 解析ステージ
解析ステージ
提案手法の流れ(学習ステージ)
10
スペクトログラム
教師あり NMF
テスト信号
MIDI
遺伝アルゴリズム
教師ありNMFと遺伝アルゴリズムを組み合わせて曲を解析
スペクトログラム
教師なし NMF
学習信号
拡張ガウシアンプロセス
PSEs確率スペクトル包絡の学習
音階ごとのスペクトルを求める楽器カテゴリの特徴を表す確率スペクトル包絡
学習ステージ
教師なし NMF によるスペクトル抽出
11
1. 学習信号のスペクトログラムを教師なし NMF で分解
学習データ基底行列
アクティビティ行列
スペクトログラム
NMF⇒
f
y⇒
2. 基底行列からスペクトルピークを抽出スペクトルピークの集合 D を確率スペクトル包絡の学習に用いる
⇒
スペクトルピーク集合
確率スペクトル包絡の学習
12
3. 拡張ガウシアンプロセスでピーク集合を近似拡張ガウシアンプロセス (SPGP+HS[2])• ガウス分布に従った確率過程• 任意の関数曲線を分散込みで近似できる
[2] E. Snelson and Z. Ghahramani, 2006
f
y
⇒スペクトルピーク集合
SPGP+HS ガウシアンプロセス=
確率スペクトル包絡
通常のガウシアンプロセスでは,分散値をうまく推定できない
提案手法の流れ(解析ステージ)
13
スペクトログラム
教師なし NMF
学習信号
拡張ガウシアンプロセス確率スペクトル包絡の学習
音階ごとのスペクトルを求める
学習ステージ
スペクトログラム
教師あり NMF
テスト信号
MIDI
PSEs
遺伝アルゴリズム
教師ありNMFと遺伝アルゴリズムを組み合わせて曲を解析
楽器カテゴリの特徴を表す確率スペクトル包絡
解析ステージ
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
(予備知識1)スペクトル基底の生成過程確率スペクトル包絡からスペクトル基底を生成
14
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
確率スペクトル包絡 調波フィルタ
スペクトル包絡 生成されたスペクトル基底
ランダム生成
任意の音階の音を作り出せる⇒
0 500 1000 1500 2000 2500 3000 35000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
0.2
0.4
0.6
0.8
1
1.2
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
0.2
0.4
0.6
0.8
1
1.2
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
0.2
0.4
0.6
0.8
1
1.2
0 500 1000 1500 2000 2500 3000 35000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 500 1000 1500 2000 2500 3000 35000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
変動するスペクトルを作り出せる⇒
(予備知識2)基底行列の評価教師あり NMF によって評価行列を求める
15
= 基底行列とアクティビティ行列の積“ 良い”基底行列なら…
“ 良くない”基底行列なら…評価行列 テストデータ (観測スペクトログラム)
評価行列
と は,ほぼ同じ
と は,異なるテストデータテストデータとの距離を,評価値として用いることができる
遺伝アルゴリズムによる基底の探索テストデータに適応するように基底行列を進化させる1. ランダムに基底行列を生成2. 確率 (p1) で基底行列を2つ選択して一様交叉3. 確率 (1-p1) で基底行列を1つ選択して一部突然変異4. 基底行列が一定数集まれば次の世代に交代5. 2. ~ 4. を繰り返す
16
遺伝アルゴリズムによる基底の探索テストデータに適応するように基底行列を進化させる1. ランダムに基底行列を生成2. 確率 (p1) で基底行列を2つ選択して一様交叉3. 確率 (1-p1) で基底行列を1つ選択して一部突然変異4. 基底行列が一定数集まれば次の世代に交代5. 2. ~ 4. を繰り返す
17
評価値が高い基底行列が選ばれやすい
遺伝アルゴリズムによる基底の探索テストデータに適応するように基底行列を進化させる1. ランダムに基底行列を生成2. 確率 p1 で基底行列を2つ選択して一様交叉3. 確率 p2 で基底行列を1つ選択して一部突然変異4. 基底行列が一定数集まれば次の世代に交代5. 2. ~ 4. を繰り返す
18
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
確率スペクトル包絡から基底行列を複数生成
確率スペクトル包絡 基底行列1 基底行列2
基底行列 3
遺伝アルゴリズムによる基底の探索テストデータに適応するように基底行列を進化させる1. ランダムに基底行列を生成2. 確率 (p1) で基底行列を2つ選択して一様交叉3. 確率 p2 で基底行列を1つ選択して一部突然変異4. 基底行列が一定数集まれば次の世代に交代5. 2. ~ 4. を繰り返す
19
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
( i ) 基底行列を2つ選択
基底行列1 基底行列2
( ii ) 基底行列を一様交叉0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
基底行列1 基底行列2
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
交叉基底⇒ 次世代基底の1つ
遺伝アルゴリズムによる基底の探索テストデータに適応するように基底行列を進化させる1. ランダムに基底行列を複数生成2. 確率 (p1) で基底行列を2つ選択して一様交叉3. 確率 (1-p1) で基底行列を1つ選択して一部突然変異4. 基底行列が一定数集まれば次の世代に交代5. 2. ~ 4. を繰り返す
20
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
( i ) 基底行列を 1 つ選択
基底行列2
( ii ) 一部の基底ベクトルをランダム生成0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
基底行列2
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
変異基底
確率スペクトル包絡0 1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
0.2
0.4
0.6
0.8
1
1.2
調波フィルタ音階が変わらないようにする
遺伝アルゴリズムによる基底の探索テストデータに適応するように基底行列を進化させる1. ランダムに基底行列を複数生成2. 確率 (p1) で基底行列を2つ選択して一様交叉3. 確率 (1-p1) で基底行列を1つ選択して一部突然変異4. 基底行列が一定数集まれば次の世代に交代5. 2. ~ 4. を繰り返す
21
交叉/突然変異を繰り返し,次世代基底集合を作る0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
前世代基底集合 次世代基底集合
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 1000 2000 3000 4000 5000 60000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0 2000 4000 6000 8000 10000 120000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0 1000 2000 3000 4000 5000 60000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
遺伝アルゴリズムによる基底の探索テストデータに適応するように基底行列を進化させる1. ランダムに基底行列を生成2. 確率 (p1) で基底行列を2つ選択して一様交叉3. 確率 (1-p1) で基底行列を1つ選択して一部突然変異4. 基底行列が一定数集まれば次の世代に交代5. 2. ~ 4. を繰り返す
22
最終的に得られた基底行列集合の中で,最も評価値の高い基底行列を用いて教師あり NMF を実行した結果が解析結果
評価実験1. 未学習データへの予測精度をみる実験
単一楽器( piano1 )のみを用いて確率スペクトル包絡を学習異なる環境で録音された曲を MIDI 推定
①piano1 で演奏,② piano2 で演奏, ③ piano3 で演奏④残響レベル 40 で演奏,⑤残響レベル 100 で演奏比較手法①教師あり NMF(piano1 のみ学習 )②教師あり NMF(それぞれの環境で学習)③教師なし NMF
2. 複数の楽器を含む音楽信号を解析する実験ピアノとヴァイオリンの2種類の楽器を用いて曲を推定比較手法…教師あり NMF( ピアノとヴァイオリンを予め学習)
23
実験
実験
実験1の結果自動採譜による音符の正解率
24
original piano2 piano3 rev. 40 rev. 10060
65
70
75
80
85
90
95
100
proposeds-NMFus-NMFex. s-NMF
解析結果例(実験1)
25
Piano1 で演奏 Piano2 で演奏
正解データ
実験2の結果
26
正解データ
遺伝アルゴリズムの初期
遺伝アルゴリズムの最終
教師あり NMF の結果
ヴァイオリンピアノ
上段:ヴァイオリン下段:ピアノ
まとめと考察 スペクトルの確率表現で楽音推定を行う
確率的なスペクトル包絡表現により,一つの楽器カテゴリを表現しうるスペクトルをカバーする楽器ごとのスペクトル包絡を,拡張ガウシアンプロセスを用いて確率的に表現する遺伝アルゴリズムと教師ありNMFを組み合わせ,最も尤もらしい基底・アクティビティを推定する考えられる全ての基底を与える必要がなく,基底をコンパクトに表現できる複数の楽器が混ざっていても解析可能
今後の課題確率的な基底行列とNMFを用いて,最尤法により曲を解析
27
28
ご清聴ありがとうございました
ガウシアンプロセスの学習結果
29
Piano1476 Samples / 72 Notes403 Iterations
Violin584 Samples / 36 Notes101 Iterations
(付録 A )擬似逆行列を用いた教師あり NMF
以下の手順でアクティビティ行列 H を求める1. 擬似逆行列を用いて計算する
2. 負の要素をゼロにする
3. 正規化する
30
XWWWH TT 1)(
RHH
2HHH