2012-01-27 2 views
3

Iveはこれについて前にsimlar投稿を見つけましたが、何も本当に答えていません。c#AudioFingerprintingとLocality Sensitive Hashing

私の指紋では、私は5つの整数を持つレコードセットを生成します。例: 33,42,88,121,194

これらは、特定の音楽サンプルで最も高い周波数に対応しています。 例:

0-40

40-80

80-120

120〜180

180-:私は、次の周波数のバケツを持っているオーディオサンプルの30msのための250

Imは同じハッシュを生成する可能性のあるハッシュ(寛容なもの)を生成しようとしています 33,42 、88121194それは希望のための同様のハッシュが形成されることになる周波数のわずかな違いがある

33,43,88,122,195

を言うように。

第1オフはこのLSHですか?私はこれがオーディオフィンガープリンティングに最適であると読んでいます。

もしそうでなければ、私は探しているものを行う可能性のある関数に対して、誰かが擬似コードまたはC#を提供することができますか?私はLSHとmatlabとperlの実装を読んでいますが、私はそれらを理解していないので、リンクを投稿するとあまりにも多くの助けにはなりません。

もう一度ありがとうございます!

答えて

0

これは、Compare two spectogram to find the offset where they match algorithmと重複している可能性があります。サンプル内のピークの大まかな分布のヒストグラムを作成しようとしているようです。 Compare two spectogram to find the offset where they match algorithm これを実行する方法の1つは、ピークデータとその分布(時間の経過とともに)を高速フーリエ変換しておおよその等価性を生成することです。これを行う方法はいくつかあります。蒸留された形態の試料の。あなたはとほぼ似たようなんこれを行うには(例えば1秒)のサンプルを近似指紋を開発し、各サンプルの部分について

  • (服用言ういくつかのディスクリート部​​品に

    1. 分割サンプルを5-7ハイとローそれらを正規化してハッシュすることができます
    2. 各フィンガープリントを個別に(コレクション内に)保持するか、シーケンス上でトランスフォームを実行して、必要に応じて単一のフィンガープリントを生成することができます。 1秒間隔で線形指紋を得る。

    フィンガープリントを比較するには、同じプロセスを2番目のサンプルで実行し、Diffアルゴリズムを使用して2つの比較を行い、「ファズ」を使用してどれくらい近いかを判断します。個別の指紋の順序と各サンプルの全体的な違いを2次元で比較する必要があります。

    Shazaamに匹敵するJavaを作成するこの記事は、ずっと前に投稿されました:http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/あなたに役立つかもしれません。

  • +0

    ありがとうございます。私は以前に提供したリンクを使用して、すべての周波数(FFTから返された)を循環させ、上記のように特定のレンジ/バケットのために最大のものを見つけました。私は私の問題は、私はmp3を識別するためにこの方法ができますが、ボーカルデータは本当の挑戦だと思う。 – user1112324

    +0

    サンプルに「静的」があるほどマッチする確率は低くなります。波形を使って作業しているとき(すなわち、完全に拘束されたボーカルデータ)、波形をサンプリングし、各サンプリングにFFTを適用し、FFTを独立して見ることが可能です(例えば、高域、中域、低域)。あなたが答えが好きなら、upvoteして受け入れてください。 – GrayWizardx

    関連する問題