Распознавание отдельного гитарного аккорда из аудиосэмпла

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

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

Спасибо


person nihilo90    schedule 24.02.2012    source источник
comment
Здесь я применил несколько методов: gist.github.com/fasiha/957035272009eb1c9eb370936a6af2eb в ответ на < href="https://stackoverflow.com/a/39234337/500207">этот вопрос.   -  person Ahmed Fasih    schedule 17.02.2018


Ответы (4)


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

person hotpaw2    schedule 25.02.2012
comment
Спасибо за ответ. Не могли бы вы подробнее рассказать о том, как использовать метод снятия отпечатков пальцев? Было бы довольно просто идентифицировать пики для разных аккордов, а затем использовать какой-то алгоритм максимального правдоподобия? - person nihilo90; 27.02.2012
comment
Отпечатки пальцев не будут работать, так как разные гитары имеют разные тембры. - person Björn Lindqvist; 06.05.2020
comment
Ничто не мешает снять отпечатки пальцев на очень большом количестве гитар. Тестируя свой гитарный тюнер, я посетил более десятка гитарных магазинов и настроил несколько сотен различных гитар, от дешевых студенческих игрушек до довольно дорогих. Не знаю почему, но сотрудники магазина никогда не беспокоили меня и не спрашивали, что я делаю. - person hotpaw2; 06.05.2020

Для тех, кто интересуется, как это сделать, загляните в Harmonic Product Spectrum и Pitch Class Profiles/Chroma Vectors. Сочетание этих факторов является ключевым. Кроме того, использование условий поиска «множественная оценка F0», а не «обнаружение аккорда», гарантирует гораздо лучшие результаты :)

person nihilo90    schedule 27.03.2012

Хотя уже слишком поздно отвечать, я надеюсь, что это поможет вам ..

Если вы программируете для электронной или MIDI-гитары или любого другого MIDI-инструмента, то существует очень эффективный Java-пакет JFugue для таких вещей, как обнаружение нот аккордов и т. д. для любого инструмента, и в этом пакете гораздо больше функциональных возможностей. я предлагаю вам взглянуть на это Jfugue.org

person appdroid    schedule 07.04.2012

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

person Ted Elrico    schedule 13.02.2018