Я записываю ежедневную 2-минутную радиопередачу из Интернета.Там всегда один и тот же начальный и конечный звоны.Поскольку точное время радиопередачи может варьироваться от более или менее 6 минут, мне нужно записать около 15 минут радио.
Я хочу указать точное время, когда эти джинглы находятся в 15-минутной записи, чтобы я мог извлечь часть аудио, которую я хочу.
Я уже запустил приложение C #, где я декодируюMP3 в данные PCM и преобразование данных PCM в спектрограмму на основе http://www.codeproject.com/KB/audio-video/SoundCatcher.aspx
Я пытался использовать алгоритм кросс-корреляции для данных PCM, но алгоритм очень медленный, около 6 минут с шагом 10 мс иВ некоторых случаях не удается найти время начала звонка.
Есть идеи алгоритмов сравнения двух спектрограмм на совпадение?Или лучший способ найти время начала звонка?
Спасибо,
Обновление, извините за задержку
Во-первых, спасибо за все ответыбольшинство из них были интересными или интересными идеями.
Я пытался реализовать алгоритм Shazam, предложенный Fonzo.Но не удалось обнаружить пики на спектрограмме.Вот три спектрограммы исходного звонка из трех разных записей.Я попробовал AForge.NET с фильтром BLOB-объектов (но он не смог определить пики), чтобы размыть изображение и проверить разницу в высоте, свертку Лапласа, анализ наклона, чтобы обнаружить серию вертикальных полос (но было слишком много ложныхположительный) ...
Тем временем я попробовал алгоритм Хо, предложенный Дейвом Аароном Смитом.Где я рассчитываю среднеквадратичное значение каждого столбца.Да, да, каждый столбец, это O (N * M), но M << N (обратите внимание, что столбец составляет около 8 тыс. Выборок).Так что в целом все не так плохо, алгоритм все равно занимает около 3 минут, но никогда не выходит из строя.</p>
Я мог бы пойти с этим решением, но, если возможно, я бы предпочел Shazam, потому что он O (N) и, вероятно, намного быстрее (и круче тоже).Так кто-нибудь из вас имеет представление об алгоритме, который всегда обнаруживает одни и те же точки на этих спектрограммах (не обязательно должен быть пиками), благодаря добавлению комментария.
Новое обновление
Наконец, я пошел с алгоритмом, описанным выше, я попытался реализовать алгоритм Shazam, но не удалось найти правильные пики на спектрограмме, идентифицированные точки которых не постоянны от одного звукового файла к другому.Теоретически алгоритм Shazam является решением для такого рода проблем.Алгоритм Хафа, предложенный Дейвом Аароном Смитом, был более стабильным и эффективным.Я разделил около 400 файлов, и только 20 из них не удалось правильно разделить.Место на диске от 8 до 1 ГБ.
Спасибо за помощь.