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

Podobne dokumenty