私は現在、音声認識に取り組んでいます。未知の音の特徴(周波数の観点から)を、私たちが知っている他の音の特徴と比較する必要があります。
具体的には、音のスペクトルの「ピーク」(=フォルマント)を決定します。これは、この音に固有の(特徴的な)ものです。このピークの頻度をタプルとして記憶します。既知の音のタプルを記憶します。それらは数千(数十万ではないにしても)あります。
識別する新しい音ごとに、その音のタプルを既知の音のタプルと比較します。それにはたくさんの比較をする必要があります!
これらのタプルをすばやく比較する方法を見つける必要があります。
私はすでに調べましたが、それが最近傍探索の問題であることがわかりました。 しかし、私はこれらのアルゴリズムを使用できるとは思いません。
実際、タプルは異なる数のコンポーネントを持つことができます。コンポーネントは単なる周波数(kHz)です。(1; 2)または(1; 2.4; 4; 5; 6; 7; 7.1; 11; 12.1; 13)(最大20コンポーネント)にすることができます。
だから私の質問は:私は同じ「次元」のタプルを持つデータセットを持っていません、どうすれば最も近い隣人を見つけることができますか?
最近傍アルゴリズムを適用するには、同じ次元のタプルが必要であると私は理解しています。
私を読んでくれてありがとう。
良い1日を!
編集:
私は最も近い隣人を見つける必要があるだけでなく、実際には私の基準点から距離D未満の距離にあるすべての隣人の点を見つける必要があります。
EDIT2 :
@random_hacker:いいえ、そうではありません。タプルの要素を別のタプルの要素と比較できるのは、これら2つの要素の差が<しきい値である場合のみです。
EDIT3:
あなたは絶対に正しい数学者です、私はちょうど何か「ランダム」をタイプしました。実際、タプルの要素は周波数でソート(昇順)されており、実際、タプルの各周波数は1回だけ表示されます。したがって、(4; 2)は間違っています、それは(2; 4)であるはずであり、(2; 2; 4)は存在せず、(2; 4)(繰り返しなし)です