У меня есть база данных из 500 000 загруженных пользователем аудиофайлов, состоящая из:
- Песни
- Аудиоклипы из фильмов
- Случайные аудиофайлы из Интернета
- Записанные пользователем аудиоклипы (например, с микрофоном)
Аудиофайлы озаглавлены, хотя и непоследовательно, а иногда и неправильно.
Существует много дубликатов с небольшими отличиями: title различия, аудио различия (длина, сжатие, высота и т. д. c). Я хочу поместить каждый аудиофайл в категорию, которая соответствует тому, что он есть. «Что это» означает наиболее релевантный заголовок для этого аудиофайла на основе аудио (не заголовка).
Например, для «Майкла Джексона - Триллер» может быть 30 различных аудиофайлов, которые находятся на немного отличающиеся длины, уровни сжатия, названные по-разному, et c. Все они должны быть сгруппированы в одну категорию с правильно отформатированным названием песни.
Некоторые аудиофайлы невозможно будет правильно назвать программно. Например, аудио из этого видео https://www.youtube.com/watch?v=ee925OTFBCA будет иметь много экземпляров в базе данных, но я не думаю, что есть API, который бы мог его озаглавить. В этом случае, при условии, что они все еще могут быть сопоставлены как похожее звучание и помещены в одну группу, заголовок может быть выбран из заголовков, которые уже есть в клипах. Я думаю, что я бы сделал это, разработав название, которое является наиболее «похожим» на все из них (например, самый высокий средний коэффициент Серенсена – Дайса).
Существует также часть записанных пользователем клипов, которые невозможно присвоить название / сгруппировать программно, потому что они существуют только в этой базе данных.
В качестве примера несогласованного присвоения названий, Симфония № 6 Бетховена может иметь много разных имен, таких как:
- Симфония № 6 (Бетховен)
- Шестая симфония Бетховена
- Бетховен 6
- Шестая симфония Битховена (преднамеренная ошибка правописания)
Чтобы классифицировать эти файлы, я планирую сделать следующее для каждого:
- Используйте API распознавания звука, чтобы попытаться идентифицировать его, если он может быть идентифицирован, поместите его в категорию
- Если это не может быть идентифицирован, проверьте в базе данных аудиоклипы, которые очень похожи
- Если в базе данных аудиосигналов есть совпадение, свяжите этот аудиоклип с соответствием, чтобы помещается в ту же категорию, что и сопоставляемый аудиоклип (если сопоставляемый клип еще не имеет категории, он будет, когда ему присвоена)
- Если совпадения нет, поместите зарегистрировать его в своей собственной категории с уже существующим заголовком
Цель этого состоит в том, чтобы сделать базу данных меньше и лучше классифицировать, чтобы она использовала меньше места для хранения и чтобы конечным пользователям было легче искать и перемещаться.
В данный момент при поиске некоторых аудиоклипов появляются сотни одинаковых файлов с небольшими отличиями. Это основная проблема, которую мы пытаемся решить.
У меня три вопроса:
- Какой API распознавания звука лучше всего подходит для идентификации аудиофайлов? Особенно с учетом типов идентифицируемых клипов и цены
- Какой API следует использовать для сравнения аудиофайлов для определения сходства? Размер базы данных, с которой они будут сравниваться, необходимо учитывать
- В какой-то мере моя методология имеет недостатки? Если да, то как бы вы подошли к этой задаче?