Question

J'ai trouvé des messages Simlar avant cela, mais rien ne répond vraiment à la question.

Dans mes empreintes digitales, je produise un coffre-disque qui a 5 entiers. Par exemple: 33,42,88,121,194

Ceux-ci correspondent aux fréquences qui ont la plus grande ampleur pour un échantillon particulier de musique. Par exemple: pour 30 ms d'échantillon audio, j'ai des seaux des fréquences suivantes:

0-40

40-80

80-120

120-180

180-250

J'essaie de produire un hachage (un pardonnant) qui produira peut-être le même hachage pour 33,42,88,121,194 que pour dire

33,43,88,122,195

Lorsqu'il existe des différences mineures dans les fréquences, un hachage similaire serait formé.

1er off est ce lsh? Comme je l'ai lu, c'est le meilleur pour les empreintes digitales audio.

Sinon, quelqu'un pourrait-il fournir un PSUedocode ou C # pour une fonction qui pourrait faire ce que je recherche? J'ai lu les implémentations LSH et MATLAB et Perl, mais je ne les comprends pas, donc la publication d'un lien vers eux ne m'aidera pas trop.

Merci encore!

Était-ce utile?

La solution

Cela pourrait être un duplicata de ceci: Comparez deux spectogrammes pour trouver le décalage où ils correspondent à l'algorithme, ce qu'il semble que vous essayez de faire, c'est produire un histogramme pour la distribution rugueuse des pics dans l'échantillon. Il existe plusieurs méthodes pour ce faire, un autre "exemple" est ici: Comparez deux spectogrammes pour trouver le décalage où ils correspondent à l'algorithme

Une méthode pour le faire consiste à utiliser une transformée de fureur rapide des données de pointe et à sa distribution (au fil du temps) pour produire une équivalence approximative de l'échantillon sous une forme distillée. Pour ce faire, vous faites quelque chose à peu près similaire:

  1. Divisez l'échantillon en certaines parties discrètes (disons 1sec)
  2. Pour chaque partie de l'échantillon, développez une empreinte digitale qui se rapproche de l'échantillon (disons en prenant 5-7 pics de haut et bas, les normaliser, puis les hachant
  3. Vous pouvez désormais conserver chaque empreinte digitale individuellement (dans une collection), ou exécuter une transformation sur la séquence pour générer une seule empreinte digitale en fonction de vos besoins. La plupart du temps, vous ajouteriez simplement les séquences ensemble pour obtenir une empreinte linéaire dans des intervalles de 1 seconde.

Pour comparer l'empreinte digitale, vous exécutez le même processus sur le deuxième échantillon, puis utilisez un algorithme Diff pour comparer les deux, en utilisant un "Fuzz" pour décider à quel point ils sont proches. Vous devrez comparer les empreintes digitales sur deux dimensions, l'ordre des empreintes digitales discrètes, ainsi que la différence globale dans chaque échantillon.

Cet article sur la fabrication d'un java rugueux équivalent à Shazaam a été publié il y a quelque temps: http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/ et peut vous être utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top