EcholotFM.ru audio fingerprint
Распознавание аудиотреков. Демонстрационная программа.
Разработано для www.echolotfm.ru. ЭхолотФМ - российское оборудование для мониторинга радио и ТВ
Как использовать программу? (скачайте EcholotFM.apk здесь или тут) Или тут: https://play.google.com/store/apps/details?id=ru.echolotfm.fingerprint
- Выберите песню на компьютере. Желательно начинающуюся сразу с мелодии.
- Положите телефон рядом с колонками, нажмите "Записать образец"
- Запишите от 30 до 90 секунд, нажмите "Распознать"
- Перематывайте песню на компьютере. Распознавание занимает от 6 до 15 секунд.
- Переключите алгоритм с патентованного (краткого) на традиционный, проверьте результат.
Что она рисует?
Слева: Красным - магнитуды (частоты) звука, зеленым - отпечаток и амплитуда
Справа: Степень совпадения. Чем выше пик - тем увереннее найдена похожесть.
Про алгоритм
class ExtAudioRecorder, OnRecordPositionUpdateListener
Общий принцип: сэмпл переводим быстрым Фурье в частоты, отсекаем басы и верха, нормализуем, разбиваем на 17 слуховых полос и хешируем в некий вектор.
При записи вектор пишем в базу (a,b,r)
При распознавании группу векторов в цикле прогоняем по всему образцу, интегрируем моментные совпадения по времени. Примерно через 6-10 секунд полоса совпадения будет на порядок выше среднего. Это и есть момент совпадения.
Подробнее в комменатриях кода.
BARK-шкала + LS-хеш могут являться патентованными алгоритмами (Shazam?). Предваряя вопросы: да, остальные 5 алгоритмов (широко распространённых в открытых источниках) дают в разы бОльшую ошибку и меньшую стабильность, что было тщательно проверено на этой же программе.
Приложение использует МИКРОФОН (запрос на android.permission.RECORD_AUDIO) для записи звука на карту памяти в виде хеша. Никакие данные не отправляются наружу, не передаются третьим лицам и не анализируются иначе, кроме как для демонстрационных целей. Указанный хеш не позволяет расшифровать звук в обратном направлении. Установка программы означает согласие пользователя на включение микрофона. В противном случае не запускайте программу.
In English: read Russian please. android.permission.RECORD_AUDIO is used only for demo. By installing the application you agree with it. No data will be send out of your device.