Zadanie 3: Wokoder kanałowy
Transkrypt
Zadanie 3: Wokoder kanałowy
Informatyka, studia dzienne, mgr II st. semestr I Przetwarzanie obrazu i dźwięku 2011/2012 Prowadzący: dr inż. Bartłomiej Stasiak czwartek, 8:30 Data oddania: Ocena: Grzegorz Graczyk 178717 Andrzej Stasiak 178736 Zadanie 3: Wokoder kanałowy∗ Cel Celem zadania było napisanie wokodera i jego użycie do rekonstrukcji sygnału mowy typu cross-synthesis na bazie innego sygnału o szerokim widmie. Wykorzystany wariant to V1 - wokoder kanałowy. Wstęp teoretyczny Zasada działania wokodera kanałowego opiera się o bank filtrów pasmowoprzepustowych. Zarówno wejściowy sygnał mowy, jak i wejściowy sygnał bazowy są równolegle filtrowe przez każdy z filtrów, każda para jest przetwarzana niezależnie, a następnie wyniki działania na wszystkich pasmach są sumowane w celu utworzenia wyjściowego sygnału. Przetworzenie kanału polega na wyznaczeniu obwiedniej sygnału mowy (w dziedzinie czasu), a następnie pomnożenie jej przez sygnał bazowy. Ważne jest aby sygnał bazowy miał możliwie płaskie widmo, aby obwiednia sygnału wyjściowego była możliwe zbliżona do obwiedniej sygnału wejściowego, bez zniekształceń. ∗ SVN: zadanie4 https://serce.ics.p.lodz.pl/svn/labs/poid/bs_czw0830/idgrupy/ 1 Implementacja Implementacja została dokonana w języku Python. Wykorzystana została biblioteka do obliczeń numerycznych numpy w celu szybkiego wykonania transformacji Fouriera, których trzeba wykonać dużą liczbę (przynajmniej jedna dla każdego filtra). Oprócz tego wykorzystana została biblioteka wavelib do pracy z plikami typu wav. Program przyjmuje dwa parametry na swoim wejściu: nazwę pliku zawierającego dźwięk bazowy i nazwę pliku z dźwiękiem mowy. Po ich otwarciu program przystępuje do analizy dla każdego kanału (filtry utworzone są wcześniej jako lista obiektów, co umożliwia ich łatwą konfigurację). Analiza polega na: przefiltrowaniu pasmowym obu sygnałów (poprzez transformację Fouriera i wycięcie odpowiedniego fragmentu widma), wyznaczenie obwiedniej sygnału mowy i pomnożenie jej przez sygnał bazowy. W celu optymalizacji pierwszą transformację Fouriera wykonujemy tylko raz, ponieważ jej wejściem jest zawsze oryginalny sygnał wejściowy. Wyznaczanie obwiedniej odbywa się w czasie liniowym - polega na dwukrotnym przejściu przez cały dźwięk (raz do przodu, raz w tył). Jeśli bieżąca wartość dźwięku jest wyższa od wartości obwiedniej, to obwiednia jest podbijana, w przeciwnym wypadku obwiednia jest stopniowo obniżana - dzięki temu zmiana obwiedniej jest zawsze lokalnie niewielka. Odpowiednia prędkość spadku obwiedniej jest wyznaczona jako ułamek maksimum całego sygnału - dzięki temu ta metoda dobrze się sprawdza dla wszystkich kanałów (różnych częstotliwości). Wyniki Sygnał bazowy do utworzenia nowego dźwięku powinien mieć możliwie szerokie widmo, dlatego do tego celu użyliśmy szumu białego, czyli dźwięku o płaskim widmie w całym zakresie próbkowania. Dla kilku przetestowanych dźwięków udało się uzyskać na wyjściu zrozumiałą mowę, przy czym zauważono zależność między subiektywną zrozumiałością dźwięku, a liczbą kanałów im więcej kanałów, tym lepsza jakość sygnału wejściowego. Jest to zrozumiałe, gdyż wraz ze wzrostem liczby kanałów polepsza się jakoś odwzorowania obwiedniej widma sygnału. Równocześnie wzrost liczby kanałów powoduje wzrost czasu działania aplikacji. Poniższa tabela przedstawia tę zależność. Widać, że zależność ta jest liniowa, co jest zrozumiałe, bo dla każdego kanału trzeba wykonać wymagającą obliczeniowo transformację Fouriera. Liczba kanałów Czas działania 8 6.2 s 20 15.4 s 49 32.4 s 100 67.1 2 Fragment dźwięku bazowego (biały szum) Fragment dźwięku mowy z obwiednią Obwiednia dźwięku mowy i sygnał wyjściowy 3 Wnioski • Wokoder kanałowy jest prostą metodą przetwarzania dźwięku, jego zaletą jest to, że nie powoduje powstania nieciągłości na granicach okien. • Jakość generowanego dźwięku poprawia się wraz z liczbą kanałów, równocześnie zwiększa się też czas obliczeń. • Niższe częstotliwości powinny być analizowane z mniejszą szerokością kanału, by efekt był zadowalający, dlatego w ostatecznej wersji programu wykorzystano bank kanałów, w którym niższe częstotliwości są analizowane mniejszymi oknami. 4