Metódy kompresie
Kompresia reči

Hoci je reč vo svojej podstate audio signál, má niektoré špecifické vlastnosti, ktoré umožňujú použitie radikálnejších kompresných techník než pri všeobecnom zvuku. V prvom rade sa rečový signál považuje za médium na vyjadrenie informácie. Informácia nemusí byť po rekonštrukcii vyrozprávaná úplne rovnako ako v origináli, aby bola zrozumiteľná. Z toho vyplýva možnosť odstránenia niektorých vlastností zvuku. Napríklad štandardný telefónny hovor je vzorkovaný s frekvenciou 8 kHz (v porovnaní s 44,1 kHz vzorkovacou frekvenciou pri bežnom audiu), čo znamená zachytenie šírky pásma iba 4 kHz. Napriek tomu toto pásmo obsahuje väčšinu energie reči a teda informácie.

V druhom rade je rečový signál jednoduchý v porovnaní napríklad s nahrávkou rockovej kapely – zvyčajne je v ňom zachytený jediný rečník bez ďalších hudobných nástrojov. Okrem toho na dosiahnutie čo možno najčistejšej reči môžeme použiť algoritmy na potlačenie šumu a ruchov v pozadí.

Metódy používané na kompresiu reči môžeme rozdeliť do nasledujúcich skupín:

- Kódovanie tvaru vlny
  - v časovej oblasti
  - vo frekvenčnej oblasti
- Vokódery
  - lineárne predikčné kódovanie
  - formantové kódovanie

Na účely hodnotenia kvality rôznych algoritmov na spracovanie reči existuje miera zrozumiteľnosti. Popisuje, ako je reč pochopiteľná a zrozumiteľná. Do úvahy sa pritom berú rôzne vlastnosti, napríklad hlasnosť reči, nelineárne skreslenie, úroveň šumu na pozadí, ozveny a dozvuky a mnohé iné. Na porovnanie zrozumiteľnosti existujú dve hlavné stupnice: index prenosu reči (Speech Transition Index, STI) a všeobecná škála zrozumiteľnosti (Common Intelligibility Scale, CIS), ktoré majú rozsah od 0 (najhoršie) po 1 (najlepšie), resp. 0% až 100%. Vo všeobecnosti sa reč považuje za zrozumiteľnú, ak algoritmus dosiahne na stupnici skóre aspoň 0,5 (alebo 50%).

## Časová oblasť

Kódovanie tvaru vlny v časovej oblasti je reprezentované technikami PCM. Zatiaľ čo lineárna PCM používa rovnaké rozostupy medzi kvantizačnými úrovňami, nelineárna PCM využíva nelineárnu kvantizačnú stupnicu alebo jej modifikáciu v podobe kompresie dynamiky (kompanziu) vstupného signálu na strane vysielača a jej expanziu na strane prijímača.

Odporúčanie G.711 definuje dve kompanzné charakteristiky µ-zákon (µ-law) (USA a Japonsko) a A-zákon (A-zákon) (Európa). Na príklad charakteristika A-zákona je daná vzťahom:

kde sgn(x) = ±1 pre kladnú alebo zápornú hodnotu x a A je parameter kompresie. Zvyčajne A=87,7.

Obr. 5.8: Príklad kompanznej krivky A-zákona. Vyššie frekvencie (na horizontálnej osi reprezentované vyššími číslami) sú kódované menším počtom hodnôt než nižšie frekvencie.

## Frekvenčná oblasť

Vo frekvenčnej oblasti sa využívajú metódy subpásmového a adaptívneho transformačného kódovania. Pri subpásmovom kódovaní (Subband Coding, SBC) sa rečový signál pomocou sady pásmových priepustí (banky filtrov, Obr. 5.9) rozdelí na niekoľko frekvenčných pásem a na zníženie počtu vzoriek sa zdecimuje. Každé pásmo sa potom kóduje samostatne, najčastejšie použitím metódy ADPCM, ktorá umožňuje flexibilnú kvantizáciu a priraďovanie bitov.

