Я ищу алгоритм (ы) для решения следующей проблемы: Как определить частоту ударов мягкого барабана, учитывая шумный захват звука .wav (некоторый ветер + шум трения на микрофоне)?
Я попытался найти предмет, но результаты довольно плохие из-за большого количества программного обеспечения, связанного с mp3, для анализа и создания идентификатора отпечатка пальца. Никто из них не предоставляет информацию о том, как на самом деле это сделать.
Я знаю алгоритмы для удаления шума, но это все еще оставляет меня с проблемой обнаружения BPM. И в зависимости от того, как решается проблема BPM, возможно, мне даже не понадобится шумоподавление (поскольку барабан имеет тенденцию быть на низких частотах, а шум на более высоких, простой низкочастотный сигнал может быть достаточной предварительной обработкой).
источник
Ответы:
Один метод, который работает, если есть относительно сильный удар барабана, состоит в том, чтобы взять величину STFT формы волны, а затем автоматически коррелировать ее только во временном измерении. Пиком функции автокорреляции будет удар или его кратное.
Это эквивалентно разбиению сигнала на множество различных частотных диапазонов, нахождению огибающей амплитуды каждого, автокорреляции каждой огибающей и затем суммированию их. Шум и другие части музыки усредняются операцией взаимной корреляции.
Это связано с тем, что барабанные ритмы производят кратковременный звук на многих частотах (вертикальные линии), в то время как другие части музыки долгоживущие только на нескольких частотах (горизонтальные линии), а шум является долгоживущим, но случайным на всех частотах. Вы можете увидеть повторение ритма, если вы посмотрите на STFT:
Я придумал это для школьного проекта, чтобы найти единственное значение BPM для целых музыкальных файлов, но оно также может быть адаптировано к потоку аудио с изменением BPM. Вам нужно будет обрабатывать фрагменты, которые как минимум вдвое длиннее периода BPM, который вы ищете.
источник
Автокорреляция, безусловно, является хорошим базовым методом для этого. Есть несколько вещей, которые вы можете сделать, чтобы потенциально улучшить это:
источник