過去の偉人のピアノ演奏を、良い音で聞きたい

ラフマニノフやラヴェルの、自作自演によるピアノ演奏の録音は残っているものの、ノイズが多く音質も悪いため長時間の視聴には耐え難い。

そこで、

  1. 音源を短時間フーリエ変換
  2. 譜面化
  3. 最新のピアノサンプリング音源を用いて再合成・リミックス

したいと考えている。

ここで課題となるのが、譜面化である。

ピアノの音は、正弦波ではなく、音ごとに非常に多くの、共通した周波数成分を含む。いわゆる不良設定問題である。

以下、最大の課題である短時間フーリエ変換されたものを譜面化する技術について、検討を行う。

関連技術の文献調査

NMF (Non-negative Matrix Factorization)

NMFは、非負値データ行列\(X\ (n\times m)\)を\(k\)個の基底(縦)ベクトルによって構成される基底行列\(W\ (n\times k)\)と、重み行列\(H\ (k\times m)\)の積\(X\simeq WH\)で表現することにより、スパースな基底と重み行列を作成する手法。

loss関数は、ユークリッド距離(\(|X-WH|\))やKLダイバージェンス、板倉斉藤距離が用いられる。

計算アルゴリズムはこちらによくまとめられている。

Sparse NMF [H. Kim and H. Park (2007)]

SNMF/Lでは、基底のスパース性を上げるための罰則項\(\sum_i \alpha W(i,:)\)

SNMF/Rでは、重み行列のスパース性を上げるための罰則項\(\sum_j \alpha H(:,j)\)

が付加される。(今回の目的ではSNMF/Rを用いるほうが良さそう。)

Complex NMF [H. Kaneoka et al. (2009)]

本来、位相成分(複素成分)の存在により、ピアノの和音は単音の加法のみでは表現できない。

$$
X_{x,t} = \sum |a_{k,x,t}| e^{j \phi_{k, x, t}}
$$
$$
|a_{k,x,t}| = H_{k,x}U_{k,t}
$$

とすることで位相成分も考慮したNMF。

Attack/Decay Convolutional NMF [L. Gao et al. (2017)]

時間方向に微分したSTFTに対して、Convolutional NMFを適用したもの。

CNN & NMF [Q. Wang et al. (2017)]

採譜をCNNで行った上で、NMFにかけるもの。

Deep Learningベース

  • Google Magenta
    ここここ比較されていてわかりやすいが、かなりきれいに採譜できている。(強度情報は採譜されていないのが欠点。)強弱がある場合はうまく採譜されないので、今回の目的には適さないと思われる。

 

アイデアリスト

  • 音源に対してNMFや複素NMFをしてどこまできれいに基底を選べるか。
    • 基底の初期条件にピアノの単音を入れる等の工夫をしてみる。
  • 基底を、より良い音源に入れ替えることによって、どこまで音質は向上するのか。
    • 位相復元をやってみる。
  • 音源を分類問題と捉えてディープラーニングによる譜面化を行う。強度に関してはNMFを用いる。
    • 分類問題の結果得られた基底成分のみをによるフィッティングにより、より良い基底をつくる。

文献調査をしてみると、以上のやりかたで求めるクオリティを実現するのは困難。そこで、

  • そもそも曲の楽譜はわかっているわけだから、半モデルベースでなにかできないか。
    • 曲のmidiからかなりゆるめの拘束条件をつくり、音源へのフィットを行う。これが一番完成度は上がりそう。一方で、ペダルの表現力は消えてしまうか?

「演奏位置推定」をキーワードに再度文献調査