Алгоритмы определения ключа звуковой выборки

Я заинтересован в определении музыкального ключа аудио образца. Как бы (или мог) алгоритм попытаться приблизить ключ музыкального аудио образца?

Antares Autotune и Melodyne-это две части программного обеспечения, которые делают такие вещи.

может ли кто-нибудь дать немного объяснения непрофессионала о том, как это будет работать? Математически вывести ключ песни путем анализа частотного спектра для прогрессий аккордов так далее.

эта тема меня очень интересует!

Edit-блестящие источники и богатство информации, которую можно найти у всех, кто внес свой вклад в этот вопрос.

особенно от: the_mandrill и Даниэль Брюкнер.

8 ответов


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

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

некоторые люди подходят к проблеме ключ распознавание как вопрос о том, чтобы сначала сделать распознавание тона, а затем найти ключ из последовательности смол. Это невероятно трудно, если у вас есть что-нибудь, кроме монофонической последовательности смол. Если у вас есть монофоническая последовательность смол, то это все еще не четкий метод определения ключа: как вы имеете дело с хроматическим заметки, например, или определение того, является ли он основным или второстепенным. Поэтому вам нужно использовать метод, аналогичный Krumhansl по алгоритм поиска ключей.

таким образом, учитывая сложность этого подхода, альтернативой является просмотр всех нот, воспроизводимых одновременно. Если у вас есть аккорды или несколько инструментов, у вас будет богатый спектральный суп из многих синусоид, играющих одновременно. Каждая отдельная нота состоит из нескольких гармоник, фундаментальных частота, поэтому A (при 440Hz) будет состоять из синусоид при 440, 880, 1320... Кроме того, если вы играете в E (см. - схемы для смол), то это 659.25 Гц, который почти в полтора раза больше, чем у A (на самом деле 1.498). Это означает, что каждая 3-я гармоника A совпадает с каждой 2-й гармоникой E. Это причина, по которой аккорды звучат приятно, потому что они разделяют гармоники. (в стороне, вся причина, по которой западная гармония работает, связана с причуда судьбы, что двенадцатый корень из 2 в степени 7 составляет почти 1,5)

Если вы посмотрели за этот интервал от 5-го до мажорных, минорных и других аккордов, то вы найдете другие соотношения. Я думаю, что многие ключевые методы поиска будут перечислять эти соотношения, а затем заполнять гистограмму для каждого спектрального пика в сигнале. Таким образом, в случае обнаружения аккорда A5 вы ожидаете найти пики на 440, 880, 659, 1320, 1760, 1977. Для Б5 это будет 494, 988, 741 и др. Так создайте частоту гистограмма и для каждого синусоидального пика в сигнале (например, из спектра мощности FFT) увеличивают вход гистограммы. Затем для каждого ключа A-G подсчитайте ячейки в вашей гистограмме, и те, у которых больше всего записей, скорее всего, будут вашим ключом.

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

EDIT:
Если вы хотите поэкспериментировать, я бы предложил загрузить пакет, как Октавы или моллюск что облегчает визуализацию аудиоданных и запуск FFTs и других операций.

другие полезные ссылки:

  • моя кандидатская диссертация о некоторых аспектах распознавания тона - математика немного тяжелая, но глава 2 (я надеюсь) довольно доступное введение в различные подходы моделирования музыкального аудио
  • http://en.wikipedia.org/wiki/Auditory_scene_analysis -- анализ слуховой сцены Брегмана, который, хотя и не говорит о музыке, имеет некоторые увлекательные выводы о том, как мы воспринимаем сложные сцены
  • Дэн Эллис сделал некоторые большие документы в этой и подобных областях
  • Кит Мартин есть некоторые интересные подходы

Я работал над проблемой транскрибирования полифонических CD-записей в партитуры в течение более двух лет в университете. Проблема, как известно, трудная. Первые научные работы, связанные с этой проблемой, относятся к 1940-м годам, и до сих пор нет надежных решений для общего случая.

все основные предположения, которые вы обычно читаете, не совсем верны, и большинство из них достаточно ошибочны, чтобы они стали непригодными для всего, кроме очень простого вариант развития событий.

частоты обертоновне кратные основной частоты - есть нелинейные эффекты, так что высокие частичные дрейфуют от ожидаемой частоты - и не только несколько Герц; это не редкость, чтобы найти 7-й частичный, где вы ожидали 6-й.

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

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

когда я вернусь домой, я просмотрю бумаги, которые я прочитал, выберу 20 или 30 наиболее важных и добавлю их здесь. Я действительно Предлагаю прочитать их, прежде чем вы решите что - то реализовать-как указано выше, большинство распространенных предположений несколько неверны, и вы действительно не хотите заново открыть все это вещи, найденные и проанализированные более 50 лет при внедрении и тестировании.

Это сложная проблема, но это тоже очень весело. Я бы очень хотел услышать, что вы пробовали и как хорошо это сработало.


пока вы можете взглянуть на постоянное преобразование Q, распределение Cepstrum и wigner(–Ville). Есть также несколько хороших работ о том, как извлечь частоту из сдвигов в фазе кратковременных спектров Фурье - это позволяет использовать очень короткие размеры окон (для высокого временного разрешения), потому что частота может быть определена с точностью в несколько 1000 раз больше, чем частотное разрешение базового преобразования Фурье.

все эти преобразования соответствуют задаче обработки звука намного лучше, чем обычные преобразования Фурье. Для улучшения результатов базовых преобразований рассмотрим концепцию перераспределения энергии.


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

чтобы помочь решить, какой конкретный масштаб используется, сделайте заметку (без каламбура) из наиболее часто слышимых нот. В западной музыке корень шкалы обычно является наиболее распространенной нотой, за которой следует пятая, а затем четвертая. Вы также можете искать шаблоны, такие как common аккорды, арпеджио или последовательности.

размер выборки, вероятно, будет иметь важное значение здесь. В идеале, каждый образец будет одной ноте (так что вы не получите два аккорда в одном образце). Если ты ... --17-->фильтр out и сосредоточиться на низких частотах, вы можете быть в состоянии использовать спайки громкости ("клики"), обычно связанные с ударных инструментов для того, чтобы определить темп песни и "заблокировать" свой алгоритм в такт музыки. Начните с образцов, которые имеют половину длины и отрегулируйте оттуда. Будьте готовы выбросить некоторые образцы, которые не имеют много полезных данных (например, образец, взятый в середине слайда).


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

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


Это сложная тема, но простой алгоритм определения одного ключа (одной ноты) будет выглядеть так:

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

все становится еще хуже, если у вас есть хорда, различные "инструменты/эффекты" или гомофонной музыки узор.


сначала нужно шаг алгоритма обнаружения (например,автокорреляции).

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


Если вам нужно классифицировать кучу песен прямо сейчас, то crowd-source проблема с чем-то вроде "Механического Турка".


анализ ключа-это не то же самое, что анализ смол. К сожалению, вся концепция ключа несколько неоднозначна, различные определения обычно имеют тенденцию разделять только концепцию тоники, т. е. Центрального тона/аккорда. Даже если бы существовала хорошая система автоматической транскрипции, надежного алгоритма определения ключа не существует.