Detekcja częstotliwości podstawowej

60
Algorytmy detekcji częstotliwości podstawowej

Transcript of Detekcja częstotliwości podstawowej

Page 1: Detekcja częstotliwości podstawowej

Algorytmy detekcji częstotliwości podstawowej

Page 2: Detekcja częstotliwości podstawowej

Plan

Definicja częstotliwości podstawowej

Wybór ramki sygnału do analizy

Błędy oktawowe i dokładnej estymacji

Metody detekcji częstotliwości podstawowej

czasowe

widmowe

Realizacja przykładowego algorytmu

Page 3: Detekcja częstotliwości podstawowej

Częstotliwość podstawowa

W instrumencie muzycznym, dla dowolnie dobranej długości

struny czy długości kolumny drgającego powietrza istnieje

naturalny dźwięk odpowiadający tej długości, złożony z szeregu

tonów prostych. Najniższy ton występujący w takim dźwięku

nazywany jest główną składową harmoniczną, a

odpowiadająca mu częstotliwość – częstotliwością

podstawową lub wysokością dźwięku.

Amplituda głównej składowej harmonicznej nie musi być

największą spośród wszystkich harmonicznych.

Na barwę dźwięku instrumentu muzycznego decydujący wpływ

mają wzajemne relacje między kolejnymi składowymi

harmonicznymi.

Page 4: Detekcja częstotliwości podstawowej

Częstotliwość podstawowa

Postać czasowa

Widmo

0 2 4 6 8 10 12 14 16 18 20-0.04

-0.03

-0.02

-0.01

0

0.01

0.02

0.03

0.04

0.05

t [ms]

y(t)

T0

500 1000 1500 2000 2500 3000 3500 4000 4500 5000

10-6

10-4

10-2

f [Hz]

P(f)

f0

f0

f0[Hz]*T0[s]=1

f0[Hz]=f0[k]*fs[Hz]/N

(k – indeks DFT, N – długość DFT)

T0[s]=T0[smpl]/fs[Hz]

Page 5: Detekcja częstotliwości podstawowej

Przykłady zastosowań detekcji częstotliwości podstawowej

Określanie częstotliwości kolejnych składowych harmonicznych i

śledzenie ich zmian czasowych

Wyznaczanie parametrów widmowych dźwięku

Klasyfikacja instrumentów

Automatyczna transkrypcja linii melodycznej do kodu MIDI

Separacja dźwięków instrumentów muzycznych z nagrań

polifonicznych

Indeksacja i automatyczne wyszukiwanie nagrań

Page 6: Detekcja częstotliwości podstawowej

Zasady wyboru ramki sygnału do analizy

Długość analizowanej ramki sygnału zależy od wybranej metody

detekcji częstotliwości podstawowej, od charakterystyki

analizowanego dźwięku oraz od oczekiwanej dokładności

wyników

W ogólności należy wybierać możliwie krótką ramkę sygnału, w

której analizowany sygnał jest niezmienny (np. faza „Sustain” w

modelu obwiedni dźwięku ADSR przy analizie dźwięków

pojedynczych, izolowanych instrumentów muzycznych)

Dla większości metod, analizowana ramka sygnału powinna

zawierać co najmniej kilka okresów sygnału

W celu poprawy rezultatów można analizować kilka różnych

ramek dla tego samego sygnału

Page 7: Detekcja częstotliwości podstawowej

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 -0.2

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

t [s]

am

plit

uda

Zasady wyboru ramki sygnału do analizy

Page 8: Detekcja częstotliwości podstawowej

Błędy oktawowe związane są z trudnością wyznaczenia okresu

sygnału (w analizie w dziedzinie czasu), bądź z problemami

związanymi z określeniem rzędu składowych harmonicznych

wykrytych w widmie.

Błędy oktawowe

Page 9: Detekcja częstotliwości podstawowej

Błędy te wynikają z dyskretnej postaci czasowej sygnałów oraz

szumu zakłócającego analizowane sygnały.

W przypadku reprezentacji czasowych nie zawsze próbka

reprezentująca maksimum wypada w rzeczywistym maksimum fali

przebiegu.

W przypadku analizy widmowej piki widma nie zawsze

reprezentują częstotliwość. Niedokładne wyznaczenie maksimum

składowych harmonicznych wpływa na błąd estymacji.

Błędy dokładnej estymacji

Page 10: Detekcja częstotliwości podstawowej

Błędy dokładnej estymacji

Page 11: Detekcja częstotliwości podstawowej

Błędy dokładnej estymacji

Page 12: Detekcja częstotliwości podstawowej

Błędy dokładnej estymacji

Page 13: Detekcja częstotliwości podstawowej

Błędy dokładnej estymacji

Page 14: Detekcja częstotliwości podstawowej

Błędy dokładnej estymacji można zminimalizować przy pomocy

technik interpolacyjnych

Ponieważ w analizie czasowej maksima przebiegów zazwyczaj są

reprezentowane przez wiele próbek, skuteczną metodą poprawy

estymacji jest obliczanie środka ciężkości analizowanego wycinka

sygnału

W analizie częstotliwościowej piki widma reprezentowane są

jedynie przez kilka próbek, przez co skuteczniejsze jest

wykorzystanie liniowych (wielomianowych, sklejanych

wielomianów), bądź nieliniowych (interpolacja przy pomocy sieci

neuronowych) metod interpolacyjnych.

Błędy dokładnej estymacji

Page 15: Detekcja częstotliwości podstawowej

c[n]

n

Środek ciężkości

prążka

Maksimum

prążka

Fragment przebiegu czasowego

Błędy dokładnej estymacji

Page 16: Detekcja częstotliwości podstawowej

Próbki reprezentujące

pik widma

Estymowana współrzędna

maksimum piku

Współrzędna maksimum piku

Fragment widma sygnału

Błędy dokładnej estymacji

Page 17: Detekcja częstotliwości podstawowej

Podział metod detekcji f0

Metody czasowe, analizujące bezpośrednio postać czasową

sygnału

Metody widmowe, wykorzystujące operacje w dziedzinie

częstotliwości

Page 18: Detekcja częstotliwości podstawowej

Metody czasowe detekcji f0

Najpopularniejsze algorytmy działające w oparciu o reprezentację

czasową sygnału to:

Analiza sygnału autokorelacji,

Analiza sygnału wygenerowanego przy pomocy metody AMDF

(ang. Average Magnitude Difference Function)

Wykorzystanie powyższych metod dla liniowo i nieliniowo

zmodyfikowanego sygnału wejściowego

Page 19: Detekcja częstotliwości podstawowej

Metody czasowe detekcji f0

Analiza funkcji autokorelacji

Funkcja autokorelacji sygnału dyskretnego:

Położenie pierwszego maksimum tej funkcji dla argumentu

różnego od zera wyznacza okres sygnału w próbkach. Długość

ramki sygnału musi wynosić co najmniej kilka okresów.

Bardzo dobra rozdzielczość.

Możliwe błędy oktawowe, metoda mało odporna na szum i

zakłócenia

Trudności w analizie sygnału pozbawionego pierwszej

harmonicznej

m

nmxmxnr ][

Page 20: Detekcja częstotliwości podstawowej

Metody czasowe detekcji f0

Analiza funkcji autokorelacji

Funkcja autokorelacji sygnału dyskretnego:

m

nmxmxnr ][

Przydatne funkcje Matlaba

y=x(K:L); %Pobieranie wycinka sygnału x (od próbki K do L)

xs=xcorr(s); % obliczanie sygnału autokorelacji sygnału s

xs2=xs(length(s):end); % Pobieranie połowy sygnału autokorelacji

xFFTxFFTIFFTr

Alternatywny algorytm

zwiększyć dwukrotnie długość sygnału x poprzez uzupełnienie zerami

Page 21: Detekcja częstotliwości podstawowej

Analiza funkcji autokorelacji

Page 22: Detekcja częstotliwości podstawowej

Analiza funkcji autokorelacji

Page 23: Detekcja częstotliwości podstawowej

Analiza funkcji autokorelacji

Page 24: Detekcja częstotliwości podstawowej

Metody czasowe detekcji f0

Metoda AMDF (Average Magnitude Differential

Function)

polega na badaniu relacji między sygnałem oryginalnym i

opóźnionym

Częstotliwość podstawową sygnału określone jest przez

położenie pierwszego minimum lokalnego funkcji AMDF

(dla n 0). Bardzo mała złożoność obliczeniowa, jednak

pojawiają się błędy w przypadku, gdy okres sygnału nie jest

całkowitą wielokrotnością okresu próbkowania.

1 ,1

knmxmxnAMDFM

m

k

Page 25: Detekcja częstotliwości podstawowej

Metody czasowe detekcji f0

Metoda AMDF (Average Magnitude Differential

Function)

polega na badaniu relacji między sygnałem oryginalnym i

opóźnionym

1 ,1

knmxmxnAMDFM

m

k

Przydatne funkcje Matlaba

z=x-y; % Odejmowanie (próbka, po próbce) sygnałów

z=sum(abs(x-y)); % Suma wartości bezwzględnych różnicy sygnałów

z=x.*y; % Mnożenie próbka po próbce sygnałów

z=x*y; % Mnożenie sygnałów (wektorów)

Page 26: Detekcja częstotliwości podstawowej

Aby zwiększyć energię poszczególnych harmonicznych sygnału

trafiającego do detektora częstotliwości podstawowej i tym samym

poprawić skuteczność działania algorytmu detekcji (w kontekście

minimalizacji błędów oktawowych) często dokonuje się liniowych

(filtracja dolno- i górno-przepustowa, splatanie sąsiednich ramek,

itp.) bądź nieliniowych (podnoszenie próbek sygnału do potęgi,

generowanie przebiegów fazowych) operacji na sygnale

Liniowe i nieliniowe przekształcenia sygnału

Page 27: Detekcja częstotliwości podstawowej

Inne metody czasowe

Metody progowe – polegają na analizie przejść przebiegu

czasowego przez wybraną wartość progową. Wyróżnia się:

Analizę przejść przez zero ZXABE (ang. zero crossing analysis

basic extractor)

Analizę przejść przez wartość progową TABE (ang. threshold

analysis basic extractor)

Zaletą metod progowych jest możliwość działania niemal w czasie

rzeczywistym (z minimalnym opóźnieniem), ponieważ nie

wymagają pełnego zestawu danych. Może to jednak skutkować

błędami detekcji.

Metody posiadają bardzo dobrą rozdzielczość, lecz są mało

odporne na addytywny szum zakłócający.

Page 28: Detekcja częstotliwości podstawowej

Algorytmy bazujące na reprezentacji widmowej sygnału oraz

algorytm pochodne, bazujące na przekształconej reprezentacji

widmowej (cepstrum, autokorelacja zlogarytmowanego widma)

opierają swoje działanie na detekcji pików reprezentujących

składowe harmoniczne sygnału.

Przydatne funkcje Matlaba

[v, ind]=max(s); % Wartość maksymalna i jej indeks (sygnału s)

y=filter(ones(1,K)/K, 1,s); % średnia ruchoma rzędu K sygnału s

y=fft(s); % obliczanie widma zespolonego

y2=abs(y); % obliczanie wartości bezwzględnej sygnału zespolonego y

y3=log10(y2); % obliczanie logarytmu dla wszystkich próbek sygnału y2

plot(20*log10(abs(fft(s)))); % rysowanie widma mocy sygnału s

Algorytmy detekcji operujące w dziedzinie widma

Page 29: Detekcja częstotliwości podstawowej

Na podstawie odległości pomiędzy składowymi harmonicznymi

widma sygnału można określić częstotliwość podstawową sygnału

Analiza położenia składowych harmonicznych

0 2 4 6 8 10

-120

-100

-80

-60

-40

-20

0

Widmo amplitudowe

początek ramki: 6656 (0.151s) długość: 8192 (0.186s)

f [kHz]

am

plitu

da

[d

B]

Page 30: Detekcja częstotliwości podstawowej

Metoda cepstralna

Metoda cepstralna

Obliczana odwrotna transformata Fouriera logarytmu widma

amplitudowego analizowanej ramki sygnału, wg wzoru:

Częstotliwość podstawowa sygnału w ramce estymowana jest na

podstawie położenia maksimum w dziedzinie cepstrum

Algorytm oparty o analizę cepstralną jest relatywnie niewrażliwy

na szum, ale występuje problem pojawiania się błędów

oktawowych

m

n

nrm

nrXC

1

cosln

Page 31: Detekcja częstotliwości podstawowej

Metoda cepstralna

Metoda cepstralna

Obliczana odwrotna transformata Fouriera logarytmu widma

amplitudowego analizowanej ramki sygnału, wg wzoru:

m

n

nrm

nrXC

1

cosln

Przydatne funkcje Matlaba

z_re=real(z); % Część rzeczywista sygnału zespolonego

z_im=imag(z); % Część urojona sygnału zespolonego

z_an=phase(z); % Faza sygnału zespolonego

x_d=cceps(x); % Obliczanie cepstrum zespolonego sygnału x

x_d=rceps(x); % Obliczanie cepstrum rzeczywistego sygnału x

Page 32: Detekcja częstotliwości podstawowej

Metody widmowe detekcji f0

Metoda cepstralna

Page 33: Detekcja częstotliwości podstawowej

Metoda cepstralna

Page 34: Detekcja częstotliwości podstawowej

Metoda cepstralna

Page 35: Detekcja częstotliwości podstawowej

Metoda cepstralna

Page 36: Detekcja częstotliwości podstawowej

Metoda ACOLS (ang. Autocorrelation Of Log Spectrum) oparta jest

na analizie sygnału autokorelacji obliczonego na podstawie

zlogarytmowanego widma sygnału wejściowego, przy czym

współrzędna piku reprezentującego częstotliwość podstawową

zlokalizowana jest w dziedzinie częstotliwości.

Matlab

ACOLS=xcorr(log(abs(fft(s))));

Analiza ACOLS

Page 37: Detekcja częstotliwości podstawowej

Analiza ACOLS

Page 38: Detekcja częstotliwości podstawowej

Analiza ACOLS

Page 39: Detekcja częstotliwości podstawowej

Analiza ACOLS

Page 40: Detekcja częstotliwości podstawowej

Analiza ACOLS

Page 41: Detekcja częstotliwości podstawowej

Aby zwiększyć prawdopodobieństwo poprawnej detekcji

częstotliwości podstawowej, możliwe jest wykorzystanie informacji

zgromadzonych na podstawie analizy przebiegu czasowego oraz

reprezentacji widmowej sygnału

Ponadto część algorytmów bada trajektorie wykryte podczas

analizy sonograficznej, reprezentujące przebiegi składowych

sinusoidalnych w celu ekstrakcji częstotliwości podstawowej

Przydatne funkcje Matlaba

S = specgram(s, nFFT, Fs, winType, nOVERLAP); % Obliczanie sonogramu

Algorytmy detekcji operujące w przestrzeni czas-częstotliwość

Page 42: Detekcja częstotliwości podstawowej

Algorytmy detekcji operujące w przestrzeni czas-częstotliwość

Page 43: Detekcja częstotliwości podstawowej

Algorytmy detekcji operujące w przestrzeni czas-częstotliwość

Page 44: Detekcja częstotliwości podstawowej

Algorytmy detekcji operujące w przestrzeni czas-częstotliwość

Page 45: Detekcja częstotliwości podstawowej

Inne metody widmowe

Filtracja grzebieniowa

Polega na obliczaniu iloczynów widma sygnału oraz funkcji

grzebieniowej o przestrajanej częstotliwości, określającej

odległość pomiędzy kolejnymi maksimami lokalnymi funkcji

grzebieniowej. Następnie sumuje się wartości prążków po

filtracji przez funkcję grzebieniową i przyporządkowuje

otrzymane wyniki częstotliwości charakteryzującej funkcję

grzebieniową. Położenie maksimum globalnego utworzonej w

ten sposób funkcji określa częstotliwość podstawową dźwięku.

Page 46: Detekcja częstotliwości podstawowej

Inne metody widmowe

Histogram Schroedera

Metoda statystyczna polegająca na analizie z osobna

częstotliwości każdego prążka.

Na podstawie rozkładu częstotliwości prążków widma

generowany jest histogram częstotliwości. Jeśli wielokrotność

częstotliwości analizowanego prążka pokrywa się z

częstotliwością innego, to powiększana jest wartość

histogramu dla tej właśnie częstotliwości. Częstotliwość

podstawowa dźwięku jest wtedy równa częstotliwości, dla

której wartość histogramu jest największa.

duża dokładność

odporność na występowanie błędów oktawowych

algorytm skuteczny dla sygnałów zaszumionych

Page 47: Detekcja częstotliwości podstawowej

Inne metody widmowe

Kombinacja transformacji Fouriera

Obliczana jest transformata Fouriera

widma amplitudowego sygnału.

Częstotliwość podstawowa odpowiada

odległości między prążkami w widmie

sygnału, a tym samym największemu

maksimum lokalnemu w drugim widmie.

Algorytm ten jest skuteczny w

przypadku, gdy w widmie sygnału brak

jest prążka o częstotliwości

odpowiadającej częstotliwości

podstawowej.

Page 48: Detekcja częstotliwości podstawowej

Przykładowy algorytm detekcji f0

Wybór ramki sygnału

Obliczanie widma FFT

Filtracja dolnoprzepustowa

Logarytmowanie widma

Usuwanie trendu

Kwantyzacja 1-bitowa

Różniczkowanie

Określenie położenia prążków

Obliczanie różnic między prążkami

Wyznaczanie zbioru najmniejszych różnic

Obliczanie wartości średniej zbioru

Określenie częstotliwości podstawowej

Przygotowanie widma Wyznaczenie częstotliwości podstawowej

Wyznaczenie prążków

Próg P1

Próg P2

Sygnał dźwiękowy

f0

Page 49: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Rożek angielski, dźwięk A4, mezzoforte

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8-0.2

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

t [s]

x(t

)

0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

t [s]

x(t

)

Page 50: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Filtracja dolnoprzepustowa

0 5000 10000 15000 20000-6

-5

-4

-3

-2

-1

0

f [Hz]

0 5000 10000 15000 20000 -6

-5

-4

-3

-2

-1

0

f [Hz]

Page 51: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Filtracja dolnoprzepustowa

0 200 400 600 800 1000 1200 1400 1600 1800 2000-6

-5

-4

-3

-2

-1

0

f [Hz]0 200 400 600 800 1000 1200 1400 1600 1800 2000

-6

-5

-4

-3

-2

-1

0

f [Hz]

Page 52: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Usuwanie trendu

0 5000 10000 15000 20000 -6

-5

-4

-3

-2

-1

0

f [Hz]0 5000 10000 15000 20000

-6

-5

-4

-3

-2

-1

0

f [Hz]

Page 53: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Usuwanie trendu

0 5000 10000 15000 20000 -6

-5

-4

-3

-2

-1

0

f [Hz] 0 5000 10000 15000 20000-6

-5

-4

-3

-2

-1

0

f [Hz]

Page 54: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Kwantyzacja 1-bitowa

0 5000 10000 15000 20000-6

-5

-4

-3

-2

-1

0

f [Hz]

0 5000 10000 15000 20000-6

-5

-4

-3

-2

-1

0

f [Hz]

Page 55: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Kwantyzacja 1-bitowa

0 5000 10000 15000 20000-6

-5

-4

-3

-2

-1

0

f [Hz]

0 5000 10000 15000 20000-6

-5

-4

-3

-2

-1

0

f [Hz]

0 500 1000 1500 2000 2500 3000 3500 40000

1

f [Hz]

Page 56: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Różniczkowanie

0 500 1000 1500 2000 2500 3000 3500 40000

1

f [Hz]

0 500 1000 1500 2000 2500 3000 3500 4000-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

1 100 200 300 400 500 600 700

f [Hz]

n

Page 57: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Określenie położenia prążków

0 500 1000 1500 2000 2500 3000 3500 4000-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

1 100 200 300 400 500 600 700

f [Hz]

n

1 2 3 4 5 60

100

200

300

400

500

600

Page 58: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Obliczanie różnic między prążkami

1 2 3 4 5 60

100

200

300

400

500

600

0 5 10 15 20 25 300

100

200

300

400

500

600

Page 59: Detekcja częstotliwości podstawowej

Algorytm detekcji f0 Określenie częstotliwości podstawowej

0 5 10 15 20 25 300

100

200

300

400

500

600

5 10 15 20 25 300

10

20

30

40

50

60

70

80

f0 = 450,85Hz A4+42

Page 60: Detekcja częstotliwości podstawowej

Podsumowanie

Detekcja częstotliwości podstawowej jest złożonym

zagadnieniem i wykorzystanie odpowiedniego algorytmu

uzależnione jest od celu przetwarzania i wymagań stawianych

danej metodzie

Przedstawione algorytmy znacząco różnią się pod względem

złożoności obliczeniowej, opóźnienia związanego z rozmiarem

przetwarzanych ramek oraz z dokładnością generowanych

wyników, która w wielu przypadkach zależna jest od rodzaju

analizowanych przebiegów oraz od poziomu szumu w nagraniu