ROZPRAWA DOKTORSKA POLITECHNIKA WARSZAWSKA. Wydział Elektroniki i Technik Informacyjnych. mgr inż. Grzegorz Brzuchalski

Podobne dokumenty
Pomiary w technice studyjnej. TESTY PESQ i PEAQ

Kompresja dźwięku w standardzie MPEG-1

Kodowanie podpasmowe. Plan 1. Zasada 2. Filtry cyfrowe 3. Podstawowy algorytm 4. Zastosowania

Badanie jakości sygnałów audio

Spis treści. Format WAVE Format MP3 Format ACC i inne Konwersja między formatami

Automatyczne rozpoznawanie mowy - wybrane zagadnienia / Ryszard Makowski. Wrocław, Spis treści

Spis treści. Format WAVE Format MP3 Format ACC i inne Konwersja między formatami

Podstawy Przetwarzania Sygnałów

Kwantowanie sygnałów analogowych na przykładzie sygnału mowy

Technika audio część 2

Przedmowa 11 Ważniejsze oznaczenia 14 Spis skrótów i akronimów 15 Wstęp 21 W.1. Obraz naturalny i cyfrowe przetwarzanie obrazów 21 W.2.

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Sposoby opisu i modelowania zakłóceń kanałowych

METODY OCENY JAKOŚCI DŹWIĘKU

Transformata Fouriera

Komputerowe modelowanie ludzkiego słuchu w kompresji dźwięku

2. Próbkowanie Sygnały okresowe (16). Trygonometryczny szereg Fouriera (17). Częstotliwość Nyquista (20).

Algorytmy detekcji częstotliwości podstawowej

Program wykładu. informatyka + 2

Przedmowa Wykaz oznaczeń Wykaz skrótów 1. Sygnały i ich parametry Pojęcia podstawowe Klasyfikacja sygnałów

Wykład VI. Dźwięk cyfrowy. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wybrane metody kompresji obrazów

ZAKŁAD SYSTEMÓW ELEKTRONICZNYCH I TELEKOMUNIKACYJNYCH Laboratorium Podstaw Telekomunikacji WPŁYW SZUMÓW NA TRANSMISJĘ CYFROWĄ

dr inż. Piotr Odya Parametry dźwięku zakres słyszanych przez człowieka częstotliwości: 20 Hz - 20 khz; 10 oktaw zakres dynamiki słuchu: 130 db

Neurobiologia na lekcjach informatyki? Percepcja barw i dźwięków oraz metody ich przetwarzania Dr Grzegorz Osiński Zakład Dydaktyki Fizyki IF UMK

Kompresja sekwencji obrazów - algorytm MPEG-2

Przygotowała: prof. Bożena Kostek

Ćwiczenie 4. Filtry o skończonej odpowiedzi impulsowej (SOI)

Zakres wymaganych wiadomości do testów z przedmiotu Metrologia. Wprowadzenie do obsługi multimetrów analogowych i cyfrowych

Wybrane algorytmu kompresji dźwięku

Zastosowanie kompresji w kryptografii Piotr Piotrowski

Percepcja dźwięku. Narząd słuchu

Ćwiczenie 3,4. Analiza widmowa sygnałów czasowych: sinus, trójkąt, prostokąt, szum biały i szum różowy

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Instrukcja do pracowni specjalistycznej

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 1, strona 1.

Kwantyzacja wektorowa. Kodowanie różnicowe.

Kompresja JPG obrazu sonarowego z uwzględnieniem założonego poziomu błędu

2. STRUKTURA RADIOFONICZNYCH SYGNAŁÓW CYFROWYCH

Cechy karty dzwiękowej

Dźwięk podstawowe wiadomości technik informatyk

LABORATORIUM PODSTAW TELEKOMUNIKACJI

8. Analiza widmowa metodą szybkiej transformaty Fouriera (FFT)

Sieci neuronowe - projekt

Zjawisko aliasingu. Filtr antyaliasingowy. Przecieki widma - okna czasowe.

Opracował: Dominik Tyniw, PG pod kier. Prof.. A. Czyżewskiego

DŹWIĘK. Dźwięk analogowy - fala sinusoidalna. Dźwięk cyfrowy 1-bitowy 2 możliwe stany fala jest mocno zniekształcona

Przykładowe zadanie praktyczne

Ćwiczenie 3. Właściwości przekształcenia Fouriera

Kompresja sekwencji obrazów

Aproksymacja funkcji a regresja symboliczna

Podstawy transmisji multimedialnych podstawy kodowania dźwięku i obrazu Autor Wojciech Gumiński

Spis treści. Przedmowa... XI. Rozdział 1. Pomiar: jednostki miar Rozdział 2. Pomiar: liczby i obliczenia liczbowe... 16

Data wykonania Część praktyczna

Przekształcenia sygnałów losowych w układach

Sprawdzian wiadomości z jednostki szkoleniowej M3.JM1.JS3 Użytkowanie kart dźwiękowych, głośników i mikrofonów

Zaawansowane algorytmy DSP

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

Przykładowe rozwiązanie zadania dla zawodu technik telekomunikacji

ĆWICZENIE nr 3. Badanie podstawowych parametrów metrologicznych przetworników analogowo-cyfrowych

Formaty - podziały. format pliku. format kompresji. format zapisu (nośnika) kontener dla danych WAV, AVI, BMP

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Widmo akustyczne radia DAB i FM, porównanie okien czasowych Leszek Gorzelnik

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2014/2015

Kompresja danych DKDA (7)

Instrukcja do laboratorium z Fizyki Budowli. Temat laboratorium: CZĘSTOTLIWOŚĆ

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

POMIARY WYBRANYCH PARAMETRÓW TORU FONICZNEGO W PROCESORACH AUDIO

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

IMPLEMENTATION OF THE SPECTRUM ANALYZER ON MICROCONTROLLER WITH ARM7 CORE IMPLEMENTACJA ANALIZATORA WIDMA NA MIKROKONTROLERZE Z RDZENIEM ARM7

FFT i dyskretny splot. Aplikacje w DSP

dr inż. Piotr Odya Wprowadzenie

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Nowoczesne metody emisji ucyfrowionego sygnału telewizyjnego

4 Zasoby językowe Korpusy obcojęzyczne Korpusy języka polskiego Słowniki Sposoby gromadzenia danych...

KOMPRESJA STRATNA SYGNAŁU MOWY. Metody kompresji stratnej sygnałów multimedialnych: Uproszczone modelowanie źródeł generacji sygnałów LPC, CELP

