Подтвердить что ты не робот

Алгоритм для определения, является ли звук музыкой

Я не совсем уверен, что это правильный дочерний сайт обмена стеками, чтобы отправить этот вопрос, но...

Я ищу алгоритм, который я могу использовать, чтобы определить с достаточной уверенностью, если данный фрагмент аудио - это музыка или нет. Просто логический результат в порядке, мне не нужно знать ключ, bpm или что-то в этом роде, мне просто нужно определить, кажется ли он музыкой (в отличие от речи). Язык программирования не имеет значения, но я верну его преобразование в Python.

4b9b3361

Ответ 1

В фразе Анализ Фурье. Посмотрите на мощность разных частот с течением времени. Здесь speech, и здесь скрипка играет. Первый показывает драматические изменения с каждым слогом; "поток" очень не пересекается и может быть подхвачен алгоритмом, который взял производную от разных полос частот как функцию времени. С другой стороны, в парадигматической музыке переходы намного более плавные, а тона более чистые (меньше "размытия" на графике). См. Также страницу 'spectrogram' wikipedia.

Ответ 2

Что вы можете сделать, так это настроить несколько резонансных колец Karplus Strong и через звук через них и просто контролировать уровень энергии в каждом кольце

если это западная музыка, она почти полностью настроена на 12-TET, то есть логарифмическая 12-тональная шкала, основанная на звуковом звуке A4 @440Hz

так что просто выберите 3 или 4 ноты, равномерно расположенных через октаву, например C5, (опустите С# D D #) E5 (опустите F F # G) G # 5 (опустите A A # B)

и по крайней мере одно из этих колец будет разгораться регулярно - в зависимости от того, в какой тональности находится музыка, вероятно, это сильно ударит по одной из этих заметок

идеально делать это для кучи заметок, но если вам нужно это в режиме реального времени, он может получить немного тяжелую подачу вашего аудио одновременно на 50 колец

в качестве альтернативы вы могли бы даже использовать детекторы высоты тона и записанные в каталогах смолы, а также посмотреть на отношения log (noteAfreq): log (noteBfreq) посмотреть, устраиваются ли они в фракции низкого порядка, такие как 3: 4 + = 0,5%. но я не думаю, что кто-то построил достойный полифонический датчик тональности - это практически невозможно.

Мелодин, возможно, снял его

Если это всего лишь вокальный сигнал, вы можете отправить мне по электронной почте.

Ответ 3

Почему-то этот вопрос привлек большое количество плохих и неправильных ответов.

ТЛ: др; Используйте pyAudioAnalysis. Кроме того, Google "анализ аудио-функции".

На его поверхности это звучит как сложная проблема, но за последние 20 лет произошел взрыв большой работы по классификаторам. Большинство классификаторов сегодня обычно могут понять это с частотой ошибок всего в несколько процентов. Некоторые классификаторы могут даже определить какой жанр музыки он.

Большинство современных алгоритмов для этого разбиваются на обнаружение совокупности статистических представлений входного аудио (функции), а затем выполняют набор автоматических классификаций данных, основанных на предыдущих данных обучения.

pyAudioAnalysis - это одна библиотека для извлечения этих функций, а затем обучение kNN или другой смешанной модели на основе обнаруженных функций. Существует гораздо больше сопоставимых библиотек, таких как Essentia для С++. Essentia также имеет привязки Python.

Введение в анализ аудиоконтента: приложения в обработке сигналов и музыкальной информации - хорошая вводная книга.

Ответ 4

Посмотрите на небольшой "первый дифференциал" над последовательностью БПФ, которые находятся в диапазоне музыкальных тонов (т.е. 1024 отсчета на каждый фрагмент, проходящий через БПФ, затем постройте фрагмент chunk1-chunk0, chunk2-chunk1,...). В первом приближении этого должно быть достаточно, чтобы обнаружить простые вещи.

Это тот алгоритм, который можно было бы навсегда изменить, даже в жанровом стиле. Сама музыка также является периодической, поэтому придумывают способ запуска БПФ поверх БПФ. И идея искать последовательный двенадцатый корень из двух распространенных выдающихся частот звучит действительно правдоподобно.

Бьюсь об заклад, вы надеялись найти это сидение в бесплатной библиотеке Python, чтобы просто вставить файл.: -)