¿Cuál es la mejor manera de almacenar una gráfica espectrograma como una estructura de datos que puede ser comparado contra?

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

Pregunta

He creado un proceso similar al de Shazam que crea una espectrograma de un clip de sonido dado . Estoy tratando de encontrar una manera en la que almacenar estos datos en una base de datos para que pueda ejecutar comparaciones en él. (No necesito código real, simplemente ayuda conceptual sobre el proceso) .

Para aquellos familiarizados con un espectrograma, es un gráfico de tiempo en el eje x y la frecuencia en el eje y. Necesito una manera de salvar estos datos de una manera que yo pueda ejecutar comparaciones. Además, no puede crear simplemente un largo de los valores de frecuencia de izquierda a derecha, ya que se convierte en un problema de complejidad del tiempo cuando se trata de buscar en ella con grandes conjuntos de datos (básicamente una N ^ 2 comparación subcadena).

En esencia estaba pensando en la creación de una especie de almohadilla en el clip de sonido y guardar los datos como un árbol o un sufijo trie del hash, pero no estoy segura de lo que podría hacer una comparación de entonces.

Cualquier idea sería muy apreciada.

¿Fue útil?

Solución

Esta es una matriz 2D. Posiblemente un escasa uno si la mayor parte de los datos es de 0.0.

Yo usaría un RAÍZ histograma (por ejemplo TH2F ) para evitar tener que gestionar todos los casos extremos y así sucesivamente, aunque casi cualquier biblioteca científica debe apoyar una estructura de datos apropiada. soportes ROOT al menos dos medidas de similitud histograma ( de Chi cuadrado y de Kolmogorov ) que permitirá hacer comparaciones cuantitativas.

Otros consejos

o bien puede almacenar como una matriz 2D en bruto, o de lo contrario tendrá que hacer un poco de extracción de características de nivel superior (contornos paso de pista, etc.) para extraer las características importantes que luego se puede utilizar para fines de comparación.

El problema con un hash es que es necesario que se aproximen, partidos no exactas - Estaba pensando en algo en la línea de extracción de la (tiempo, frecuencia) tuplas de picos locales en el espectrograma y luego poner los de un http://en.wikipedia.org/wiki/Spatial_database .

Para la búsqueda podrían extraer n picos más altos (4 - 8). Y luego buscar los picos más cercanos en la base de datos espacial y encontrar el mejor partido apropiado

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top