2010-10-27 14 views
38

Jaki jest dobry algorytm przetwarzania sygnału cyfrowego, który jest dobry na gitarowych akordach? Ponieważ szybka transformata Fouriera wydaje mi się, że jest dokładna tylko w przypadku pojedynczych dźwięków granych na gitarze, ale nie w nutach granych jednocześnie (tzn. Akordów).Algorytm rozpoznawania akordów?

Dzięki!

+2

Zapytaj chłopaków z Melodyne: http://www.youtube.com/watch?v=jFCjv4_jqAY – herzmeister

+4

Jak myślisz, na jakiej podstawie FFT jest w twoim przypadku nieprzyjemny? – Biggles

Odpowiedz

2

Cóż, możesz wypróbować inny zestaw algorytmów dla domeny częstotliwości, takich jak falki. Ale nie jestem pewien, czy to zrobi dla twojego problemu z dokładnością. Właściwie to nie rozumiałem, w jaki sposób masz problemy z FFT. To zawsze będzie przybliżenie akordu, nie ma idealnego sposobu na odzyskanie tego rodzaju informacji o dźwięku.

Tak więc, to zależy od analizy, którą wykonujesz na tym spektrum, z pojedynczymi nutami, w rzeczywistości jest dużo lepszych algorytmów niż FFT, ale z akordami będziesz prawdopodobnie musiał pracować z FFT.

Problemem, który musisz rozwiązać, są podzielone podstawowe harmoniczne z wyższych harmonicznych, jedną rzeczą, która może pomóc, jest rozważenie tylko częstotliwości znajdujących się na gitarze. Jeśli musisz tylko pracować z dźwiękami gitary, powinieneś poświęcić trochę czasu na badanie normalnego wykresu w dziedzinie częstotliwości na gitarze i spróbuj go użyć, aby poprawić dokładność.

+0

Cześć! Czy przy korzystaniu z FFT możliwe jest wykorzystanie intensywności pojemników w celu określenia nut składających się na akordy? Ponieważ myślę, że będą one mieć pewien rodzaj korelacji ze sobą. – user488792

2

Istnieje kilka skutecznych narzędzi, które używają DFT (FFT), ale wykonują wiele operacji po obliczeniu DFT.

Wypróbuj this link, aby uzyskać podsumowanie aktualnego stanu techniki lub Google "Chordino" lub "Chordata" dla algorytmów ekstrakcji otwartego źródła.

64

Krótka odpowiedź brzmi, że potrzebujesz więcej niż jednego algorytmu. Dobre metody rozpoznawania akordów można by bardziej trafnie określić jako "systemy", ale zazwyczaj są one oparte na początkowej transformacji do dziedziny częstotliwości (najczęściej DFT).

Jeśli chcesz representaton akord piosenki podobne do tego

C G Am F7 F6 C ... 

to jest rzeczywiście problem, który jest nieco usunięte z uznając notatki w kawałek audio. W rzeczywistości istnieją dwa problemy (z grubsza):

  1. odkrycie, które Stanowiska są obecne w każdej chwili
  2. grupowania tych boisk w miarę upływu czasu, tak aby być w stanie przypisać etykietę akordów do przedziału czasowego.

Okazuje się, że sposób, w jaki przekształcasz się z dziedziny czasu (dźwięk normalny) do dziedziny częstotliwości (reprezentacja widmowa) ma tylko ograniczone znaczenie. Bardzo ważne jest to, co robisz później, a często wyrafinowane modele probabilistyczne (podobne do rozpoznawania mowy: HMM, DBN, ...) są używane do rozwiązania tego problemu.

Wypróbuj google scholar "transkrypcja akordów" lub "detekcja akordów" lub "oznaczanie akordów" dla zaawansowanych badań w tej dziedzinie.

Większość z tych podejść wykorzystuje dyskretną transformatę Fouriera (DFT) do utworzenia początkowego spektrogramu. Również podczas dalszego przetwarzania różnią się one nieznacznie, chociaż zastosowano różne techniki wygładzania szeregów czasowych: ukryte modele Markowa, dynamiczne sieci bayesowskie, maszyny wektorowe (SVMstruct) i warunkowe pola losowe - między innymi. Najbardziej zaawansowani transkrypci używają automatycznego strojenia, informacji o kluczach, informacji o tonach niskich i informacji o pozycji metrycznej, aby poprawić wyniki. Mój thesis (Rozdział 2) daje dobry przegląd.

Otwartych algorytmy wykrywania akordów źródło:

nadzieję, że to pomaga.

+11

+1 za dobrą odpowiedź i za możliwość odniesienia się do własnej tezy w odpowiedzi. – gary

+0

Mam trudności z używaniem LabROSA Chord Recognition, czy możesz wskazać mi, jak z niego korzystać? Używam polecenia terminal, extractFeaturesAndTrain_svm i doChordID_svm, ale nie jest ono rozpoznawane –

1

Pomiędzy naukowcami istnieje contest, gdzie ludzie próbują analizować różne parametry muzyki. Jedną z części tego konkursu jest rozpoznawanie akordów. Ten konkurs jest publiczny, aby każdy mógł w nim uczestniczyć i pokazać wyniki w tej dziedzinie. Wyniki roku 2011 zostały opublikowane here.

Mój przyjaciel osiągnął dobre wyniki w tej dziedzinie (i także w tym konkursie). Możesz przeczytać o jego podejściu na jego webpage.

2

FFT może i będzie podawać wszystkie pojedyncze dźwięki, jeśli oprogramowanie zostanie ustawione prawidłowo. Cały punkt FFT polega na rozróżnianiu dźwięków, lub jeśli jesteś astrofizykiem, chcesz poznać poszczególne elementy (sulpher, hydrogen ...), które są w świetle wychodzącym z gwiazdy.

Harmoniczne nie stanowią problemu, ponieważ mają mniej "mocy" niż podstawowe częstotliwości, na przykład C = 440 Hz, ale C = 880 Hz również, ale 880 będzie mniejszym skokiem w wynikach FFT.

+0

nie, to nie prawda, jeśli spróbujesz narysować widmo produkowane przez FFT, na przykład dla nuty C5 granej na skrzypcach zobaczysz, że C5 ma niższe amplituda niż C6. –

+0

@YuriyKravets Myślę, że oznacza, że ​​możesz znaleźć nutę root, ponieważ będzie to ta z największą "mocą", jak to ujął –