Ze względu na dużą rozpiętość mierzonych wartości ciśnienia (zakres ciśnień akustycznych obejmuje blisko siedem rzędów wartości: od 2x10 5 Pa do

Rozpoznawanie i synteza mowy w systemach multimedialnych. Analiza i synteza mowy - wprowadzenie. Spektrogram wyrażenia: computer speech

Przetworniki cyfrowo analogowe oraz analogowo - cyfrowe

Teoria przetwarzania A/C i C/A.

Wprowadzenie do cyfrowej obróbki dźwięku

Psychoakustyka. Dźwięk zapisany w formie nieskompresowanej na przykład na CD zawiera więcej informacji niż jest w stanie przetworzyć ludzki mózg.

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

PREZENTACJA MODULACJI AM W PROGRAMIE MATHCAD

METODY KODOWANIA SYGNAŁU MOWY DO ZASTOSOWAŃ W TELEKOMUNIKACJI

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

PRACA DYPLOMOWA STUDIA PIERWSZEGO STOPNIA. Łukasz Kutyła Numer albumu: 5199

Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L

KOMPRESJA STRATNA DŹWIĘKU

Przekształcenie Fouriera i splot

Ćwiczenie 11. Podstawy akwizycji i cyfrowego przetwarzania sygnałów. Program ćwiczenia:

Transformaty. Kodowanie transformujace

Badanie właściwości wysokorozdzielczych przetworników analogowo-cyfrowych w systemie programowalnym FPGA. Autor: Daniel Słowik

Mapa akustyczna Torunia

Wykład II. Reprezentacja danych w technice cyfrowej. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Formaty plików audio

PRZEWODNIK PO PRZEDMIOCIE

Ćwiczenie: "Mierniki cyfrowe"

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Transkrypt:

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych ROZPRAWA DOKTORSKA mgr inż. Grzegorz Brzuchalski Optymalizacja algorytmów kwantyzacji w kodowaniu dźwięku Promotor prof. dr hab. inż. Władysław Skarbek Warszawa 2015

Serdecznie dziękuję: Bogu, memu Panu i Zbawicielowi za życie i możliwość napisanie tej pracy Żonie Karolinie Dzieciom: Pawełkowi i Asi oraz Rodzicom za cierpliwość i wsparcie Profesorowi Władysławowi Skarbkowi za pomoc i wskazówki, którymi mnie wspomógł Grzegorzowi Pastuszakowi za inspirację, motywację i wszelką niezbędną pomoc kolegom z Zakładu Telewizji za wszelką pomoc jakiej udzielili Przyjaciołom za pomoc w odsłuchach Pracownikom Zakładu Elektroakustyki za możliwość przeprowadzenia testów odsłuchowych Fundacji Wspierania Rozwoju Radiokomunikacji i Technik Multimedialnych za przyznane stypendium doktoranckie, które przyspieszyło finalizację niniejszej rozprawy iii

Streszczenie W niniejszej rozprawie przeanalizowano szereg algorytmów modelu psychoakustycznego oraz algorytmów alokacji bitów w koderze audio. Wprowadzono modyfikacje niektórych algorytmów oraz zaproponowano algorytm równych współczynników kwantyzacji (ESF) nie wykorzystujący modelu psychoakustycznego. Porównano zaimplementowane algorytmy oraz wykazano, że ESF uzyskuje podobne wyniki do algorytmów korzystających z modelu psychoakustycznego. Zaproponowano także algorytm wyrównywania poziomów energii w pasmach częstotliwościowych w kilku odmianach. Dwa warianty modyfikacji współczynników kwantyzacji i modyfikacji offsetów pozwalają na polepszenie jakości kodowanych sekwencji. Słowa kluczowe: Zaawansowane Kodowanie Audio, AAC, kompresja dźwięku, MPEG, kwantyzacja, alokacja bitów, wyrównywanie poziomów energii Abstract In this dissertation several algorithms of the psychoacoustic model and the bit allocation in the audio encoder have been analyzed. Some modifications have been introduced into the algorithms and the equal-scale-factor (ESF) algorithm, which does not use psychoacoustic model, has been proposed. Implemented algorithms have been evaluated. The ESF algorithm achieves similar quality results to algorithms based on the psychoacoustic model. Also, energy balance algorithms has been proposed in a few variants. Two of them: balance energy based on the scale factor modification and based on the offset modification enable the audio quality improvement. Keywords: alocation, balance energy Advanced Audio Coding, AAC, audio compression, MPEG, quantization, bit v

Spis treści Spis rysunków....................................... Spis tablic.......................................... Wykaz skrótów....................................... xi xiv xvi 1 Wprowadzenie..................................... 1 1.1 Motywacja..................................... 2 1.2 Tezy........................................ 3 1.3 Zawartość rozprawy................................ 3 2 Miary jakości dźwięku................................. 5 2.1 Obiektywna miara jakości dźwięku........................ 5 2.1.1 Miary bazujące na stosunku szumu do progów słyszenia........ 7 2.1.2 Miary bazujące na szerokości pasma................... 14 2.1.3 Miara struktury harmonicznej błędu................... 15 2.1.4 Miary modulacji............................. 17 2.1.5 Miary głośności zniekształceń...................... 19 2.1.6 Miary prawdopodobieństwa wykrycia zniekształceń........... 22 2.2 Analiza parametrów PEAQ............................ 24 2.3 Sekwencje testowe................................ 26 2.4 Miary jakości i ich statystyki........................... 27 2.5 Interpolacja punktów............................... 29 3 Przeglad koderów dźwięku.............................. 33 3.1 Kodery grupy roboczej MPEG.......................... 33 3.1.1 MPEG-1.................................. 34 3.1.2 MPEG-2/4................................. 35 3.1.3 USAC................................... 46 3.2 Kodery Fundacji XIPH.org............................ 47 3.2.1 OGG Vorbis................................ 47 3.2.2 OPUS................................... 48 vii

3.3 Kodery Microsoft Corporation.......................... 50 4 Porównanie efektywności i możliwości koderów dźwięku............. 51 4.1 Testy koderów................................... 51 4.2 Testy kodera FAAC................................ 54 4.2.1 TNS kształtowanie szumu kwantyzacji................. 54 4.2.2 Kodowanie stereo MS.......................... 55 4.2.3 Zastosowanie różnych długości okna w FAAC.............. 58 4.2.4 Filtr dolnoprzepustowy.......................... 58 4.3 Testy kodera Nero................................. 59 4.3.1 Grupowanie krótkich okien........................ 59 4.3.2 Tryby kontroli przepływności bitowej.................. 59 4.4 Porównianie koderów FAAC i NERO...................... 61 4.4.1 Wykorzystanie kodera Nero....................... 61 4.4.2 Wykorzystanie kodera Nero testy.................... 62 4.4.3 Wybór długości i kształtu okna...................... 64 4.4.4 Wpływ wyboru długości okien na jakość kodowania.......... 66 5 Model psychoakustyczny............................... 69 5.1 Podstawy percepcji słyszenia........................... 69 5.1.1 Ucho zewnętrzne............................. 69 5.1.2 Ucho środkowe.............................. 69 5.1.3 Ucho wewnętrzne............................. 70 5.2 Ogólne zjawiska słuchu wykorzystywane w kodowaniu dźwięku........ 70 5.2.1 Progi słyszenia.............................. 70 5.2.2 Pasma Barkowe.............................. 70 5.2.3 Maskowanie częstotliwościowe...................... 71 5.2.4 Maskowanie czasowe........................... 72 5.3 Model psychoakustyczny I............................ 73 5.4 Model psychoakustyczny II............................ 73 5.4.1 Sczegółowy przebieg algorytmu wyznaczania progów w modelu psychoakustycznym II.......................... 75 5.4.2 Dodatkowe funkcje............................ 82 5.5 Zmodyfikowany model psychoakustyczny II................... 83 5.6 Model psychoakustyczny w koderze 3gpp.................... 86 5.7 Model psychoakustyczny bazujący na PEAQ................... 86 5.8 Moduły skalowania................................ 88 5.9 Porównanie modeli psychoakustycznych..................... 88 viii

6 Algorytmy alokacji bitów............................... 91 6.1 Algorytm podwójnej pętli przeszukiwania Two Loop Search.......... 91 6.1.1 Pętla zewnętrzna............................. 92 6.1.2 Pętla wewnętrzna............................. 93 6.1.3 Warunki stopu............................... 94 6.2 Zmodyfikowany algorytm TLS.......................... 94 6.3 Algorytm ze stałymi współczynnikami kwantyzacji............... 95 6.4 Algorytm optymalizacji na kracie z użyciem kosztu RD............. 96 6.4.1 Przebieg algorytmu dla miary ANMR.................. 97 6.4.2 Przebieg algorytmu dla miary MNMR.................. 99 6.4.3 Wyznaczenie optymalnej wartości parametru lambda.......... 99 6.4.4 Porównanie algorytmów......................... 100 6.4.5 Modyfikacje algorytmu.......................... 100 6.5 Algorytm BFOS i jego modyfikacje....................... 104 6.5.1 Algorytm BFOS.............................. 104 6.5.2 Algorytm Enhanced BFOS........................ 105 6.5.3 Algorytm AEBAS............................. 106 6.5.4 Algorytm bez użycia pętli........................ 107 6.6 Realizacja algorytmów alokacji bitów...................... 108 6.6.1 Badanie algorytmu TRDO........................ 108 6.6.2 Badanie algorytmu ESF.......................... 111 6.6.3 Porównanie właściwości algorytmów alokacji bitów.......... 112 6.7 Kodowanie entropijne............................... 113 6.7.1 Kodowanie współczynników częstotliwościowych............ 113 6.7.2 Kodowanie współczynników kwantyzacji Scale Factor......... 114 6.7.3 Kodowanie numerów książek kodowych................. 114 6.7.4 Porównanie technik optymalizacji kodowania Huffmana........ 116 7 Wyrównywanie poziomów energii.......................... 119 7.1 Metoda BESF................................... 120 7.2 Metoda BEOF................................... 120 7.2.1 Opis metody................................ 120 7.2.2 Włącznie metody BEOF do algorytmu TRDO.............. 122 7.3 Metoda BEOFC.................................. 122 7.3.1 Wariant pierwszy............................. 122 7.3.2 Wariant drugi............................... 123 7.3.3 Wariant trzeci............................... 123 7.3.4 Analiza kryteriów wyboru najlepszego wyniku............. 124 ix

7.4 Zerowanie wybranych pasm........................... 125 7.5 Testy algorytmów BESF oraz BEOF....................... 126 8 Porównanie koderów z wybranymi algorytmami alokacji bitów i równoważenia energii.......................................... 131 8.1 Przegląd literatury................................. 131 8.2 Obiektywne porównanie............................. 132 8.3 Subiektywne porównanie............................. 134 8.3.1 Testy odsłuchowe w warunkach domowych............... 134 8.3.2 Testy przeprowadzone w studio...................... 135 8.3.3 Wnioski.................................. 136 9 Podsumowanie..................................... 141 Dodatek A Parametry uruchamianych koderów................... 142 Dodatek B Parametry kodera FAAC......................... 144 Bibliografia......................................... 147 x

Spis rysunków 2.1 Diagram algorytmu wyznaczania NMR w PEAQ................ 10 2.2 Przykładowe okna Hanna dla długiego okna................... 10 2.3 Charakterystyka filtru ucha zewnętrznego i środkowego............. 11 2.4 Przebieg funkcji tłumienia szumu wewnętrznego w uchu............ 12 2.5 Funkcja rozproszenia............................... 12 2.6 Współczynniki gm................................ 13 2.7 Schemat obliczania miar szerokości pasm referencyjnego i testowego: BandwidthRefB i BandwidthTestB......................... 15 2.8 Schemat obliczania struktury harmonicznej błędu (EHS)............ 16 2.9 Podstawowy schemat obliczania miar modulacji: M Adiff1, M Adiff2, M W diff.. 17 2.10 Pierwsza część schematu obliczania miar głośności: RmsN oiseloud..... 19 2.11 Druga część schematu obliczania miar głośności: RmsN oiseloud....... 21 2.12 Podstawowy schemat obliczania miar prawdopodobieństwa wykrycia różnic między sygnałem testowym a referencyjny oraz miar ADB i MFPD....... 22 2.13 Zmiany pojedynczych składowych PEAQ, a ODG................ 26 2.14 Interpolacja punktu o zadanej przepływności bitowej.............. 30 3.1 Schemat działania koderów MPEG-1 Warstwy I i II............... 34 3.2 Schemat działania kodera MPEG1 Layer III mp3............... 34 3.3 Schemat działania kodera AAC......................... 38 3.4 Przykład kształu okien dla funkcji sinusowej i kbd................ 39 3.5 Schemat modułu predykcji............................ 40 3.6 Schemat modułu predykcji długookresowej................... 41 3.7 Schemat dekodera USAC............................. 47 3.8 Schemat dekodera Vorbis, gdzie floor to niskoczęstliwościowe współczynniki spektralne, a residua, to wysokoczęstotliwościowe współczynniki spektralne.. 48 3.9 Schemat dekodera Opus.............................. 48 3.10 Schemat dekodera CELT.............................. 49 4.1 Schemat testowania koderów audio....................... 52 xi

4.2 Porównanie różnych dostępnych koderów dla przepływności bitowej 128kb/s stereo....................................... 52 4.3 Porównanie różnych dostępnych koderów dla przepływności bitowej 128kb/s mono....................................... 53 4.4 Zależność jakości dźwięku w mierze ODG od przepływności bitowej (bitrate) dla testowanych koderów............................. 54 4.5 Przykładowy przebieg kodowania z włączonym i wyłączonym TNS dla kodera FAAC....................................... 55 4.6 Przykładowy przebieg kodowania z włączonym i wyłączonym trybem MS dla kodera FAAC dla sekwencji stereo........................ 56 4.7 Przykładowy przebieg kodowania z włączonym i wyłączonym trybem MS dla kodera FAAC.................................... 56 4.8 Przykładowy przebieg kodowania z włączonym i wyłączonym trybem MS dla kodera FAAC.................................... 57 4.9 Porównanie efektywności kodowania kodera FAAC dla wartości filtra dolnoprzepustowego 16kHz i 20kHz...................... 58 4.10 Porównanie trybów rozdziału bitów w koderze NERO.............. 60 4.11 Układ testujący projektowany koder z możliwością pobrania odpowiednich parametrów z kodera NERO........................... 62 4.12 Wykres 3D sprawdzający poprawność odnalezienia przesunięcia w synchronizacji sekwencji przetwarzanych parą NEROenc FAAD....... 63 4.13 Fragment porównania wyboru długości okna dla algorytmów FAAC i NERO.. 64 4.14 Porównanie algorytm ESF z użyciem okien z FAAC i NERO.......... 65 4.15 Porównanie efektywności kodera FAAC z włączonym (FAAC) i z wyłączonym (FAAC_L) algorytmem wybierania okien.................... 66 5.1 Przykład krzywej progów słyszenia........................ 71 5.2 Maskowanie częstotliwościowe.......................... 72 5.3 Maskowanie czasowe................................ 73 5.4 Uproszczony schemat modelu psychoakustycznego I.............. 74 5.5 Uproszczony schemat modelu psychoakustycznego II.............. 75 5.6 Szczegółowy schemat algorytmu modelu psychoakustycznego II........ 76 5.7 Wykres funkcji progów słyszenia qsthr..................... 80 5.8 Przykładowy wykres funkcji rozpraszającej................... 82 5.9 Przykładowy wykres funkcji normalizującej................... 83 5.10 Schemat blokowy zmodyfikowanego algorytmu modelu psychoakustycznego. 84 5.11 Funkcja absolutnego progu słyszenia q thr w dziedzinie pasm sfb standardu AAC 85 5.12 Schemat modelu psychoakustycznego bazującego na algorytmie PEAQ..... 87 xii

5.13 Przebieg krzywych maskowania dla trzech modeli psychoakustycznych.... 89 5.14 Porównanie działania algorytmów modeli psychoakustycznego w praktyce z użyciem algorytmu TRDO alokacji bitów.................... 90 6.1 Algorytm pętli zewnętrznej TLS......................... 92 6.2 Algorytm pętli wewnętrznej TLS......................... 93 6.3 Porównanie wartiantów ESF z szukaniem (esf) i bez szukania maksymalnej przepływności (esf_nfm) bitowej dla ramki.................. 96 6.4 Prosta, trójstanowa, trójpoziomowa krata..................... 98 6.5 Podwójna krata CTB............................... 101 6.6 Szczegółowy schemat kraty CTB......................... 102 6.7 Schemat dwuwarstwowej kraty.......................... 102 6.8 Diagram działania algorytmu EBFOS...................... 105 6.9 Diagram algorytmu AEBAS przyspieszonego EBFOS............. 107 6.10 Porównania działania kodera optymalizującego miarę ANMR i ANMRS dla dwóch modeli psychoakustycznych........................ 111 7.1 Konfiguracje BEOFC............................... 125 7.2 Zerowanie w pasmach wyniki.......................... 126 7.3 Histogram stosunku energii oryginalnej i po rekonstrukcji dla przypadku nie używania narzędzi wyrównywania energii.................... 127 7.4 Histogram stosunku energii oryginalnej i po rekonstrukcji dla przypadku użycia BESF....................................... 127 7.5 Histogram stosunku energii oryginalnej i po rekonstrukcji dla przypadku użycia BEOF....................................... 127 7.6 Histogram stosunku energii oryginalnej i po rekonstrukcji dla przypadku użycia kaskady BESFOF................................. 128 7.7 Porównanie algorytmów wyrównywania energii dla ESF............ 128 7.8 Porównanie algorytmów wyrównywania energii dla TLS............ 129 7.9 Porównanie algorytmów wyrównywania energii dla BFOS........... 129 7.10 Porównanie algorytmów wyrównywania energii dla TRDO........... 130 8.1 Szczegółowe wyniki projektowanych koderów................. 133 8.2 Porównanie różnych algorytmów oraz koderów NERO i FAAC........ 134 xiii

Spis tablic 2.1 ODG a SDG.................................... 6 2.2 Elementy składowe PEAQ w wersji podstawowej................ 8 2.3 Moduły składowe miary PEAQ w wersji zaawansowanej............ 8 2.4 Porównanie wyników kodowania tej samej sekwencji dwoma koderami.... 25 2.5 Wykaz sekwencji ze zbioru EBU SQAM..................... 27 2.6 Wykaz sekwencji ze zbioru LAME........................ 28 3.1 Narzędzia używane w poszczególnych profilach w standardzie MPEG-2 cześć 7 35 3.2 Kategorie i narzędzia w standardzie MPEG-4.................. 36 3.3 Książki kodowe Huffmana (HCB)........................ 43 3.4 Przykładowa sekwencja HCB........................... 45 3.5 Przykładowa sekwencjasf............................ 45 5.1 Wyniki kodowania przykładowych sekwencji z warunkiem by NMR był na poziomie 0dB................................... 88 6.1 Zależność liczby przeszukiwanych pasm N w kracie i uzyskiwanego poziomu średniego NMR (ANMR)............................. 110 6.2 Zależność liczby k przeszukiwanych książek HCB i uzyskanej jakości ODG dla sekwencji m_ftb_samp............................... 110 6.3 Porównanie możliwości algorytmów do dopasowywania się do krzywych maskowania..................................... 112 6.4 Zawartość procentowa poszczególnych składowych w strumieniu AAC dla różnych algorytmów................................ 113 6.5 Zmniejszenie złożoności obliczeniowej przy zastosowaniu optymalizacji kodowania Huffmana dla algorytmu alokacji bitów BFOS............ 116 6.6 Zmniejszenie złożoności obliczeniowej przy zastosowaniu optymalizacji kodowania Huffmana dla algorytmu alokacji bitów TRDO........... 116 6.7 Wyniki czasowe zastosowanych optymalizacji dla algorytmu TRDO dla 5s sekwencji muzycznej................................ 117 7.1 Przykładowe użyte konfiguracje BEOFC..................... 124 xiv

7.2 Konfiguracje modułu zerowania pasma użyte w testach............. 126 8.1 Szczegółowe wyniki ODG dla różnych koderów................. 138 8.2 Wyniki testów subiektywnych.......................... 139 8.3 Wyniki testów subiektywnych.......................... 139 8.4 Uśrednione wyniki testów subiektywnych.................... 139 1 Używane narzędzia w koderze FAAC....................... 145 xv

Wykaz skrótów AAC zaawansowane kodowanie dźwięku (Advanced Audio Coding) ANMR średni NMR (Avarage NMR) BE Algorytm wyrównywania poziomów energii (Balance Energy) BEOF BE wykorzystujący offsety (BE Offsets) BEOFC BE wykorzystujący zmianę pojedynczych współczynników (BEOF Coefficients) BESF BE wykorzystujący zmianę Scale Factor (BE Scale Factor) CBR stała przepływność bitowa (Constant Bit Rate) ESF algorytm równych współczynników Scale Factor (Equal Scale Factor) FAAC Free AAC Encoder FAAD Free AAC Decoder FFT Szybka transformata Fouriera HCB książka kodów Huffmana (Huffman Codebooks) ISO Międzynarodowa Organizacja Normalizacyjna IEC Międzynarodowa Komisja Elektrotechniczna MDCT zmodyfikowana dyskretna transformata kosinusowa MNMR maksymalny NMR MOS Mean Opinion Score MOV Model Output Variables MPEG Moving Picture Experts Group MS kodowanie stereo w trybie suma/różnica (Mid Side Stereo) NMR stosunek szum kwantyzacji maskowanie (Noise to Mask Ratio) ODG obiektywna miara błędu (Objective Difference Grade) PAM model psychoakustyczny (Psychoacoustic Model) PEAQ Perceptual Evaluation of Audio Quality SDG subiektywna miara błędu (Subjective Difference Grade) SF współczynnik kwantyzacji Scale Factor SFB pasmo Scale Factor Band SFM miara płaskości widma (Spectral Flatness Measure) SMR stosunek sygnału do progu maskowania (Signal to Mask Ratio) SNR stosunek sygnału do szumu (Signal to Noise Ratio) TLS algorytm podwójnej pętli przeszukiwan (Two Loop Search) TNS kształowanie szumu kwantyzacji (Temporal Noise Shaping ) TRDO algorytm optymalizacji przepływności bitowej i zniekształceń na kracie (Trellis-based Rate Distortion Optimization) VBR zmienna przepływność bitowa (Variable Bit Rate) xvi

Rozdział 1 Wprowadzenie Rozwój technik kodowania i transmisji mediów jest w pewnym stopniu skorelowany z rozwojem sprzętu komputerowego i telekomunikacyjnego. Przykładem może być rozwój pamięci masowych. Jeszcze 20 lat temu miały one pojemność kilku-kilkudziesięciu megabajtów, obecnie pojemność domowych dysków twardych mierzy się w terabajtach. Także rozwój sieci Internet następuje szybko. W latach 90 XX w. sieć globalna zaczynała dopiero wkraczać do Polski. Dzisiaj dostęp do sieci jest bardzo powszechny, tani i o większej przepustowości. Wraz z tym rozwojem rozważano i podejmowano próby archiwizacji i przesyłania multimediów. Wpierw były to proste obrazki, fotografie oraz muzyka w formie syntetycznej (format midi). Z czasem możliwe było także kodowanie muzyki metodami stratnymi (np. format mp3). Obecnie przesyłanie muzyki nawet w formie bezstratnej lub sekwencji wideo w rozdzielczościach standardowej telewizji lub telewizji wysokiej rozdzielczości (HDTV) nie stanowi większego wyzwania. Powodem tego zjawiska jest nie tylko rozwój możliwości sprzętowych, ale także algorytmów kompresji. To dzięki nim dźwięk może być skompresowany nawet kilkadziesiąt razy bez zauważenia znaczących strat przez większość słuchaczy. Obecnie kompresję dźwięku można odnaleźć w wielu zastosowaniach. Jest ona obecna w skompresowanych plikach na dyskach twardych, serwisach muzycznych (np. Spotify), serwisach wideo (np. Youtube), telefonii komórkowej, cyfrowym radiu oraz w zastosowaniach specjalnych: systemach audiowizualnych sterowania, obserwacji i śledzenia. Algorytmy kompresji dźwięku można podzielić na bezstratne i stratne. Bezstratne wykorzystują pewną redundancję w sygnale dźwiękowym i pozwalają na kompresję w stosunku ok. 1:2 np. przy użyciu kodera FLAC [110]. Algorytmy stratne pozwalają na kompresję 1:10 przy zachowaniu akceptowalnej jakości dźwięku. Wśród nich można wyróżnić algorytmy grupy MPEG: MPEG 1 - Layer III (mp3), MPEG 2/4 Advanced Audio Coding, fundacji Xiph.org: Vorbis, Opus oraz komercyjne np. Microsoft WMA. 1

1.1 Motywacja Algorytmy stratnej kompresji dźwięku są szeroko stosowane (np. w różnych aplikacjach (YouTube, Spotify, itunes), cyfrowym radiu DAB+, odwarzaczach internetowych, przenośnych odtwarzaczach multimedialnych i telefonach komórkowych). Możliwe są również specjalistyczne zastosowania np. w zrealizowanym projekcie Proteus Zintegrowany mobilny system wspomagający działania antyterrorystyczne i antykryzysowe [88, 87], w którym zastosowano sprzętowe układy cyfrowe do transmisji obrazu i dźwięku między robotami i operatorami robotów. Podobne zastosowanie można sobie wyobrazić przy wprowadzaniu cyfrowego radia w standardzie DAB+[40, 41]. Stratne algorytmy kompresji dźwięku działają w dziedzinie widmowej sygnału. Algorytm kwantyzacji powoduje usunięcie części informacji zmniejszając objętość strumienia dźwiękowego. Jednakże, aby dane były usunięte w taki sposób, by ich utrata była jak najmniej zauważalna wykorzystuje się model psychoakustyczny. W XX wieku prowadzono wiele badań nad działaniem i możliwościami słuchu ludzkiego. Zdefiniowano wiele zjawisk, które wykorzystywane są do budowania modeli psychoakustycznych. Dostępne w literaturze modele psychoakustyczne są wymagające obliczeniowo. Aby dobrze dopasować kompresję do wymagań modelu psychoakustycznego i zaspokoić wymaganie dopuszczalnej przepływności bitowej stosuje się algorytmy alokacji bitów. Algorytmy te przydzielają według określonej strategii bity dla poszczególnych pasm częstotliwościowych. Te algorytmy są także wymagające obliczeniowo. Istnieją opisane w literaturze algorytmy upraszczające lub przyspieszające obliczenia. Mimo to ich złożoność jest wciąż wysoka. Głównym zadaniem kodera dźwięku jest dobór współczynników kwantyzacji realizowany w odniesieniu do wybranego modelu psychoakustycznego. Największym problemem jest optymalna alokacja bitów, dopasowująca kwantowanie do wyznaczonego modelu. Odpowiedni dobór algorytmów przyczynia się do polepszenia jakości kodowanych sekwencji przy określonej przepływności bitowej. Główną motywacją do podjęcia badań nad algorytmami kompresji jest uzyskanie lepszej jakości dźwięku w stosunku do znanych rozwiązań koderów audio przy określonej przepływności bitowej. Dodatkowo istotna jest minimalizacja złożoności obliczeniowej tych algorytmów. Taka motywacja implikuje analizę i udoskonalenie różnych modeli psychoakustycznych i algorytmów alokacji bitów. Ponadto korzystne jest, aby algorytm kodowania miał możliwość: stosunkowo łatwej implementacji algorytmów w strukturach sprzętowych, rozszerzenia kodowania do zastosowań nawet do 48 kanałów. 2

1.2 Tezy W badaniach opisanych w tej pracy przebadano algorytmy modeli psychoakustycznych i alokacji bitów oraz algorytmy wyrównywania poziomów energii w pasmach w sekwencjach testowych względem referencyjnych. Na podstawie tych badań sformułowano następujące tezy: 1. Możliwa jest realizacja kodera standardu MPEG-4 AAC nie wykorzystującego modelu psychoakustycznego, bazującego na analizie poziomu energetycznego w pasmach, dającego jakość kompresji zbliżoną do najlepszych dostępnych rozwiązań. 2. Wyrównanie energii w pasmach poprzez modyfikację skwantowanych współczynników pozwala na zwiększenie efektywności kompresji sygnału fonicznego. 1.3 Zawartość rozprawy Praca została podzielona na dziewięć rozdziałów. W rozdziale 2 zostały omówione metody badań jakości dźwięku. Najpierw zaprezentowano szczegółowo obiektywne miary, które umożliwiają szybkie i nie wymagające nakładów finansowych porównanie jakości skompresowanych sekwencji dźwiękowych. Przedstawiono szczegółowo parametry składowe wykorzystywanej miary PEAQ i wybrano te, które mają największy wpływ na końcowy wynik. W rozdziale przedstawiono także wykorzystywane w pracy sekwencje testowe oraz sposoby porównywania wyników. W rozdziale 3 przedstawiono przegląd kodeków stratnej kompresji dźwięku oraz wybrano kodeki referencyjne wykorzystywane w porównaniach oraz kodek który służył jako bazowy w modyfikacji algorytmu. Szczegółowe omówienie możliwości i efektywności wybranych kodeków przedstawiono w rozdziale 4. Przebadano efektywność implementacji poszczególnych narzędzi standardu AAC w tych kodekach. Zidentyfikowano elementy, które poprawiają jakość kodowania. W rozdziale 5 zostały omówione właściwości słuchu ludzkiego oraz jego wykorzystanie w modelach psychoakustycznych. Po analizie stosowanych w literaturze modeli przedstawiono własne modyfikacje i adaptacje oraz porównano efektywność kompresji z użyciem wybranych modeli psychoakustycznych. W rozdziale 6 omówiono algorytmy alokacji bitów między pasma częstotliwościowe sygnału audio. Przedstawiono ich modyfikacje i implementacje w koderze AAC. Zaproponowano także własne rozwiązania algorytmów alokacji bitów. Przedstawiono także algorytm nie wykorzystujący modelu psychoakustycznego, który koduje wszystkie pasma w ramce z tym samym współczynnikiem kwantyzacji. W rozdziale omówiono również kodowanie entropijne i jego wpływ na efektywność kompresji. 3

W rozdziale 7 przedstawiono propozycję algorytmów wyrównywania poziomów energetycznych w pasmach częstotliwościowych sygnałów referencyjnego i zrekonstruowanego. Na koniec porównano ich efektywność dla koderów z wybranymi algorytmami alokacji bitów. W rozdziale 8 porównano kodery z wybranymi algorytmami alokacji bitów i wyrównywania poziomów energetycznych w pasmach. W pierwszej części przedstawiono wyniki opisane w dostępnej literaturze. Druga część poświęcona jest testom obiektywnym, a trzecia przeprowadzonym na grupie słuchaczy testom subiektywnym. Rozdział 9 podsumowuje całą rozprawę i przedstawia wady i zalety zaproponowanych rozwiązań. 4

Rozdział 2 Miary jakości dźwięku W tym rozdziale zostanie przedstawiona obiektywna miara jakości dźwięku Perceptualna ocena jakości dźwięku Perceptual Evaluation of Audio Quality (PEAQ) oraz jest składowe. Analiza pozwala zidentyfikować jak poszczególne miary wpływają na ocenę jakości kompresji dźwięku. W dalszych badaniach przyczyni się to do zwiększenia efektywności algorytmów kompresji oraz do zaproponowania autorskich rozwiązań (np. algorytmy wyrównywania poziomów energii). 2.1 Obiektywna miara jakości dźwięku W obecnych czasach za najbardziej wiarygodny sposób oceniania jakości dźwięku uważa się przeprowadzanie testów odsłuchowych na odpowiednio dobranej grupie osób. Testy są normalizowane, a wyniki uśredniane. Testy polegają na porównywaniu fragmentów sekwencji referencyjnych (oryginalnych) z sekwencjami testowanymi np. zakodowanymi i zdekodowanym za pomocą testowanego/projektowanego kodeka [73]. Przykładem może być Mean Opinion Score (MOS) [74], jako subiektywna miara jakości dźwięku. Jednakże taka procedura nie jest łatwa do przeprowadzania, ponieważ wiąże się z kosztami (odpowiednia sala, nagłośnienie), znalezieniem i zatrudnieniem do testów odpowiedniej liczby osób oraz czasochłonnością przeprowadzenia testów [22]. Z tych też powodów, nie są często możliwe takie testy do przeprowadzania zanim nie ma obiektywnych przesłanek skuteczności proponowanej metody. Wywołuje to zwiększającą się potrzebę posiadania narzędzi obiektywnego oceniania, które będą zdolne do wiarygodnego oszacowania jakości dźwięku bez potrzeby wykorzystywania słuchaczy. Pośród metod obiektywnych przeznaczonych do tego celu najlepsze wyniki zapewniają metody stosujące modele percepcji słyszenia. Istnieją dwa podejścia do pomiarów z wykorzystaniem psychoakustyki podczas przebiegu pomiarów. Pierwszym z nich jest koncepcja progów maskowania, w której do ich wyznaczania wykorzystuje się sekwencję referencyjną. Następnie progi maskowania porównywane są 5

z sygnałem błędu między sekwencją referencyjną a testową. Druga metoda bazuje na porównaniach wewnętrznego zobrazowania dźwięku. Polega ona na oszacowaniu informacji, które mogą być rejestrowane przez ludzki mózg. W latach 1994-1998 Międzynarodowa Unia Telekomunikacyjna (International Telecommunication Union ITU) stworzyła grupę, której zadaniem było zaproponowanie takiej obiektywnej miary. Powstało kilka propozycji: Disturbance Index (DIX)[102, 103], Noise-To-Mask Ratio (NMR)[23], Perceptual Audio Quality Measure (PAQM)[20], Perceptual Evaluation (PERCEVAL)[84], Perceptual Objective Measure (POM)[33], Toolbox Approach[71] i Objective Audio Signal Evaluation(OASE)[97]. W wyniku prac postanowiono stworzyć jedną miarę łączącą cechy wyżej wymienionych. W taki sposób opublikowany został standard miary Perceptual Evaluation of Audio Quality (PEAQ) [71, 37, 38] jako metody obiektywnego pomiaru jakości dźwięku. Obiektywna miara (nazwana Objective Difference Grade ODG), podobnie jak jej subiektywny odpowiednik (Subjective Difference Grade SDG), informuje jak bardzo różnica między sygnałem referencyjnym a testowym jest postrzegana przez człowieka: SDG = G t G r, (2.1) gdzie G t jest to jakość sekwencji testowej, a G r to jakość sekwencji referencyjnej Obie miary przedstawiono w tab. 2.1. Algorytm PEAQ można podzielić na cztery fazy: 1. Uwzględnienie efektów zachodzących w uchu zewnętrznym z wykorzystaniem odpowiedniego modelu. 2. Przetwarzanie wzorców pobudzenia, czyli efektu działania fali akustycznej na narząd słuchu. 3. Obliczenia zmiennych MOV (model object variables) bazujących na modelu psychoakustycznym. 4. Obliczenie pojedynczej wartości jakości dźwięku z wyznaczonych miar MOV. Rodzaj niedopasowania SDG ITU [70, 68, 69, 72] ODG niedostrzegalne 5.0 0.0 dostrzegalne, ale nie przeszkadzające 4.0-1.0 trochę przeszkadzające 3.0-2.0 przeszkadzające 2.0-3.0 bardzo przeszkadzające 1.0-4.0 Tablica 2.1: Obiektywna miara Objective Difference Grade oraz jej subiektywny odpowiednik Subjective Difference Grade i ich znaczenie. 6

Miara PEAQ/ODG jest zdefiniowana w dwóch wersjach: prostej (basic) i zaawansowanej (advanced). Wersja prosta bazuje na modelu obliczonego z transformaty FFT. Wersja zaawansowana bazuje na modelu FFT oraz modelu banku filtrów. Obecnie dostępne są implementacje wersji basic utworzone na Uniwersytecie McGill przez P.Kabala 1 w wersji napisanej w środowisku Matlab i języku C. Kabal wyjaśnia także i przedstawia swoją interpretacje standardu w [78]. Dostępne jest również darmowe narzędzie EAQUAL także bazujące na normie BS.1387 [71] i dające podobne wyniki jak PEAQ [86]. Zaletą narzędzia EAQUAL jest to, że ma opcję przeglądania parametrów i miary jakości dla poszczególnych ramek audio możliwość przydatna w badaniach nad koderem. Implementacja wersji zaawansowanej PEAQ, która wg normy jest lepiej przystosowana do testowania kodeków, nie jest dostępna publicznie oraz bezpłatnie. Co więcej, jedynie firma Opticom oferuje środowisko testowe Opera, które potrafi liczyć miarę PEAQ w wersji zaawansowanej, jednak oprogramowanie to jest dość kosztowne. Norma definiuje obie wersje standardu, a także sposób weryfikacji poprawności ich działania, który polega na obliczaniu miar PEAQ na zestawie par plików: referencyjnego i testowego. Obliczone miary w wersji basic i advanced mogą maksymalnie odbiegać od zdefiniowanych w standardzie o określoną wartość dla grupy sekwencji testowych. Niestety, w tej chwili pliki testowe są niedostępne, zatem nie ma możliwości sprawdzenia poprawności implementacji. W konsekwencji własna implementacja standardu w wersji zaawansowanej jest bardzo utrudniona. Zakłada się, że implementacja Kabala daje poprawne wyniki, co zostało także potwierdzone w literaturze [116]. Każda miara ODG skłąda się z kilku składowych. Składowe dla wersji podstawowej (basic) przedstawiono w tab. 2.2, a dla wersji zaawansowanej (advanced) w tab. 2.3. Narzędzie PEAQ po obliczeniu wszystkich składowych, zwanych Model Output Variables (MOV), przekazuje znormalizowane wyniki do sieci neuronowej (składającej się z trzech neuronów). Sieć generuje wynik zwany indeksem zniekształcenia (Distortion Index DI), który jest następnie przeliczany na miarę ODG. Poszczególne składowe wymienione w tab. 2.2 zostaną bardziej szczegółowo opisane w następnych podrozdziałach. 2.1.1 Miary bazujace na stosunku szumu do progów słyszenia Stosunek szumu do progów słyszenia (Noise-to-Mask Ratio NMR) jest jedną z podstawowych i najważniejszych miar w ocenie jakości dźwięku kompresowanego. Definiuje się ją następująco: NMR = E err E mask, (2.2) gdzie E err, to suma energii błędu w paśmie, a E m ask to energia progu maskowania w tym paśmie. 1 http://www-mmsp.ece.mcgill.ca/documents/downloads/pqevalaudio/pqevalaudio-v1r0.tar.gz 7

MOV składowa opis 0 BandwidthRef B szerokość pasma sygnału referencyjnego 1 BandwidthT est B szerokość pasma sygnału testowanego 2 T otalnmr B całkowity stosunek szumu kwantyzacji do progów maskowania 3 W inmoddiff B różnica modulacji między sygnałem referencyjnym, a testowym w oknie 4 ADB B średnie zniekształcenie ramki - liczone jako logarytm stosunku całkowitego zniekształcenia do całkowitej liczby mocno zniekształconych ramek 5 EHS B harmoniczna struktura błędów w czasie 6 AvgModDiff1 B średnia różnica modulacji 7 AvgModDiff2 B średnia różnica modulacji z uwydatnieniem wprowadzonych modulacji i zmian modulacji w miejscach gdzie sygnał referencyjny zawiera mało modulacji lub w ich w ogóle nie zawiera 8 RmsNoiseLoud B wartość średniokwadratowa głośności szumu z uwydatnieniem wprowadzonych składowych spektralnych 9 MF P D B maksimum prawdopodobieństwa detekcji błędu po filtracji dolnoprzepustowej 10 RelDistF rames B względny ułamek ramek dla których przynajmniej jedno pasmo częstotliwościowe zawiera znaczącą składową szumu Tablica 2.2: Moduły składowe PEAQ w wersji podstawowej. MOV Model Output Variable MOV składowa opis 0 RmsModDiffA wartość rms różnicy modulacji RmsNoiseLoud A wartość średniokwadratowa głośności szumu z 1 uwydatnieniem wprowadzonych składowych RmsMissingComponent A wartość średniokwadratowa głośności szumu brakujących komponentów RmsNoiseLoudAsymA RmsNoiseLoud A + 0.5RmsMissingComponent A 2 SegmentalN M RB segmentowo uśredniony logarytm stosunku szumu do progu maskowania 3 EHS A harmoniczna struktura błędów w czasie 4 AvgLinDistA miara średnich liniowych zniekształceń Tablica 2.3: Moduły składowe miary PEAQ w wersji zaawansowanej 8

Większość koderów audio używa tej miary do wyznaczania bieżącej jakości dźwięku i sterowania pętlą kontroli jakości dźwięku. Jest ona także wykorzystywana w narzędziach obliczania obiektywnej miary jakości dźwięku takiej jak PEAQ. Miara zakłada istnienie modelu psychoakustycznego, z którego wyznaczane są progi maskowania dla poszczególnych pasm oraz obliczenie aktualnego błędu/ szumu kwantyzacji. Model psychoakustyczny jest bardzo istotnym, a zarazem trudnym do zrealizowania elementem kodowania dźwięku. Trudność polega na wiarygodnym odwzorowaniu działania i efektów zachodzących w ludzkim zmyśle słuchu. Próg maskowania jest to najwyższa możliwa wartość energii szumu kwantyzacji, która przy zaistniałych warunkach nie będzie słyszalna dla człowieka dzięki efektowi maskowania. Standard BS.1387 [71] definiuje sposób obliczania NMR, którego uproszczony schemat przedstawiono na rys. 2.1. Można zauważyć tutaj dwie symetryczne ścieżki. Lewa dotyczy sygnału referencyjnego, a prawa, wyróżniona na rysunku, sygnału testowego. Na środku rysunku zaznaczona jest także część, w której obliczany jest błąd służący do obliczania NMR na końcu algorytmu. Jak widać, część obliczeń jest zbędna, ponieważ wyniki ich działania nie mają wpływu na NMR. Zamieszczono jednak tutaj wszystkie kroki obliczeń zdefiniowane w standardzie, ponieważ, pozostałe miary PEAQ wykorzystują je. Z tego też powodu pośrednie dane, które będą wykorzystywane dla innych składowych PEAQ, wyróżniono i podano ich nazwy. Rys 2.1 będzie przywoływany jeszcze w następnych podrozdziałach. Główne kroki algorytmu wyznaczania NMR są następujące: 1. Próbki czasowe są grupowane w okna o długości 2048. Poszczególne okna nachodzą na siebie w stosunku 1/2. 2. Okna próbek są wymnażane przez okno Hanna, by zawęzić widmo sygnału. Zastosowane okno Hanna ma postać przedstawioną na rys. 2.2 i jest zapisany równaniem: ( h[n] = 0.5 1 cos 2πn ). (2.3) N 1 3. Sygnał zostaje przeskalowany, by zapewnić poprawne mapowanie poziomu sygnału wejściowego do głośności. 4. Przeskalowane okna czasowe są następnie transformowane w dziedzinę częstotliwości za pomocą Dyskretnej Transformaty Fouriera (DFT) przy użyciu algorytmu Fast Fourier Transform (FFT)[34]. 5. Energia współczynników częstotliwościowych jest następnie przepuszczana przez filtr ucha zewnętrznego i środkowego. Ucho zewnętrzne i środkowe ma za zadanie dopasować impedancję między środowiskami powietrza i płynu. zatem charakterystyką przejściową. przestawiono na rys. 2.3. Funkcja filtru jest Charakterystykę filtru w funkcji częstotliwości 9

Rysunek 2.1: Schemat algorytmu wyznaczania NMR w PEAQ oraz pomocniczych miar pośrednich wykorzystywanych w obliczeniach pozstałych zmiennych składowych Rysunek 2.2: Przykładowe okna Hanna dla długiego okna 10

Rysunek 2.3: Charakterystyka filtru ucha zewnętrznego i środkowego 6. Przefiltrowane współczynniki częstotliwościowe energii są następnie grupowane w pasma. Standard PEAQ definiuje pasma dla wariantu basic i advanced. Dla basic jest to 109 pasm, dla advanced 55 pasm. Pasma mają odpowiednio szerokość 0.25 i 0.5 Barka (są to tzw. pasma krytyczne), zaproponowane przez Schroedera [94] i zdefiniowane następująco: ( ) f z = 7 arcsinh, (2.4) 650 gdzie z jest to indeks pasma wyrażony w Barkach, f to częstotliwość współczynnika częstotliwościowego wyrażonego w Hertzach. Pasmo sygnału jest ograniczone od 80Hz do 18kHz. W PEAQ nie wykorzystano definicji pasm Barkowych zdefiniowanych przez Zwickera [43], która jest bardzo często wykorzystywana w literaturze. Pasma Barkowe szerzej opisano w rozdz. 5.2.2. 7. W uchu wewnętrznym zachodzi zjawisko neuronowego tłumienia szumu wewnętrznego. W celu zamodelowania tego zjawiska, do sygnału w każdym paśmie dodawane jest przesunięcie by skompensować szum wewnętrzny generowany przez ucho. Przykładowy wykres funkcji przedstawiono na rys. 2.4. 8. Energia sygnału w pasmach jest następnie rozpraszana w dziedzinie częstotliwości. W ten sposób modelowane są filtry słuchowe ucha wewnętrznego. Operacja ta odpowiada za uwzględnianie maskowania częstotliwościowego (jednoczesnego). Uzyskane wartości nazwane są nierozproszonymi czasowo wzorcami pobudzenia (unsmeared excitation patterns) i są także wykorzystywane przy wyznaczaniu wzorców modulacji (rozdz. 2.1.4). Na rys. 2.5 przedstawiono przykładowe funkcje rozpraszania dla pasm 11

Rysunek 2.4: Przebieg funkcji tłumienia szumu wewnętrznego w uchu 10 i 70 (dwa poziomy) i oznaczone E sr i E st. Stosuje się funkcje rozproszenia Schroedera [94]. Charakteryzującą się one tym, że poziom maskera nie jest istotny dla wyznaczenia kształtu i kąta nachylenia krzywych. Pozwala to na obliczanie krzywej maskowania za pomocą splotu funkcji rozpraszania z funkcją widma sygnału zamiast mnożenia różnych funkcji rozpraszania z maskerami i sumowaniem tych iloczynów. Zaletą funkcji Schroedera jest również to, że splot zawiera wszystkie sumowania, których nie trzeba już wykonywać na koniec. Rysunek 2.5: Przykładowe wykresy funkcji rozproszenia częstotliwościowego dla pasma 10 i 70 przy jednakowym poziomie energii oraz dla pasma 70 przy niższym poziomie energii. 12

9. Rozproszony sygnał w dziedzinie częstotliwości jest rozpraszany w dziedzinie czasu uwzględniając kolejne ramki. Rozpraszanie to jest odpowiedzialne za maskowanie czasowe. Uzyskane wartości nazwane są wzorcami pobudzenia (excitation patterns), oznaczone jako ẼsR i Ẽ st i są wykorzystywane także w innych obliczeniach w poszczególnych składowych miary PEAQ. 10. Wyznaczana jest wartość wektora współczynników g m odpowiedzialnego za progi maskowania. Wektor g m można przedstawić za pomocą wyrażenia: g m [k] = 10 m db[k]/10, (2.5) gdzie k oznacza numer pasma. Parametr m db [k] jest zaś wartością mówiącą o ile próg maskowania leży poniżej wartości energii po rozpraszaniu czasowo-częstotliwościowym wyrażonej w pasmach Barkowych: m db [k] = { 3, k 12 z 0.25k z, k > 12 z, (2.6) gdzie z to szerokość pasma modelu psychoakustycznego wyrażonego w skali barkowej. Dla wersji PEAQ basic z = 0.25, a PEAQ advanced z = 0.5. Przykładowy przebieg funkcji g m przedstawiono na rys. 2.6. Wartość energii wzorca pobudzenia jest wymnażana przez wyznaczony współczynnik g m [k]. Uzyskany wynik jest wartością progów maskowania oznaczonych jako xmin[k]. Rysunek 2.6: Wykres wartości współczynników gm w funkcji pasma wyrażonego w Barkach dla modelu PEAQ. 13

Powyższe operacje (z wyjątkiem mnożenia przez współczynnik gm) przeprowadza się na sygnale referencyjnym oraz na sygnale testowanym. Na Rys 2.1 przedstawiono te dwie gałęzie innymi kolorami. Wartości nierozproszonych czasowo wzorców pobudzenia (unsmeared exitation patterns) oznaczono jako E sr oraz E st, a wartości wzorca pobudzenia ẼsR oraz ẼsT, odpowiednio dla sygnałów referencyjnego i testowanego. Do obliczenia błędu wykorzystuje się wartości E sr i E st. Dla każdego współczynnika częstotliwościowego oblicza się błąd średniokwadratowy (blok E err na rys. 2.1). Uzyskane wyniki błędów dla poszczególnych współczynników grupuje się w pasma identyczne jak w przypadku energii sygnałów. Uzyskane wyniki są wartościami błędu w pasmach Error[k]. Stosunek błędu do obliczonych wcześniej progów maskowania nazywany jest stosunkiem szumu kwantyzacji do maskowania Noise to Mask Ratio (NMR) dla danego pasma k. Aby otrzymać miarę NMR dla całej sekwencji, która będzie wykorzystana jako składowa ostatecznej miary ODG, uśrednia się miarę w pasmach i ramkach: ( 1 NMR tot = 10 log 10 N N 1 1 N n=0 c N c 1 k=0 NMR[k, n] ) (2.7) gdzie k to numer pasma, n numer ramki, a N c i N to odpowiednio maksymalna liczba współczynników w ramce i liczba ramek. miary ODG oznaczonym jako MOV2. Standard definiuje jeszcze miarę maksymalnego NMR w ramce: Obliczony NMR tot jest współczynnikiem NMR max [n] = max NMR[k, n]. (2.8) 0 k N c 1 Zniekształcona ramka to ramka, dla której NMR max przewyższa poziom 1.5dB. Miara RelDistF rames B jest ułamkiem liczby pasm które przekraczają poziom 1.5dB. Miara jest oznaczona jako MOV10. 2.1.2 Miary bazujace na szerokości pasma Miara Szerokości Pasma ocenia szerokości pasm sygnału referencyjnego i testowego. Szerokość jest mierzona w liczbie prążków FFT. Pomiar odbywa się w następujących etapach: 1. Najpierw, rozpoczynając od prążka odpowiadającemu częstotliwości próbkowania 21.6kHz, poszukuje się, w kierunku wysokich częstotliwości, największego prążka. Poziom energii znalezionego prążka oznacza się jako poziom progu. Powyższą operację przedstawiono na rys. 2.7a, a poziom progu oznaczono jako ThrLevel. 2. Rozpoczynając od prążka oznaczonego jako poziom progu, poszukuje się w sygnale referencyjnym, tym razem w kierunku niższych częstotliwości, pierwszego prążka 14

Rysunek 2.7: Schemat obliczania miar szerokości pasm referencyjnego i testowego: BandwidthRefB i BandwidthTestB. większego od poziomu progu o 10dB. Numer znalezionego prążka oznacza się jako BandwidthRefB, czyli pasmo sygnału referencyjnego. Operację przedstawiono na rys. 2.7b. Powyższa miara jest używana jako składowa wynikowej miary jakości dźwięku i oznaczona jako MOV0. 3. Rozpoczynając od prążka oznaczonego jako BandwidthRefB poszukuje się w kierunku niskich częstotliwości, w sygnale testowanym, pierwszego prążka częstotliwościowego którego poziom jest większy o 5dB od poziomu progu (rys. 2.7c). Znaleziony prążek FFT jest wartością pasma sygnału testowanego i oznaczonego jako BandwidthTestB. Wartość ta jest używana jako składowa wynikowej miary jakości dźwięku i oznaczona jako MOV1 2.1.3 Miara struktury harmonicznej błędu Miara struktury harmonicznej błędu Harmonic Structure of Error (EHS) jest opisana w standardzie bardzo lakonicznie, o czym pisze także Kabal[71][78]. Norma podaje, że jest to analiza bazująca na cepstrum. Na rys. 2.8 przedstawiono prosty schemat wyznaczania miary. Proces można przestawić następująco: 1. Dla każdej ramki liczona jest energia sygnału w każdym paśmie częstotliwościowym dla sygnału testowanego i referencyjnego odpowiednio: X t [k] 2 i X r [k] 2. 2. Liczona jest różnica w dziedzinie logarytmicznej: ( ) Xt [k] 2 D[k] = log. (2.9) X r [k] 2 15

Rysunek 2.8: Schemat obliczania struktury harmonicznej błędu (EHS) 3. Obliczana jest autokorelacja: C(l, i) = D i D i+l Di 2 D i+1 2. (2.10) gdzie D i to wektor kolejnych D[k], a l to opóźnienie zdefiniowane w normie. Kabal wnioskuje przesunięcie w granicach 1 256 próbek. Przesuwane okno jest mnożone dodatkowo przez okna Hanna oraz skalowane. 4. Obliczona jest energia przeskalowanego sygnału. 5. Znajdowany jest największy prążek otrzymanego sygnału (największa wartość autokorelacji) i oznacza się go jako E Hmax. 6. Obliczona wartość ostatecznie służy do obliczenia miary MOV5 - Struktury harmonicznej błędu: MOV 5 = E H = 1000 N gdzie N to liczba ramek w sekwencji dźwiękowej. N 1 n=0 E Hmax (n), (2.11) 16

2.1.4 Miary modulacji Standard PEAQ definiuje trzy miary modulacji: różnica modulacji między sygnałem referencyjnym, a testowym (W inmoddiff B ) w oknach, oraz dwie bazujące na średniej różnicy modulacji (AvgModDiff 1B i AvgModDiff 2B ). Na rys. 2.9 przedstawiono zasadniczy schemat wyznaczania miar modulacji. Rysunek 2.9: Podstawowy schemat obliczania miar modulacji: M Adiff1, M Adiff2, M W diff Obliczenia przebiegają następująco: 1. Wartość nierozpraszanych czasowo wzorców pobudzenia (unsmeared exitation patterns) (E sr i E st ) wyznaczone są w rozdz. 2.1.1 są podawane na wejście. Są to wartości energii w poszczególnych pasmach rozproszone w dziedzinie częstotliwości, ale nie rozproszone w czasie. 2. Wartości energii dla sekwencji testowej i referencyjnej są uśredniane do wartości Ēr[k, n] i Ēt[k, n] 3. Uśredniane są także wartości różnicowe między odpowiednimi pasmami z obecnej i poprzedniej ramki D r [k, n] i D t [k, n] 4. Z obliczonych wartości głośności wyznacza się miary modulacji obwiedni: M r [k, n] = D r [k, n] 1 + Ēr[k, n]/0.3, (2.12) 17

M t [k, n] = 5. Wyznaczone miary modulacji są następnie normalizowane: D t [k, n] 1 + Ēt[k, n]/0.3. (2.13) M diff1 [k, n] = M t[k, n] M r [k, n] 1 + M r [k, n] (2.14) oraz uśredniane po pasmach: M diff1 [n] = 100 N c N c 1 k=0 gdzie N c to liczba pasm modelu psychoakustycznego. M diff1 [k, n], (2.15) 6. Uśrednione wartości służą do wyznaczenia ostatecznej miary okienkowanej różnicy modulacji, oznaczonej jako MOV3: M W diff1 = 1 N L + 1 N 1 n=l 1 ( 1 L L 1 ) 4 Mdiff1[n i] (2.16) gdzie N to liczba ramek, a L = 4 to jest to wartość przesuwanego okna, zdefiniowana w standardzie. 7. Z obliczonych wartości można obliczyć także zmienną MOV6 średnią zmianę modulacji MOV 6 = M Adiff1 = i=0 N 1 n=0 W 1[n] M diff1 [n] N 1 n=0 W 1[n] (2.17) gdzie W 1 jest to waga uzależniona od Ē r [k, n] i wartości szumu ucha wewnętrznego (E IN ) 8. Dla wyznaczenia ostatniej zmiennej MOV potrzebna jest normalizacja: M diff2 [k, n] = { Mt[k,n] M r[k,n] 0.01+M r[k,n] M t [k, n] M r [k, n], 0.1 Mr[k,n] Mt[k,n] 0.01+M r[k,n] M t [k, n] < M r [k, n], (2.18) oraz jej uśrednienie po pasmach: M diff2 [n] = 100 N c N c 1 k=0 M diff2 [k, n]. (2.19) 18

Ostatecznie obliczamy ostateczną zmienną średniej różnicy modulacji: MOV 7 = M Adiff2 = N 1 n=0 W 2[n] M diff2 [n] N 1 n=0 W, (2.20) 2[n] gdzie W 2 jest wagą zależną od Ēr[k, n] oraz szumu ucha wewnętrznego (oznaczenie E in na schemacie) 2.1.5 Miary głośności zniekształceń Rysunek 2.10: Pierwsza część schematu obliczania miar głośności: RmsNoiseLoud Wersja podstawowa standardu PEAQ definiuje jedną miarę dotyczącą głośności dźwięku. Tą miarą jest RmsNoiseLoud czyli wartość średniokwadratowa głośności szumu z uwydatnieniem wprowadzonych składowych spektralnych. Podstawowy schemat wyznaczenia tej miary przedstawiono na rys. 2.10 i rys. 2.11. Pierwszy rysunek przedstawia wyznaczenie adaptowanych częstotliwościowo wzorców pobudzeń błony podstawnej, drugi zaś właściwą miarę MOV. Skrócony opis wyznaczania miary głośności można przedstawić następująco: 19

1. Jak w większości miar PEAQ obliczenia rozpoczynają się od wykorzystania pobudzeń rozpraszanych częstotliwościowo i czasowo: Ẽ st [k, n] oraz ẼsR[k, n]. wyznaczonych w rozdziale 10). 2. Przeprowadza się rozpraszanie czasowe jeszcze raz, tym razem z zależną od częstotliwości stałą czasową. Rozpraszanie odbywa się dla każdego pasma, dla sekwencji testowej P T [k, n] i referencyjnej P R [k, n] osobno: P R [k, n] = α[k]p R [k, n 1] + (1 α[k])ẽsr[k, n], (2.21) P T [k, n] = α[k]p T [k, n 1] + (1 α[k])ẽst [k, n], (2.22) gdzie α[k] jest stałą czasową zależną od częstotliwości próbkowania i pasma. 3. Wyznacza się współczynnik korekcji (głośności) C L [n] uśredniony przez sumę energii w pasmach: C L [n] = ( Nc 1 k=0 ) 2 PT [k, n]p R [k, n]. (2.23) Nc 1 k=0 P T [k, n] 4. Korekcja jest wykorzystana do wyrównania poziomów sygnałów testowego E LT [k, n] i referencyjnego E LR [k, n]: { ẼsR [k, n]/c L [n] C L [n] > 1 E LR [k, n] = Ẽ sr [k, n] C L [n] 1 { ẼsT [k, n] C L [n] > 1 E LT [k, n] = Ẽ st [k, n]c L [n] C L [n] 1. (2.24) 5. Wyrównane poziomy służą do obliczenia rozproszonej czasowo korelacji pomiędzy sygnałem testowym i referencyjnym dla każdej częstotliwości: R n [k, n] = α[k]r n [k, n 1] + E LT [k, n]e LR [k, n] R d [k, n] = α[k]r d [k, n 1] + E LR [k, n]e LR [k, n]. (2.25) 6. Liczone są stosunki R n [k, n]/r d [k, n], (2.26) R d [k, n]/r n [k, n]. (2.27) ograniczane do przedziału [0; 1] i oznaczane jako R R [k, n] oraz R T [k, n]. 20

7. Następnie przeprowadza się rozpraszanie czasowe i częstotliwościowe by uzyskać wzorce współczynników korekcji (pattern correction factors). Jednakże najpierw wyznacza się parametry potrzebne do rozpraszania. Do obliczenia tych parametrów wykorzystuje się stałe M 1 i M 2 podane w normie. Wartości parametrów, odpowiednich dla tego przypadku po wstawieniu stałych wynoszą: k+4 R ar [k, n] = 1 8 i=k 3 R R[i, n] R at [k, n] = 1 k+4 8 i=k 3 R T [i, n]. (2.28) 8. Rozpraszanie przebiega następująco: P CR [k, n] = α[k]p CR [k 1, n] + (1 α[k])r ar [i, n] P CT [k, n] = α[k]p CT [k 1, n] + (1 α[k])r at [i, n]. (2.29) 9. Dla uzyskania wzorców pobudzenia adaptowanych częstotliwościowo wykonujemy operację mnożenia: E P T [k, n] = E LT [k, n]p CT [k, n] (2.30) E P R [k, n] = E LR [k, n]p CR [k, n]. 10. Obliczone wartości E P T [k, n], E P R [k, n] użyte są w drugiej części algorytmu (rys. 2.11). Rysunek 2.11: Druga część schematu obliczania miar głośności: RmsNoiseLoud 11. Przy pomocy E P T [k, n], E P R [k, n], uwzględniając miary modulacji obwiedni (M R, M T ) opisanych wzorami 2.12 i 2.13, miarę szumu ucha wewnętrznego (E in ), oraz stałe zdefiniowane w standardzie określa się głośność zniekształceń (partial loudness of distortion) N L [k, n] 21

12. Otrzymaną wartość uśrednia się przez liczbę pasm: Ñ il [n] = 24 N c 1 N L [k, n], (2.31) N c Ñ L [n] = k=0 { ÑiL [n] Ñ il [n] 0 0 Ñ il [n] < 0. (2.32) 13. Po uśrednianiu przez liczbę ramek otrzymuje się ostateczną wartość zmiennej RmsNoiseLoud: MOV 8 = N LrmsB = 1 N 1 (ÑL[n]) N 2. (2.33) 2.1.6 Miary prawdopodobieństwa wykrycia zniekształceń n=0 Rysunek 2.12: Podstawowy schemat obliczania miar prawdopodobieństwa wykrycia różnic między sygnałem testowym a referencyjny oraz miar ADB i MFPD 22

W standardzie PEAQ została użyta miara prawdopodobieństwa wykrycia różnic między sygnałem testowym a referencyjnym. Efektem obliczeń są miary: średnie zniekształcenie ramki Average Block Distortion (ADB) oraz maksimum prawdopodobieństwa detekcji po filtrowaniu Maximum Filtered Probability of Detection (MFPD). Do wyznaczenia tych miar korzysta się z obliczonych w rozdziale 2.1.1 wzorców pobudzenia błony podstawnej ẼsR oraz Ẽ st. Schemat przedstawiony na rys. 2.12 w uproszczony sposób ukazuje całą procedurę wyznaczania wspomnianych miar. Algorytm można przedstawić w kilku punktach: 1. Wartości ẼsR oraz ẼsT są przeliczane na skalę decybelową i uzyskujemy odpowiednio Ẽ srdb oraz ẼsT db Ẽ srdb [k, n] = 10 log 10 (ẼsR[k, n]) (2.34) Ẽ st db [k, n] = 10 log 10 (ẼsT [k, n]) (2.35) 2. Podczas wyznaczania wzorców pobudzenia błony podstawnej korzystano z symetrycznego modelu. Do obliczeń prawdopodobieństwa korzysta się z pobudzeń asymetrycznych, które wyznacza się z ẼsRdB[k, n] i ẼsRdB[k, n]. 3. Pobudzenie asymetryczne służy do wyznaczenia rozmiaru kroku efektywnej detekcji, czyli ledwo dostrzegalną różnice just noticable difference (JND). Służy do tego wielomian z predefiniowanymi współczynnikami. Wynik oznaczono jako s[k, n]. 4. Wyznacza się prawdopodobieństwo detekcji: p c [k, n] = 1 ( ) (ẼsRdB 1 [k,n] ẼsT db [k,n])b s[k,n], (2.36) 2 gdzie b = 4 lub b = 6 w zależności od zależności wartości ẼsRdB[k, n] i ẼsT db[k, n] 5. Drugą wartością do której wykorzystuje się s[k, n] to liczba kroków powyżej progu: q c [k, n] = int(ẽsrdb[k, n] ẼsT db[k, n]). (2.37) s[k, n] Ta funkcja pozwala pominąć wpływ małych zniekształceń sygnału. 6. Obliczane są całkowite (dla wszystkich pasm) wartości prawdopodobieństwa detekcji i liczby kroków powyżej progu: P b [n] = 1 (1 p c [k, n]), (2.38) N c 1 k=0 23

N c 1 Q c [n] = q c [k, n]. (2.39) k=0 Wartości podane są dla przypadku sekwencji monofonicznych. 7. Następuje filtracja prawdopodobieństwa detekcji: P b [n] = c 0 Pb [n 1] + (1 c 0 )P b [n], (2.40) gdzie c 0 = 0.9, co odpowiada czasowi 0.202s. 8. Obliczana jest wartość maksymalna przefiltrowanego prawdopodobieństwa detekcji P M [n]: gdzie c 1 = 0.99. ( P M [n] = max c 1 P M [n 1], P ) b [n], (2.41) 9. Ostatecznie wyznaczana jest zmienna MOV9 maksimum prawdopodobieństwa detekcji różnicy sekwencji testowej i referencyjnej: MOV 9 = MF P D B = P M [N 1]. (2.42) 10. Całkowita (w całej sekwencji) liczba kroków powyżej progu wyznaczana jest z zależności: Q s = N 1 n=0 Q b [n]. (2.43) 11. Ostateczna wartość miary średniego zniekształcenia ramki (ADB) wynosi: 0 N = 0, ( MOV 4 = ADB B = log Qs ) 10 N N > 0 i Qs > 0 0.5 N > 0 i Q s = 0 (2.44) 2.2 Analiza parametrów PEAQ Zgodnie z opisem w rozdz. 2.1 końcowa miara ODG zależy w wersji podstawowej PEAQ od jedenastu składowych miar, które służą jako wejścia do sieci neuronowej. Sieć ta wyznacza ostateczny wynik. Została ona wytrenowana na podstawie przeprowadzonych badań odsłuchowych przez twórców standardu. Podczas projektowania algorytmów kompresji pożądaną wiedzą jest to, która z miar ma największy wpływ na końcową miarę, a które składowe mają znaczenie drugorzędne. Sieć składa się z trzech neuronów, co nie pozwala w sposób intuicyjny i jasny stwierdzić które z miar są najistotniejsze. Większość 24

algorytmów bazuje na optymalizacji stosunku NMR, wyjątkiem jest jeden algorytm [83], gdzie wykorzystane jest także prawdopodobieństwo wykrycia. Miara Koder 1 Koder 2 BandwidthRef 898.798 898.798 BandwidthTest 543.15 634.394 Total NMR -7.22088-8.22826 WinModDiff 19.6228 16.2277 ADB 1.97929 1.4676 EHS 0.598553 0.50874 AvgModDiff1 19.2601 16.1485 AvgModFiff2 43.6115 34.1137 RmsNoiseLoud 0.325182 0.326775 MFPD 1 1 RelDistFrames 0.826522 0.507923 ODG -2.538-1.965 Tablica 2.4: Porównanie wyników kodowania tej samej sekwencji dwoma koderami W tab. 2.4 przedstawiono wyniki kodowania jednej sekwencji różnymi koderami. Wartymi uwagi są wartości TotalNMR i wynikowego ODG. Pierwsze wartości nie różnią się między sobą wiele, a jednak różnica rezultatów końcowych jest znacząca. Istotny jest fakt, że w obu przypadkach T otalnmr < 0 zatem można wnioskować, że warunek maskowania został zaspokojony z nadmiarem. Wyniki miar ODG wskazują jednak, że sekwencje są zakodowane w sposób daleki od transparentnego, czyli takiego, w którym różnica między sekencją referencyjną i testową jest niedostrzegalna. Wszystkie algorytmy kodowania oparte na modelu psychoakustycznym bazującym wyłącznie na progach maskowania są zatem niewystarczające. Pomimo faktu, że nie da się intuicyjnie stwierdzić która składowa ma największy wpływ, to przeprowadzono następujący eksperyment. Zakodowano sekwencję, zmierzono i znormalizowano jej składowe do przedziału (0; 1) oraz wyznaczono wynikowe ODG. Następnie zmieniano każdą ze składowych oddzielnie, w pełnym jej zakresie, sprawdzając jak zmiana ma wpływ na ocenę końcową ODG. Wykres wyników przedstawiono na rys. 2.13. Do parametrów, które mają największy wpływ można zaliczyć miary o numerach: 2, 6, 7 czyli NMR, oraz zmiany modulacji. Parametrami, których modyfikacja najmniej zmienia wartość ODG, są: 0, 1, 4, 9, 10, czyli miary odpowiedzialne za szerokość pasm, ADB, MFDP oraz RelDistFrames. Podobne wyniki otrzymano testując różne sekwencje przy zastosowaniu różnych przepływności bitowych. Dla dalszego rozwoju algorytmów warto rozważyć, oprócz samej składowej NMR, także składowe związane z modulacją. Podczas testów koderów ujawniła się także niedoskonałość narzędzia PEAQ. Np. gdy w projektowanym koderze wystąpił błąd, który powodował, że cała sekwencja lub jej fragmenty była dekodowana w ciszę, to zdarzało się, że obiektywna miara ODG była lepsza niż przy 25

Rysunek 2.13: Graficzne przedstawienie wpływu zmian pojedynczych składowych miary PEAQ na końcowy wynik w mierze ODG poprawnym kodowaniu sekwencji audio. Z tego powodu, w niniejszej pracy sekwencje były odsłuchiwane w celu znalezienia takiego typu błędów. 2.3 Sekwencje testowe W przeprowadzonych testach algorytmów korzystano z dwóch baz sekwencji testowych: SQAM [42] oraz LAME [8]. Z bazy SQAM wybrano takie sekwencje, które były wyszczególnione w literaturze (opisane szerzej w rozdz. 8.1) podczas przeprowadzanych eksperymentów. Dodatkowo wybrano kilka sekwencji, które miały inny charakter niż wymienione wcześniej. Baza LAME jest wykorzystywana w porównaniach amatorskich lub konsumenckich. Część sekwencji z tej bazy wykorzystywana jest w pracach opisanych w literaturze. Obejmuje ona fragmenty utworów muzycznych różnych gatunków. Przedstawione sekwencje testowe w tab. 2.5 i tab. 2.6 są sekwencjami o częstotliwości próbkowania 44.1kHz. Narzędzia PQEvalAudio [4] i EAQUAL [2] obsługują tylko sekwencje o częstotliwości próbkowania 48kHz. Badania [116] wykazały, że możliwe jest przepróbkowanie sekwencji do 48kHz i obliczeniu obiektywnej miary jakości ODG z 26

zadowalającymi wyniki. Dla porównania, autorzy zamieścili swoją modyfikację algorytmu PEAQ dla częstotliwości 44.1kHz i wykazali, że realizacja z przepróbkowywaniem daje lepsze rezultaty. Zatem wszystkie sekwencje przepróbkowano do częstotliwości próbkowania 48kHz. Badane algorytmy modeli psychoakustycznych i alokacji bitów przeprowadzono z wyłączonym trybem kodowania stereo M/S (sumy i różnicy lewego i prawego kanału). Ponieważ nie wszystkie kodery komercyjne umożliwiały wyłączenie tego trybu, dlatego wszystkie sekwencje zmiksowano do sygnału monofonicznego, uzyskując w ten sposób przybliżone warunki do testów wszystkich koderów. W efekcie żaden z koderów projektowanych, jak i komercyjnych nie wykorzystywał kodowania M/S. Nazwa EBU SQAM Opis EBU SQAM Nazwa pliku 57 Organ (Bach) m_57bach 48 Quartet (Stereo) m_48quartet 52 Male Speech (French) (Mono) m_52malefr 58 Guitar (Sarasate) m_58guitar 59 Violin (Ravel) m_59ravel 66 Wind Ensemble (Stravinsky) m_66stravinsky 69 ABBA (Stereo) m_69abba 70 Eddie Rabbitt (Stereo) m_70rabbitt 27 Castanets m_27castanets 36 Xylophone m_36xylophone 44 Soprano (Stereo) m_44soprano 49 Female Speech (English)(Mono) m_49femaleen 68 Orchestra (Baird)(Stereo) m_68baird 07 Electronic Tune (Frere Jacques)(Mono) m_07electronic 10 Violoncello m_10violoncello 21 Trumpet m_21trumpet 23 Horn m_23horn 35 Glockenspiel m_35glockenspiel 40 Harpsichord m_40harpsichord 47 Bass (Stereo) m_47bass 50 Male Speech (English)(Mono) m_50maleen 54 Male Speech (German)(Mono) m_54malege Tablica 2.5: Wykaz sekwencji ze zbioru EBU SQAM użytych do testowania jakości kodowanych sekwencji 2.4 Miary jakości i ich statystyki Poniżej przedstawiono miary wg których można wyznaczyć błąd kwantyzacji w paśmie sb oraz sposoby uśredniania tych miar. Definiujemy podstawowe trzy miary energii błędu: 27

Nazwa Opis Nazwa pliku skrót applaud aplauz m_applaud48 app BlackBird Beautiful South Blackbird on the Wire m_blackbird bb KMFDM-Dogma KMFDM Dogma m_dogma48 do else3 Sara McLachlan s Elsewhere m_else348 els Fools Fools garden Lemon tree m_fools48 fo ftb_samp Metallica Fade to black m_ftb_samp48 ftb goldc Ennio Morrione The ecstasy of gold m_goldc48 gold iron The Cardigans Iron Man m_iron48 ir main_theme Pink Floyd m_main_theme48 mt mstest test trybów stereo m_mstest48 ms pipes dudy m_pipes48 pip test_signal2 śpiew + bęben m_test_signal248 s2 test_singal4 Enya m_t48est_signal448 s4 vbrtest Lou Reid "God loves his children" m_vbrtest48 vbr velvet fragment muzyki techno m_velvet48 vel youcantdothat The Beatles You can t do that m_youcantdothat48 ycdt Tablica 2.6: Wykaz sekwencji ze zbioru LAME użytych do testowania jakości kodowanych sekwencji E[sb] = high i=low (x[i] x dq [i]) 2, (2.45) gdzie x[i] to oryginalny, a x dq [i] to zrekonstruowany współczynnik częstotliwościowy. Granice low i high to indeks pierwszego i ostatniego współczynnika w paśmie sb. NMR sb = NMR[sb] = E NMR [sb] = high i=low (x[i] x dq[i]) 2, (2.46) xmin[sb] NMR sb = NMR P EAQ [sb] = E P EAQ [sb] = gdzie NMR, to Noise-to-Mask Ratio, diff xmin[sb], (2.47) czyli stosunek szumu kwantyzacji do progów maskowania, xmin[sb] to wartość progu maskowania dla pasma sb. Miarą NMR P EAQ [sb] oznaczono NMR, które jest obliczane zgodnie z algorytmem użytym w PEAQ [4] i opisanym w [71] oraz rozdz. 2.1.1. Dla tej miary także błąd jest wyznaczany w inny sposób, dlatego też wprowadzono tutaj zmienną diff. przedstawiono w rozdz. 5.7 Algorytm obliczenia błędu dla miary NMR P EAQ Dla przeprowadzanych w badaniach statystyk oraz miar wykorzystywanych w module kwantyzacji i alokacji bitów wykorzystuje się następujące miary dla całej ramki: ( b ANMR fr = 10 log NMR ) sb[b] 10, (2.48) N b 28

( b ANMRS fr = 10 log max(1, NMR ) sb[b]) 10, (2.49) gdzie N b to liczba pasm modelu psychoakustycznego. MNMR fr = 10 log 10 ( max b N b ) (NMR sb [b]). (2.50) Wszystkie te uśrednione miary mogą odnosić się zarówno do NMR i NMR P EAQ. Jak widać miara ANMR jest średnim NMR w ramce. Dla przypadku, gdy w części pasm krzywa energii szumu kwantyzacji będzie dużo powyżej krzywej maskowania, a w drugiej części dużo poniżej, to miara ANMR może być lepsza niż dla przypadku, gdy obie krzywe prawie się pokrywają. Dla eliminacji takich przypadków zaproponowano miarę AN M RS, która rozważa tylko pasma dla których energia błędu kwantyzacji jest większa od progu maskowania. Przyjmuje się, że dla pasm dla których energia szumu kwantyzacji jest mniejsza niż progi maskowania, energia szumu kwantyzacji pokrywa się z progami maskowania (NMR = 1). Dla celów statystycznych, tzn. tylko dla obliczania statystyk potrzebnych do badań, a nie wykorzystywanych do samego kodowania sekwencji audio, wprowadzono jeszcze miary dla całej sekwencji: ANMR seq = MNMR seq = oraz bazująca na zaproponowanej mierze ANMRS: ANMRS seq = fr NMR fr N fr, (2.51) fr MNMR fr N fr (2.52) fr max(1, NMR fr) N fr, (2.53) gdzie N fr to jest liczba ramek. Miary te są uśrednianiem wartości logarytmicznych (w db), więc nie są miarami odzwierciedlającymi rzeczywisty NMR (rozumiany tak jak TotalNMR w PEAQ). Są one jednak pewnymi wskaźnikami, mówiącymi o tendencjach kodowanej sekwencji. Wynikowa wartość tych miar pozwala porównywać wyniki dla różnych sekwencji. 2.5 Interpolacja punktów Dla porównania jakości dwóch zakodowanych sekwencji audio trzeba porównać miarę jakości ODG oraz przepływność bitową z którą została zakodowana sekwencja. Mimo kodowania sekwencji dla ustalonej przepływności bitowej, wyniki zawsze odbiegają od tej przepływności. W takim przypadku niemożliwe jest porównanie dwóch sekwencji. 29

Rozwiązaniem jest przyjęcie docelowej przepływności bitowej i interpolowanie do niej wyników kodowania poszczególnych koderów. Tak interpolowane wyniki można bezpośrednio porównywać ze sobą. Dla poprawności interpolacji zakłada się, że punkty z których się interpoluje leżą blisko siebie. Rysunek 2.14: B(br2,odg2) Interpolacja punktu o zadanej przepływności bitowej brx z punktów A(br1,odg1) i Na rys. 2.14 przedstawiono interpolację punktu X o zadanej przepływności br x z punktów A(br 1, odg 1 ) i B(br 2, odg2). Krzywa rzeczywistej charakterystyki odg(br) zostaje zlinearyzowana do odcinka AB. Dla przepływności bitowej br x wyznaczamy położenie punktu X na odcinku AB. Z relacji trójkątów podobnych otrzymujemy równanie: odg x odg 1 odg 2 odg 1 = br x br 1 br 2 br 1 (2.54) Po przekształceniach otrzymujemy zależność na poszukiwaną wartości odg x : odg x = br x br 1 br 2 br 1 (odg 2 odg 1 ) + odg 1 (2.55) Podsumowanie W rozdziale przedstawniono miary jakości dźwięku ze szczególnym uwzględnieniem obiektywnej miary Perceptual Evaluation of Audio Quality (PEAQ) oraz podano sposób obliczania jej pośrednich miar. Zidentyfikowano składowe mające największy wpływ na 30

ostateczny wynik estymowanej oceny jakości. Miary te będą następnie wykorzystywane do zwiększenia efektywności algorytmów kompresji. Krótko opisano także sekwencje testowe, na których były przeprowadzane testy jakości dźwięku. Przedstawiono miary służące do porównywania efektywności algorytmów alokacji bitów oraz wprowadzono miarę ANMRS fr oraz ANMRS seq. Przedstawiono także zaproponowany sposób interpolacji wyników obiektywnych do założonej przepływności bitowej. 31

Rozdział 3 Przeglad koderów dźwięku W rozdziale opisano kodery kilku standardów stratnej kompresji dźwięku, w szczególności kodery standardu AAC. Kodery zostały porównane pod względem uzyskiwanej jakości dźwięku. Pozwalało to wybrać koder referencyjny dla dalszych badań. W dzisiejszych czasach istnieje bardzo duża potrzeba przesyłu różnego rodzaju mediów i zwiększa się ona z każdym rokiem. Najpierw przesyłany był sam tekst, potem przesyłano obrazy, następnie muzykę oraz filmy. Każde kolejne z wymienionych mediów ma coraz większe potrzeby przepustowości łącza telekomunikacyjnego. Także samo przechowywanie mediów wymaga znacznych zasobów pamięciowych. Na przeciw tym wymaganiom wychodzi kompresja. Jej zadaniem jest zminimalizowanie długości strumienia bitowego danego medium, przy zachowaniu jak najlepszej jakości. Najlepszą jakość zapewniają kodery bezstratne. Gorszą jakość zapewnia kompresja stratna, umożliwiając kodowanie na mniejszej liczbie bitów. Współczesne kodery kompresji stratnej są projektowane tak, by były transparentne. Oznacza to, że mimo utraty znaczącej części danych, percepcyjnie straty te nie są dostrzegane. Niniejsza praca jest poświęcona kompresji stratnej dźwięku, dlatego też uwaga zostanie skupiona na takich metodach kompresji. Obecnie istnieje dużo koderów audio, różniących się metodami i rezultatami kompresji. Poniżej przedstawiono kilka wybranych koderów stratnych, aby przybliżyć możliwości i ograniczenia spotykane przy praktycznej implementacji różnych algorytmów kompresji dźwiękowej. 3.1 Kodery grupy roboczej MPEG MPEG (Moving Picture Experts Group) jest grupą roboczą ISO/IEC, zajmującą się rozwijaniem i zatwierdzaniem standardów multimedialnych m.in. dźwiękowych. Poniżej wymieniono i krótko scharakteryzowano główne kodery stratne dźwięku. 33

3.1.1 MPEG-1 Norma przewiduje trzy warstwy kodeka MPEG-1: Layer I, II i III nazywane odpowiednio MP1, MP2, MP3. Każda kolejna jest bardziej zaawansowana. Wszystkie warstwy obsługują częstotliwości próbkowania: 32, 44.1, 48kHz. Koder warstwy pierwszej jest najprostszy, przeznaczony do kodowania sekwencji z przepływnością bitową od 32 do 224kb/s. Kodek warstwy drugiej pracuje z przepływnościami od 32 do 192kb/s przy czym gwarantuje lepszą jakość dźwięku od warstwy pierwszej. Na rys. 3.1 przedstawiono uproszczony schemat kodera warstw pierwszej i drugiej. Rysunek 3.1: Schemat działania koderów MPEG-1 Warstwy I i II Analiza rozpoczyna się od podziału sygnału na 32 pasma w banku filtrów. Analiza zostaje przeprowadzona poprzez filtry PQMF (Pseudo-Quadrature Mirror Filter psudokwadraturowy filtr lustrzany). Współczynniki częstotliwościowe są kierowane do równomiernego kwantyzera, który jest sterowany przez model psychoakustyczny. Wyniki, wraz z dodatkowymi informacjami kontrolnymi, są zapisywane do strumienia końcowego. W drugiej gałęzi (dolna część na rys. 3.1) próbki są filtrowane oknem Hanna, a następnie obliczana jest transformata DFT. Wyniki są wejściem dla modelu psychoakustycznego, który steruje kwantyzacją tak, by otrzymać jak najlepszą jakość dźwięku przy zadanej przepływności bitowej. W warstwie I i II korzysta się z modelu psychoakustycznego I (szczegółowo opisanego w rozdz. 5.3). Na większą uwagę zasługuje warstwa MP3, która była i nadal jest jednym z najczęściej wykorzystywanych formatów kompresji audio, obsługiwaną przez ogromną większość aplikacji programowych, jak i urządzeń sprzętowych. Koder MP3 obsługuje szeroki zakres przepływności bitowych od 32 do 320kb/s Schemat algorytmu kodera mp3 przedstawiono na rys. 3.2. Rysunek 3.2: Schemat działania kodera MPEG1 Layer III mp3 34

Próbki czasowe najpierw trafiają do filtra PQMF, który dzieli sygnał na 32 pasma (podobnie jak w warstwach I i II). Następnie przefiltrowane próbki przechodzą zmodyfikowaną transformatę cosinusową (Modified Discreate Cosine Transform). Współczynniki transformat są kwantowane przez kwantyzator nierównomierny. Po nim następuje kodowanie entropijne realizowane przez koder Huffmana. Końcowe wyniki, wraz z danymi pomocniczymi, trafiają do strumienia. Podobnie jak w warstwach I i II w dolnej gałezi kodera jest transformacja DFT (tym razem 2 1024-punktowa) oraz model psychoakustyczny. 3.1.2 MPEG-2/4 Następcą standardu stratnej kompresji dźwięku MPEG-1 Layer-III (mp3)[58] jest standard Advanced Audio Coding (AAC). AAC zostało ustanowione jako standard w 1997 roku w specyfikacji ISO/IEC MPEG-2 część 7 [60, 96, 39]. Standard został także nazwany jako niekompatybilny wstecz (non-backward Compatibile), ponieważ MPEG-2 zawierał już część 3., opisującą standard kodowania kompatybilnego wstecz (backward compatibile)[59]. MPEG-2 część 7 definiowała trzy profile: niskiej złożoności (AAC-Low Complexity AAC LC), profil główny (AAC Main) oraz profil skalowalnej przepływności bitowej (Scalable Sampling Rate AAC-SSR). Koder w profilu LC wykorzystuje tylko najprostsze narzędzia, wymagającym najmniejszych zasobów obliczeniowych. Profil główny (Main) jest zaprojektowany by wykorzystać wszystkie możliwości kodera. By zapewnić najlepszą jakość kodowania, potrzebuje więcej zasobów obliczeniowych niż LC. SSR zapewnie skalowalność przepływności bitowej kodowania. W tab. 3.1 przedstawiono wszystkie narzędzia wykorzystywane w poszczególnych profilach. Poszczególne narzędzia (przedstawione na rys. 3.3) opisano dalej. Narzędzia MPEG-2/AAC Main LC SSR przetwarzanie wstępne - - + bank Filtrów + + + TNS + ograniczone ograniczone I/C + + + predykcja + - - M/S + + + sterowanie TRDO + + + kodowanie binarne + + + formowanie strumienia + + + Tablica 3.1: Narzędzia używane w poszczególnych profilach w standardzie MPEG-2 cześć 7 W 1999 roku ustanowiono części 3 standardu MPEG-4 Advanced Audio Coding [61]. Aktualizacja przyniosła kilka nowych możliwości. Narzędzia w tym standardzie można pogrupować w kilka kategorii, które są przedstawione w tab. 3.2. 35

Kategoria Narzędzie Opis CELP Code Excited Linear Prediction koder predykcji liniowej Kodowanie mowy HVXC Harmonic Vector Excitation Coding TTS Text To Speech kodowanie tekstu do mowy Variable Bitrate HVXC HVXC o zmiennej przepływności bitowej Silence Compression kompresja ciszy MPEG-2 AAC Main MPEG-2 AAC LC odpowiednie profile z MPEG-2 MPEG-2 AAC SSR LD Low-Delay małe opóźnienie Kodowanie PNS Perceptual Noise Substitution* ogólne LTP Long Term Prediction* HILN Harmonic and Individual Lines plus Noise TwinVQ Transform-domain weighted interleave Vector Quantization kwantyzacja wektorowa BSAC Bit Sliced Arithmetic Coding kodowanie arytmetyczne TLSS Tools for Large Step Scalability Skalowalna SA Synthetic Audio Tools Synteza SASBF Structured Audio Sample Bank Format MIDI Musical Instrument Digital Interface Zabezpieczenie Error Robustness Tools przeciw ER uodpranianie przeciw błędom błędom Tablica 3.2: Kategorie i narzędzia w standardzie MPEG-4. * moduły opisano poniżej W niniejszej pracy obiektem zainteresowań jest tylko kodowanie ogólne. Do profili MPEG-2 AAC standard MPEG-4 dodał narzędzie PNS oraz dodatkową możliwość rozszerzenia o narzędzie predykcji długookresowej LTP. TwinVQ umożliwia zastąpienie kwantyzacji skalarnej kwantyzacją wektorową, która najczęściej wykorzystywana jest w kodowaniu skalowalnym. BSAC jest koderem arytmetycznym zastępującym kodowanie Huffmana, które wykorzystywało predefiniowane książki kodowe. Narzędzia są zorganizowane w tzw. typy obiektów (Object Types) [62], a te są zorganizowane w następujących profilach: główny (Main) zawiera wszystkie narzędzia kodowania naturalnego MPEG-4 oraz obiekty syntetyczne bez ER, skalowalny (Scalable) profil umożliwiający skalowanie. obiektów oprócz MPEG-2 Main, SSR i SA, Zawiera wszystkie typy mowy (Speech) zawiera narzędzia CELP, HVXC i TTS, 36

syntetyczny (Synthesis) zawiera SA, TTS; umożliwia kodowanie na bardzo niskich przepływnościach bitowych, naturalny (Natural) umożliwia kodowanie we wszystkich naturalnych typach obiektów, dodatkowo pozwala na użycie TTS i ER, wysokiej jakości (High Quality) zawiera AAC LC i LTP, CELP. Jest możliwość włączenia ER, niskiego opóźnienia (Low Delay) pozwala na kodowanie z bardzo niskim opóźnieniem. Zawiera AAC LD, CELP, HVXC, ER i TTS, mobilny (Mobile Audio Internetworking MAUI) pozwala na użycie ER, LC, skalowalny (scalable), Twin VQ, BSAC, LD. Profil przeznaczony do aplikacji komunikacyjnych używających algorytmy kodowania mowy i wysokiej jakości kodowanie dźwięku. W 2003 roku wprowadzono nowy profil High-Efficiency Advanced Audio Coding (HE-AAC) [63] czyli koder AAC wysokiej wydajności. Jest on zaprojektowany dla niskich przepływności bitowych. Rozszerza działanie kodera AAC o SBR (Spectral Band Replication), polegające na redukcji harmonicznych dla wysokich częstotliwości i ich rekonstrukcję w dekoderze poprzez odtworzenie harmonicznych dla niskich pasm z odpowiednio dobranymi parametrami. W 2006 roku wprowadzono jeszcze jeden profil: HE-AAC v2 [64], wzbogacający architekturę kodera HE-AAC o moduł parametrycznego stereo (Parametric Stereo PS), który jest kolejnym podejściem do parametryzacji kanałów stereo. przeznaczony dla niskich przepływności bitowych. Profil HE-AACv2 jest Poniżej przedstawiono krótki opis poszczególnych narzędzi/modułów w standardzie MPEG-4 AAC. Przetwarzanie wstępne to narzędzie kontroli wzmocnienia (gain control). używane w profilu skalowalnym SSR. Sygnał jest na początku filtrowany przez cztery filtry PQMF. Następnie wzmocnienie jest detekowane i modyfikowane, tak aby otrzymać najlepsze wyniki dalszej kompresji. Bank filtrów wykorzystywany w standardzie jako narzędzie transformacji z dziedziny czasu na dziedzinę częstotliwości. Używana jest zmodyfikowana dyskretna transformacja cosinusowa (Modified Discreate Cosine Transform MDCT). Jest ona zdefiniowana następująco: X k = 2N 1 n=0 Jest [ ( π x n cos n + 1 N 2 + N ) ( k + 1 )], (3.1) 2 2 37

Rysunek 3.3: Schemat działania kodera AAC gdzie X k to k-ty współczynnik częstotliwościowy, a x n, to n-ta próbka czasowa, k = 0,..., N 1. Transformata liczona jest w długich (N = 2048-próbkowych) lub krótkich (N = 256-próbkowych) oknach. Okna krótkie zawsze występują w seriach po osiem. Standard definiuje też okna przejściowe z długich na krótkie i odwrotnie. W transformacie MDCT okna nakładają się na siebie w proporcji 1/2. Przed obliczeniem transformacji MDCT próbki są filtrowane przez funkcję okna: sinusową lub Keisera-Bessela(Keiser-Bessel Derived KBD). Przykład kształtu funkcji okna przedstawiono na rys. 3.4. Transformata MDCT zawiera współczynniki częstotliwościowe w liczbie o połowę mniejszej niż liczba próbek na wejściu transformacji. W dekoderze, w odwrotnej transformacji MDCT (IMDCT), aby odtworzyć pierwotne próbki czasowe pierwszą część okna bieżącego sumuje się z drugą połową okna poprzedniego. Transformata IMDCT 38

Rysunek 3.4: Przykład kształu okien dla funkcji sinusowej i kbd dla okna o długości 2048 próbek definiowana jest następująco: y n = 1 N N 1 k=0 [ ( π X k cos n + 1 N 2 + N ) ( k + 1 )], (3.2) 2 2 gdzie X k to k-ty współczynnik częstotliwościowy, a y n, to n-ta zrekonstruowana próbka czasowa, n = 0, 1,..., 2N 1. TNS narzędzie kształtowania szumu kwantyzacji (Temporal Noise Shaping TNS) jest umieszczone między bankiem filtrów a modułem kwantyzacji. Zadaniem TNS jest odpowiednie filtrowanie sygnału w dziedzinie częstotliwości filtrem predykcyjnym, co pozwala kontrolować i kształtować szum kwantyzacji. W efekcie, zamiast kodować współczynniki częstotliwościowe w module kwantyzacji, koduje się residua predykcji (sygnał różnicowy). Standard pozwala używać filtry maksymalnie rzędu 12 lub 20 (w zależności od profilu). Filtrowane może być całe spektrum lub jego fragment. TNS tak kształtuje szum kwantyzacji by był zaadaptowany do kształtu sygnału w dziedzinie czasu. Pozawala to efektywniej wykorzystywać efekt maskowania częstotliwościowego, oraz eliminuje efekt pre-echa. P.Kabal w [78] pisze, że dzięki zastosowaniu TNS jakość sekwencji glockenspiel i german_male poprawiła się o wartość 0.9 w skali ODG. 39

Predykcja w standardzie AAC może być użyta dla zmniejszenia redundancji Rysunek 3.5: Schemat modułu predykcji (dla jednego współczynnika) sygnału. Predykcja jest korzystna dla sygnałów stacjonarnych, czyli sygnałów, w których są wykorzystywane długie okna. Ponieważ dla sygnałów niestacjonarnych (np. transjentów), wykorzystuje się okna krótkie, predykcja jest dostępna tylko dla długich okien. Predykcja wykonywana jest w dziedzinie częstotliwości. Zdefiniowana w ten sposób predykcja jest predykcją wstecz. Na rys. 3.5 przedstawiono uproszczony schemat predykcji dla jednego współczynnika. Wartości współczynników częstotliwościowych x i (n) wpadają do predyktora, który z obecnego współczynnika i zrekonstruowanego współczynnika z poprzedniej ramki (x i,rec (n 1)) oblicza różnicę (residuum). Zadaniem sterowania jest wybór rozwiązania bardziej opłacalnego residuum wraz z informacjami dodatkowymi o predykcji lub przesłanie oryginalnego współczynnika częstotliwościowego. Wynik trafia do kwantyzera. Następnie skwantowane współczynniki lub residua trafiają do dalszych modułów kodera (y i,q (n)) oraz do pętli rekonstrukcji. W rezultacie zastosowanej predykcji do strumienia przesyłane są wartości residuów, czyli różnic między wartością rzeczywistą a wartością predykowaną, co pozwala na lepszą kompresję. Predykcja długookresowa (Long Term Prediction LTP) jest predykcją wzorującą się na predykcji w koderach mowy. Różni się od predykcji przedstawionej w punkcie poprzednim tym, że wykonywana jest w dziedzinie czasu. W odróżnieniu od predykcji, LTP można stosować także w oknach krótkich. Na rys. 3.6 przedstawiono schemat predykcji LTP. Osobnymi kolorami oznaczone zostały dziedziny czasu i częstotliwości. W LTP predykcja jest obliczana na oryginalnym sygnale i sygnale zrekonstruowanym w dziedzinie czasu. Wynikowe residua są transformowane w dziedzinę częstotliwości i kwantowane. Ostateczne wyniki są przesyłane do następnych modułów kodera AAC. Kodowanie Intensywność/Sprzężenie to jedna z metod kodowania stereo (obok kodowania M/S) w standardzie AAC. Polega ona na kodowaniu intensywności/sprzężenia między kanałami. Wyróżniamy dwie metody: 40

Rysunek 3.6: Schemat modułu predykcji długookresowej 1. Kodowanie intensywności (Intensity Stereo IS) polegające na kodowaniu wspólnych danych oraz przesyłania wektora kierunku, czyli intensywności z jaką dane pojawiają się w poszczególnych kanałach stereo. 2. Kodowanie sprzężenia (Coupling Channel), które jest realizowane na dwa sposoby: podobnie do trybu IS, z tą tylko różnicą, że nie jest ograniczone do dwóch kanałów, a kanały mogą być dowolnie łączone (dla strumieni wielokanałowych), tryb polegający na zmiksowaniu (down-mix) kanałów w jeden. Jako przykład podaje się zmiksowanie sygnału komentarza do pozostałej treści dźwiękowej. PNS moduł percepcyjnego zastępowania szumem (Perceptual Noise Substitution ) wykrywa pasma, w których sygnał ma widmo zbliżone do szumu. Zamiast przesyłać konkretne współczynniki częstotliwościowe, wyznaczana jest energia i parametry szumu, przesyłane następnie do dekodera. W dekoderze generowany jest szum z zadaną energią i parametrami dla każdego pasma częstotliwościowego. Moduł jest wykorzystywany raczej dla niskich przepływności bitowych. Do realizacji PNS wykorzystuje się dwie techniki. Pierwsza opisana jest w normie [65] i bazuje na indeksie tonalności. Jeśli w danym paśmie indeks wskazuje nietonalność pasma, to wykorzystywane jest PNS, w przeciwnym przypadku PNS jest wyłączone. Drugim podejściem jest algorytm zaproponowany przez D.Schultza [95] wykorzystujący predykcję w dziedzinie czasu. W [117] porównano oba podejścia i stwierdzono, że algorytm Schulza daje lepsze wyniki. M/S (Mid/Side) narzędzie kodowania dźwięku wielokanałowego. Sparowane kanały mogą być przesyłane oddzielnie jako lewy (L) i prawy (R) lub w trybie M/S. Tryb 41

definiuje kanał Mid jako normalizowaną sumę kanałów lewego i prawego oraz Side jako normalizowaną różnicę tych kanałów. Wybór włączenia trybu MS może odbywać się z ramki na ramkę lub dla każdego pasma SFB osobno. Kwantyzacja jest procesem stratnym, ale dzięki niej możliwa jest efektywna kompresja sekwencji audio. Celem kwantyzacji i alokacji bitów jest zminimalizowanie długości strumienia bitowego, a zarazem utrzymanie jak najlepszej jakości dźwięku. Pomimo stratności procesu, wszystkie pozostałe moduły, a w szczególności model psychoakustyczny stara się tak dobrać parametry kwantyzacji, by strata informacji była jak najmniej słyszalna dla człowieka. W standardzie AAC kwantyzacji podlegają współczynniki częstotliwościowe x, które są wynikiem transformacji MDCT. Standard definiuje podział całego spektrum częstotliwościowego na pasma zwane ScaleFactor Bands (SFB). Dla różnych częstotliwości próbkowania sygnału i długości okien definiowana jest różna liczba pasm. Dla używanej częstotliwości próbkowania 48kHz, mamy 14 i 49 pasm odpowiednio dla okien krótkich i długich. Każde pasmo częstotliwościowe SFB ma przyporządkowany swój współczynnik kwantyzacji ScaleFactor (SF). Dla okien krótkich, każde poszczególne okno w serii ma swój zestaw współczynników SF. Jednakże standard daje możliwość łączenia sąsiednich okien w grupy. W realizowanej implementacji, zgodnie z tym co było zrobione w koderze FAAC (wybranym jako bazowy), wszystkie okna krótkie były łączone w jedną grupę ośmio-okienną. Zatem dla okien krótkich SF jest jednakowy dla danego pasma we wszystkich oknach w serii. Pojedynczy współczynnik częstotliwościowy jest kwantowany w następujący sposób: x q = sign(x) x 3 3 4 2 16 SF + 0.4054, (3.3) gdzie x to współczynnik transformaty MDCT, x q skwantowany współczynnik, SF to ScaleFactor dla danego pasma, a wartość 0.4054 jest wartością offsetu zdefiniowaną przez standard, sign(x) jest znakiem x. Odwrotnością kwantyzacji jest dekwantyzacja zdefiniowana następująco: x dq = sign(x q ) x q 4 3 2 1 4 SF, (3.4) gdzie x dq jest współczynnikiem zrekonstruowanym. W równaniu dekwantyzacji nie występuje składnik 0.4054, ponieważ w koderze po dodaniu współczynnika, następowało zaokrąglenie wyniku w dół, co czyniło x q punktem zbliżonym do środka przedziału kwantyzacji. 42

Skwantowane współczynniki częstotliwościowe są kodowane entropijnie w koderze Huffmana. Kodowanie entropijne jest odpowiedzialne za kompresję bezstratną skwantowanych HCB liczba współczynników kodowanych w paczce 0 0 0 maksymalna wartość kodowanych współczynników znak 1 4 1 ze znakiem 2 4 1 ze znakiem 3 4 2 bez znaku 4 4 2 bez znaku 5 2 4 ze znakiem 6 2 4 ze znakiem 7 2 7 bez znaku 8 2 7 bez znaku 9 2 12 bez znaku 10 2 12 bez znaku 11 2 16 [ESC] bez znaku Tablica 3.3: Ksiażki kodowe Huffmana (HCB) i ich parametry zdefiniowane w standardzie. oznacza, że ksiażka obsługuje także dodatkowe kody dla wartości większych od 16. [ESC] współczynników częstotliwościowych oraz współczynników kwantyzacji Scale Factor. W standardzie używane jest kodowanie Huffmana. Kody Huffmana nie są jednak budowane w zależności od bieżących statystyk, ale są predefiniowane w książkach kodowych tzw. Huffman CodeBooks (HCB). Dla zakodowania skwantowanych współczynników częstotliwościowych zdefiniowano dwanaście książek i jeden tryb specjalny. Do każdego pasma jest przyporządkowana tylko jedna książka kodowa. W tab. 3.3 przedstawiono wszystkie książki służące do kodowania współczynników. Specyficzną książką jest książka o numerze 0. Koduje ona pasma, w których wszystkie współczynniki są równe zero. W przypadku tej książki kodowej, do strumienia przesyłana jest tylko informacja o numerze książki. Dla książek kodowych 1 11, oprócz numeru użytej książki, przesyłane są także wartości zakodowanych współczynników. Współczynniki mogą być kodowane w paczkach po 2 lub 4 współczynniki zgodnie z tym co podano w tabeli. Jeśli pasmo zawiera więcej współczynników niż paczka, to przesyłanych jest więcej paczek. Współczynniki są kodowane w paczkach ze znakiem lub bez, zgodnie z tym co podano w tabeli. Jeśli współczynniki kodowane są bez znaku, to kodowana jest ich wartość bezwzględna, a po ich zakodowaniu przekazywana 43

jest informacja o znakach. Dodatkową cechą każdej książki kodowej jest maksymalna wartość, jaką dana książka kodowa może zakodować. Jak można zauważyć, im większa wartość współczynnika częstotliwościowego, tym mniej książek do wyboru. Wartości skwantowane w standardzie AAC przybierają wartości z przedziału ( 8191; 8191). Z tab. 3.3 wynika, że książki obsługują wartości tylko do 16. Powyżej tej wartości jest używana książka z numerem 11 oraz dodatkowe kody ESC do zakodowania potrzebnych wartości. Poza kodowaniem współczynników częstotliwościowych zadaniem kodowania Huffmana jest przesłanie sekwencji książek kodowych (HCB) oraz współczynników kwantyzacji Scale Factors. Dla zakodowania SF wykorzystuje się przygotowaną specjalnie do tego celu książkę kodową. Pierwszy SF, zwany także wzmocnieniem ogólnym (Global Gain), kodowany jest jako wartość ośmiobitowa. Następne SF kodowane są kolejno, różnicowo. Obliczana różnica jest kodowana za pomocą odpowiedniego słowa kodowego. Słowa są tak skonstruowane, że im mniejsza różnica tym słowo jest krótsze, np. jeśli różnica wynosi zero, to następny SF zajmie tylko jeden bit. Jeśli jest ramka, która ma 40 pasm, a wszystkie pasma mają taki sam SF, to w sumie ramka zostanie zakodowana na 8 + 39 1 = 47 bitach. W przypadkach, gdy jakieś pasmo jest kodowane za pomocą zerowej książki kodowej (czyli wszystkie współczynniki częstotliwościowe po kwantyzacji w danym paśmie są równe zero), to pasmo to jest pomijane. Do odtworzenia informacji o pominiętych pasmach wystarczą indeksy książek kodowych. Jeśli ostatnie pasma w ramce są wyzerowane, to kodowanie kończy się na ostatnim niezerowym paśmie. Kodowanie numerów książek kodowych odbywa się w inny sposób. Kodowane są one w paczkach. Jedna paczka zawiera informację o numerze książki kodowej oraz liczbie kolejnych powtórzeń danej książki kodowej. Idealna zatem sytuacja, pod względem liczby bitów przeznaczonych na kodowanie HCB, występuje wtedy, gdy wszystkie pasma kodowane są za pomocą tej samej HCB. Numer książki kodowany jest na czterech bitach, a liczba powtórzeń książki na pięciu dla długich okien lub trzech dla krótkich okien. Zatem liczba powtórzeń może wynosić maksymalnie 31 dla długich okien oraz 7 dla krótkich okien. Omówione tutaj zakodowane współczynniki częstotliwościowe, SF i HCB wykorzystują prawie całą przepływność bitową strumienia audio. Prostą implementację kodowania entropijnego można znaleźć w [90]. W tab. 3.4 przedstawiono prosty przykład kodowania HCB dla okna długiego. Widać, że korzystne jest powtarzanie się HCB, ponieważ wtedy trzeba przesłać mniejszą liczbę paczek z książkami, zwiększając tylko licznik powtórzeń w paczce. Przyczynia się to do zmniejszenia liczby bitów potrzebnych do zakodowania numerów HCB. 44

pasmo SFB 0 1 2 3 4 5 6 7... HCB 11 11 11 10 10 9 0 5... HCB paczka (11;3) - - (10;2) - (9;1) (0;1) (5;1)... HCB bity 9 0 0 9 0 9 9 9... Tablica 3.4: Przykładowa sekwencja ksiażek kodowych wraz z liczba bitów potrzebna do ich zakodowania w poszczególnych pasmach pasmo SFB 0 1 2 3 4 5 6 7... HCB 11 11 11 10 10 9 0 5... SF 140 141 150 134 135 135 140 140... SF różnica Global Gain 1 9-16 1 0 0 5... SF bity 8 4 8 12 4 1 0 6... Tablica 3.5: Przykładowa sekwencja współczynników Scale Factor wraz z liczba bitów potrzebna do ich zakodowania w poszczególnych pasmach W tab. 3.5 przedstawiono przykład kodowania współczynników SF. Pierwszy współczynnik jest zawsze kodowany na 8 bitach jako Global gain. Następne SF są kodowane różnicowo. Z obliczonej różnicy między kolejnymi SF (SF różnica) wyznaczane jest słowo kodowe oraz liczba bitów potrzebna do jego zapisania (SF bity). Tak są kodowane SF w kolejnych pasmach aż do ostatniego niezerowego pasma. Wyjątkiem pasma, w których wybrana jest zerowa książka kodowa. Takie pasma są pomijane i nie są przydzielane żadne bity dla tych pasm. Pominięcia pasma powoduje konieczność pamiętania lub znalezienia poprzedniego pasma z niezerową książką kodową. W takim kodowaniu, z punktu widzenia oszczędności bitów, korzystne jest, jeśli wszystkie współczynniki częstotliwościowe są tej samej wielkości lub książki kodowe są zerowe. TwinVQ (transform-domain weighted interleave vector quantization) jest alternatywą dla modułu kwantyzacji skalarnej. Jest to kwantyzacja wektorowa, która pozwala otrzymać bardzo dobry stopień kompresji dla niskich przepływności bitowych i pozwala na skalowalność przepływności bitowej. BSAC (Bit-Sliced Arithmetic Coding) binarny koder arytmetyczny, który może być alternatywą dla kodowania Huffmana. Wykorzystuje się głównie w profilach skalowalnych. Formowanie strumienia informacje od modułu kodowania entropijnego oraz parametry z pozostałych modułów są przekazywane do modułu formowania strumienia. Wygenerowany strumień następnie przesyłany jest dalej do dekodera. Dane audio standardu AAC mogą być przesyłane w następujących formatach/kontenerach: 45

RAW sam strumień audio bez dodatkowych nagłówków, ADIF (Audio Data Interchange Format) składa się z pojedynczego nagłówka na początku pliku, po którym umieszczony jest strumień audio, ADTS (Audio Data Transport Stream) [60] kontener dla każdej ramki audio dodaj nagłówki, dzięki czemu zakodowany dźwięk w kontenerze może być wykorzystywany w transmisji strumieniowej, LOAS (Low Overhead Audio Stream) [65] kontener samosynchronizujący się, potrafiący prócz strumienia AAC zakodować strumieć Audio Lossless Coding, TwinVQ, SBR, PS; strumień koduje pojedynczy strumień, LATM (Low Overhead Audio Transport Multiplex) jest rozszerzeniem LOAS na wiele strumieni. Z punktu widzenia niniejszej pracy funkcjonowanie tego modułu nie jest istotne, dlatego obszerny opis zostaje pominięty. W pracy wykorzystano jako koder referencyjny strumień ADTS, który jest wykorzystywany przez koder Free AAC. 3.1.3 USAC Koder Unified Speech and Audio Coding (USAC) [89] jest standardem MPEG-D część 3 [67] lub MPEG-4 Audio Object Type[66][6]. Standard jest połączeniem kodera kodowania mowy i dźwięku/muzyki. Dotychczas użytkownik musiał zdecydować, czy wybrana sekwencja prezentuje mowę czy dźwięk/muzykę. Często jednak było to trudne, bo muzyka przenikała się z mową. Poprawne wybranie rodzaju sekwencji pozwala na wybranie użycie wyspecjalizowanego kodera. Nowy standard USAC pozwala na kodowanie dwóch rodzajów sekwencji, a przełączanie między koderem audio, a koderem mowy odbywa się automatycznie. Na rys. 3.7 przedstawiono schemat działania dekodera USAC. Jego lewa część jest bardzo podobna do schematu dekodera AAC. Wprowadzono tutaj jedynie rozdzielenie dekwantyzacji od skalowania oraz wprowadzono kodowanie/dekodowanie arytmetyczne. Po prawej stronie można zauważyć koder mowy Algebraic Coded Excitation Linear Prediction (ACELP). W koderze odpowiedni moduł decyduje w którym trybie: mowy czy muzyki sekwencja ma być kodowana. 46

Rysunek 3.7: Schemat dekodera USAC. Widoczne na nim dwie gałęzie odpowiedzialne za kodowanie dźwięku i mowy. 3.2 Kodery Fundacji XIPH.org 3.2.1 OGG Vorbis Kodek Vorbis [112, 57] rozwijany przez Fundację Xiph.org, pierwszy raz został ustandaryzowany w 2000 roku. Kodek ten porównywany jest do MPEG MP3 i AAC. Na rys. 3.8 przedstawiono prosty schemat dekodera standardu Vorbis. Na pierwszym etapie strumień audio jest dekodowany oraz wydzielane są odpowiednie parametry. W szczególności są to niskoczęstotliwościowe współczynniki spektralne (floor) i wysokoczęstotliwościowe współczynniki spektralne (emphresidua). Kolejnym etapem dekodowania jest wykonanie odwrotnego sprzężenia kanałów sygnału audio, by uzyskać dane dla poszczególnych kanałów oddzielnie. Następnie z zdekodowanych danych współczynników niskoczęstotliwościowych odtwarza się obwiednię energii w pasmach Barkowych dla poszczególnych ramek. Do tak odtworzonej energii dodaje się odtworzone wartości residuów, rekonstruując w ten sposób pełne spektrum sygnału. Obliczone spektrum poprzez transformację odwrotną IMDCT oraz odpowiednie złożenie jest przekształcane na próbki sygnału w dekoderze. 47

Rysunek 3.8: Schemat dekodera Vorbis, gdzie floor to niskoczęstliwościowe współczynniki spektralne, a residua, to wysokoczęstotliwościowe współczynniki spektralne. 3.2.2 OPUS Standard Opus [111, 56] jest najnowszym standardem fundacji Xiph.org. Podobnie jak USAC, łączy kodowanie muzyki z kodowaniem mowy. Bazuje na działaniu dwóch koderów: CELT (Constrained Energy Lapped Transform), odpowiedzialnego za kodowanie muzyki oraz SILK (projektowanego jako koder mowy przez Skype) kodującego mowę, co przedstawiono na rys. 3.9. Na rysunku zaznaczono także bloki odpowiedzialne za konwersję/decymację do odpowiedniej częstotliwości próbkowania. Rysunek 3.9: Schemat dekodera Opus. Zasada działania CELT jest oparta na działaniu kodera mowy CELP (Code-excited linear prediction) [93]. Najciekawszym aspektem, z punktu widzenia opisywanych w niniejszej pracy badań, jest kwantyzacja zastosowana w OPUS. Współczynniki częstotliwościowe są kwantowane w procesie trzyetapowym (patrz rys. 3.10): Szacowanie zgrubne (coarse) zgrubnie szacowana jest obwiednia sygnału. Stosowane są także predykcje inter (opcjonalnie) oraz intra. 48

Szacowanie szczegółowe (fine) sterowanie alokacją bitów podaje ile przeznaczonych bitów jest na ten etap. Kodowana jest korekta zgrubnego szacowania na pozostałych bitach. Końcowy (finalise) jeśli w poprzednim etapie zostały niewykorzystane jakieś bity, to są one przyporządkowywane do odpowiednich pasm. Do kwantowania kształtu widma wykorzystuje się Piramidową Kwantyzację Wektorową (Pyramid Vector Quantization PVQ). W dekoderze znajduje się także moduł alokacji bitów. Jest on potrzebny, by odtworzyć dokładnie kontekst i przyporządkowanie bitów, jakie było w koderze. Dzięki swojej strukturze Opus nie korzysta z żadnego modelu psychoakustycznego, Rysunek 3.10: Schemat dekodera CELT. pozwala jednak przesłać więcej informacji (niż np. koder AAC) o strukturze widma, a mniej informacji pobocznych (jak np. w AAC numery książek kodowych, czy Scale Factor). Dzięki zmniejszeniu przesyłu dodatkowych informacji, więcej bitów może być przeznaczonych na samo kodowanie współczynników. Opus wykorzystuje predykcję zarówno inter, jak i intra. Aby usprawnić kodowanie stosuje się dodatkowo techniki: wzmocnienia pasma (band boost) wzmacnia się pojedyncze pasma, zmiana rozdziału bitów w pasmach, omijanie, niekodowanie wybranych pasm (band skipping). 49

3.3 Kodery Microsoft Corporation W obecnych czasach często używane są także autorskie, komercyjne kodery. Należą do nich m.in. Windows Media Audio (WMA) zaprojektowany przez Microsoft. Koder jest oprogramowaniem zamkniętym i jego schemat nie jest przedstawiony jawnie. Dostępne oprogramowanie WMA nie posiada publicznych kodów źródłowych. Z tego też powodu koder ten w dalszych badaniach zostaje pominięty. Dostępny koder WMA w wersji WM Runtime 12.0.9600.16384, Windows Media Audio 9.2 automatycznie dokonywał przepróbkowania sekwencji do częstotliwości próbkowania 44.1kHz, co stanowi drugi powód do nieuwzględniania WMA w dalszych badaniach. Podsumowanie W rozdziale przedstawiono przegląd współczesnych algorytmów kompresji dźwięku oraz podano krótki opis każdego z nich. Większą uwagę przywiązano do standardu MPEG 2/4 Advanced Audio Coding z uwagi na jego wykorzystanie w niniejszej pracy do przeprowadzenia badań nad optymalizacją algorytmu kompresji. 50

Rozdział 4 Porównanie efektywności i możliwości koderów dźwięku Badania opisane w tym rozdziale mają za zadanie analizę dostępnych narzędzi w koderach referencyjnych FAAC i NERO. Przebadany został wpływ użycia narzędzi TNS, MS, modułu wyboru długości okna oraz filtru dolnoprzepustowego na poprawę jakości kodowania w FAAC. Dla kodera NERO zostały przebadane tryby kontroli przepływności bitowej oraz grupowania krótkich okien. Narzędzia w obu koderach oraz ich wpływ na jakość kompresji zostały porównane w celu identyfikacji różnic między koderami FAAC i NERO. W efekcie podczas projektowania własnych algorytmów kompresji możliwe jest efektywne wykorzystanie lub pominięcie narzędzi z FAAC lub NERO. 4.1 Testy koderów Schemat układu testującego przedstawiono na rys. 4.1. Plik wejściowy w postaci próbek sygnału dżwiękowego jest kompresowany wybranym koderem, następnie dekodowany za pomocą dekodera. Jeśli testowany koder miał swój odpowiednik w postaci dekodera, to został on użyty. W przypadku koderów standardu AAC nie wszystkie kodery miały swój dekoder, dlatego sekwencje były dekodowane za pomocą dekodera FAAD, który jest komplementarny do kodera FAAC. Wynik dekodowania był porównywany z sekwencją oryginalną za pomocą aplikacji obliczających miarę PEAQ ODG. Dla zapewnienia poprawnych wyników przed porównaniem sekwencje zostawały odpowiednio zsynchronizowane w czasie (zniwelowanie przesunięć spowodowane większą lub mniejszą liczbą próbek zerowych wprowadzanych na początku sekwencji) Po zakodowaniu i rekonstrukcji sekwencji miary jakości ODG zostały zinterpolowane wg metody przedstawionej w rozdz. 2.5 do przepływności bitowej 128kb/s, a uzyskane w ten sposób wyniki użyte do porównania. Na rys. 4.2 przedstawiono wyniki porównania 51

Rysunek 4.1: Schemat testowania koderów audio Rysunek 4.2: Porównanie różnych dostępnych koderów dla przepływności bitowej 128kb/s stereo dla sekwencji opisanych w rozdz. 2.3. Jak widać, najlepsze wyniki zostały uzyskane w następującej kolejności: Nero, Opus, Ogg/Vorbis, Qaac. Na przykładowym wykresie na rys. 4.4 dla sekwencji vbrtest48 zamiszczono zależność przepływności bitowej (bitrate) i jakości zakodowanej sekwencji w mierze ODG dla różnych koderów. Warto zauważyć, że koder oznaczony jako 3gpp daje bardzo słabe wyniki i tylko w przedziale ok.20 50kb/s, co czyni go nieprzydatnym w dalszych badaniach. Także koder USAC, który z założenia powinien być nie gorszy od AAC daje słabe wyniki, ale przypuszczalnie w przyszłości aplikacja będzie rozwijana i osiągnie zakładany poziom jakości. Przeprowadzono także testy koderów dla tych samych sekwencji monofonicznych. Wyniki przedstawiono na rys. 4.3. Kodery FAAC i NERO także dla tych sekwencji dają dobre wyniki. Najlepsze wyniki uzyskują kodery Ogg/Vorbis i Opus, jednakże kodery te są koderami innych standardów niż AAC. Koder itunes został pominięty, ponieważ nie udało się uzyskać wyników dla sekwencji monofonicznych. 52

Wszystkie kodery przetestowano na sekwencjach stereofonicznych i odpowiadającym im sekwencjom monofonicznym. Algorytmy kontroli przepływności bitowej ustawiano na stałą przepływność bitową (CBR). W standardzie AAC, jeśli było możliwe, włączono dodatkowe opcje takie jak: TNS, MS, wybór długości okna. Wszystkie opcje nie występujące w profilu małej złożoności (Low Complexity LC) zostały wyłączone. Szczegółowe informacje na temat uruchamiania koderów przedstawiono w załączniku A. Rysunek 4.3: Porównanie różnych dostępnych koderów dla przepływności bitowej 128kb/s mono Przebadanie takiej liczby koderów pozwoliło wybrać koder, którego działanie i wyniki będą referencyjne dla projektowanego kodera. Wśród czterech najlepszych są dwa kodery standardu AAC, jeden Opus i jeden Vorbis. Rozprawa jest poświęcona technikom optymalizacji w standardzie AAC, dlatego wybór kodera, do którego osiągów będzie porównywany projektowany koder pada na jeden z koderów tegoż standardu. Wybrano implementację NERO, gdyż daje lepszą jakość oraz prawdopodobnie bazuje na koderze FAAC, można więc przypuszczać, że część funkcjonalności i algorytmów będzie podobna w obu koderach. FAAC jest jedynym koderem AAC, który ma otwarty kod i jego wyniki są zadowalające. Podsumowując, koderem bazowym, na którym były przeprowadzane badania, rozwijane i testowane algorytmy jest FAAC. NERO jest koderem, do którego została porównywana skuteczność i jakość kompresji. 53

Rysunek 4.4: Zależność jakości dźwięku w mierze ODG od przepływności bitowej (bitrate) dla testowanych koderów 4.2 Testy kodera FAAC Jako bazowy koder do rozwijania własnych algorytmów został wybrany koder Free AAC (FAAC). Ma on w pełni upubliczniony kod źródłowy. W badaniach koder FAAC posłużył jako środowisko do testowania różnych algorytmów, które wprowadzane były zamiast tych użytych przez twórców tej implementacji. W pierwszej kolejności sprawdzono, jakie opcje kodowania obsługuje, jaki dają efekt i czy zgodnie z oczekiwaniami, użycie tych narzędzi poprawia efektywność kompresji. W załączniku B przedstawiono te opcje wraz z ich obsługą i krótkim opisem możliwości. Poszczególne opcje zostały przetestowane i przeanalizowane w kolejnych podrozdziałach. 4.2.1 TNS kształtowanie szumu kwantyzacji Na kilku sekwencjach przeprowadzono dwa kodowania, z włączonym i wyłączonym TNS. Wynikowe ODG porównano w obu przypadkach. Badania przeprowadzono dla różnych przepływności bitowych. Dla sprawdzenia poprawności przeanalizowano strumień zakodowanych plików, gdzie można było potwierdzić użycie TNS. Przykładowe charakterystyki przedstawiono na rys. 4.5. 54

Rysunek 4.5: Przykładowy przebieg kodowania z właczonym i wyłaczonym TNS dla kodera FAAC Dla wszystkich testowanych sekwencji charakterystyki otrzymane dla włączonego TNS w FAAC były podobne do tych z wyłączonym TNS. Użycie TNS w przypadku kodera FAAC nie daje żadnego wzrostu jakości w mierze ODG. 4.2.2 Kodowanie stereo MS Podobne testy jak dla modułu TNS w FAAC przeprowadzono dla modułu kodowania stereo MS. Przykładowe wyniki przedstawiono na rys. 4.6. Dla wszystkich testowanych sekwencji wyniki były bardzo podobne. Niestety włączenie wyboru trybu MS nie tylko nie pomogło w kodowaniu, ale nawet pogorszyło jakość kodowanych sekwencji. Dla sprawdzenia działania modułu stereo przeprowadzono test na sekwencji, w której lewy i prawy kanał zostały zmiksowane razem i zapisane do pliku jako sekwencja stereo, przy czym starano się, aby kanały różniły się między sobą minimalnie. W ten sposób uzyskana została sekwencja nazwana pseudomonofoniczną. Dla takich sekwencji znów przeprowadzono test. Spodziewano się, że dla włączonego trybu MS jakość przy tej samej przepływności bitowej będzie dużo lepsza, ponieważ kanał sumacyjny będzie nieść całą energię sygnału, a różnicowy tylko minimalne różnice. Wyniki zobrazowane są na rys. 4.7. W tym przypadku znów włączenie MS nie dało pozytywnych rezultatów. Analiza kodu źródłowego kodera wskazała na przyczynę takich wyników. Moduł kwantyzacji w koderze dla zadanej przepływności bitowej 55

Rysunek 4.6: Przykładowy przebieg kodowania z właczonym i wyłaczonym trybem MS dla kodera FAAC dla sekwencji stereo Rysunek 4.7: Przykładowy przebieg kodowania z właczonym i wyłaczonym trybem MS dla kodera FAAC. Test przeprowadzony dla sekwencji pseudomonofonicznej 56

BR każdemu kanałowi przydzielał po BR/2 dostępnych bitów. Zatem w przypadku sekwencji pseudomonofonicznej kanał sumacyjny otrzymywał budżet bitowy wynoszący BR/2 bitów, a kanał różnicowy, który niesie bardzo mało energii i mógłby być nawet pominięty, dostaje niepotrzebnie drugą połowę budżetu. Bardzo podobne rezultaty otrzymano, gdy wprowadzono bardzo prosty algorytm wyboru trybu LR/MS. Algorytm obliczał dla każdego pasma liczbę bitów potrzebną do zakodowania w trybie LR i MS i wybierał tryb, który potrzebował najmniejszej liczby bitów. Przez to, że na pierwszy i drugi kanał przeznaczana jest jednakowa liczba bitów, wynik kodowania się nie poprawił. Kodując sekwencję stereo, w której lewy i prawy kanał są identyczne, czyli de facto sekwencja jest monofoniczna, uzyskuje się charakterystyki jak na rys. 4.8. W tej sekwencji kanał sumacyjny niesie całą energię sygnału, a różnicowy jest wyzerowany. Zerowanie energii Rysunek 4.8: Przykładowy przebieg kodowania z właczonym i wyłaczonym trybem MS dla kodera FAAC. Test przeprowadzony dla sekwencji stereo w której lewy i prawy kanał jest identyczny spowodowało, że kanał różnicowy w ogóle nie był kodowany i przepływność bitowa sekwencji spadła, co spowodowało diametralną poprawę charakterystyk dla modułu MS. Z przeprowadzonych testów można wyciągnąć wniosek, że tryb MS nie działa poprawnie w koderze FAAC. Dla poprawienia jakości działania modułu MS należy uwzględniać energię dla obu kanałów LR lub MS, a budżet bitowy rozdzielać odpowiednio między pasma i kanały. 57

4.2.3 Zastosowanie różnych długości okna w FAAC W koderze FAAC istnieją trzy tryby wyboru długości okien. Pierwszy, o numerze zero, to tryb w którym koder analizuje sygnał i odpowiednio dobiera długość okien. Dla sygnałów transjentowych wybierana jest seria ośmiu krótkich okien, a dla sygnałów stacjonarnych okna długie. Pomiędzy oknami długimi a krótkimi wybierane są odpowiednie okna przejściowe. Taka konfiguracja pozwala najlepiej dopasować się do sygnału i osiągnąć najlepsze wyniki. Pozostałe dwie konfiguracje wymuszają tylko okna długie, albo tylko okna krótkie. Tryby te są wykorzystywane tylko w projektowaniu i testowaniu poprawności algorytmów. 4.2.4 Filtr dolnoprzepustowy Próbki czasowe na wejściu kodera trafiają do modułu transformacji MDCT. Tam przetransformowane w dziedzinę częstotliwości trafiają do kolejnych modułów kodera. W domyślnych ustawieniach kodera AAC włączony jest filtr na częstotliwości 16kHz. Na wyjściu MDCT odpowiednie współczynniki wysokoczęstotliwościowe są zerowane. Koder FAAC pozwala jednak na zmianę tej częstotliwości. Przeprowadzono badania zależności jakości skompresowanych sekwencji od wartości częstotliwości odcięcia filtra dolnoprzepustowego. Na rys. 4.9 przedstawiono wyniki. Jak widać, rozszerzenie filtra dolnoprzepustowego do 20kHz poprawia wyniki. Rysunek 4.9: Porównanie efektywności kodowania kodera FAAC dla wartości filtra dolnoprzepustowego 16kHz i 20kHz 58

4.3 Testy kodera Nero Koder Nero jest bardzo rozbudowanym koderem AAC. Obsługuje tryby niskiej złożoności Low-Complexity (LC) i wysokiej wydajności High-Efficiency (HE), przeznaczonego do kodowania z niskimi przepływnościami bitowymi. Dla założonej w pracy przepływności bitowej 128kb/s dla stereo i 64kb/s dla sekwencji mono, interesujący jest tryb LC, ponieważ jest on zaprojektowany do kodowania sekwencji przy tych przepływnościach bitowych. Mimo, że koder Nero jest koderem zamkniętym, to dzięki zastosowaniu dekodera FAAD, można sprawdzić jakie narzędzia są wykorzystywane. Nero wykorzystuje następujące narzędzia: TNS, MS, wybór długości okien, wybór kształtu okien, grupowanie krótkich okien, tryby kontroli przepływności bitowej. Niestety koder nie ma opcji włączania/ wyłączania części z tych narzędzi, dlatego wyniki porównania dla wyłączonych i wyłączonych opcji nie zostaną tutaj przedstawione. Wszystkie testy dotyczące kodera NERO przeprowadzone zostały dla włączonych, wcześniej wymienionych, narzędzi. Dalej zostaną przedstawione krótkie opisy narzędzi wcześniej jeszcze nie opisanych. 4.3.1 Grupowanie krótkich okien Standard AAC dla sekwencji okien krótkich definiuje możliwość ich grupowania. Sekwencję ośmiu okien krótkich można pogrupować w 1 8 grup. Okna mogą być grupowane dowolnie, ale muszą ze sobą sąsiadować. Grupowanie okien oznacza łączenie skwantowanych współczynników z tego samego pasma, ale różnych okien w jedną grupę, która jest kwantowana z użyciem jednego SF. Takie grupowanie pozwala na użycie mniejszej liczby SF oraz HCB do zakodowania całej ramki. Wadą takiego rozwiązania jest to, że SF musi być dopasowany do większej liczby okien, co może pogarszać jakość rekonstrukcji. W koderze FAAC okna zawsze grupowane są w jedną grupę. SF i HCB jest wspólna dla poszczególnych pasm ze wszystkich ośmiu okien. 4.3.2 Tryby kontroli przepływności bitowej NERO obsługuje trzy tryby kontroli przepływności bitowej: VBR, ABR i CBR. W trybie VBR, czyli trybie o zmiennej przepływności bitowej (Variable BitRate), bity rozdzielane między ramki są w taki sposób, by najwięcej otrzymały ich ramki, które tego najwięcej wymagają. Tryb VBR stara się utrzymywać stałą jakość dla całej sekwencji. Tryb ABR (Avarage BitRate) jest wariantem VBR, w którym jednak rozmiar pliku jest bardziej przewidywalny niż w VBR. Constant BitRate (CBR) jest to tryb, w którym przepływność bitowa jest stała w każdej ramce. Jest to historycznie najprostszy tryb kodowania. Jest on przystosowany do transmisji w sieci o określonej przepustowości. 59

Przetestowano wspomniane wyżej tryby rozdziału bitów. Dodatkowo przebadano tryb dwukrotnego przeglądania pliku (opcja 2pass). Tryb podwójnego przeszukiwania służy do wstępnego oszacowania i rozdziału bitów między ramki, a następnie właściwy przebieg i rozdział bitów (dla trybu VBR). Wszystkie wyniki zostały zamieszczone na rys. 4.10. Rysunek 4.10: Porównanie trybów rozdziału bitów w koderze NERO. Oznaczenie 2p podwójne przeszukiwanie pliku, nfb non filling bits z usuniętymi bitami dopełniajacymi Na rysunku zabrakło wyników dla ABR. W koderze Nero, po wybraniu ABR przepływność bitowa dla określonego pliku jest zawsze taka sama, różna od zadanej. Tryb ten nie jest możliwy do porównania z pozostałymi. Nie są znane powody takiego przebiegu algorytmu. Oprócz wyników dla wspomnianych trybów CBR, VBR, VBR 2pass podano dla każdego wyniki w wersji NFB (non-filling bits). W trybie CBR koder stara się trzymać stałą przepływność bitową dla każdej ramki. Liczba bitów w każdej ramce nie przekracza wyznaczonego limitu. Jeśli liczba jest mniejsza od progu, to do strumienia dodawane są dodatkowo bity wypełniające (filling bits). Wersja NFB uwzględnia przepływność bitową bez dodanych bitów wypełniających. Stwierdzono, że dla wiarygodnego porównania z projektowanymi algorytmami powinno porównywać się implementację NERO z włączonym trybem NFB. Mimo zastosowania CBR w NERO i bitów wypełniających, koder ten ma problemy z utrzymaniem stałej przepływności bitowej. Ostateczna średnia przepływność bitowa mierzona jako stosunek liczby bitów skompresowanej sekwencji dźwiękowej do czasu trwania tej sekwencji odbiega od założonego progu. Dla niektórych sekwencji, szczególnie dla tych 60

zawierających dosyć długie fragmenty ciszy, średnia przepływność bitowa spada znacznie poniżej zadanego progu. Zdarzają się także przypadki, w których przepływność bitowa jest większa od zadanego progu. Wykorzystanie bitów wypełniających w trybie CBR może być uzasadnione koniecznością utrzymania wynikowej przepływności bitowej na stałym poziomie. Można się spodziewać, że w trybach VBR bity wypełniające nie są potrzebne, gdyż przepływność bitowa nie musi być sztywno trzymana w każdej ramce. Zaoszczędzone w jednej ramce bity mogą być wykorzystane w kolejnych. Eksperyment dowiódł jednak, że z nieznanego powodu bity wypełniające są dodawane. Podobnie jest w trybie VBR 2 pass. Niespodziewane są także wyniki porównania VBR z VBR 2pass. Mogłoby się wydawać, że podwójny przebieg przez sekwencje powinien dawać lepsze wyniki. Są one jednak gorsze. Porównując CBR i VBR, zgodnie z oczekiwaniami VBR jest lepsze od CBR. Jednakże, gdy się porówna się wersje NFB obu trybów, to okazuje się, że CBR NFB jest minimalnie lepsze od VBR NFB. Zgodnie z tym, o czym już wspominano, koder NERO jest koderem o zamkniętych kodach źródłowych, więc nie jest możliwe znalezienie przyczyn tych anomalii. W dalszych testach porównawczych z projektowanymi koderami brane będą pod uwagę tryby CBR i CBR NFB, przy czym należy mieć na uwadze nie do końca przewidywalne działanie używania bitów wypełniania. Zgodnie z założeniami stałej przepływności projektowanego kodera, koder NERO jest testowany w trybie CBR. 4.4 Porównianie koderów FAAC i NERO 4.4.1 Wykorzystanie kodera Nero Dla badań projektowanego kodera (nazwanego FAACmod) i porównania go z możliwościami kodera Nero, wprowadzono układ testujący przedstawiony na rys. 4.11. Sekwencja testowa trafia do kodera NEROenc. Wynikowy plik aac trafia do dekodera NEROdec, gdzie jest dekodowany oraz do dekodera FAAD. Dekoder FAAD został zmodyfikowany tak, aby pobierał parametry pliku aac. Próbki sekwencji wejściowej także trafiają do testowanego kodera FAACmod. Jednakże, aby próbki wyjściowe po rekonstrukcji były zsynchronizowane z próbkami wyjściowymi z NEROdec, potrzebne jest odpowiednie przesunięcie realizowane przez blok cut. Koder FAACmod pobiera parametry (params) z FAAD i wykorzystuje je do kodowania. Zakodowana sekwencja.aac jest dekodowana w FAAD. Wyniki dekodowania obu koderów i dekoderów są porównywane z sekwencją oryginalną narzędziem PEAQ, które jako rezultat podaje wartość miary ODG. Wartościami pobieranymi z 61

kodera NEROenc są: długość i kształt okna, parametry grupowania okien krótkich, parametry TNS, współczynniki SF oraz wartości współczynników częstotliwościowych po skwantowaniu. Wspomniany blok cut ma za zadanie eliminowanie przesunięcia okien. Rysunek 4.11: Układ testujacy projektowany koder z możliwościa pobrania odpowiednich parametrów z kodera NERO Gdy sekwencje są przetwarzane parą NEROenc NEROdec lub FAAC FAAD nie występuje żadne dodatkowe przesunięcie. Jednak, gdy następuje przetwarzanie NEROenc FAAD, ramki są przesunięte o pewną liczbę próbek. Spowodowane jest to stosowaniem różnego rodzaju nagłówków w koderach. Uzyskane w ten sposób parametry oraz sekwencje muszą być zsynchronizowane. Aby odnaleźć przesunięcie między sekwencjami zidentyfikowano charakterystyczne próbki poszukano charakterystycznych próbek w sekwencji, np. mocniejsze uderzenia perkusji, i porównano odległość między dwoma plikami. Tak znaleziona różnica wynosi 576 próbek. Dla sprawdzenia, czy ta różnica jest poprawna (często trudno jest znaleźć wyraźne maksimum lub minimum), przeprowadzono następujący test. Ustawiono przesunięcie początkowe na 576 próbek. Następnie przesuwano jedną z sekwencji (oś pozioma na wykresie z rys. 4.12) lub drugą (oś pionowa) o kilka próbek. Dla tak przesuniętych próbek mierzono wartości ODG. Na rys. 4.12 przedstawiona jest powierzchnia ilustrująca zmiany ODG dla różnych przesunięć. W wymiarach poziomych są przesunięcia jednej sekwencji wobec drugiej. Istotnie zauważalny jest przebieg grzebietu po diagonalnej wykresu. Dowodzi to, że wartość 576 została dobrana poprawnie. 4.4.2 Wykorzystanie kodera Nero testy Zgodnie ze schematem przedstawionym na rys. 4.11 przeprowadzono kilka testów w zależności od parametrów uzyskanych z kodowania za pomocą NERO. W pierwszym teście z kodera NEROenc były pobierane informacje o wyborze długości okna, wyborze kształtu okna, parametrów TNS, użyciu grupowania okien krótkich oraz doborze SF. Takie dane przekazane do kodera FAACmod powinny dać zbliżone wyniki jak dla NEROenc. 62

Rysunek 4.12: Wykres 3D sprawdzajacy poprawność odnalezienia przesunięcia w synchronizacji sekwencji przetwarzanych para NEROenc FAAD Po przebadaniu okazuje się jednak, że miary ODG różnią się nawet o 0.5. Mimo zastosowania tych samych narzędzi i tych samych parametrów otrzymujemy różne wyniki. Drugi test oprócz przedstawionych w pierwszym teście parametrów dodatkowo importuje z Nero do FAACmod wartości skwantowanych współczynników częstotliwościowych. Po zakodowaniu i sprawdzeniu wartości ODG okazuje się, że wartości jakości są bardzo zbliżone do siebie, a zatem wartości w strumieniu bitowym zgadzają się. Oznacza to, że oprócz wymienionych tutaj narzędzi i możliwości koder NERO wykonuje jeszcze jakieś inne operacje. Wspomniano już, że NERO prawdopodobnie bazuje na koderze FAAC. FAAC korzysta z metody wyrównywania poziomów energii w pasmach nazwanej przez autorów Balance Energy. W niniejszej pracy przedstawianej jako Balance Energy Scale Factor (BESF)(rozdz. 7.1). Wspomniane różnice w wynikach mogą być spowodowane użyciem algorytmu BESF. Nie mając możliwości do sprawdzenia kodu NERO, przeprowadzono następujący eksperyment: 1. Zaimportowano parametry: długość okna, kształt okna, parametry TNS, opcje grupowania, SF (oznaczony jako SF N ) oraz współczynniki skwantowane z kodera NERO do FAAC 2. Dla każdego pasma SFB z pomocą współczynników transformaty MDCT i importowanych współczynników z NERO odgadywano użyte SF i oznaczane jako SF G. Odgadywanie polega na zakodowaniu pasma za pomocą kolejnych SF z przedziału SF N k < SF G < SF N + k, gdzie k N k < 10 i policzeniu SSE 1 dla każdego SF. Następnie wybierany jest SF dla którego SAD jest najmniejszy. 3. Porównane zostają uzyskane współczynniki dla kwantyzacji za pomocą SF N, SF G ze współczynnikami importowanymi z kodera NERO. 1 Sum of squared error (SSE) suma energii błędów) 63

Wyniki w większości przypadków pokazują, że stosując SF G do kwantyzacji, a następnie wstawiając do strumienia SF N, wyniki są bardziej zbliżone do NERO. Można zatem przyjąć, że autorzy kodera NERO wykorzystują algorytm BESF. Eksperyment wykazał także, że nie dla wszystkich współczynników udało się znaleźć idealne dopasowanie, mimo że nastąpiła poprawa dopasowania (zmniejszył się SAD). Wniosek jest taki, że oprócz BESF algorytmy NERO przeprowadzają jeszcze dodatkowe operacje. Przeanalizowano zatem wyniki poprzedniego eksperymentu. Wprowadzono trzy kryteria: 1. poprawy przepływności bitowej czy nowa wartość nie jest większa od pierwotnej, 2. poprawy błędu kwantyzacji czy nowa wartość błędu kwantyzacji nie jest większa od pierwotnego, 3. poprawy stosunku E orig /E dequant energii sygnału oryginalnego do energii sygnału zrekonstruowanego, Jako pierwotne rozumiane są wartości uzyskane ze współczynników powstałych z kwantyzacji przez współczynnik SF G. Nowe wartości są rozumiane jako wartości obliczone ze skwantowanych współczynników zaimportowanych z NERO. Zakłada się, że w NERO zmieniono wartości skwantowanych współczynników po BESF, tak aby poprawić przynajmniej jedno kryterium, najlepiej nie pogarszając innych. Przeprowadzony eksperyment ukazuje jednak takie przypadki, w których wszystkie trzy kryteria zostały pogorszone. Ten fakt podważa założenie, że w NERO został użyty np. algorytm BEOF (opisany w rozdz. 7.2), a dokonywane zmiany współczynników w koderze NERO pozostawia niejasnymi. 4.4.3 Wybór długości i kształtu okna Rysunek 4.13: Fragment porównania wyboru długości okna dla algorytmów FAAC (jasny kolor) i NERO (ciemny kolor). LONG - okno długie, LONG > SHORT - okno przejściowe z długiego na krótkie, SHORT - seria okien krótkich, SHORT > LONG - okno przejściowe z krótkich na długie Koder NERO korzysta z możliwości doboru długości okna dla poszczególnych ramek. Oczywiście algorytm doboru nie jest znany. Na rys. 4.13 przedstawiono fragment porównania 64

algorytmów wyboru długości okien dla algorytmów FAAC (jasny kolor) i NERO (ciemny kolor). Jak widać mniej więcej w tych samych momentach okna zmieniają się na krótkie, ale dla tej sekwencji FAAC wybierał zdecydowanie więcej okien krótkich w porównaniu do NERO. Sprawdzono, który wybór długości okien daje lepszą jakość dźwięku. Sekwencje testowe zakodowano algorytmem ESF (opisany w rozdz. 6.3) przy użyciu okien uzyskanych z FAAC (oznaczenie ESF) oraz przy zaimportowaniu okien z NERO (oznaczenie ESF_WS). Wyniki przedstawione na rys. 4.14 pozkazują, że wynik algorytmu wyboru długości okna w FAAC jest lepszy od NERO. Rysunek 4.14: Porównanie algorytmu ESF z użyciem okien z FAAC (ozn. ESF) i ESF z użyciem okien z NERO (ozn. ESF_ws) Dobór kształtu okna w FAAC był nieaktywny, zaś w NERO zachodzi prosta korelacja między długością okna, a jego kształtem. Dla okien długich wybierane są zawsze okna KBD (które są lepiej dopasowane do wygaszania sygnałów, gdzie więcej energii gromadzi w jednym współczynniku), a dla krótkich okna sinusowe (które mają lepszą selektywność i mogą być użyte do składowych tonalnych położonych blisko siebie). Zauważony fakt zastosowano w projektowanym koderze, jednakże badania przeprowadzone wykazały, że korzyść z takiego podejścia jest niewielka. 65

4.4.4 Wpływ wyboru długości okien na jakość kodowania Dla sprawdzenia wpływu wyboru długości okien na obiektywną jakość dźwięku przeprowadzono doświadczenie polegające na kodowaniu z wyborem długości okna, a następnie tylko z oknami długimi. Rysunek 4.15: Porównanie efektywności kodera FAAC z właczonym (FAAC) i z wyłaczonym (FAAC_L) algorytmem wybierania okien Wyniki dla kodera FAAC przedstawiono na rys. 4.15. Wynika z nich, że dobór okien jest potrzebny, gdyż poprawia jakość kodowania. Podsumowanie W rozdziale tym na bazie wyników wybrano koder NERO AAC jako najlepszy koder referencyjny oraz FAAC jako bazowy koder służący do testowania i modyfikowania projektowanych algorytmów. Następnie przeanalizowano narzędzia wykorzystywane w standardzie AAC i ich wpływ na jakość kodowania w koderze FAAC oraz NERO. W bazowym koderze FAAC, narzędzia MS, TNS nie poprawiają jakości skompresowanego dźwięku. Korzystny jest wybór długości okna analizy. W koderach NERO i FAAC te 66

wyniki są zbliżone do siebie. Zmiana wartości filtru dolnoprzepustowego na wejściu kodera FAAC z 16kHz na 20kHz także poprawia jakość dźwięku. 67

Rozdział 5 Model psychoakustyczny W pierwszej części rozdziału przedstawiono podstawowe zagadnienia percepcji słyszenia oraz zjawiska związane ze słyszeniem wykorzystywane podczas procesu stratnej kompresji dźwięku (np maskowanie). Następnie przedstawiono algorytmy modelów psychoakustycznych dostępnych w literaturze oraz zaproponowane modyfikacje i rozwiązania. Na koniec przetestowano modele i wybrano najlepszy pod względem uzyskiwanej jakości dźwięku. 5.1 Podstawy percepcji słyszenia W ludzkim narządzie słuchu [22][37] można wyróżnić trzy części: ucho zewnętrzne, ucho środkowe i ucho wewnętrzne. Każda z tych części ma inne zadanie i budowę. 5.1.1 Ucho zewnętrzne Fala akustyczna docierająca do ucha jest najpierw zniekształcana (w wyniku tłumienia) przez ramiona i głowę, i odbijania przy częstotliwości ok 1.5kHz. Częstotliwości ta odpowiada 22cm, czyli średniej średnicy głowy. Ucho zewnętrzne składa się z małżowiny usznej oraz kanału usznego. Zadaniem tej części jest zebranie fali akustycznej i dostarczenie jej dalej. Ucho zewnętrzne można przedstawić jako jednostronnie zamkniętą rurkę o długości ok. 2cm, co przyczynia się do powstania rezonansu przy częstotliwości ok 4kHz. Dzięki uchu zewnętrznemu możliwa jest także lokalizacja źródła dźwięku. 5.1.2 Ucho środkowe Zadaniem ucha środkowego jest zamiana drgań powietrza w drgania płynu w ślimaku (część ucha środkowego). Ponieważ ośrodki te są różne, to fala akustyczna odbijałaby się prawie całkowicie od cieczy. Ucho środkowe mechanicznie dopasowuje impedancję tak, aby jak najmniej energii było odbijane. Najlepsze dopasowanie występuje dla częstotliwości ok. 1kHz. 69

Fala akustyczna pobudza błonę bębenkową, do której przymocowane są kolejno trzy drobne kosteczki: młoteczek, kowadełko i strzemiączko. Pobudzają one błonę zwaną okienkiem owalnym. 5.1.3 Ucho wewnętrzne Ucho wewnętrzne jest odpowiedzialne za utrzymanie równowagi przez człowieka oraz przekształcanie energii mechanicznej drgającego płynu w energię impulsów elektrycznych w nerwach słuchowych. Główną częścią odpowiedzialną za słyszenie jest ślimak. Składa się on z trzech przewodów, zwiniętych w spiralę, wypełnionych płynem. Dwa z tych przewodów u szczytu są połączone. Drgania okienka owalnego przenoszą się na płyn. Wzdłuż jednej ze ścian, nazwanej błoną podstawną, znajduje się organ Cortiego, który zawiera ok. 15000 komórek rzęsatych w kilku rzędach. Pobudzone komórki przez falę akustyczną generują impulsy elektryczne, biegnące nerwami do mózgu, gdzie wrażenie akustyczne jest interpretowane. Działanie błony podstawnej i komórek rzęsatych można interpretować jako bank filtrów pasmowoprzepustowych. Taka interpretacja prowadzi do zdefiniowania pojęcia pasm krytycznych. W uchu wewnętrznym zachodzi też zjawisko tłumienia szumu wewnętrznego. To zjawisko jest np. wykorzystywane w modelu psychoakustycznym opisanym w rozdz. 5.7. 5.2 Ogólne zjawiska słuchu wykorzystywane w kodowaniu dźwięku Budowa narządu słuchu skutkuje pewnymi charakterystycznymi zjawiskami, które są wykorzystywane w większości współczesnych koderów audio. W tym rozdziale wspomniane zjawiska zostaną pokrótce omówione. 5.2.1 Progi słyszenia Obserwuje się pewien minimalny poziom natężenia dźwięku, poniżej którego człowiek nie słyszy danego dźwięku. Poziom ten jest zależny od częstotliwości. Na rys. 5.1 przedstawiono progi słyszenia w funkcji częstotliwości. 5.2.2 Pasma Barkowe Skala Barkowa jest skalą psychoakustyczną zaproponowaną przez Eberhard Zwickera [118] w 1961 roku. Nazwa skali wzięta jest od nazwiska Heinrich Barkhausena, który zajmował się 70

Rysunek 5.1: Przykład krzywej progów słyszenia subiektywnymi pomiarami głośności dźwięku. Skala Barkowa odpowiada pierwszym pasmom krytycznym. W celu przeliczenia częstotliwości f na Barki korzysta się z formuły: f Bark = 13 arctan(0.00076f) + 3.5 arctan(( 7500 )2 ) (5.1) 5.2.3 Maskowanie częstotliwościowe Eksperymenty odsłuchowe ukazują pewną prawidłowość. Zakłada się, że występują dwa jednoczesne sygnały tony: maskujący (zwany maskerem) i maskowany. Jeśli masker ma wyższy poziom niż sygnał maskowany, a odległość w dziedzinie częstotliwości jest odpowiednio duża, to oba tony są słyszalne. Jednakże, jeśli poziom maskera jest odpowiednio większy od tonu maskowanego, a odległość w dziedzinie częstotliwości jest wystarczająco mała, to okazuje się, że ton maskowany nie jest słyszalny. Jest to spowodowane tym, że oba tony trafiają do tego samego pasma krytycznego. Sygnał o większej energii tak modyfikuje progi słyszenia, że sygnał maskowany znajduje się pod progiem słyszenia. Zjawisko to zostało przedstawione na rys. 5.2. Eksperymenty psychoakustyczne pokazały, że krzywe maskowania zależą od: częstotliwości maskera, poziomu maskera, rodzaju sygnału maskera: czy jest on sygnałem szumu, czy tonem, różnicy częstotliwości maskera od sygnału maskowanego, 71

poziomu sygnału maskowanego. Rysunek 5.2: Maskowanie częstotliwościowe. Na rysunku masker modyfikuje progi słyszenia, tak że sygnał maskowany znajduje się poniżej krzywej maskowania i jest nie słyszalny. Krzywe maskowania mogą być modelowane za pomocą funkcji rozpraszającej (spreading function). Funkcje te wykorzystują splot funkcji maskującej i maskowanej. Istnieje kilka modeli funkcji rozpraszających: trójkątna, Zwickera [43], Schroedera [94] i jego modyfikacje oraz ustandaryzowane przez grupę ISO/IEC MPEG jako model psychoakustyczny I i II. 5.2.4 Maskowanie czasowe Maskowanie częstotliwościowe rozważa tylko przypadek gdy masker i sygnał maskowany występują jednocześnie. Poza wcześniej opisanymi zjawiskami występuje także maskowanie między sygnałami, które nie występują jednocześnie. Wyróżniamy dwa przypadki maskowania czasowego. Gdy sygnał maskowany występuje przed maskerem, mówimy wtedy o premaskowaniu. Gdy sygnał maskowany występuje po maskerze, mówimy o postmaskowaniu. Premaskowanie jest zjawiskiem nieintuicyjnym, jednak można je wytłumaczyć faktem, że słuch potrzebuje czasu trwania bodźca przez odpowiedni okres, by było ono możliwe do zinterpretowania przez mózg. Jeśli czas ten jest za krótki, to sygnał nie zostanie usłyszany. Czas premaskowania szacuje się na 20ms. Efekt postmaskowania jest dłuższy i trwa ok 150ms. Oba zjawiska przedstawiono na rys. 5.3 72

Rysunek 5.3: Maskowanie czasowe. Masker maskuje sygnały które znajduja się 50ms przed wystapieniem maskera oraz 150ms po jego wystapieniu 5.3 Model psychoakustyczny I Model psychoakustyczny I jest pierwszym zdefiniowanym modelem psychoakustycznym wykorzystywanym powszechnie w koderach audio. Obecnie został zastąpiony modelem psychoakustycznym II (opisanym w rozdz. 5.4). Uproszczony schemat [22] modelu I przedstawiono na rys. 5.4. W pierwszym etapie sygnał z dziedziny czasu jest transformowany w dziedzinę częstotliwości za pomocą FFT. Następnie liczony jest poziom ciśnienia akustycznego w każdym pasmie widma. Dalej wyznaczane są progi słyszenia. Każdy sygnał poniżej tych progów jest niesłyszalny. Ponieważ sygnał tonalny i szum mają inne zdolności maskujące, to na tym etapie są wyróżniane poszczególne typy składowych sygnału. Kolejnym etapem jest odrzucanie tych maskerów, które są poniżej poziomu maskowania sąsiadujących z nimi maskerów o wyższym poziomie. Dla tak wyznaczonego zestawu maskerów wyznacza się krzywe maskowania. Wyznaczone krzywe maskowania dla każdego maskera składa się w jedną, globalną krzywą maskowania dla całej ramki. Następnie wyznaczane są wartości progów maskowania dla każdego podpasma oraz wyznaczany jest stosunek sygnału do poziomu maskowania (SMR Signal to Mask Ratio). 5.4 Model psychoakustyczny II Model psychoakustyczny II jest szeroko stosowany w różnych koderach audio. Jego algorytm został przedstawiony w części nienormatywnej normy standardu AAC [61, 22]. Na wejście algorytmu modelu jest podawany zestaw próbek sygnału dźwiękowego, zaś na wyjściu uzyskuje się zestaw progów szumu kwantyzacji, które są maksymalnym możliwym poziomem zniekształceń, mogącym być zamaskowanym przez sygnał audio. Progi te są przestawione w odpowiednich dla standardu AAC pasmach częstotliwościowych (ScaleFactor Bands SFB). Uproszczony schemat modelu psychoakustycznego II [22] przedstawiono na rys. 5.5. Jak można zauważyć, algorytm został podzielony na dwie gałęzie obliczeń: indeksu tonalności i 73

Rysunek 5.4: Uproszczony schemat modelu psychoakustycznego I energii maskowania. W pierwszej fazie, podobnie jak w pierwszym modelu, sygnał wejściowy trafia do FFT transformującej próbki czasowe we współczynniki częstotliwościowe grupując je w pasma. Tonalność wyznaczana jest z miary nieprzewidywalności. Energia maskowania jest wyznaczana z energii w pasmach rozproszonej za pomocą funkcji rozproszenia. Następnie wyznaczane są krzywe maskowania oraz stosunek sygnału do progów maskowania. W odróżnieniu od Modelu I krzywa reprezentuje progi maskowania. Poziomy maskowania dla każdego pasma są porównywane z krzywą słyszenia po czym wybierana jest większa wartość. 74

Rysunek 5.5: Uproszczony schemat modelu psychoakustycznego II Takie podejście odróżnia Model II od Modelu I, gdzie energia maskowania krzywej ciszy była dodawana do maskerów. Na koniec krzywa maskowania jest mapowana z pasm modelu psychoakustycznego do pasm standardu AAC, w którym model będzie wykorzystywany. 5.4.1 Sczegółowy przebieg algorytmu wyznaczania progów w modelu psychoakustycznym II Dla rozróżnianych dwóch długości okien transformaty MDCT, okna dla modelu psychoakustycznego są także odpowiednio: długie (N = 2048 współczynniki) lub krótkie (N = 256 współczynników). Poszczególne okna nakładają się z przesunięciem N/2. W dalszej części opisu algorytmu zostanie zastosowana następująca notacja: w numer współczynnika częstotliwościowego transformaty FFT; zerowy współczynnik oznacza współczynnik DC, współczynnik o numerze 1023 oznacza częstotliwość Nyquista, b pasmo częstotliwościowe używane w modelu psychoakustycznym, zwane także partycją (partition), 75

n wskazuje, że indeksowanie odbywa się w dziedzinie pasm SFB; współczynnik o najmniejszej częstotliwości jest oznaczony zerem, W dalszej części pracy ten algorytm oznaczany jest jako PAM1. Schemat działania algorytmu wyznaczenia krzywych maskowania jest kilkuetapowy. Poniżej przedstawiono opis algorytmu, a na rys. 5.6 pokazano uproszczony schemat wyznaczenia krzywych maskowania. Na schemacie dodatkowo oznaczono jeszcze dwa bloki skalowania. Nie są one wykorzystywane w wyznaczaniu progów maskowania, ale posłużyły do walidacji algorytmu (patrz Rozdz 5.8). Rysunek 5.6: Szczegółowy schemat algorytmu modelu psychoakustycznego opisanego w nienormatywnej części standardu AAC Można stwierdzić, że algorytm przebiega dwuścieżkowo i obejmuje ścieżkę wyznaczenia tonalności i ścieżkę progów maskowania. W algorytmie można wyznaczyć kilka etapów: 76

1. Każde okno czasowe jest najpierw wymnażane odpowiednio przez funkcję Hanna, która jest obliczana za pomocą poniższego wzoru: sw(i) = x(i) ( ( 1 2 1 2 cos π ( i + 1 2 N ))), (5.2) gdzie s(i) jest to i-ta próbka, N długość okna, sw(i) to wartość próbki po okienkowaniu. 2. Transformacja sygnału z dziedziny czasu w dziedzinę częstotliwości. Na zokienkowanym sygnale obliczana jest transformata Fouriera (np. za pomocą algorytmu FFT): x(w) = N 1 n=0 sw(n) e j2π N nw. (5.3) Następnie wyniki FFT są przekształcane z układu kartezjańskiego (re(w), im(w)) w biegunowy, gdzie r(w) przedstawia amplitudę, a Φ(w) fazę. 3. Obliczanie wartości predykowanych r(w) i f(w) wyznaczone wartości biegunowe transformaty FFT służą do wyznaczenia wartości predykowanych r pred (w) i Φ pred (w): r pred (w) = 2 r(w)[t 1] r(w)[t 2] Φ pred (w) = 2 Φ(w)[t 1] Φ(w)[t 2], (5.4) gdzie indeksy t 1 i t 2, odpowiadają za wartości z kolejnych dwóch okien czasowych poprzedzających obecne. Wartości te wykazują, jak dobrze bieżący sygnał jest predykowany z dwóch ostatnich okien. 4. Obliczanie miary nieprzewidywalności (unpredictability measure) (c(w)). Miara ta mówi o tonalności r(w). Ogólne wyrażenie na wartość miary nieprzewidywalności wyraża się równaniem (5.5): p(w) = [r(w) cos(φ(w)) r pred (w) cos(φ pred (w))] 2 q(w) = [r(w) sin(φ(w)) r pred (w) sin(φ pred (w))] 2. (5.5) c(w) = p(w)+q(w) r(w)+ r pred (w) Stanowi to kwadratowy błąd predykcji przedstawiony w układzie biegunowym. okien krótkich powyższe równanie jest stosowane dla każdego okna FFT. Dla okien długich tylko pierwsze sześć współczynników c(w) jest obliczane za pomocą powyższego wyrażenia z długiego okna FFT. Pozostałe wartości są to minimalne c(w) obliczone z Dla 77

krótkich okien. Przy ograniczonych zasobach obliczeniowych można przyjąć, że ta liczba wynosi 0.4. Miara c(w) jest ograniczona w przedziale < 0; 1 >. 5. Obliczanie energii i nieprzewidywalności w pasmach modelu psychoakustycznego energia w pasmach modelu psychoakustycznego wyraża się następująco: E(b) = w max w=w min r(w) 2, (5.6) gdzie w min i w max to odpowiednio dolny i górny indeks w pasma b. Ważona nieprzewidywalność wyraża się następująco: C(b) = w max w=w min r(w) 2 c(w). (5.7) 6. Obliczanie splotu energii w pasmach i miary nieprzewidywalności z funkcją rozpraszającą splot energii z funkcją rozpraszającą wyraża się następująco: Ẽ(b 1 ) = b 1,b 2 E(b 2 ) S (m(b 2 ), m(b 1 )), (5.8) a splot nieprzewidywalności z funkcją rozpraszającą: c(b 1 ) = b 1,b 2 C(b 2 ) S (m(b 2 ), m(b 1 )), (5.9) gdzie b 1, b 2 to indeksy w dziedzinie pasm modelu psychoakustycznego partycji, S(i, j), to funkcja rozpraszająca zdefiniowana w 5.4.2, m(b) to wartość medianowa pasma modelu psychoakustycznego. Wartość c(b) jest znormalizowana do energii sygnału, dlatego trzeba ją renormalizować do c RN (b): c RN (b) = c(b) Ẽ(b). (5.10) Z uwagi na to, że funkcja rozpraszająca nie jest normalizowana, wartość Ẽ(b) powinna być zrenormalizowana do energii ẼRN(b): Ẽ RN (b) = Ẽ(b) RN(b), (5.11) gdzie funkcję normalizującą RN(b) opisano w 5.4.2. 78

7. Wyznaczenie indeksu tonalności z poniższej zależności: T (b) = 0.299 0.43 ln( c RN (b)), (5.12) przy czym wartość T (b) jest ograniczona do przedziału: 0 < T (b) < 1. Indeks tonalności bliski wartości 0 informuje, że sygnał w danym paśmie jest nietonalny. Wartość 1 oznacza tonalność pasma. 8. Obliczanie stosunku sygnał-szum (Signal to Noise Ratio SNR) w partycjach b realizowane jest następująco: SNR(b) = T (b) T MN(b) + (1 T (b)) NMT (b). (5.13) gdzie T MN(b) = 18dB, to wartość tonu maskującego szum (Tone Masking Noise), a NMT = 6dB to wartość szumu maskującego ton (Noise Masking Tone). Po wstawieniu wartości otrzymujemy wyrażenie: SNR(b) = T (b) 18dB + (1 T (b)) 6dB. (5.14) 9. Obliczenie stosunku energetycznego Obliczoną wartość SNR(b) wykorzystuje się do obliczenia stosunku energetycznego: bc(b) = 10 SNR(b)/10. (5.15) 10. Obliczanie właściwego progu energetycznego, który jest progiem maskowania: M thr (b) = ẼRN(b) bc(b). (5.16) 11. Uwzględnienie efektu pre-echa i progu słyszenia Dla uwzględnienia tych zjawisk wprowadza się następujące poprawki: M thr (b) = max [q thr (b), min (M thr (b), M thr,n 1 (b) win)], (5.17) gdzie: q thr (b) jest to próg słyszenia dla partycji b. Norma podaje wartości w db, które są następnie przeliczane na wartości liniowe energii. Progi zostały wyznaczone jako zależność od fali sinusoidalnej o wartości + 1/2LSB w FFT użytym w modelu psychoakustycznym. Szkic funkcji progów słyszenia przedstawiono na rys. 5.7. 79

Rysunek 5.7: Wykres funkcji progów słyszenia q thr (b) w zależności od pasma b M thr,n 1 (b) jest to próg dla pasma b dla poprzedniego bloku (okna), win jest to stała równa 1 dla okien krótkich lub równa 2 dla okien długich. 12. Wyznaczenie wartości progu maskowania dla kodeka oraz mapowanie pasm modelu psychoakustycznego b do pasm kodeka n Wprowadzone oznaczenia: n numer pasma SFB kodera, w min (n) pierwszy prążek FFT pasma n, w max (n) ostatni prążek FFT pasma n. Energię w paśmie SFB z FFT obliczamy następująco: E F F T (n) = w max(n) w=w min (n) r(w) 2. (5.18) Energię w paśmie SFB z MDCT obliczamy następująco: E MDCT (n) = w max(n) i=w min (n) x mdct (i) 2, (5.19) 80

gdzie x mdct (i) jest to prążek transformaty MDCT. Obliczanie progu dla partycji b znormalizowanej do jednego prążka FFT: M thr,n (b) = M thr w max (b) + 1 w min (b). (5.20) Obliczanie poziomu szumu w paśmie kodera z pasma FFT (mapowanie pasm) oraz przeskalowywanie do szerokości pasma n: M thr (n) = minimum (thr(w_low(n),..., w_high(n))) (w max (n) + 1 w min (n)). 13. Obliczanie wartości stosunku sygnału do maskera (Signal to Mask Ratio): (5.21) SMR(n) = E F F T (n) M thr (n) (5.22) oraz wartości maksymalnej dopuszczalnej energii błędu sygnału xmin(n) dla danego pasma kodera n: xmin(n) = E MDCT (n) SMR(n). (5.23) Następnie obliczone progi xmin dla wszystkich pasm (okien) są podawane do kwantyzera. Standard AAC umożliwia kodowanie każdego okna krótkiego osobno lub łączenie sąsiednich okien krótkich w grupy. Badany koder zakłada, że kodowane okna krótkie zawsze są połączone w jedną dużą grupę składającą się z ośmiu okien tak jak w FAAC. Dla wyznaczenia krzywych maskowania zaimplementowano dwa warianty: 1. Wariant niepołączony dla każdego okna krótkiego wyznaczane są osobno progi maskowania i są one podawane do modułu kwantyzacji czyli osiem zestawów progów maskowania. Moduł alokacji bitów dla każdego okna krótkiego porównuje jego szum kwantyzacji w pasmach z poszczególnymi progami maskowania. Współczynniki kwantyzacji ScaleFactor jednakże są wspólne dla wszystkich okien. 2. Wariant połączony na etapie klasyfikacji próbek do partycji i pasm (kroki 5. i 12.) próbki z poszczególnych pasm kolejnych okien są wliczane w to samo pasmo i dalej kodowane wg algorytmu. Wynikiem jest jeden zestaw progów maskowania dla wszystkich ośmiu okien. Są one zatem porównywane z sumą energii błędu kwantyzacji wszystkich okien krótkich. 81

5.4.2 Dodatkowe funkcje W algorytmach modelu psychoakustycznego są wykorzystywane dodatkowe funkcje przedstawione poniżej: 1. Funkcja rozpraszająca (Spreading function) funkcja modeluje wzajemny wpływ maskowania częstotliwościowego na sąsiadujące pasma częstotliwościowe. Przykładowe charakterystyki przedstawiono na rys. 5.8 Rysunek 5.8: Przykładowy wykres funkcji rozpraszajacej dla pasma 10 i pasma 50. Na rysunku jest widoczny wpływ wymienionych pasm na pasma sasiednie Nachylenie funkcji maskowania dla prawej strony można przedstawić następująco: α = 3(j i), (5.24) a dla lewej części: α = 1.5(j i). (5.25) Zmienna i to wartość w skali Barkowej, która jest rozpraszana, a wartość j to wartość Barkowa, w którą jest rozpraszany sygnał. Następnie, dla kolejnych parametrów: a = 8 min ( (α 0.5) 2 2 (α 0.5); 0 ), (5.26) b = 15.811389 + 7.5(α + 0.474) 17.5 1.0 + (α + 0.474) 2. (5.27) 82

Jeśli parametr a > 100, to szukana wartość funkcji rozproszenia, reprezentującej maskowania tonu przyjmuje kształt: S(i, j) = 10 a+b 10, (5.28) w przeciwnym przypadku S(i, j) = 0. 2. Funkcja normalizująca RN Rysunek 5.9: Przykładowy wykres funkcji normalizujacej (w zależności od numeru pasma b) rnorm dla okien długich oraz rnorm_sh dla okien krótkich Funkcja normalizująca RN(b) wyraża się następująco: RN(b 1 ) = 1 b 1,b 2 S (m(b 2 ), m(b 1 )) (5.29) gdzie m(b) to wartość medianowa pasma modelu psychoakustycznego podana w normie. Wykres funkcji przedstawiono na rys. 5.9. 5.5 Zmodyfikowany model psychoakustyczny II Algorytm zmodyfikowanego modelu psychoakustycznego w dużej mierze jest zgodny z modelem opisanym w 5.4. Tutaj zostaną przedstawione tylko jego modyfikacje [104, 50]. Schemat blokowy algorytmu przedstawiono na rysunku rys. 5.10. Bloki skalowania wyróżnione 83

kolorem nie są częścią algorytmu. Uzasadnienie ich użycia przedstawiono w rozdz. 5.8. W dalszej części pracy algorytm ten oznaczany jest jako PAM2. Rysunek 5.10: Schemat blokowy zmodyfikowanego algorytmu modelu psychoakustycznego Pierwszą zasadniczą zmianą jest transformacja z dziedziny czasu w dziedzinę częstotliwości. W pierwotnym podejściu była to transformata FFT, w PAM2 zastosowano zmodyfikowaną transformację kosinusową (MDCT). Zaletą takiego podejścia jest to, że standard AAC wymaga obliczenia transformaty MDCT do późniejszej kwantyzacji współczynników. Zatem, stosując MDCT w modelu psychoakustycznym, można ograniczyć zasoby obliczeniowe do jednej transformacji. Autorzy publikacji [101] dowodzą, że zamiana FFT na MDCT nie pogarsza wyników kompresji. Zmiana transformacji sprawia, że współczynniki częstotliwościowe po MDCT są rzeczywiste, a nie zespolone jak w przypadku FFT. Skutkuje to dalszą niemożnością zastosowania kolejnych części algorytmu modelu psychoakustycznego (brakuje części urojonej współczynników), ponieważ nie jest możliwe obliczenie miary nieprzewidywalności. Z tego powodu modyfikacja algorytmu wprowadza nową wielkość miary płaskości widma (Spectral Flatness Measure SFM) [77, 75, 47], która jest wyrażona w następujący sposób: SF M(b) = 10 log 10 Gm(b) Am(b), (5.30) 84

gdzie Gm(b) = ( N 1 i=0 a i ) 1 N jest średnią geometryczną wszystkich współczynników w paśmie sfb, a (5.31) Am(b) = 1 N N 1 i=0 a i (5.32) średnią arytmetyczną tych współczynników. Zakłada się, że uwzględniane są tylko współczynniki niezerowe (inaczej średnia geometryczna byłaby równa zero). wartość SFM(b) podstawiamy do równania Obliczoną T (b) = SF M(b) 60 (5.33) które następnie podstawiamy zgodnie z opisem algorytmu 5.4 do równania 5.14. Następne obliczenia odbywają się zgodnie z algorytmem pierwotnym. Wszystkie obliczenia odbywają się w dziedzinie pasm kodera AAC, dlatego też funkcja progu ciszy zostaje przeskalowana w tę dziedzinę. Na rys. 5.11 przedstawiono przebieg zmodyfikowanej funkcji q thr. Rysunek 5.11: Funkcja absolutnego progu słyszenia q thr w dziedzinie pasm sfb standardu AAC Zastosowanie w tym algorytmie wyników transformacji MDCT upraszcza jeszcze kolejne obliczenia. Zarówno wartość E F F T (n), jak i E MDCT (n) są obliczane w tym przypadku ze współczynników MDCT, zatem są sobie równe. W rezultacie xmin(n) = M thr (n) (5.34) 85

Dla usprawnienia algorytmów, szczególnie do zastosowań sprzętowych można wszystkie operacje przenieść w dziedzinę logarytmiczną [105, 106, 107, 9, 49]. Wtedy iloczyny zostają zastąpione dodawaniem, a ilorazy odejmowaniem. Istnieje także rozwinięcie algorytmu bazującego na SFM do Partial SFM (częściowe SFM) [99, 100, 98]. Model psychoakustyczny stosuje filtry o nieskończonej odpowiedzi impulsowej oraz wyznacza mierzę SFM dla każdego przefiltrowanego pasma, co ma poprawić jakość dźwięku. 5.6 Model psychoakustyczny w koderze 3gpp Implementacja modelu psychoakustycznego z kodera 3gpp jest wykorzystywana w niektórych pracach np.: [12, 13, 11] do przeprowadzenia badań testowych. W ramach prowadzonych prac własnych przeprowadzono testy nad działaniem kodera 3gpp, które dały wyniki bardzo słabe. Przeniesienie działania algorytmu 3gpp do własnego kodera nie przyniosło także żadnych dobrych wyników. Średnia miara ODG dla 64kbit/s na testowanych sekwencjach monofonicznych wyniosła -2.056, a mediana -2.114. W dalszej pracy koder 3gpp i model psychoakustyczny w nim zawarty zostają pominięte. 5.7 Model psychoakustyczny bazujacy na PEAQ W standardzie PEAQ do porównania sekwencji testowej i referencyjnej korzysta się z kilku miar składowych. Jedną z nich jest stosunek szumu kwantyzacji do poziomu maskowania (NMR). Miara ta jest bardzo często wykorzystywana w koderach audio jako miara zniekształceń, które dzięki efektowi maskowania nie będą słyszalne dla człowieka. Do przedstawionych już algorytmów modelu psychoakustycznego zaimplementowano także w koderze model psychoakustyczny bazujący na mierze NMR z narzędzia PEAQ. W dalszej części pracy ten algorytm oznaczany jest jako PAM4. Na rys. 2.1 przedstawiono algorytm wyznaczania NMR dla PEAQ. Porównywano tam sygnał referencyjny i sygnał testowy. Błąd był liczony dla różnicy tych sygnałów. Projektowany algorytm modelu psychoakustycznego bazującego na PEAQ przedstawiono na rys. 5.12. Widoczna jest tu tylko jedna ścieżka dla sekwencji kompresowanej (lewa gałąź). Dodatkowo można zauważyć inny sposób wyznaczenia błędu. W standardzie AAC w odróżnieniu do PEAQ jako transformację wykorzystuje się MDCT, dlatego też zaprojektowano dodatkową ścieżkę. Jest ona zgodna z przebiegiem algorytmu AAC. Po transformacji w dziedzinę częstotliwości, sygnał jest kwantowany (Q) i dekwantowany (dq). Po filtracji sygnału częstotliwościowego i jego zrekonstruowanej wersji liczony jest błąd. Aby zapewnić ten sam poziom sygnału, jaki jest w głównej gałęzi (lewej), sygnał zostaje przeskalowany w taki sam sposób jak w gałęzi głównej. Dla zapewnienia 86

Rysunek 5.12: Schemat modelu psychoakustycznego bazujacego na algorytmie PEAQ kompatybilności ze standardem AAC pasma barkowe z PEAQ zostają przemapowane na pasma SFB. W końcowym etapie poziom maskowania wyznaczony w lewej gałęzi jest porównywany z poziomem błędu. Istotnymi różnicami między oryginalnym algorytmem w PEAQ, a przedstawionym powyżej są: dla gałęzi błędu używane jest MDCT, a nie FFT jak to ma miejsce w PEAQ, zmiana długości pasm, zamiast Barkowych, pasma SFB zgodne z AAC. Próbę zaadaptowania całego modelu psychoakustycznego zaczerpniętego z PEAQ podjęli autorzy artykułu [48] w 2006 roku. Przedstawione wyniki mówią o poprawie miary obiektywnej ODG, jednakże w testach subiektywnych nie stwierdzono poprawy, gdyż jak stwierdzają autorzy wystąpiły pewne problemy. Dotychczas jednak autorzy nie opublikowali poprawek w algorytmie ani wyników ostatecznej realizacji. 87

5.8 Moduły skalowania Zarówno na schemacie z rys. 2.1 jak i rys. 5.12 występują moduły skalowania. W aplikacji PEAQ moduł skalowania został użyty dla zapewnienia poprawnego mapowania poziomu sygnału wejściowego do głośności [78]. Dla zapewnienia kompatybilności projektowanego modelu psychoakustycznego z modelem z PEAQ moduł ten został zachowany. Jednakże, aby poziomy sygnału progów maskowania i błędu w projektowanym modelu psychoakustycznym były takie same, należało także odpowiednio przeskalować poziom błędu, stąd dodatkowy moduł skalowania. Na schematach modeli psychoakustycznych II na rys. 5.6 i jego modyfikacji 5.10 także zamieszczono moduły skalowania. We właściwym algorytmie skalowanie nie jest obecne. Jest ono jednak wykorzystywane jedynie w przypadku porównywania wyników modelu II i jego modyfikacji z modelem przejętym z PEAQ. 5.9 Porównanie modeli psychoakustycznych Przedstawione powyżej modele psychoakustyczne zostały zaimplementowane. Przykładowy przebieg wyznaczonych krzywych maskowania dla trzech algorytmów został zareprezentowany na rys. 5.13. Modele psychoakustyczny II i jego modyfikacja zostały przeskalowane, zgodnie z opisem w rozdz. 5.8, dla zapewnienia tego samego poziomu jaki reprezentuje model z PEAQ. Dla porównania podano także poziom energii sygnału przed i po skalowaniu. Z wykresów widać, że krzywe maskowania nie są identyczne, ale ich przebiegi mają podobny charakter. PAM sekwencja ODG br[bity] ANMR[dB] ANMRS[dB] TotalNMR[dB] 1 m_57bach -3.588 32-4.07 1.06-8.14 1 m_blackbird48-3.675 48-0.25 0.05-7.42 1 m_testsignal248-2.498 48-0.08 0.01-8.10 2 m_57bach -3.600 32-2.36 1.64-8.24 2 m_blackbird48-3.309 57-0.19 0.07-8.99 2 m_testsignal248-1.603 58-0.18 0.05-9.86 4 m_57bach -3.450 32-2.08 0.54-9.02 4 m_blackbird48-2.478 57-6.06 0.05-10.12 4 m_testsignal248-1.718 58-4.86 0.12-9.955 NERO m_57bach -2.539 41-7.12 NERO m_blackbird48-2.921 43-5.16 NERO m_testsignal248-2.652 45-4.83 Tablica 5.1: Wyniki kodowania przykładowych sekwencji z warunkiem by NMR był na poziomie 0dB W tab. 5.1 przedstawiono kilka wybranych wyników kompresowania sekwencji w taki sposób, by poziom AN M R < 0dB. Dla wszystkich przedstawionych sekwencji poziom 88

Rysunek 5.13: Przebieg krzywych maskowania dla trzech modeli psychoakustycznych (modelu II xmin1, jego modyfikacji xmin2 oraz bazujacego na PEAQ xmin4) na tle energii sygnału. Energia przedstawiona jest przed i po skalowaniu. Algorytm PAM2 i jego modyfikacja także zostały przeskalowane ANMR (w stosunku do krzywych wyznaczonych przez wybrany model psychoakustyczny) jest minimalnie niżej od założonego docelowego poziomu. Ujemna wartość ANMR oznacza, że średnia energia błędu jest poniżej progów maskowania. Dla potwierdzenia przedstawiono jeszcze poziom ANMRS (rozdz. 2.4). Jest on także średnią NMR, ale uzględniającą tylko poziomy powyżej 0dB. Większość przedstawionych wartości ANMRS jest w bliskim sąsiedztwie 0dB, a jednak obiektywna miara ODG jest daleka od poziomu niepostrzegalności. Wynika z tego, że na końcowy wynik ODG wpływ ma nie tylko miara NMR. Dla potwierdzenia tej tezy przeprowadzono jeszcze jeden test. Zakodowano kilka sekwencji za pomocą kodera Nero i sprawdzono poziomy Total NMR i ODG. Wyniki przedstawiono w tej samej tabeli. Wyniki ANMR i ANMRS dla NERO nie są podane, ponieważ nie jest znany model psychoakustyczny zastosowany w NERO, według którego te miary są liczone. Dla przedstawionych sekwencji jakość była słaba, mimo że T otalan M R < 0dB. Przedstawione wyniki potwierdzają tezę przedstawioną powyżej. Idealny model psychoakustyczny powinien zatem uzględniać inne składowe miary PEAQ. Przedstawione powyżej algorytmy przetestowano także w praktycznych zastosowaniach. Zakodowano sekwencje testowe przy użyciu każdego z algorytmów modelu psychoakustycznego, a algorytm TRDO (opisany w rozdz. 6.4) wybrano jako algorytm alokacji bitów, ponieważ zapewnia on najlepsze dopasowanie do krzywych maskowania przy 89

określonej przepływności bitowej (rozdz. 6.6.3). Na rys. 5.14 przedstawiono wspomniane Rysunek 5.14: Porównanie działania algorytmów modeli psychoakustycznego w praktyce z użyciem algorytmu TRDO alokacji bitów porównanie. Jak widać, dla wybranych sekwencji testowych PAM1 i PAM2 wypadają na podobnym poziome, a jedynie PAM4 jest gorsze. Dla porównania użyto także algorytmu TRDO bez żadnego modelu psychoakustycznego algorytm starał się minimalizować błąd kwantyzacji. Wyniki oznaczono jako RD0. Jak widać wyniki są słabsze od TRDO1 i TRDO2, ale porówynywalne z RD4. Podsumowanie Dla wybranego algorytmu alokacji bitów TRDO przetestowano wcześniej opisane modele psychoakustyczne. Algorytmami dającymi najlepszą jakość są Model Psychoakustyczny II zaproponowany w części nienormatywnej specyfikacji AAC (PAM1) oraz jego modyfikacja stosująca transformatę MDCT (PAM2). Użycie modeli zaadaptowanych z kodera 3gpp (PAM3) oraz z narzędzia PEAQ (część obliczająca NMR) (PAM4) uzyskiwały gorszą jakość kompresowanych sekwencji dźwiękowych. Do dalszych badań zostaną wybrano PAM1 i PAM2. 90

Rozdział 6 Algorytmy alokacji bitów Algorytmy alokacji bitów (np. [27]) mają za zadanie odpowiednie rozdzielanie bitów strumienia bitowego na pasma częstotliwościowe tak, by założona przepływność bitowa była zachowana, a jakość sekwencji zdekodowanych była jak najwyższa. W tym rozdziale zostaną przedstawione algorytmy alokacji bitów stosowane w literaturze oraz ich modyfikacje. Zostaną także zaproponowane pewne własne modyfikacje algorytmów. Dodatkowo zostanie przedstawiony algorytm równych współczynników kwantowania dla wszystkich pasm w ramce, który w przeciwieństwie do pozostałych algorytmów, nie korzysta z modelu psychoakustycznego. 6.1 Algorytm podwójnej pętli przeszukiwania Two Loop Search Algorytm alokacji bitów Podwójnej Pętli Przeszukiwania Two Loop Search (TLS) został przedstawiony w standardzie AAC[61], w części nienormatywnej. Algorytm TLS realizowany jest przez dwie pętle: wewnętrzną i zewnętrzną. Pętla wewnętrzna (zwana pętlą przepływności bitowej bitrate) tak modyfikuje współczynniki kwantyzacji (dla wszystkich pasm jednakowo), aby otrzymać zadaną przepływność bitową. Pętla zewnętrzna, zwana pętlą zniekształcenia (distortion) stara się tak zmieniać poszczególne współczynniki kwantyzacji, aby poprawić jakość dźwięku (zmniejszać NMR w poszczególnych pasmach). Jak można zauważyć pętle mają przeciwstawne zadania: jedna poprawia jakość i podwyższa przepływność bitową, druga poprawia przepływność bitową, ale pogarsza jakość. Równanie kwantyzacji 3.3 dla pasma b można przekształcić w następującą postać: x q (i) = sign(x(i)) x(i) 3 3 4 2 16 (SF (sb)+sf c) + 0.4054 = = sign(x(i)) x(i) 3 3 4 2 16 SF (sb) + 2 3 16 SF c + 0.4054 (6.1) 91

gdzie i jest to numer współczynnika częstotliwościowego, a sb numerem pasma SFB. Czynnik równania 2 3 16 SF c jest odpowiedzialny za pętlę wewnętrzną. Natomiast pętla zewnętrzna steruje czynnikiem 2 3 16 (SF (sb)). W równaniu można jeszcze wyróżnić kompander, czyli przeskalowanie współczynnika x 3 4. Niezależnie od pętli zewnętrznej i wewnętrznej wartość kompandera jest stała dla danego współczynnika x, zatem wartość ta może być tylko raz obliczona, i używana ponownie w kolejnych iteracjach pętli. 6.1.1 Pętla zewnętrzna Rysunek 6.1: Algorytm pętli zewnętrznej TLS Szczegółowe działanie pętli zewnętrznej przedstawiono na rys. 6.1. 1. Algorytm TLS zaczyna działanie od wykonania pętli wewnętrznej. Obliczony zostaje odpowiedni SF c (SFcommon SF wspólny dla wszystkich pasm), dla którego ramka audio po kompresji będzie miała długość bitową spełniającą wymagania: bits frame <= bits available (6.2) i zostaje przekazany do pętli zewnętrznej. 92

2. Dla każdego pasma SF B, dla odpowiedniego SF (sb) obliczany jest błąd kwantyzacji: E error (sb) = i high (sb) i=i low (sb) (x(i) x d (i)) 2 (6.3) gdzie i low (sb) i i high (sb), to odpowiednio indeks pierwszego i ostatniego prążka pasma sb 3. Pasma dla których błąd kwantyzacji jest większy niż wartość progowa dopuszczalna przez model psychoakustyczny: E error (sb) > xmin(sb) są poprawiane poprzez zwiększenie współczynnika kwantyzacji. 4. Badane są warunki stopu pętli zewnętrznej: jeśli wszystkie współczynniki kwantyzacji SF (sb) zostały zmienione, współczynniki kwantyzacji SF (sb) są poza zakresem, żadne pasmo nie wymaga już poprawy. Gdy żaden z warunków nie jest spełniony, pętla zewnętrzna wykonuje kolejną iterację 5. Wyznaczanie ostatecznych (sumy SF c i SF (sb)) współczynników kwantyzacji dla pasm i podanie ich wartości do bloku kodowania entropijnego. 6.1.2 Pętla wewnętrzna Rysunek 6.2: Algorytm pętli wewnętrznej TLS Szczegółowe działanie pętli wewnętrznej przedstawiono na rys. 6.2 Na początku działania pętla dokonuje kwantyzacji. Nie przeprowadza się pełnej kwantyzacji, ponieważ wykorzystuje raz obliczoną wartość z kompandera i przeskalowuje się ją tylko przez czynnik 2 3 16 SF c. Następnie moduł kodowania entropijnego (za pomocą książek Huffmana) podaje wartość długości bitowej powstałego strumienia. Jeśli strumień jest za długi, to zmieniany jest współczynnik SF c i proces jest powtarzany aż do momentu, gdy liczba bitów potrzebna do zakodowania danej ramki będzie mniejsza lub równa założonemu progowi bitowemu. 93

6.1.3 Warunki stopu Pętle dążą do tego, aby wypracować pewien kompromis. W normie zaproponowane są ogólnie trzy warunki stopu, gdy: 1. Po iteracji pętli wewnętrznej i zewnętrznej żadne współczynniki kwantyzacji nie zostały zmienione. Oznacza to, że kompromis został osiągnięty, warunek przepływności bitowej i jakości jest spełniony: szum kwantyzacji jest poniżej progu słyszenia. 2. Pętla zewnętrzna zmieniła we wszystkich pasmach współczynniki. Zatem doszło do sytuacji, w której po każdej iteracji pętli wewnętrznej i zewnętrznej wynik jest ten sam (jedna pętla zwiększyła, a druga zmniejszyła współczynniki kwantyzacji o takie same wartości). 3. Różnica między kolejnymi współczynnikami kwantyzacji jest większa niż 60. Współczynniki kwantyzacji są kodowane różnicowo, a wartość 60, jest maksymalna jaka jest możliwa do zakodowania w standardzie AAC. W praktycznej implementacji kodera, dla poprawnego działania kodera TLS potrzebne są odpowiednie warunki początkowe, w przeciwnym przypadku algorytm od razu wpada w jeden z warunków stopu. Jedną z propozycji przyspieszenia algorytmu jest zastosowanie predyktora liniowego do wyznaczenia pierwszego współczynnika SF (oznaczonego jako global gain) przedstawiona w [108]. 6.2 Zmodyfikowany algorytm TLS Algorytm TLS przedstawiony w normie AAC ma wady. Ma wysoką złożoność obliczeniową (potrzeba wielu iteracji) oraz trudne do ustalenia warunki początkowe. Przy źle dobranych warunkach początkowych, algorytm bardzo szybko osiąga warunki stopu i przerywa działanie. Dla przykładu: jeśli inicjujące wartości SF są bardzo niskie, to będą one zmieniane we wszystkich pasmach jednocześnie. W ten sposób zostają osiągnięte warunki stopu. Aby zapobiec takim przypadkom wprowadzono przez autora rozprawy pewne modyfikacje. Zrezygnowano z dotychczasowych warunków stopu. Wprowadzono konfigurowalny licznik iteracji pętli zewnętrznej. Pętla zewnętrzna wykonuje się N razy. Po zakończeniu każdej iteracji obliczana jest miara ANMR ramki. Jeśli ANMR jest lepsze od najlepszego dotychczasowego wyniku: ANMR iter < ANMR best, to zapamiętywana jest wartość ANMR i odpowiadające jej SF. Po zakończeniu wszystkich iteracji pętli zewnętrznej, najlepiej zapamiętany wynik jest przywracany, dla odpowiednich SF następuje ponownie kwantyzacja. Pętla wewnętrzna pozostaje bez zmian. 94

Zmodyfikowany algorytm poza wymienioną już zaletą niewrażliwości na warunki początkowe, ma jeszcze dwie zalety. Po pierwsze wynik jest lepiej dostosowany do krzywej maskowania poprzez minimalizowanie miary ANMR. Drugą zaletą jest skalowalna złożoność obliczeniowa. Dzięki zmianom limitu licznika iteracji możliwe jest wcześniejsze zakończenie algorytmu, gdy np. jest mało zasobów obliczeniowych. Ustawienie dużej wartości licznika zwiększa zapotrzebowanie na zasoby obliczeniowe, jednakże więcej możliwości jest sprawdzanych. Zwiększa to szansę na lepsze dopasowanie do krzywych maskowania. W literaturze [15] można odnaleźć modyfikację algorytmu TLS, która wg autorów poprawia jakość kodowania. Polega na dynamicznym doborze szerokości pasm, w które grupowane są współczynniki. Niestety taki algorytm nie jest kompatybilny ze standardem, dlatego też nie jest brany pod uwagę w dalszych rozważaniach. Innymi modyfikacjami są algorytmy zmniejszające liczbę iteracji w pętlach. Odbywa się to poprzez analityczne wyznaczenie odpowiednich wartości współczynnika kwantyzacji SF. Pozwala to na wyeliminowanie większości iteracji pętli zewnętrznej lub wewnętrznej. Takie rozwiązanie zostało zaproponowane w artykułach dla standardów MP3 [46, 80] oraz AAC [35]. Innym sposobem przyspieszenia TLS jest zamienienie kolejności wykonywania pętli [79]. Najpierw do progów maskowania dopasowywany jest błąd kwantyzacji, a następnie druga pętla skaluje SF tak by osiągnąć wymaganą przepływność bitową. Żadne przedstawione przyspieszenia algorytmu nie poprawiają jakości kodowania, pozwalają jedynie na przeprowadzenie operacji TLS w mniejszej liczbie iteracji. Ze względu na brak poprawy jakości kodowania, powyższe algorytmy przyspieszające nie są obiektem zainteresowania w niniejszej rozprawie. 6.3 Algorytm ze stałymi współczynnikami kwantyzacji Algorytm ze stałymi współczynnikami kwantyzacji SF equal SF (ESF) jest bardzo prostym i szybkim algorytmem. Jest to de facto działająca pętla wewnętrzna z algorytmu TLS. Algorytm ESF w żaden sposób nie wykorzystuje modelu psychoakustycznego progów maskowania. Mając warunki początkowe na SF, w algorytmie podejmowana jest próba osiągnięcia wymaganej przepływności bitowej poprzez zmianę globalnego SF (wspólnego dla wszystkich pasm SFB). W algorytmie można rozróżnić dwie możliwości warunków początkowych: 1. Wartość początkowa SF jest z góry założona i SF mogą się tylko zmniejszać (kwantyzacja wzmacniać). Przy takich warunkach początkowych dla ramek o niskiej energii może zdarzyć się przypadek, że kodując nawet za pomocą początkowych SF, liczba bitów potrzebna do zakodowania ramki jest dużo niższa od progu. Taki przypadek może być zaletą, ponieważ ramki o mniejszej energii sygnału będą zakodowane na mniejszej 95

liczbie bitów, co spowoduje globalne zmniejszenie przepływności bitowej sekwencji, przy relatywnie małej stracie na jakości dźwięku. Wadą takiego rozwiązania jest to, że zakładając za niski startowy SF, nie da się osiągnąć wyższej jakości, ponieważ pętla zmniejsza tylko SF. 2. Wartość początkowa SF jest wyznaczana za pomocą pętli zwiększającej SF. Ten wariant zawsze stara się osiągnąć przepływność bitową zbliżoną do progu. Jeśli po zakodowaniu ramki startowymi SF okaże się, że ramka jest zakodowana na małej liczbie bitów, to SF jest zwiększany, by osiągnąć wymaganą przepływność bitową i poprawę jakości sekwencji. Rysunek 6.3: Porównanie wartiantów ESF z szukaniem (esf) i bez szukania maksymalnej przepływności (esf_nfm) bitowej dla ramki Przedstawione powyżej warianty porównano, a wyniki zamieszono na rys. 6.3. Algorytm osiągający przepływność bitową ramki zbliżoną do progu daje lepsze rezultaty. W następnych badaniach ten wariant jest wykorzystywany. 6.4 Algorytm optymalizacji na kracie z użyciem kosztu RD Algorytm optymalizacji przepływności bitowej i zniekształceń (Trellis-based Rate Distortion Optimization TRDO) [12] bazuje na rozwiązywaniu równania kosztu funkcji Lagrange w kracie (programowanie dynamiczne) oraz na łącznej optymalizacji kosztu bitowego 96

SF i HCB [17, 19, 16]. Dla przedstawienia działania algorytmu definiuje się pojęcia całkowitej liczby bitów potrzebnych do zakodowania ramki oraz całkowitego zniekształcenia ramki. Całkowitą liczbę bitów potrzebną do zakodowania wszystkich pasm w ramce definiuje się następująco: N R(s, h) = Q(s i, h i ) + F (s i 1, s i ) + G(h i 1, h i ) (6.4) i=1 gdzie występują następujące oznaczenia: s wektor poszczególnych współczynników Scale Factor, h wektor kolejnych książek kodowych HCB, i indeks pasma SFB w ramce. Wartość Q(s i, h i ) to liczba bitów potrzebna do zakodowania współczynników w paśmie i-tym przy użyciu SF o wartości s i oraz HCB h i. F (s i 1, s i ) to liczba bitów potrzebna do zakodowania SF w paśmie i. Ponieważ kodowanie SF jest różnicowe, to oprócz samego s i, jako parametr przyjmuje się poprzedni SF oznaczony jako s i 1. Podobnie wartość G(h i 1, h i ) oznacza liczbę bitów potrzebną do zakodowania książki h i z uwzględnieniem poprzedniej książki kodowej h i 1. Wykorzystuje się dwie miary do wyznaczenia zniekształceń w ramce: średniego NMR (ANMR) oraz maksymalnego NMR (MNMR) D A = 1 N N w i d i = ANMR (6.5) i=1 D M = max 0 i N w id i = MNMR (6.6) gdzie d i to energia szumu kwantyzacji, a w i waga tożsama z odwrotnością progów maskowania. 6.4.1 Przebieg algorytmu dla miary ANMR Celem algorytmu jest minimalizacja funkcji kosztu Lagrange[13], która dla miary ANMR przedstawia się następująco: N J (A) (s, h, λ) = [w i d i (s i ) + λ(q(s i, h i ) + F (s i 1, s i ) + G(h i 1, h i ))] (6.7) i=1 Oznaczenie (A) odnosi się do miary ANMR. Argumentami funkcji są s i h, które zostały opisane wcześniej, oraz λ, która jest mnożnikiem Lagrange. Algorytm dąży do minimalizacji kosztu funkcji J (A), a λ jest parametrem ważącym wpływ całkowitej liczby bitów i całkowitego zniekształcenia w ramce na funkcję kosztu. Po minimalizacji funkcji, sprawdza się przy jakiej przepływności bitowej zostało osiągnięte minimum. Jeśli liczba bitów przyznanych jest niesatysfakcjonująca (za duża lub za bardzo mała), to zmienia się parametr λ i ponownie dokonuje się obliczeń. Funkcja jest optymalizowana w kracie (por. rys. 6.4). 97

Rysunek 6.4: Prosta, trójstanowa, trójpoziomowa krata. Stany repezentuja parametry, a poziomy pasma SFB. Na rysunku zaznaczono suboptymalna ścieżkę wyznaczona przez algorytm programowania dynamicznego. W osi poziomej przedstawiono kolejne pasma i, a w pionowej parametry (stany j) p i = (s i, h i ) danego pasma. Stan j, pasma i oznacza się jako Υ j,i. Ostatecznie wyznacza się także funkcję przejścia między stanami jako T l j,i. Jest to koszt bitowy dla informacji dodatkowych (kodowanie HCB i SF), jakie trzeba ponieść przy zmianach stanów. Koszt ten wynosi: T l j,i = λ (F (σ l, σ i ) + G(ρ l, ρ i )) (6.8) gdzie para σ i, ρ i to odpowiednio znalezione, optymalne wartości dla pasma i-tego. Przy tak zdefiniowanych zmiennych algorytm można przedstawić w następujący sposób: 1. Inicjalizacja parametru λ oraz zerowanie pozostałych parametrów. 2. Dla każdego stanu znalezienie przejścia do Υ j,i o najmniejszym koszcie przejścia, zdefiniowanym jako: J (A) j,i } = min j,i 1 + w id i (σ j ) + λq(σ j, ρ j ) + T l j,i } J (A) j,i 1 + T l j,i + w i d i (σ j ) + λq(σ j, ρ j ) { = min l { J (A) l 3. Powtarzaj krok 2 dla kolejnych pasm SFB i każdego stanu. (6.9) 4. Gdy ostanie pasmo zostanie przeliczone, to wyszukaj najmniejszą wartość funkcji kosztu dla tego pasma. 5. Dla znalezionego najlepszego Υ j,n zacznij odtwarzać ścieżkę od końca ku początkowi. Znaleziona ścieżka jest ścieżką optymalną dla zadanego parametru λ. 6. Jeśli liczba bitów jest większa lub dużo mniejsza od założonego progu, to odpowiednio zmień parametr λ i powtórz obliczenia od kroku 1. 98

Przedstawione kroki są przypadkiem programowania dynamicznego [21], a także wersją algorytmu Viterbiego [44]. 6.4.2 Przebieg algorytmu dla miary MNMR Dla założonej miary jakości MNMR [13, 11] algorytm doboru optymalnych parametrów kwantyzacji nieco się różni. Oznaczenia zostały przyjęte jak w p. 6.4.1. Funkcja kosztu dla tej miary jest następująca dla minimalizacji max w i d i i J (M) (s, h) = N [Q(s i, h i ) + F (s i 1, s i ) + G(h i 1, h i )] (6.10) i=1 Dla algorytmu przeszukiwania (algorytmu Viterbiego) wprowadza się parametr γ, który jest progiem akceptowalnego zniekształcenia w danym paśmie, czyli progowym NMR dla pasma. Algorytm przeszukiwania kraty można przedstawić następująco: 1. inicjacja parametru γ, 2. stan Υ j,i jest uznawany jako ważny gdy NMR dla stanu jest niższe niż γ, 3. zerowanie pozostałych parametrów, 4. podobnie jak dla algorytmu dla ANMR, przeszukiwanie kraty w celu minimalizacji funkcji kosztu: J (M) (j, i) = min l { J (M) (l, i 1) + Q(σ j, ρ j ) + T l j,i } (6.11) 5. powtarzanie poprzedniego kroku dla wszystkich pasm i współczynników kwantyzacji, 6. rozpoczynając od ostatniego pasma, przejście ścieżki po optymalnych wynikach, aż do pierwszego pasma SFB, 7. jeśli uzyskana przepływność bitowa nie jest satysfakcjonująca, następuje zmiana wartości γ i powtórzenie obliczeń od kroku 2. 6.4.3 Wyznaczenie optymalnej wartości parametru lambda Dla znalezienia optymalnej wartości parametru λ wykorzystano algorytm bisekcji [32], który można przedstawić w następujący sposób: 1. Ustaw początkowe wartości λ min i λ max oraz policz dla tych wartości wartość wynikową przepływności bitowej. 99

2. Wyznacz wartość środkową λ c = λ min+λ max 2. 3. Oblicz przepływność bitową dla λ c. 4. Jeśli różnica między otrzymaną wartością przepływności bitowej jest odpowiednio blisko zakładanej przepływności bitowej, to zakończ algorytm. 5. Zbadaj znak wyrażenia BR(λ c ) BR thr, gdzie BR() to funkcja wyznaczająca przepływność bitową, a BR thr, to zakładany próg przepływności bitowej i zmień odpowiednio przedział parametru λ na (λ min ; λ c ) lub (λ c ; λ max ) tak aby szukana wartość znalazła się w przedziale. Przejdź do kroku 2. W taki sposób iteracyjnie wyznaczana jest optymalna wartość λ. Problem jednak stanowi wyznaczenie wartości początkowych dla λ min i λ max. Wartości te zostały dobrane a priori, a algorytm bisekcji zmodyfikowany. Jeśli w pkt (1) obie wartości BR(λ min ), BR(λ max ) są mniejsze lub większe od BR thr, to modyfikuje się wartość λ min lub λ max (np. przesunięcie bitowe), tak by BR(λ min ) < BR thr < BR(λ max ). przez 6.4.4 Porównanie algorytmów Literatura [12, 13, 11] porównuje przedstawione algorytmu w miarach obiektywnych i subiektywnych. W kategorii testów obiektywnych użyto dwóch miar (ANMR i MNMR), według których porównywano przedstawione algorytmy z modelem referencyjnym standardu AAC. W obu przypadkach przedstawione algorytmy były lepsze od modelu referencyjnego. Przedstawiane algorytmy okazały się lepsze w miarach, dla których zostały zoptymalizowane (odpowiednio algorytm optymalizujący ANMR w mierze ANMR, a algorytm optymalizujący MNMR w mierze MNMR). Testy subiektywne przeprowadzono na 20 słuchaczach korzystając z ośmiu sekwencji z bazy EBU SQAM. Testy subiektywne były przeprowadzane w mierze MOS [74], a najlepszy wyniki osiągnął przedstawiony algorytm optymalizujący miarę ANMR. 6.4.5 Modyfikacje algorytmu Kaskadowa krata Przeprowadzenie optymalizacji na zwykłej kracie, w której są optymalizowane parametry SB i HCB jest bardzo złożone obliczeniowo. Tę metodę nazwano Joint Trellis Based (Łączna, bazująca na kracie) JTB. Szacuje się złożoność obliczeniową tej metody na O((60 12) 12 49). Istnieje dużo lepsza niż bazująca na przeszukiwaniu wszystkich możliwości, których jest O(60 12) 49. Cheng-Han Yang i Hsueh-Ming Hang w [114] zaproponowali podział kraty na dwie sekcje odpowiedzialne za obliczanie SF i HCB (rys. 6.5). W ten sposób złożoność obliczeniowa zmalała do O((60 2 122 ) 49), a algorytm został nazwany kaskadowym bazującym 100

Rysunek 6.5: Krata JTB zostaje rozdzielona na kaskadę dwóch części wyznaczajacych optymalne SB, a następnie optymalne HCB na kracie (Cascaded Trellis-Based CTB). Dla algorytmu optymalizującego miarę ANMR równanie (6.7) zostaje przekształcone na równania optymalizujące SF: J (A_SF ) = i [w i d i + λ(q(s i, h i ) + F (s i 1, s i ))] (6.12) oraz HCB: J (A_HCB) = i [Q(s i, h i ) + G(h i 1, h i )] (6.13) Dla algorytmu optymalizującego miarę MNMR, część optymalizująca HCB jest identyczna, a część optymalizująca SF przybiera następującą postać dla minimalizacji max w i d i i J (M_SF ) = i [Q(s i, h i ) + F (s i 1, s i ))] (6.14) Dla tak zmodyfikowanych miar algorytmy optymalizacyjne na kracie przebiegają bardzo podobnie do wcześniej przedstawionych. Jak opisano w rozdz. 3.1.2, samo kodowanie współczynników SF jest zależne od wyboru książek kodowych HCB. Z tego powodu koder działający na zasadzie przedstawionej na rys. 6.5 nie będzie dawać optymalnych wyników. Taki przebieg algorytmu nazwany został trybem jednoiteracyjnym. Składa się on z dwóch etapów: wyznaczanie optymalnego SF oraz dla wyznaczonego SF obliczanie optymalnego HCB. Aby osiągnąć dokładne wyniki obliczenia przepływności bitowej, wprowadzono dodatkowy krok przy kodowaniu CTB. Na rys. 6.6 można zauważyć, że kodowanie odbywa się w czterech etapach. Najpierw odbywa się optymalizacja SF używając pseudo książek Huffmana. Następnie odbywa się optymalizacja książek HCB zgodnie z tym, co opisano wcześniej, a na końcu optymalizacja współczynników SF, używając już wyznaczonych książek HCB. Taki przebieg nazwany jest trybem dwu iteracyjnym. 101

Rysunek 6.6: Szczegółowy schemat wyznaczania współczynników SF na bazie kraty CTB. SF wyznaczane sa dwukrotnie, raz dla pseudo HCB, a następnie dla wyznaczonego, optymalnego HCB. Autorzy dowiedli, że używając m.in. wyżej wymienionych technik algorytm doboru parametrów kwantyzacji w kracie może dawać zbliżone wyniki (biorąc pod uwagę wynikowe miary ANMR i MNMR oraz miarę ODG) przy mniejszej złożoności obliczeniowej. Dwuwarstwowa krata Rysunek 6.7: Schemat dwuwarstwowej kraty. Osobne obliczenia dla różnych długości okien oraz obliczeń wewnatrz tych okien. Okno LONG oznacza okno długie, SHORT krótkie, START przejściowe z długiego na krótkie, a STOP z krótkiego na długie W 2008 roku Vinay Melkote i Kenneth Rose zaproponowali [81] rozszerzenie opisywanego algorytmu o jeden wymiar dotyczący wyboru długości okna. Zgodnie z tym, co pokazano na rys. 6.7 zewnętrzną warstwą kraty są poszczególne ramki i odpowiadające im długości okien, zaś wewnętrzną częścią jest algorytm wcześniej przedstawiony. Algorytm bazuje na całkowitym NMR (Total NMR TNMR) w wersji uśrednionej ATNMR oraz maksymalnej MTNMR. Taka modyfikacja algorytmu wg autorów umożliwia poprawę ANMR seq o 0.7 1.4dB dla sześciu testowanych sekwencji. 102