Obr. 5.9: Príklad banky filtrov

Alternatívne sa namiesto metódy ADPCM môžu použiť techniky založené na adaptívnom transformačnom kódovaní (Adaptive Transform Coding, ATC). Tu sa signál transformuje do frekvenčnej oblasti pomocou FFT alebo inej transformácie a rozdelí sa na subpásma. Potom sa jednotlivým vzorkám v subpásmach dynamicky pridelia bity podľa ich potreby.

## Lineárne predikčné kódovanie

Prirodzená ľudská reč sa môže chápať ako odozva vokálneho traktu rečníka na budiaci signál, v našom prípade na vzduch vydychovaný z pľúc. Výstupný signál sa modeluje zmenami vlastností vokálneho traktu (hlasiviek, ústnej dutiny, zubov, atď.). Ak sa na tento proces pozrieme z pohľadu analýzy signálov, môžeme výstupný signál reprezentovať pomocou budiaceho signálu a filtra predstavujúceho hlasový trakt s parametrami meniacimi sa v čase. Tieto koeficienty sa prepočítavajú približne každých 10 až 30 ms. Hoci na popis koeficientov funkcie vokálneho traktu existuje mnoho metód, najpoužívanejšou je metóda založená na lineárnej predikcii, z čoho vychádza jej názov lineárne predikčné kódovanie (Linear Prediction Coding, LPC).

Obr. 5.10: Všeobecná schéma LPC dekodéra

LPC koeficienty minimalizujú kvadratickú odchýlku medzi originálnymi a predikovanými vzorkami reči. Ako je vidieť, model LPC generátora reči pozostáva z dvoch častí vychádzajúcich z vyššie uvedeného textu:

- Budenie vokálneho traktu
- Filter vokálneho traktu

Budenie vokálneho traktu reprezentuje generátor impulzov a generátor šumu, medzi ktorými je možné prepínať v závislosti od znelosti reči. Budiaci signál sa ďalej zosilňuje zosilňovačom (G) na požadovanú úroveň.

Hlasivky sa chvejú, vibrujú s určitou základnou frekvenciou f0, z ktorej vieme odvodiť základnú hlasivkovú periódu T0. Čím vyššia je základná frekvencia, tým vyššia je výška reči.

V závislosti od toho, či sa hlasivky použijú alebo nie, rozdeľujeme zvuky reči na:

- znelé – zvuky sú vyslovené pomocou chvenia hlasiviek, cez ktoré prechádza vzduch z pľúc, napr. „a“, „v“, „z“. Všetky samohlásky sú znelé.
- neznelé – zvuky sú vyslovené iba za pomoci toku vzduchu podobnému šumu a hlasivky sa nezapájajú, napríklad „s“, „c“, „f“.

Filter vokálneho traktu je daný lineárnym predikčným filtrom s konečnou odpoveďou (FIR filter), ktorého prenosovú funkciu charakterizuje vzťah:

,

kde ai sú koeficienty filtra a p je rád filtra. Ak S(z) predstavuje výstupnú vzorku a E(z) je budenie, nasledujúcu vzorku s(n) získame ako lineárnu kombináciu predošlých vzoriek s budením G.e(n):

Na použitie LPC generátora reči potrebujeme pre každý segment určiť nasledujúce parametre:

- znelosť segmentu
- základnú periódu T0
- parametre filtra (zosilnenie G a koeficienty ai)

Bitový tok rečového signálu zakódovaného pomocou LPC sa pohybuje v rozmedzí od 1,2 do 2,4 kbit/s a jeho zrozumiteľnosť je okolo 80-85%.

Rekonštruovaný rečový signál však znie strojovo, čo je zapríčinené dvoma hlavnými dôvodmi:

1. Je ťažké segmentovať reč presne na znelé a neznelé segmenty, pretože v prirodzenej reči sa znelosť prelína a kombinuje.
2. Základná perióda (ktorá charakterizuje hlas rečníka) sa v prirodzenej reči mení častejšie, než je dĺžka rámcov a zmeny nie sú periodické.

