Алгоритмы обнаружения аккордов? - PullRequest
28 голосов
/ 02 декабря 2010

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

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

Ответы [ 7 ]

12 голосов
/ 21 января 2013

Это довольно хороший проект с открытым исходным кодом: https://patterns.enm.bris.ac.uk/hpa-software-package

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

.. должен предоставить вам все, что вам нужно. :)

12 голосов
/ 02 декабря 2010

У автора Capo , программы транскрипции для Mac, есть довольно глубокий блог.Запись «Примечание по автоматическому табулированию» имеет несколько хороших точек отсчета:

Я начал исследовать различные методы автоматической транскрипции в середине 2009 года, потому что мне было любопытно, какЭта технология была далеко, и если бы она могла быть интегрирована в будущую версию Capo.

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

Здесь я столкнулся с некоторыми вычислительно дорогими спектральными представлениями (Непрерывное вейвлет-преобразование (CWT), Константа Q-преобразование (CQT) и другие). Я реализовалвсе эти спектральные преобразования, чтобы я мог также реализовать алгоритмы, представленные в статьях, которые я читал.Это дало бы мне представление о том, будут ли они работать на практике.

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

http://supermegaultragroovy.com/products/Capo/img/screen1_sm-nq8.png

(Примечание: жесткие полосы нот были нарисованы пользователем. Нечеткие пятна под нимиэто то, что показывает Капо.)

7 голосов
/ 03 декабря 2010

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

Моя собственная точка зрения на это заключается в том, что применение полифонического распознавания для извлечения нот, а затем попытка обнаружить аккорды по нотам - неправильный способ сделать это. Причина в том, что это неоднозначная проблема. Если у вас есть два сложных тона с точностью до октавы, то невозможно определить, воспроизводятся ли одна или две ноты (если у вас нет дополнительного контекста, такого как знание профиля гармоники). Каждая гармоника C5 также является гармоникой C4 (и C3, C2 и т. Д.). Поэтому, если вы попробуете мажорный аккорд в полифоническом распознавателе, вы, вероятно, получите целую последовательность нот, которые гармонично связаны с вашим аккордом, но не обязательно ноты, которые вы играли. Если вы используете метод определения высоты тона, основанный на автокорреляции, вы увидите этот эффект довольно отчетливо.

Вместо этого я думаю, что лучше искать узоры, которые сделаны определенными формами аккордов (Major, Minor, 7th и т. Д.).

5 голосов
/ 02 декабря 2010

Смотрите мой ответ на этот вопрос: Как я могу в реальном времени определять высоту тона в .Net?

Ссылка на этот документ IEEE в основном то, что вы ищете: http://ieeexplore.ieee.org/Xplore/login.jsp?reload=true&url=/iel5/89/18967/00876309.pdf?arnumber=876309

Гармоники сбивают вас с толку. Кроме того, люди могут найти основы в звуке, даже если они отсутствуют! Подумайте о чтении, но покрыв половину букв. Мозг заполняет пробелы.

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

4 голосов
/ 02 декабря 2010

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

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

Если вы можете ограничить свой выбор (например, только 2 флейты, играющие только четвертные ноты и т. Д.), Особенно на инструментах с очень ограниченной энергией обертона, это значительно облегчит проблему.

2 голосов
/ 22 июля 2015

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

Клапури, Ансси; Многоуровневый анализ полифонических музыкальных и речевых сигналов с использованием слуховой модели ;IEEE СДЕЛКИ ПО АУДИО, РЕЧИ И ОБРАБОТКЕ ЯЗЫКА, ТОМ.16, №2, ФЕВРАЛЬ 2008 255

В документе действует что-то похожее на обзор литературы по многоуровневому анализу и обсуждается метод на основе слуховой модели:

enter image description here

(Изображение из газеты. Я не знаю, нужно ли мне получать разрешение на его публикацию.)

2 голосов
/ 18 января 2014

Также http://www.schmittmachine.com/dywapitchtrack.html

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

И http://clam -project.org / могут немного помочь.

...