Каков наилучший способ сохранить график спектрограммы в качестве структуры данных, с которой можно сравнить? - PullRequest
1 голос
/ 28 июня 2010

Я создал процесс, похожий на Shazam, который создает Спектрограмму данного звукового клипа. Я пытаюсь выяснить, каким образом сохранить эти данные в базе данных, чтобы я мог проводить сравнения на них. (мне не нужен реальный код, просто концептуальная помощь по процессу) .

Для тех, кто не знаком с спектрограммой, это график времени по оси X и частоты по оси Y. Мне нужен способ сохранить эти данные таким образом, чтобы я мог проводить сравнения. Кроме того, я не могу просто создать длинное значение частоты слева направо, потому что это становится проблемой сложности времени при попытке поиска по нему с большими наборами данных (в основном сравнение подстрок N ^ 2).

По сути, я думал о создании какого-либо хеша для звукового клипа и сохранении данных в виде дерева trie или суффиксов хеша, но я не уверен, как я мог тогда сделать сравнение для него.

Любые идеи будут с благодарностью.

Ответы [ 3 ]

2 голосов
/ 28 июня 2010

Это 2D массив. Возможно разреженный единица, если большая часть данных равна 0.0.

Я бы использовал гистограмму ROOT (скажем, TH2F), чтобы избежать необходимости управлять всеми граничными случаями и т. Д., Хотя почти любая научная библиотека должна поддерживать соответствующую структура данных. ROOT поддерживает как минимум две меры сходства гистограмм ( хи-квадрат и Колмогоров ), которые позволят вам провести количественные сравнения.

1 голос
/ 28 июня 2010

Проблема с хешем заключается в том, что вам нужны близкие совпадения, а не точные совпадения - я думал о чем-то вроде извлечения (time, freq) кортежей локальных пиков в спектрограмме и затем поместил их в http://en.wikipedia.org/wiki/Spatial_database.

Для поиска вы можете извлечь n самых высоких пиков (4–8?), А затем выполнить поиск ближайших пиков в пространственной базе данных и найти наиболее подходящее соответствие.

1 голос
/ 28 июня 2010

Вы можете сохранить его в виде необработанного 2D-массива, или же вам понадобится выполнить извлечение объектов более высокого уровня (контуры шага дорожки и т. Д.), Чтобы извлечь важные объекты, которые затем можно использовать для сравнения.

...