Лучший подход для группировки 500 000 аудиофайлов (много дубликатов)? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть база данных из 500 000 загруженных пользователем аудиофайлов, состоящая из:

  • Песни
  • Аудиоклипы из фильмов
  • Случайные аудиофайлы из Интернета
  • Записанные пользователем аудиоклипы (например, с микрофоном)

Аудиофайлы озаглавлены, хотя и непоследовательно, а иногда и неправильно.

Существует много дубликатов с небольшими отличиями: title различия, аудио различия (длина, сжатие, высота и т. д. c). Я хочу поместить каждый аудиофайл в категорию, которая соответствует тому, что он есть. «Что это» означает наиболее релевантный заголовок для этого аудиофайла на основе аудио (не заголовка).

Например, для «Майкла Джексона - Триллер» может быть 30 различных аудиофайлов, которые находятся на немного отличающиеся длины, уровни сжатия, названные по-разному, et c. Все они должны быть сгруппированы в одну категорию с правильно отформатированным названием песни.

Некоторые аудиофайлы невозможно будет правильно назвать программно. Например, аудио из этого видео https://www.youtube.com/watch?v=ee925OTFBCA будет иметь много экземпляров в базе данных, но я не думаю, что есть API, который бы мог его озаглавить. В этом случае, при условии, что они все еще могут быть сопоставлены как похожее звучание и помещены в одну группу, заголовок может быть выбран из заголовков, которые уже есть в клипах. Я думаю, что я бы сделал это, разработав название, которое является наиболее «похожим» на все из них (например, самый высокий средний коэффициент Серенсена – Дайса).

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

В качестве примера несогласованного присвоения названий, Симфония № 6 Бетховена может иметь много разных имен, таких как:

  • Симфония № 6 (Бетховен)
  • Шестая симфония Бетховена
  • Бетховен 6
  • Шестая симфония Битховена (преднамеренная ошибка правописания)

Чтобы классифицировать эти файлы, я планирую сделать следующее для каждого:

  • Используйте API распознавания звука, чтобы попытаться идентифицировать его, если он может быть идентифицирован, поместите его в категорию
  • Если это не может быть идентифицирован, проверьте в базе данных аудиоклипы, которые очень похожи
  • Если в базе данных аудиосигналов есть совпадение, свяжите этот аудиоклип с соответствием, чтобы помещается в ту же категорию, что и сопоставляемый аудиоклип (если сопоставляемый клип еще не имеет категории, он будет, когда ему присвоена)
  • Если совпадения нет, поместите зарегистрировать его в своей собственной категории с уже существующим заголовком

Цель этого состоит в том, чтобы сделать базу данных меньше и лучше классифицировать, чтобы она использовала меньше места для хранения и чтобы конечным пользователям было легче искать и перемещаться.

В данный момент при поиске некоторых аудиоклипов появляются сотни одинаковых файлов с небольшими отличиями. Это основная проблема, которую мы пытаемся решить.

У меня три вопроса:

  • Какой API распознавания звука лучше всего подходит для идентификации аудиофайлов? Особенно с учетом типов идентифицируемых клипов и цены
  • Какой API следует использовать для сравнения аудиофайлов для определения сходства? Размер базы данных, с которой они будут сравниваться, необходимо учитывать
  • В какой-то мере моя методология имеет недостатки? Если да, то как бы вы подошли к этой задаче?

1 Ответ

0 голосов
/ 25 апреля 2020

Получение краткого описания всего аудиофайла обычно называется «Отпечатки аудио».

Существует множество решений. Документация MusicBrainz.org содержит хороший обзор , как коммерческих продуктов, так и проектов с открытым исходным кодом. Их самый последний подход, который также доступен с открытым исходным кодом: AcousticId .

...