Алгоритмы определения ключа аудиосэмпла - PullRequest
53 голосов
/ 29 июня 2010

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

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

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

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

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

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

Ответы [ 8 ]

57 голосов
/ 29 июня 2010

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

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

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

Итак, учитывая сложность этого подхода, альтернативой является просмотр всех нот, играемых одновременно. Если у вас есть аккорды или более одного инструмента, у вас будет богатый спектральный суп из множества синусоид, играющих одновременно. Каждая отдельная нота состоит из нескольких гармоник основной частоты, поэтому 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 мс) и проанализировать каждый из них, чтобы получить более надежную оценку.

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

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

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

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

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

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

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

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

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

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


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

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

6 голосов
/ 29 июня 2010

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

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

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

5 голосов
/ 29 июня 2010

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

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

3 голосов
/ 29 июня 2010

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

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

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

1 голос
/ 22 июля 2015

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

1 голос
/ 30 июня 2010

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

1 голос
/ 29 июня 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...