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