Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

Если вам нужно классифицировать кучу песен прямо сейчас, тогда решите проблему с помощью краудсорсинга, например: Механический турок.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top