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

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

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

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

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

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

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

Специально от: the_mandrill и Daniel Brückner.

4b9b3361

Ответ 1

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

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

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

Итак, учитывая сложность этого подхода, альтернативой является просмотр всех заметок, которые воспроизводятся в одно и то же время. Если у вас есть аккорды или более чем один инструмент, тогда вы будете иметь богатый спектральный суп из многих синусоидов, играющих одновременно. Каждая отдельная нота состоит из нескольких гармоник основной частоты, поэтому A (на частоте 440 Гц) будет состоять из синусоидов на 440, 880, 1320... Кроме того, если вы играете E (см. диаграмму для шагов), то это 659,25 Гц, что почти в полтора раза больше, чем у A (на самом деле 1,498). Это означает, что каждая третья гармоника A совпадает с каждой второй гармоникой E. Это причина, по которой аккорды звучат приятными, потому что они разделяют гармоники. (как в стороне, вся причина, по которой работает западная гармония, связана с причудой судьбы, что двенадцатый корень 2 до степени 7 почти равен 1.5)

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

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


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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

Ответ 6

Сначала вам понадобится алгоритм определения высоты тона (например, autocorrelation).

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

Ответ 7

Если вам нужно классифицировать кучу песен прямо сейчас, то толпа-источник проблемы с чем-то вроде Mechanical Turk.

Ответ 8

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