1

前の質問のフォローアップとして、スマートフォンアプリケーションで特定の音符を検出したい場合、着信音がその音符であるかどうかを知るだけで、ある程度のあいまいさがあり、 xセントオフキーであることに注意してください。

それを考えると、速度と精度の点で他の方法よりも優れた方法はありますか?つまり、探しているメモがたとえば#C3であることを知ることで、そのメモが存在するかどうかを判断するのに最適な方法はありますか?すべての波形を分離してから基本周波数の結果を確認するよりも、1つの音符を検索する方が簡単だと思います。

私の最初の質問への回答で、ある回答者は、メモが特定の範囲内にあることがわかっている場合、自己相関がうまく機能する可能性があると提案しました。特定の音符(+/- xセント)の有無を確認するだけでよい場合、自己相関がさらにうまく機能するのではないかと思います。

それらの方法は次のとおりです。

  • キスFFT
  • FFTW
  • 離散ウェーブレット変換
  • 自己相関
  • ゼロクロッシング分析
  • オクターブ間隔のフィルター
  • DWT

どんな考えでもいただければ幸いです。

4

1 に答える 1

1

あなたが説明したように、特定のピッチが存在するかどうかを判断する必要があるだけです. 非常に単純な (高速な) 検出器は、波形の 1 周期に相当するものを記録し、次に別の周期を記録し、過度に単純化された (単一ラグ) 自己相関のようにそれらを相関させます。一致率が高い場合は、記録されている波形がほぼ同じ周期、またはその高調波で繰り返されていることがわかります。

たとえば、1 kHz を検出するには、1 ミリ秒のオーディオを録音し (48 kHz で 48 サンプル)、別の 1 ミリ秒を録音して比較します (相関 = すべてのサンプルを乗算して合計します)。それらが一列に並んでいる場合 (あるしきい値を超える相関関係)、1 kHz、2 kHz、3 kHz、またはその他の倍数を聞いています。複数のピリオドを行うと、試合での自信が高まります。

真の自己相関は、具体的には、それがあなたにとって重要であるかどうかを教えてくれます。

于 2009-10-14T21:30:04.843 に答える