Алгоритмы для определения ключа аудиосэмпла

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

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

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

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

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

Особенно от: the_mandrill и Daniel Brückner.

53
задан Amro 8 July 2014 в 22:37
поделиться

7 ответов

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

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

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

Таким образом, учитывая сложность этого подхода, альтернативой является просмотр всех проигрываемых одновременно нот. Если у вас есть аккорды или несколько инструментов, тогда у вас будет богатый спектральный суп из множества синусоид, играющих одновременно. Каждая отдельная нота состоит из нескольких гармоник, основной частоты, поэтому A (на 440 Гц) будет состоять из синусоид на 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 г. Для B5 это будет 494, 988, 741 и т. Д. Итак, создайте гистограмму частот и для каждого синусоидальный пик в сигнале (например, из спектра мощности БПФ) увеличивает запись гистограммы.Затем для каждого ключа A-G подсчитайте интервалы в вашей гистограмме, и те, которые имеют наибольшее количество записей, скорее всего, будут вашим ключом.

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

РЕДАКТИРОВАТЬ:
Если вы хотите поэкспериментировать, я бы предложил загрузить такой пакет, как Octave или CLAM , который упрощает визуализацию аудиоданных и выполнение БПФ и других операций.

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

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

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

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

1
ответ дан 7 November 2019 в 08:42
поделиться

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

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

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

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

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

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

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


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

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

18
ответ дан 7 November 2019 в 08:42
поделиться

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

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

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

6
ответ дан 7 November 2019 в 08:42
поделиться

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

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

5
ответ дан 7 November 2019 в 08:42
поделиться

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

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

Ситуация становится еще труднее, если у вас есть аккорд, различные «инструменты / эффекты» или негомофонный музыкальный паттерн.

3
ответ дан 7 November 2019 в 08:42
поделиться

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

1
ответ дан 7 November 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: