KATEDRA SYSTEMÓW MULTIMEDIALNYCH
Akustyka Muzyczna
Ćwiczenie nr 5:
Rekonstrukcja sygnałów muzycznych
Opracowanie:
mgr inż. Adam Kupryjanow
1. Wprowadzenie
Nagrania muzyczne zgromadzone w licznych archiwach radia i telewizji są jednym z naszych dóbr kulturowych. Z powodu wieloletniego składowania nośników, stosowania niskiej jakości urządzeń rejestrujących oraz digitalizujących, nagrania te ulegają uszkodzeniom różnego typu. W sygnale pojawia się szum, trzaski, kołysanie i drżenie dźwięku oraz wiele innych zniekształceń. W celu udostępniania tych nagrań szerszemu gronu odbiorców konieczna jest rekonstrukcja zniekształconego sygnału.
2. Cel i przebieg ćwiczenia
Celem ćwiczenia jest zapoznanie studenta z problematyką rekonstrukcji archiwalnych nagrań dźwiękowych zniekształconych przez szum impulsowy (trzaski). Zadania związane z algorytmami redukcji trzasków wykonywane są w programie MATLAB.
3. Detekcja i redukcja addytywnego szumu impulsowego (trzasków)
Trzask w sygnale fonicznym jest związany z krótką, lokalną nieciągłością sygnału trwającą około 1 ms. Przyjmuje się, iż w nagraniu nie więcej niż 10% próbek może zawierać tego rodzaju zniekształcenie [4]. Szum impulsowy jest typowy dla nagrań zarejestrowanych na płytach gramofonowych oraz na optycznych ścieżkach dźwiękowych występujących na
taśmach filmowych. Powodem powstawania zniekształcenia mogą być m.in. plamki brudu lub kurzu oraz zarysowania nośnika.
Trzask jest zniekształceniem addytywnym opisanym za pomocą wzoru (1): t
t t t x i n
y (1) gdzie xt jest sygnałem niezawierającym zniekształceń, yt to sygnał zniekształcony, nt to sygnał
szumu, a it to sygnał opisujący miejsca występowania trzasków (zawiera on wartości binarne). Detekcja
W najprostszym podejściu detekcja trzasków możliwa jest poprzez wykorzystanie filtracji górnoprzepustowej oraz progowania sygnału wynikowego. Niestety metoda ta nie jest skuteczna w przypadkach sygnałów zawierających składowe wysokoczęstotliwościowe oraz trzasków ograniczonych pasmowo [3]. Skuteczniejsze metody detekcji oparte są na modelu autoregresyjnym sygnału (AR). W podejściu tym sygnał dźwiękowy modelowany jest jako proces autoregresyjny zgodnie ze wzorem (2):
P i n n i n ax e x 1 1 (2)gdzie {ai, i=1…P} to współczynniki filtru, P to rząd modelu, en to pobudzenie. Podczas
detekcji wykorzystuje się sygnał pobudzenia, który w przypadku sygnału niezniekształconego ma charakter szumu białego. Sygnał en uzyskuje się poprzez filtrację sygnału xn za pomocą
filtra odwrotnego. Detekcję trzasków wykonuje się poprzez progowe wykrywanie gwałtownych zmian w sygnale en. Miejsca przekraczające próg odpowiadają miejscom
wystąpienia trzasków. Jednak jednoprogowa detekcja (nazywana metodą tradycyjną) wykorzystująca model AR nie jest wystarczająco niezawodna. Esquef et al. [1] zaproponowali wprowadzenie iteracyjnej dwuprogowej analizy sygnału pobudzenia. Opracowana przez nich metoda pozwala uzyskać wyższą skuteczność detekcji zniekształcenia co powoduje wzrost jakość rekonstrukcji. Na rys. 1 przedstawiono schemat blokowy iteracyjnego dwuprogowego algorytmu detekcji trzasków. W każdym kroku iteracji wyznaczany jest sygnał pobudzenia i przeprowadzane jest procedura detekcji zniekształceń. Po wykryciu miejsc trzasków, wartości zniekształconych próbek wyznaczane są za pomocą algorytmu predykcyjnego.
Podział sygnału na ramki AR Filtracja Wyznaczenie pobudzenia Detekcja z wykorzystaniem 2 progów Rekonstrukcja Tak Czy powtórzyć? Nie
Miejsca wystąpień trzasków
Rys. 1. Schemat blokowy dwuprogowego iteracyjnego algorytmu detekcji trzasków.
W każdym kroku iteracji dokonywana jest dwuprogowa analiza sygnału en. Pierwszy próg jest
progiem detekcji trzasku Thd a drugi progiem pozwalającym na określenie jego szerokość Thw. Jeżeli wartość pobudzenia przekracza wartość Thd wtedy w jej otoczeniu znajdowane są
wszystkie próbki przekraczające próg Thw. Wartości progów w każdej iteracji i wyznaczane
są adaptacyjnie zgodnie ze wzorami (3)(4)(5):
) ( ) ( in d i K e Th (3) ) ( ) (i b Th i Thw i d (4) b f i i r b (5) gdzie Thd(i) jest progiem detekcji w i-tej iteracji K jest stała, Thw(i) jest progiem detekcji
szerokości trzasku w i-tej iteracji, bi jest wartością wyznaczaną zgodnie ze wzorem (4), a
wartości r, f i b są stałymi. W tabeli 1 przedstawiono wartości stałych zaproponowane przez Esquef et al. [1]. Wyjaśnić należy tu, iż przez N oznaczono długość ramki analizy a imax jest
maksymalną liczbą iteracji.
Tabela 1. Wartości parametrów algorytmu detekcji trzasków zaproponowane przez Esquef et al. [1].
N P K b1 r n f g imax
1024 40 5 0,5 0,5 3 3 6 7
Redukcja trzasków
Podczas redukcji zniekształceń wykorzystywane są informacje pochodzące od algorytmu detekcji trzasków. Rekonstruowane są wyłącznie próbki sygnału, w których wykryto zniekształcenie. Zniekształcone wartości w sygnale wejściowym traktowane są jako brak wartości sygnału i wyznaczane są za pomocą algorytmu. W najprostszym podejściu możliwe jest wyznaczenie brakujących próbek sygnału jaki mediany próbek znajdujących się w otoczeniu trzasku. Jednak takie podejście nie pozwala na uzyskanie wysokiej jakości rekonstrukcji. Typowe algorytmy predykcji pozwalające na uzyskanie wysokiej jakości dźwięku oparte są na modelu AR i iteracyjnym uzupełnianiu brakujących wartości. Jedną z
metod znanych z literatury jest algorytm Janssena [2]. Oryginalnie autorzy tej metody predykcji sugerowali zastosowanie 100 iteracji podczas przetwarzania. W każdym kroku wyznaczany jest model AR i uzupełniane są brakujące próbki sygnału. W kolejnym kroku model AR wyznaczany jest dla sygnału z uzupełnionymi wartościami brakujących próbek. W efekcie uzupełniane wartości próbek są zbieżne do wartości oryginalnych. Schemat blokowy algorytmu predykcji zamieszczono na rys. 2.
Podział sygnału na ramki Zniekształcony sygnał
Miejsca wystąpień trzasków
AR
Uzupełnienie próbek zawierających
trzask
Filtracja powtórzyć?Czy
Tak
OLA Nie
Nie
Sygnał zrekonstruowany
Rys. 2. Schemat blokowy algorytmu predykcji. 4. Opis interfejsu graficznego do redukcji trzasków
Podczas zajęć wykorzystana zostanie aplikacja o nazwie „Recon”. Została ona stworzona w środowisku MATLAB do celów edukacyjnych.
Rys. 3. Interfejs graficzny aplikacji. Poniżej przedstawiono opis poszczególnych funkcji aplikacji:
1. Wybór algorytmu detekcji trzasków – wybrany algorytm zostanie zastosowany w procesie szukania trzasków.
2. Szukanie trzasków uruchamia algorytm detekcji trzasków we wczytanym nagraniu. 3. Dodanie trzasków – opcja ta umożliwia sztuczne dodanie zniekształcenia do nagrań. 4. Procentowa zawartość trzasków określa ile procent próbek w nagraniu ma zawierać
1
2
3
4
5
6
7
8
9
10
11
12
13
sztucznie dodane trzaski.
5. Statystyka detekcji (dostępna tylko podczas szukania trzasków w nagraniach sztucznie zniekształconych) – dostępne są dwie miary:
a. skuteczność detekcji trzasków - procent poprawnie wykrytych trzasków spośród całkowitej liczby sztucznie dodanych trzasków
b. pomyłki – procent próbek niezniekształconych, a oznaczonych przez detektor jako zniekształcenie.
6. Wykres ilustrujący przebieg czasowy sygnału zniekształconego. Po uruchomieniu algorytmu detekcji na rysunku czerwonymi krzyżykami zaznaczane są próbki, w których algorytm wykrył trzask.
7. Przyciski start/stop umożliwiające włączenie/wyłączenie odtwarzania nagrania zaszumionego.
8. Zoom on – włączenie lupy na obszarze wykresów. 9. Wybór algorytmu redukcji trzasków.
10. Uruchomienie algorytmu redukcji trzasków.
11. Statystyka rekonstrukcji (dostępna tylko podczas redukcji trzasków w nagraniach sztucznie zniekształconych).
12. Wykres ilustrujący przebieg czasowy sygnału zrekonstruowanego.
13. Przyciski start/stop umożliwiające włączenie/wyłączenie odtwarzania nagrania zrekonstruowanego.
5. Zadania
a) W środowisku MATLAB uruchom aplikację „Recon” i wczytaj plik o nazwie
mowa.wav (Plik->Wczytaj). Odsłuchać nagranie. Dodać 3% trzasków i ponownie odsłuchać nagranie. Korzystając z detektora tradycyjnego i detektora Esquefa przeprowadzić proces detekcji zniekształcenia. Zanotować statystyki uzyskane dla obu detektorów.
b) Dokonać rekonstrukcji nagrania korzystając z algorytmu Janssena. Zanotować wartość
błędu i odsłuchać nagranie zrekonstruowane.
c) Zaimplementować funkcję DetektorProsty i zbadać jej skuteczność dla nagrania
mowa.wav i muzyka.wav przy 3% udziale dodanego szumu impulsowego. Detekcja trzasków powinna odbywać się poprzez analizę sygnału przefiltrowanego za pomocą filtra górnoprzepustowego (częstotliwość odcięcia należy dobrać eksperymentalnie). Miejsca trzasków powinny odpowiadać wartościom próbek sygnału przefiltrowanego,
których wartość przekracza założony próg (wartość progu należy dobrać eksperymentalnie np. jako wartość średnią sygnału w ramce). Do zaprojektowania filtru górnoprzepustowego można użyć funkcji fir1. Filtrację sygnału można wykonać za pomocą funkcji filter.
d) Zaimplementować funkcję ReconMedian i zbadać skuteczność rekonstrukcji nagrania
mowa.wav i muzyka.wav przy 3% udziale dodanego szumu impulsowego (użyć detektora Esquefa). Algorytm powinien wyznaczać wartość brakującej próbki jako medianę wartości próbek w jej otoczeniu. Liczbę próbek z sąsiedztwa należy dobrać eksperymentalnie (można rozpocząć od wartości 4). Przydatne funkcje: median, find.
e) Przeprowadzić proces rekonstrukcji nagrań mowa.wav i muzyka.wav. Zapisać
statystyki detekcji i rekonstrukcji dla następującej procentowej zawartości trzasków w nagraniu: 0,3%, 0,9%, 3%, 6%, 9%. Podczas rekonstrukcji zbadać oba algorytmy detekcji zniekształcenia. Ocenić subiektywną jakość każdego z nagrań (w skali 1 do 5, gdzie 1 to niska jakość, a 5 to bardzo wysoka).
f) Przeprowadzić proces rekonstrukcji nagrań Donovan.wav i Orkiestra.wav. Dokonać
subiektywnej oceny jakości nagrań zrekonstruowanego. Podczas rekonstrukcji zbadać oba algorytmy detekcji zniekształcenia.
6. Opracowanie
1. Zamieścić kod zaimplementowanych funkcji (wraz z komentarzem)
2. Uzyskane statystyki detekcji i rekonstrukcji zamieścić w tabelach i na wykresach.
Skomentować wyniki. W jakich okolicznościach korzystne może być zastosowanie detektora tradycyjnego?
3. Uzyskane oceny subiektywne umieścić w tabelkach i skomentować. 4. Przeanalizować czy istnieje zależność pomiędzy:
a. skutecznością detekcji zniekształcenia a subiektywną oceną jakości
rekonstrukcji
b. procentową zawartością zniekształcenia a subiektywną oceną jakości
rekonstrukcji
c. błędem średniokwadratowym a subiektywną oceną jakości rekonstrukcji 5. Przeanalizować wyniki rekonstrukcji uzyskane w zadaniu d). Odpowiedzieć na
7. Bibliografia
1. P. A. A. Esquef, L. W. P. Biscainho, P. S. R. Diniz, F. P. Freeland, A Double-Threshold-Based Approach To Impulsive Noise Detection In Audio Signals. Proc. X European Signal Processing Conf., vol. 4EURASIP, Tampere, Finland, pp. 2041–2044, 2000.
2. A. J. E. M. Janssen, R. N. J. Veldhuis, L. B. Vries, Adaptive Interpolation of Discrete-Time Signals That Can Be Modeled as Autoregressive Processes. IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 34, no. 2, 1986.
3. S. Godsill, P. Rayner, O. Cappé, Digital Audio Restoration. Applications of Digital Signal Processing to Audio and Acoustics, (Kahrs, M., Brandenburg, K., Eds.), Kluwer Academic Publishers, Massachusetts, pp. 133-194, 2001.
4. S. J. Godsill, P. J. W. Rayner, Digital Audio Restoration – A Statistical Model Based Approach. 1998.