Python ベースのオーディオ ライブラリ librosa を使用して、ノート開始イベントの音楽オーディオ トラックを分析しています。この情報を使用して、これらのトラックをいくつかの小さくて非常に短いピース/スライスにスライスしています - すべてノート開始イベントに基づいています。
それらのスライスを持って、クロマグラムやMFCCなどの機能抽出用のlibrosa組み込みツールを使用してそれらを分析しています。出力は次のようになります。
librosa.feature.chroma_stft(y=y, sr=sr)
array([[ 0.974, 0.881, ..., 0.925, 1. ],
[ 1. , 0.841, ..., 0.882, 0.878],
...,
[ 0.658, 0.985, ..., 0.878, 0.764],
[ 0.969, 0.92 , ..., 0.974, 0.915]])
librosa.feature.mfcc(y=y, sr=sr)
array([[ -5.229e+02, -4.944e+02, ..., -5.229e+02, -5.229e+02],
[ 7.105e-15, 3.787e+01, ..., -7.105e-15, -7.105e-15],
...,
[ 1.066e-14, -7.500e+00, ..., 1.421e-14, 1.421e-14],
[ 3.109e-14, -5.058e+00, ..., 2.931e-14, 2.931e-14]])
ご覧のとおり、これらの関数は、抽出された特徴に関する情報を保持するマトリックスを出力します。これらすべての情報 (機能、スライスの開始と終了、ファイル名) は (sqlite) データベースに保存されます。スライスされた音声データがリリースされます。
特徴は、分析されたオーディオの「タイプ」/サウンドを数値で記述し、類似度計算を行うための優れたベースとなります。
このすべての情報 (および数百の分析トラックを含む大規模なデータベース) を取得して、ランダムなスライスを選択し、それをデータベース内の他のすべてのスライスと比較して、選択したスライスに最も類似したスライスを見つけられるようにしたいと考えています。抽出された特徴情報。
類似性に関する上記の関数の結果を比較するにはどうすればよいですか?