2010-10-27 2 views
38

Каков хороший алгоритм обработки цифровых сигналов, который хорош на гитарных аккордах? С быстрым преобразованием Фурье я думаю, что это точно только на одиночных нотах, играемых на гитаре, но не на нотах, которые воспроизводятся одновременно (т. Е. Аккорды).Алгоритм распознавания аккордов гитар?

Спасибо!

+2

Спросите ребят из Melodyne: http://www.youtube.com/watch?v=jFCjv4_jqAY – herzmeister

+4

На каком основании, по вашему мнению, БПФ является непостоянным в вашем случае? – Biggles

ответ

2

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

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

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

+0

Привет! При использовании БПФ можно ли использовать интенсивности бункеров, чтобы попытаться определить ноты, которые содержат аккорды? Потому что я думаю, что они будут иметь некоторую корреляцию друг с другом. – user488792

2

Есть несколько достаточно успешных инструментов, которые используют ДПФ (БПФ), но они выполняют большую обработку после вычисления ДПФ.

Попробуйте this link для краткого изложения текущего уровня техники или gohor «Chordino» или «Chordata» для алгоритмов извлечения хордов с открытым исходным кодом.

64

Короткий ответ: вам нужно гораздо больше одного алгоритма. Хорошие методы распознавания аккордов можно более точно описать как «системы», но обычно они основаны на первоначальном преобразовании в частотную область (чаще всего DFT).

Если вы хотите аккорд representaton песни похож на этот

C G Am F7 F6 C ... 

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

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

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

Попробуйте google ученого «транскрипция аккорда», или «обнаружение аккордов», или «аккордовая маркировка» для продвинутых исследований в этой области.

Большинство этих подходов используют дискретное преобразование Фурье (ДПФ) для создания начальной спектрограммы. При дальнейшей обработке они, как правило, незначительно отличаются друг от друга, хотя использовались различные методы сглаживания временных рядов: скрытые марковские модели, динамические байесовские сети, векторные векторные машины (SVMstruct) и условные случайные поля. Самые передовые транскрипторы используют автоматическую настройку, информацию о ключе, информацию о нотах баса и информацию о метрической позиции для улучшения результатов. Мой thesis (глава 2) дает хороший обзор.

алгоритмы с открытыми исходным кодом аккорда обнаружения:

Надеется, что это помогает.

+11

+1 за хороший ответ и за возможность ссылаться на свой тезис в ответ. – gary

+0

У меня возникли трудности с использованием распознавания аккордов LabROSA, можете ли вы посоветовать мне, как его использовать? Я использую команду терминала, extractFeaturesAndTrain_svm и doChordID_svm, но она не распознана –

1

Между ученым существует contest, где люди пытаются проанализировать различные параметры музыки. Одним из разделов этого конкурса является распознавание аккордов. Этот конкурс является публичным, поэтому каждый может участвовать в нем и показывать результаты в этой сфере. Результаты 2011 года опубликованы here.

Мой друг достиг хороших результатов в этой сфере (и в этом конкурсе тоже). Вы можете прочитать о его подходе к его webpage.

2

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

Гармоники не являются проблемой, потому что они имеют меньшую мощность, чем основная частота, например C = 440 Гц, но C = 880 Гц, но 880 будет меньшим всплеском результатов FFT.

+0

Нет, это не так, если вы пытаетесь нарисовать спектр, созданный FFT, например, для заметок C5, воспроизводимых на скрипке, вы увидите, что C5 имеет более низкую амплитудой, чем C6. –

+0

@YuriyKravets Думаю, он имеет в виду, что вы можете найти корневую ноту, поскольку она будет с самой большой «силой», когда он ставит ее –