Библиотеки или стратегии для обнаружения повторяющихся разделов в аудиофайле
У меня есть (длинный) плейлист песен определенного жанра. Это повторяющийся жанр, длинные фрагменты каждой песни, как правило, содержат одни и те же 4 повторяющихся удара.
Я хочу сделать программу, которая:
- берет список звуковых файлов (плейлист)
- для каждой песни циклически повторяются каждые 4 удара (1 "такт")
- проверяет, совпадает ли текущий бар * с последним баром
- если это так, экспортируйте аудио этого бара и продолжайте
* желательно, чтобы иметь возможность сравнивать текущий бар с последним баром и проверять его сходство в пределах определенного поля, если это имеет смысл
Теперь я мог бы сделать это вручную, но... это 8 часов музыки, и я мог бы потенциально захотеть сделать это снова в будущем.
Итак, суть, я хотел бы знать 2 вещи:
Во-первых, я относительно хорошо знаю Java, но никогда не работал со звуком, поэтому понятия не имею, с чего начать. Если бы я мог указать на библиотеку или фреймворк или что-то, что могло бы помочь с такими вещами, это было бы здорово.
Во-вторых, любая информация или техника, которая поможет мне в этом. Например, я подумал, что одним из способов сравнения баров друг с другом было бы взять предыдущий, инвертировать его фазу, суммировать его с текущим баром и проверить, был ли результат близок к нулю. Я знаю, что это требует точности, и я не уверен, сработает ли это, поэтому другие стратегии были бы полезны.
Спасибо!