В области поиска музыкальной информации люди часто используют связанную метрику, известную как кепстральные коэффициенты низкой частоты (MFCC).
Для любого N-выборочного сегмента вашего сигнала возьмите БПФ.Эти результирующие N выборок преобразуются в набор MFCC, содержащих, скажем, 12 элементов (то есть коэффициентов).Этот 12-элементный вектор используется для классификации инструмента, включая используемый барабан.
Для выполнения контролируемой классификации вы можете использовать что-то вроде машины опорных векторов (SVM). LIBSVM - это широко используемая библиотека, совместимая с Java (и многими другими языками).Вы обучаете SVM с этими MFCC и их соответствующими метками инструментов.Затем вы проверяете его, подавая вектор запроса MFCC, и он сообщает вам, какой это инструмент.
Итак, основная процедура, в итоге:
- Get FFT.
- Получить MFCC из FFT.
- Обучить SVM с помощью MFCC и меток приборов.
- Запросить SVM с помощью MFCCs сигнала запроса.
Проверить дляПакеты Java, которые делают эти вещи.(Они должны существовать. Я просто не знаю их.) Относительно, барабанная транскрипция проще, чем в большинстве других групп инструментов, поэтому я настроен оптимистично, что это сработает.
Для дальнейшего чтения есть целая куча статей о транскрипции барабанов .