Na potlačenie nedokonalostí metódy LPC existujú postupy, ktoré kódujú rezíduum (rozdiel) medzi originálnym signálom a signálom generovaným LPC.

Metóda lineárnej predikcie budenej rezíduom (Residually Excited Linear Prediction, RELP) prenáša priamo rozdiel medzi originálnym a rekonštruovaným signálom. Na strane prijímača sa LPC koeficienty použijú na rekonštrukciu signálu a na presnejšiu rekonštrukciu sa rezíduum pripočíta.

Nástupcom algoritmu RELP je lineárna predikcia budená kódom (Code Excited Linear Prediction, CELP). Algoritmus je založený na princípe analýzy syntézou a v uzavretej slučke perceptuálne optimalizuje syntetizovaný signál. Potom sa prehľadá kódová kniha a vyberie sa najvhodnejšia budiaca funkcia. Spolu s LPC koeficientmi sa prenáša iba pozícia v kódovej knihe. Budiaca funkcia sa môže zakódovať pomocou vektorovej kvantizácie.

Metóda CELP dosahuje bitový tok od 4 do 8 kbit/s. Jej nevýhodami sú relatívna výpočtová náročnosť a oneskorenie na úrovni 35 ms.

Modifikácia CELP-u s nízkym oneskorením (Low Delay CELP, LD-CELP) znižuje oneskorenie na 2 ms pri bitovom toku 16 kbit/s a stala sa súčasťou štandardu G.728 organizácie ITU-T. Ďalší kodek založený na metóde CELP je Speex, ktorý vytvorila organizácia Xiph.Org, autor kodeku Ogg Vorbis, a má otvorený zdrojový kód.

## Sínusoidálne kódovanie

Sínusoidálne kódovanie vychádza z predpokladu, že každý audio signál je kombináciou deterministickej a stochastickej zložky. Deterministickú zložku tak môžeme reprezentovať harmonickými funkciami (sínus, kosínus) a stochastickú zložku pomocou šumu alebo inou parametrizáciou. Principiálna schéma takého kodéra je uvedená nižšie. Sínusoidy sú spojenia v čase sa meniacich frekvencií, o ktorých predpokladáme, že tvoria jeden súvislý tón.

Obr. 5.11: Všeobecná schéma sínusoidálneho kodéra

Tento model však nedokáže dostatočne spracovať rýchlo sa meniace zvuky, preto bola do metódy pridaná tretia zložka, tzv. transienty, ktoré modelujú rýchle zmeny v signáli. To vedie k modelu sínusoidy+transienty+šum (STN).

Iným rozšírením základného SN modelu je model Harmonické + samostatné línie + šum (HILN). V tomto prístupe sa sínusoidy rozdelia do dvoch skupín, harmonickú a individuálnu. V harmonickej časti sú sínusoidy reprezentované ako harmonické násobky základných frekvencií a ukladajú sa iba násobiče. Potom sa kódujú individuálne sínusoidy a rezíduum sa spracúva ako šum.

Od sínusoidálneho kódovania sa očakáva dobré spracovanie jednoduchých signálov, pozostávajúcich zvyčajne z harmonických zvukov, napríklad reč. Techniku využíval kodek SVOPC, prvý kodek spoločnosti SKYPE, ktorý dosahoval dobrú kvalitu pri 20 kbit/s a bol odolný voči stratám paketov.

Výpočtová náročnosť kodeku SVOPC však viedla k vytvoreniu nového kodeku SILK, založeného na LPC.

Na základe kodeku SILK s pridaním vlastností kodeku CELT (Constrained Energy Lapped Transform) bol v septembri 2012 štandardizovaný nový kodek s názvom Opus. Kodek je schopný využiť dobrý výkon kodeku SILK pri nízkych frekvenciách s nízkym oneskorením kodeku CELT pri vyšších frekvenciách, medzi ktorými dokáže prepínať na požiadanie. Kodek je vysoko vhodný na kódovanie reči aj všeobecného audia, a to aj pre online aplikácie, ako sú VoIP a živé prenosy.