AKADEMIA GÓRNICZO-HUTNICZA im.stanisława Staszica WYDZIAŁ INŻYNIERII MECHANICZNEJ I ROBOTYKI Praca dyplomowa inżynierska Jakub Antoniuk Imię i nazwisko Inżynieria Akustyczna Nazwa kierunku studiów Aplikacja do wydobywania mowy z nagrania słabej jakości Temat pracy dyplomowej inżynierskiej dr inż. Bartosz Ziółko Promotor pracy... Ocena Kraków, rok 2014/2015
Kraków, dn. 14 stycznia 2015 Imię i nazwisko: Jakub Antoniuk Nr albumu: 249229 Kierunek Studiów: Inżynieria Akustyczna Profil dyplomowania: OŚWIADCZENIE Świadomy/a odpowiedzialności karnej za poświadczanie nieprawdy oświadczam, że niniejszą inżynierską pracę dyplomową wykonałem/łam osobiście i samodzielnie oraz nie korzystałem/łam ze źródeł innych niż wymienione w pracy. Jednocześnie oświadczam, że dokumentacja oraz praca nie narusza praw autorskich w rozumieniu ustawy z dnia 4 lutego 1994 roku o prawie autorskim i prawach pokrewnych (Dz. U. z 2006 r. Nr 90 poz. 631 z późniejszymi zmianami) oraz dóbr osobistych chronionych prawem cywilnym. Nie zawiera ona również danych i informacji, które uzyskałem/łam w sposób niedozwolony. Wersja dokumentacji dołączona przeze mnie na nośniku elektronicznym jest w pełni zgodna z wydrukiem przedstawionym do recenzji. Zaświadczam także, że niniejsza inżynierska praca dyplomowa nie była wcześniej podstawą żadnej innej urzędowej procedury związanej z nadawaniem dyplomów wyższej uczelni lub tytułów zawodowych.... podpis dyplomanta 1
Kraków, dn. 14 stycznia 2015 Imię i nazwisko: Jakub Antoniuk Adres korespondencyjny: ul. Szarotki 36, 31-347 Kraków Temat pracy dyplomowej inżynierskiej: Aplikacja do wydobywania mowy z nagrania słabej jakości Rok ukończenia: 2015 Nr albumu: 249229 Kierunek Studiów: Inżynieria Akustyczna Profil dyplomowania: OŚWIADCZENIE Niniejszym oświadczam, że zachowując moje prawa autorskie, udzielam Akademii Górniczo-Hutniczej im. S. Staszica w Krakowie nieograniczonej w czasie nieodpłatnej licencji niewyłącznej do korzystania z przedstawionej dokumentacji inżynierskiej pracy dy-plomowej, w zakresie publicznego udostępniania i rozpowszechniania w wersji drukowanej i elektronicznej 1. Publikacja ta może nastąpić po ewentualnym zgłoszeniu do ochrony prawnej wynalazków, wzorów użytkowych, wzorów przemysłowych będących wynikiem pracy inżynierskiej 2. Kraków 14 stycznia 2015... data podpis dyplomanta 1 Na podstawie Ustawy z dnia 27 lipca 2005 r. Prawo o szkolnictwie wyższym (Dz.U. 2005 nr 164 poz. 1365) Art. 239. oraz Ustawy z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (Dz.U. z 2000 r. Nr 80, poz. 904, z późn. zm.) Art. 15a. "Uczelni w rozumieniu przepisów o szkolnictwie wyższym przysługuje pierwszeństwo w opublikowaniu pracy dyplomowej studenta. Jeżeli uczelnia nie opublikowała pracy dy-plomowej w ciągu 6 miesięcy od jej obrony, student, który ją przygotował, może ją opublikować, chyba że praca dyplomowa jest częścią utworu zbiorowego." 2 Ustawa z dnia 30 czerwca 2000r. Prawo własności przemysłowej (Dz.U. z 2003r. Nr 119, poz. 1117 z późniejszymi zmianami) a także rozporządzenie Prezesa Rady Ministrów z dnia 17 września 2001r. w sprawie dokonywania i rozpatrywania zgłoszeń wynalazków i wzorów użytkowych (Dz.U. nr 102 poz. 1119 oraz z 2005r. Nr 109, poz. 910). 2
AKADEMIA GÓRNICZO-HUTNICZA WYDZIAŁ INŻYNIERII MECHANICZNEJ I ROBOTYKI Kraków, dnia 14 stycznia 2015 TEMATYKA PRACY DYPLOMOWEJ INŻYNIERSKIEJ dla studenta IV roku studiów stacjonarnych... imię i nazwisko studenta TEMAT PRACY DYPLOMOWEJ INŻYNIERSKIEJ: Aplikacja do wydobywania mowy z nagrania słabej jakości Promotor pracy: Recenzent pracy: dr inż. Bartosz Ziółko... Podpis dziekana PLAN PRACY DYPLOMOWEJ Omówienie tematu pracy i sposobu realizacji z promotorem. Zebranie i opracowanie literatury dotyczącej tematu pracy. Zebranie i opracowanie wyników badań. Analiza wyników badań, ich omówienie i zatwierdzenie przez promotora. Opracowanie redakcyjne. Kraków 14 stycznia 2015... data podpis dyplomanta TERMIN ODDANIA DO DZIEKANATU:... 2015r... podpis promotora 3
Kraków, 14 stycznia 2015 Akademia Górniczo-Hutnicza im. Stanisława Staszica Wydział Inżynierii Mechanicznej i Robotyki Kierunek: Inżynieria Akustyczna Profil dyplomowania: Jakub Antoniuk Praca dyplomowa inżynierska Aplikacja do wydobywania mowy z nagrania słabej jakości Opiekun: dr inż. Bartosz Ziółko STRESZCZENIE Celem tej pracy inżynierskiej była implementacja metod do wydobywania mowy z nagrania słabej jakości w środowisku MATLAB. Wybrano metodę odejmowania widmowego oraz wybielania. W poniższej pracy zarówno metody, jak i ich implementacja w użytym środowisku programistycznym zostały dokładnie opisane. Opisano również wpływ doboru parametrów użytych funkcji na wynik działania programu. Końcowa aplikacja korzysta z obu metod, wykorzystując je z różnymi parametrami. Wyniki działania programu zostały przedstawione na dwóch rodzajach nagrań: sztucznie zaszumionych nagrań mowy, oraz rzeczywistych nagrań mowy z głośnym otoczeniu. 4
Kraków, 14 stycznia 2015 AGH University of Science and Technology Faculty of Mechanical Engineering and Robotics Field of Study: Acoustic Engineering Specialisations: Jakub Antoniuk Engineer Diploma Thesis Application for the extraction of speech recordings of poor quality Supervisor: Ph. D. Bartosz Ziółko SUMMARY The aim of this project was the implementation of speech enhancement methonds to the MATLAB computing enviroment. Two methods had been chosen: spectral subtraction and noise whithening. In this paper both methods, and their implementation are thoroughly described. Another described issues are effects of selected parameters of used function on the ooutput of the program. The final application uses both methods, with different parameters. The results of the program were presented on two types of records: artificially noised speech, and actual recordings of speech with heavy background noise. 5
Spis treści 1 Wstęp 7 1.1 Wprowadzenie............................... 7 1.2 Środowisko MATLAB........................... 8 2 Cel i zakres pracy 9 3 Metoda Odejmowania Widmowego 10 3.1 Działanie funkcji do metody odejmowania widmowego.......... 12 4 Metoda Wybielania 15 4.1 Działanie funkcji do metody wybielania.................. 16 5 Wykorzystanie obu metod 20 5.1 Działanie aplikacji............................. 21 5.2 Wyniki na próbkach sztucznie zaszumionych............... 22 5.3 Wyniki na próbkach rzeczywistych..................... 28 6 Podsumowanie 33 6
1. WSTEP 1.1. Wprowadzenie Poprawa jakości nagrań jest priorytetem w wielu dziedzinach techniki. Programy komputerowe poprawiające zrozumiałość mowy nagrania są używane w kryminalistyce, a także w systemach rozpoznawania mowy. W ramach pierwszej z tych dziedzin programy komputerowe mają za zadanie wydobyć mowę z nagrania, w którym jest ona całkowicie niezrozumiała. Natomiast w przypadku systemów do rozpoznawania mowy celem programu jest zwiększenie zrozumiałości mowy, aby polepszyć skuteczność całego systemu. Tak szerokie zastosowanie aplikacji do wydobywania mowy skłoniło autora do samodzielnej implementacji podstawowych metod odszumiania nagrań w środowisku programistycznym MATLAB. Najprostsze metody zwiększania zrozumiałości mowy bazują na filtracji całego sygnału filtrem pasmowo przepustowym o charakterystyce amplitudowej zbliżonej do charakterystyki amplitudowej mowy ludzkiej. Bardziej zaawansowaną modyfikacją tej metody jest użycie filtrów adaptacyjnych, których charakterystyka zmienia się w zależności od przetwarzanego sygnału. Pierwsza z użytych metod - odejmowanie widmowe - jest szeroko opisywana w wielu artykułach związanych z odszumianiem nagrań, w tej pracy oparto się na opisie odejmowania widmowego z artykułu Nathalie Virag [2]. Druga metoda - wybielanie - została opisana na stronie internetowej http://www.denoise.net/ [6]. Bazując na powyższych opisach stworzono samodzielny program do odszumiania nagrań. Na potrzeby pracy stworzono funkcje wykorzystujące dwie metody odszumiania nagrań - odejmowania widmowego i wybielania. Działanie obu tych metod polega na oszacowaniu zakłóceń w nagraniu na podstawie konkretnego fragmentu, w którym nie występuje mowa. Dla maksymalnej efektywności programu niezbędna jest niezmienność widma szumu na przestrzeni całego nagrania. W rzeczywistości bardzo rzadko ten warunek może być spełniony. Do testów wykorzystane zostaną nagrania mowy w wygłuszonym środowisku, do których został dodany syntetyczny szum różowy, a także specjalnie na potrzeby pracy, wykonane zostaną nagrania w głośnym otoczeniu. W badaniach określony zostanie wpływ poszczególnych metod i ich parametrów na efektywność aplikacji, a także skuteczność wykorzystania obu metod jednocześnie. 7
1.2. Środowisko MATLAB Środowisko MATLAB to uniwersalne narzędzie inżynierskie pozwalające na szybkie i proste przetwarzanie sygnałów akustycznych [8]. W programie dostępny jest szeroki wachlarz wbudowanych funkcji, a także możliwość korzystania z bezpłatnie dostępnych pakietów funkcji dodatkowych. Do każdej funkcji dołączona jest pomoc w formie instrukcji, co znacznie ułatwia pracę w tym środowisku. Biorąc pod uwagę powyższe zalety zdecydowano się na skorzystanie ze środowiska MATLAB w ramach pisania programu, będącego przedmiotem pracy. Na potrzeby aplikacji skorzystano z wbudowanych funkcji służących do odczytu pliku, a także szybkiej transformacji Fouriera, splotu, projektowania filtrów i rysowania wykresów. 8
2. CEL I ZAKRES PRACY Celem pracy było stworzenie aplikacji do odszumiania nagrań, tak aby poprawić zrozumiałość mowy. Program napisano korzystając z pakietu MATLAB R2013a i wielu jego wbudowanych funkcji. Zakres pracy obejmował następujące zagadnienia: Przegląd dostępnych artykułów naukowych z zakresu oczyszczania mowy. Wybór dwóch metod oczyszczania nagrań. Stworzenie aplikacji. Testowanie aplikacji: - na nagraniach sztucznie zaszumionych, - na nagraniach rzeczywistych. Próbki sztucznie zaszumione to nagrania mowy w cichym środowisku trzech mężczyzn i trzech kobiet, do których został dodany syntetyczny szum różowy (użyto funkcji znalezionej w bazie dostępnych rozszerzeń pakietu MATLAB [7]). Umożliwiło to porównanie nagrania czystego, bez zakłóceń i nagrania odszumionego przez aplikację. Szum różowy filtrowano, aby zbadać skuteczność aplikacji w zależności od pasm, w których występuje. Próbki rzeczywiste to nagrania mowy czterech mówców (dwóch mężczyzn i dwóch kobiet) nagrane mikrofonem w telefonie komórkowym, w naturalnie głośnym środowisku - przy ruchliwych drogach, w środkach komunikacji miejskiej, w pomieszczeniach przy głośno pracujących maszynach itd. 9
3. METODA ODEJMOWANIA WIDMOWEGO Ideowe działanie metody odejmowania przedstawiono na poniższym schemacie. Rysunek 3.1: Schemat metody odejmowania. Operacja odejmowania widmowego jest często używaną, najprostszą metodą odszumiania nagrania, która została opisana w artykule Nathalie Virag [2]. Opierając się na powyższym artykule do realizacji metody napisano funkcję w środowisku MATLAB. Operacja odejmowania widmowego jest najbardziej efektywna, gdy widmo szumu w trakcie nagrania nie zmienia się. W rzeczywistości to założenie bardzo rzadko jest spełnione. 10
Stworzona na potrzeby tej pracy funkcja szacuje widmo szumu na podstawie zadanego fragmentu nagrania, w którym nie występuje mowa - z założenia jest to tylko szum. Następnie funkcja dzieli sygnał na fragmenty o długości takiej samej, jak szerokość widma szumu i przeprowadza na nich szybką transformatę Fouriera. W dziedzinie częstotliwości następuje odejmowanie kwadratu widma szumu przemnożonego przez współczynnik alfa od kwadratu widma sygnału (wzór 3.1). gdzie: ˆ S 2 = Y ˆ 2 α D ˆ jeżeli Y ˆ 2 > α D ˆ 0 W pozostałych przypadkach Wzór 3.1: Odejmowanie widmowe. α - głębokość odejmowania i powinien być dobierany w zakresie od zera do jednego S - Sygnał po operacji odejmowania Y - Sygnał przed operacją odejmowania D - Szum Analizując wyniki operacji odejmowania na sztucznie zaszumionych próbkach można zauważyć, że na pojedynczych fragmentach metoda działa znakomicie, usuwając cały szum z nagrania, jednak w pozostałych miejscach zostaje on niezmieniony. Jest to widoczne przy porównaniu wykresów A i C z rysunku 3.2. Rysunek 3.2: Przebiegi czasowe nagrania głosu męskiego Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu operacji odejmowania. 11
3.1. Działanie funkcji do metody odejmowania widmowego Dla poprawnego uruchomienia funkcji niezbędne jest wprowadzenie czterech danych wejściowych: function [s] = subtraction(y,szp,szk,alfa) Sygnału - [y] Początku fragmentu sygnału, w którym występuje tylko szum, bez mowy - [szp] Końca tego fragmentu [szk] Współczynnika odejmowania α - [alfa] 1. Oszacowanie widma szumu: sz=szk-szp+1; win=1024; SZ=abs(fft(y(szp:szp+win-1))); for i=szp+win:win:szk SZ=SZ+abs(fft(y(i+1:i+win))); end SZ=SZ./(sz/win); SZ=SZ.ˆ2; W zmiennej [sz] program przechowuje długość fragmentu, w którym występuje wyłącznie szum. W zmiennej [win] program przechowuje rozmiar okna, jakim będzie się posługiwał, aby oszacować widmo szumu. Na potrzeby poprawnego działania programu długość fragmentu szumu ([sz]) musi być wielokrotnością rozmiaru okna ([win]). Program sumuje kolejne wartości bezwzględne widma szumu, a następnie dzieli je przez ilość powtórzeń. Wynikiem jest uśrednione widmo szumu ([SZ]) o rozmiarze [win]. W kolejnej linijce program podnosi każdą wartość widma szumu do kwadratu. 12
2. Podział sygnału: n=ceil(length(y)/win); y=[y; zeros((n*win)-length(y),1)]; W zmiennej [n] program przechowuje ilość fragmentów, które mieszczą się w całym sygnale. Na końcu sygnału dopisywane są zera, aby jego długość była wielokrotnością długości fragmentu ([win]). 3. Szybka transformata Fouriera: for k=1:n Yc=fft(y((((k-1)*win)+1):(k*win))); Y=(abs(Yc)).ˆ 2; W zmiennej [Yc] program zapisuje widmo fragmentu sygnału, a w zmiennej [Y] kwadrat widma. 4. Odejmowanie: S=[]; for j=1:win a=y(j)-alfa*sz(j); if (a<0) a=0; end S=[S;sqrt(a)]; end Z=exp(1i.*angle(Yc)); Z=(S.*Z); Program oblicza różnicę między kolejnymi wartościami kwadratu widma sygnału, a odpowiadającymi im wartościami kwadratu widma szumu i zapisuje ją do zmiennej [a]. Jeżeli wartość zmiennej [a] jest mniejsza od zera, jest ona zmieniana na zero. Następnie program składa do wektora [S] kolejne wartości pierwiastka ze zmiennej [a]. Wektor [S] jest częścią rzeczywistą widma fragmentu sygnału po operacji odejmowania. Do wektora [Z] zapisano fazę sygnału przed odejmowaniem i przemnożono przez amplitudę widma, czego wynikiem jest pełne widmo sygnału po odejmowaniu. 13
5. Złożenie sygnału: s=[s;ifft(z,win)]; end s=real(s); end Program składa do wektora [s] odwrotne transformaty Fouriera fragmentów sygnału. Po wykonaniu całej pętli w wektorze [s] znajduje się kompletny sygnał po operacji odejmowania widmowego. Funkcja zwraca wartości rzeczywiste z otrzymanego sygnału, ponieważ po przekształceniach sygnał zawiera pomijalnie małą część urojoną. Jest to spowodowane skończoną dokładnością wykonywanych operacji. 14
4. METODA WYBIELANIA Ideowe działanie metody wybielania przedstawiono na poniższym schemacie. Rysunek 4.1: Schemat metody wybielania. Operacja wybielania została opisana w artykule dostępnym na stronie internetowej [6] i korzystając z tego opisu napisano funkcję w środowisku MATLAB. Ta metoda również działa najlepiej, gdy widmo szumu w trakcie nagrania nie zmienia się. Na początku funkcja szacuje widmo szumu na podstawie fragmentu nagrania, w którym nie występuje mowa. Następnie widmo szumu jest wygładzane, aby pozbyć się niewielkich zafalowań, a zostawić w pewien sposób uśrednione widmo szumu. Po obróceniu tego widma otrzymujemy wektor, który przyjmuje wartości najbliższe zeru dla częstotliwości, w których szum był najsilniejszy. Potem program projektuje filtr na podstawie tego wektora, i przeprowadza splot całego nagrania z odpowiedzią impulsową filtru. 15
Analizując działanie operacji wybielania na sztucznie zaszumionych nagraniach zauważono, że metoda ta nie usuwa całkowicie szumów z nagrania, lecz znacznie obniża ich poziom. Można to zauważyć porównując wykresy A i C z rysunku 4.2. Rysunek 4.2: Przebiegi czasowe nagrania głosu męskiego Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu operacji wybielania. 4.1. Działanie funkcji do metody wybielania Dla poprawnego uruchomienia funkcji niezbędne jest wprowadzenie trzech danych wejściowych: function [s] = wybielanie(y,szp,szk) Sygnału - [y] Początku fragmentu sygnału, w którym występuje tylko szum, bez mowy - [szp] Końca tego fragmentu [szk] 16
1. Oszacowanie widma szumu: sz=szk-szp+1; win=1024; SZ=abs(fft(y(szp:szp+win-1))); for i=szp+win:win:szk SZ=SZ+abs(fft(y(i+1:i+win))); end SZ=SZ./(sz/win); W zmiennej [sz] program przechowuje długość fragmentu, w którym występuje wyłącznie szum. W zmiennej [sz] program przechowuje rozmiar okna, jakim będzie się posługiwał, aby oszacować widmo szumu. Na potrzeby poprawnego działania programu długość fragmentu szumu ([sz]) musi być wielokrotnością rozmiaru okna ([win]). Program sumuje kolejne wartości bezwzględne widma szumu, a następnie dzieli je przez ilość powtórzeń. Wynikiem jest uśrednione widmo szumu ([SZ]) o rozmiarze [win]. 2. Wygładzenie: SZ=smooth(SZ,win/32); Do wygładzenia widma szumu użyto funkcji smooth. Funkcja wygładza dane przechowywane w wektorze [SZ], biorąc pod uwagę kolejno [win]/32 próbek. 3. Odwrócenie: a=max(sz); SZ=(SZ.*(-1))+a; SZ=SZ./max(SZ); Odwrócenie widma następuje przez przemnożenie wszystkich wartości z widma przez -1, a następnie dodanie do każdej wartości zmiennej [a], w której zapisano wartość maksymalną widma przed odwróceniem. Podzielenie każdej wartości z wektora [SZ] przez wartość maksymalną powoduje znormalizowanie wektora [SZ] do 1. Po takiej operacji wartości maksymalne wektora [SZ] zostały zmienione na zero, a minimalne na 1 (rysunek 4.3 i 4.4). Zastosowanie takiego odwrócenia do widma szumu daje wektor liczb od 0 do 1. W wektorze tym wartości minimalne to pasma częstotliwości, w których szum był najmocniejszy, a wartości maksymalne to pasma, gdzie szum nie występował. Za pomocą takiego wektora można w prosty sposób zaprojektować filtr. 17
Rysunek 4.3: Widmo szumu. Rysunek 4.4: Odwrócone, wygładzone i znormalizowane widmo szumu. 4. Zaprojektowanie filtru: Z=fir2(win/2,linspace(0,1,win/2),SZ(1:win/2)); Do zaprojektowania filtru użyto funkcji [fir2]. Tworzy ona filtr zadanego rzędu (w powyższym przykładzie [win]/2+1) tak, aby jego charakterystyka amplitudowa odpowiadała wartościom z wektora [SZ] (odwróconemu i znormalizowanemu widmu szumu - rysunek 4.4). 18
5. Filtracja: s=conv(y,z); s=real(s); Filtracja odbywa się przez splot całego sygnału z odpowiedzią impulsową zaprojektowanego wcześniej filtru. Funkcja zwraca wartości rzeczywiste z otrzymanego sygnału, ponieważ po przekształceniach sygnał zawiera pomijalnie małą część urojoną. Jest to spowodowane skończoną dokładnością wykonywanych operacji. 19
5. WYKORZYSTANIE OBU METOD Ideowe działanie aplikacji przedstawiono na poniższym schemacie. Rysunek 5.1: Schemat działania aplikacji. Po wczytaniu nagrania do programu wartości sygnału są normalizowane do 1, a następnie trzykrotnie przeprowadzana jest operacja wybielania. Jest to skuteczniejsze niż jednokrotne wybielanie, ponieważ po każdej operacji wybielania oszacowane widmo szumu zmienia się. Na końcu przeprowadzana jest operacja odejmowania widmowego. Podczas wykonywania testów taka kolejność użytych metod została uznana za najbardziej efektywną. 20
5.1. Działanie aplikacji 1. Odczyt: [File,Path]=uigetfile( *.wav ); fnames=[path,file]; [y,fs]=audioread(fnames); Po uruchomieniu programu należy wybrać w oknie dialogowym plik, który będzie odszumiany. Odczyt pliku odbywa się za pomocą funkcji audioread, który obsługuje większość formatów plików dźwiękowych. Sygnał zostaje zapisany do zmiennej [y], a częstotliwość próbkowania do zmiennej [fs]. 2. Normalizacja: y=y./max(abs(y)); Po odczytaniu nagrania wartości sygnału są normalizowane do 1, poprzez podzielenie każdej wartości przez maksimum z wartości bezwzględnej sygnału. 3. Wybielanie: y2=wybielanie(y,1,8192); y2=wybielanie(y2,1,8192); y2=wybielanie(y2,1,8192); Program trzykrotnie wykonuje operację wybielania, za pierwszym razem przetwarzając pierwotny sygnał, a następnie sygnał będący wynikiem poprzednich działań. W tym przypadku program za każdym razem wykonuje operację wybielania, szacując widmo szumu na podstawie pierwszych 8192 próbek danego sygnału. 4. Odejmowanie: y2=subtraction(y2,1,8192,0.9)); Program wykonuje operacje odejmowania widmowego na podstawie sygnału będącego wynikiem poprzednich operacji i zapisuje wynik również do wektora [y2]. W tym przypadku program szacuje widmo szumu na podstawie pierwszych 8192 próbek, a wartość współczynnika odejmowania widmowego α została ustalona na 0.9. Gdy wartość współczynnika α była mniejsza, zmiany wprowadzane przez operację odejmowania były niezauważalne, natomiast zwiększenie go powyżej 1 powodowało bardzo nienaturalne brzmienie głosu na nagraniu wynikowym. 21
5.2. Wyniki na próbkach sztucznie zaszumionych Pierwszą część wyników stanowią nagrania sztucznie zaszumione. Syntetyczny szum jest najpierw przefiltrowany filtrem pasmowo-przepustowym, a następnie dodany do nagrania o bardzo dobrej zrozumiałości mowy. Tak zaszumiona próbka (Wykresy B na poniższych rysunkach) jest poddana działaniu aplikacji. Umożliwia to porównanie nagrania czystego (Wykresy A na poniższych rysunkach) i nagrania wynikowego (Wykresy C). Niezaprzeczalnie mowa na nagraniu wynikowym nie jest tak wyraźna jak na nagraniu przed zaszumieniem. Pozostaje ona jednak zrozumiała, a w większości przypadków jest bardziej zrozumiała niż na nagraniu zaszumionym. 22
Rysunek 5.2: Przebiegi czasowe nagrania głosu męskiego Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu aplikacji. Rysunek 5.3: Krótko-czasowe transformaty Fouriera nagrania głosu męskiego. Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu aplikacji. 23
Rysunek 5.4: Przebiegi czasowe nagrania głosu męskiego Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu aplikacji. Rysunek 5.5: Krótko-czasowe transformaty Fouriera nagrania głosu męskiego. Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu aplikacji. 24
Rysunek 5.6: Przebiegi czasowe nagrania głosu żeńskiego Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu aplikacji. Rysunek 5.7: Krótko-czasowe transformaty Fouriera nagrania głosu żeńskiego. Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu aplikacji. 25
Rysunek 5.8: Przebiegi czasowe nagrania głosu żeńskiego Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu aplikacji. Rysunek 5.9: Krótko-czasowe transformaty Fouriera nagrania głosu żeńskiego. Wykres A - nagranie przed zaszumieniem. Wykres B - nagranie po zaszumieniu. Wykres C - nagranie po działaniu aplikacji. 26
Działanie aplikacji na sztucznie zaszumionych próbkach powoduje znaczną poprawę zrozumiałości mowy. Jest to spowodowane niezmiennym widmem szumu na przestrzeni całego nagrania. Estymacja szumu nawet na bardzo krótkim fragmencie nagrania jest wystarczająca do poprawnego odtworzenia mowy. Można to zaobserwować porównując wykresy A i C z rysunków 5.2, 5.4, 5.6 i 5.8. Analizując krótkoczasowe transformaty Fouriera tych nagrań, można zauważyć, że szum zostaje usunięty niezależnie od tego w jakim paśmie się znajduje. Jednak gdy zakres częstotliwości mowy pokrywa się z częstotliwością szumu, następuje mocne zniekształcenie i utrata informacji z tych pasm. Dodatkowo można zauważyć, że po działaniu aplikacji powstaje niewielki szum na wysokich częstotliwościach, gdzie pierwotnie nie występowała ani mowa ani szum. Można to zaobserwować porównując wykresy A i C z rysunku 5.5. 27
5.3. Wyniki na próbkach rzeczywistych Drugą część wyników stanowią nagrania rzeczywiste. Na potrzeby pracy inżynierskiej nagrano krótkie zdania czterech mówców w głośnym otoczeniu. Wyniki odszumiania nie są tak dobre, jak w przypadku działania na próbkach z syntetycznym szumem. Nawet w trakcie krótkich nagrań (trwających poniżej 10 sekund), widmo szumu zmienia się. Przy tak zróżnicowanym szumie efektywność zaimplementowanych metod znacznie spada. Mowa na nagraniu po działaniu aplikacji jest bardziej zrozumiała niż przed, jednak jest mocno nienaturalna. Na nagraniach wynikowych powstają widoczne na rysunku 5.12 trzaski, (pojedyncze skoki amplitudy) oraz opisany wcześniej szum na wysokich częstotliwościach widoczny na rysunku 5.11. 28
Rysunek 5.10: Przebiegi czasowe nagrania głosu żeńskiego. Wykres A - nagranie pierwotne. Wykres B - nagranie po działaniu aplikacji. Rysunek 5.11: Krótko-czasowe transformaty Fouriera nagrania głosu żeńskiego. Wykres A - nagranie pierwotne. Wykres B - nagranie po działaniu aplikacji. 29
Rysunek 5.12: Przebiegi czasowe nagrania głosu męskiego. Wykres A - nagranie pierwotne. Wykres B - nagranie po działaniu aplikacji. Rysunek 5.13: Krótko-czasowe transformaty Fouriera nagrania głosu męskiego. Wykres A - nagranie pierwotne. Wykres B - nagranie po działaniu aplikacji. Na powyższym nagraniu zastosowano pewną modyfikację działania aplikacji. Metoda wybielania została użyta pięciokrotnie, trzy razy bazując na szumie z początku nagrania i dwa razy bazując na szumie z jego końca. Zaowocowało to znaczną poprawą skuteczności działania aplikacji. 30
Rysunek 5.14: Przebiegi czasowe nagrania głosu męskiego. Wykres A - nagranie pierwotne. Wykres B - nagranie po działaniu aplikacji. Rysunek 5.15: Krótko-czasowe transformaty Fouriera nagrania głosu męskiego. Wykres A - nagranie pierwotne. Wykres B - nagranie po działaniu aplikacji. 31
Rysunek 5.16: Przebiegi czasowe nagrania głosu żeńskiego. Wykres A - nagranie pierwotne. Wykres B - nagranie po działaniu aplikacji. Rysunek 5.17: Krótko-czasowe transformaty Fouriera nagrania głosu żeńskiego. Wykres A - nagranie pierwotne. Wykres B - nagranie po działaniu aplikacji 32
6. PODSUMOWANIE Celem powyższej pracy inżynierskiej było stworzenie aplikacji do wydobywania mowy z nagrania słabej jakości. Aby to osiągnąć wykorzystano środowisko MATLAB i zaimplementowano w nim dwie metody odszumiania nagrań - odejmowania widmowego i wybielania. Są to często opisywane i proste operacje służące do wydobywania mowy z nagrań. Aplikację testowano na próbkach sztucznie zaszumionych, oraz specjalnie przeprowadzonych nagraniach w głośnym otoczeniu. W czasie testów zauważono, że skuteczność działania znacznie wzrasta gdy szum jest estymowany na podstawie różnych fragmentów nagrania. Rzeczywiste użycie aplikacji powinno zakładać wielokrotne wykorzystanie operacji wybielania, za każdym razem na podstawie innego fragmentu nagrania. Wymaga to użycia aplikacji do wykrywania fragmentów nagrania z mową, lub wyodrębniania ich ręcznie. Aby zmaksymalizować efektywność aplikacji powinno się korzystać wielokrotnie z obu metod. W celu wyeliminowania szumu na wysokich częstotliwościach można zastosować filtr pasmowo przepustowy o charakterystyce amplitudowej dopasowanej bezpośrednio do mówcy. Po ingerencji w widmo czasowo-częstotliwościowe nagrania, sygnał ten staje się mocno nienaturalny. Jednakże dobierając odpowiednie parametry, wyniki działania aplikacji są zadowalające. Zastosowanie aplikacji zwiększa zrozumiałość mowy na nagraniu. 33
Bibliografia [1] Michałek M.: Wybrane metody redukcji zakłóceń utrwalonych w dowodowych nagraniach dźwiękowych Problemy Kryminalistyki 281 (3) 2013 28-35 [2] Virag N.: Single Channel Speech Enhancement Based on Masking Properties of the Human Auditory System IEEE TRANSACTIONS ON SPEECH AND AUDIO PROCESSING Vol. 7, Nr 2, Marzec 1999 [3] Hu Y., Loizou P.C.: Evaluation of Objective Quality Measures for Speech Enhancement IEEE TRANSACTIONS ON AUDIO, SPEECH AND LANGUAGE PROCESSING Vol. 16, Nr 1, Styczeń 2008 [4] Czyżewski A., Dziubiński M., Kotus J., Pawlik A., Rypulak A., Szwoch G., Multitask noise enhancement system, 26th International Conference: Audio Forensics in the Digital Age, no. 4-1, 2005 [5] Onega-Garcia J., Gonzalez-Rodriguez J. OVERVIEW OF SPEECH ENHANCEMENT TECHNIQUES FOR AUTOMATIC SPEAKER RECOGNITION [6] Noise Whitening Dostępny: http://sound.eti.pg.gda.pl/denoise/whiten.html (odwiedzona 12.12.2014) [7] File Exchange - MATLAB Central Dostępny: http://www.mathworks.com/matlabcentral/fileexchange/42919-pink red blue-and-violet-noise-generation-with-matlab-implementation/content/pinknoise.m (odwiedzona 12.12.2014) [8] MATLAB Key Features Dostępny:http://www.mathworks.com/products/matlab/features.html (odwiedzona 12.12.2014) 34