Quelle est la meilleure façon de stocker un graphique de spectrogramme en tant que structure de données qui peut être comparé?

StackOverflow https://stackoverflow.com/questions/3128836

Question

J'ai créé un processus similaire à Shazam qui crée un spectrogramme d'un clip sonore donné . Je suis en train de trouver une manière de stocker ces données dans une base de données afin que je puisse exécuter des comparaisons sur elle. (je ne avez pas besoin code réel, juste aide conceptuelle sur le processus) .

Pour ceux qui ne connaissent un spectrogramme, est un graphique du temps sur l'axe x et de la fréquence sur l'axe des y. Je besoin d'un moyen de sauver ces données d'une façon que je peux exécuter des comparaisons. En outre, je ne peux pas simplement créer une longue des valeurs de fréquence de gauche à droite, car cela devient une question de la complexité du temps en essayant de recherche contre avec de grands ensembles de données (essentiellement un N ^ 2 Comparaison sous-chaîne).

Essentiellement, je pensais à la création d'une sorte de hachage sur le clip audio et enregistrer les données dans un arbre de Trie ou suffixe du hachage, mais je ne sais pas comment je pourrais faire une comparaison pour ensuite.

Toutes les idées serait grandement apprécié.

Était-ce utile?

La solution

Ceci est un tableau 2D. Peut-être un clairsemés un si la plupart des données est 0.0.

J'utiliser un l'histogramme de RACINE (par exemple Chi au carré et Kolmogorov ) qui vous permettra de faire des comparaisons quantitatives.

Autres conseils

Vous pouvez soit le stocker sous forme d'un tableau 2D brut, ou bien vous aurez besoin de faire une extraction de caractéristiques de niveau supérieur (contours de pas de piste, etc.) pour extraire les caractéristiques importantes que vous pouvez ensuite utiliser à des fins de comparaison.

Le problème avec un hachage est que vous avez besoin orthographes approchantes, pas des correspondances exactes - Je pensais à quelque chose le long des lignes d'extraction du (temps, fréq) tuples des pics locaux dans le spectrogramme puis mettre ceux d'un http://en.wikipedia.org/wiki/Spatial_database .

Pour vous pouvez extraire la recherche n sommets les plus élevés (4 - 8). Puis recherchez les pics les plus proches dans la base de données spatiale et trouver le meilleur match de montage

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