Kodek Opus: Nový zvuk pro web
Zvukový standard Opus je efektivnější než formáty MP3 či AAC. Navíc se hodí i pro oblast telefonie a pro uživatele je dostupný zcela zdarma.
JÖRG GEIGER
Voice over IP, streamování hudby, podcasty - výrazná část internetového provozu spadá do kategorie přenosu zvuku. Z hlediska každodenního používání tyto služby běhají naprosto plynule např. při připojení přes ADSL či kabel. Pokud však máte přístup pouze k pomalejšímu mobilnímu připojení, můžete na vlastní kůži pocítit problémy, jako jsou výpadky hovorů VoIP a častá přerušení přehrávaných písniček. A právě tomu má zabránit nový audiostandard s názvem Opus. Ten slibuje nižší nároky na šířku pásma i vyšší kvalitu zvuku, kódování navíc probíhá v reálném čase. Kodek Opus byl vyvíjen a je koncipován jako open-source, takže jej může využívat každý, aniž by musel řešit problémy s licencováním. Vývoj nového standardu byl hned od počátku prováděn se zaměřením na interaktivní přenosy zvuku - kodek Opus je tak vhodný nejen pro kódování hudby, ale je optimalizován také pro obousměrné přenosy, které se realizují např. při videohovorech nebo konverzacích přes VoIP. Na počátku září organizace IETF (Internet Engineering Task Force) posvětila finální standardizaci kodeku (jakožto RFC 6716) a prakticky jej učinila součástí HTML. Nadace Xiph. Org a společnosti Skype a Mozilla vytvořily pracovní skupiny, které vypracovaly technické specifikace, jež se staly základem Opusu. Podobně jako MP3 i formát Opus je ztrátový, což znamená, že obsah určený k přenosu je komprimován. I díky tomu se může vyznačovat nízkou algoritmickou latencí. V praxi to znamená, že signál dorazí jen s velmi malým zpožděním - vždyť datový paket je defaultně zpracován za nějakých 20 milisekund. Pro srovnání, u MP3 jde standardně o více než 100 ms.
Vysoká pružnost při kódování audia
Tvůrci Opusu kladli velký důraz na flexibilitu. Přenosová rychlost (bitrate) tak může variovat mezi 6 až 510 Kb za sekundu, vzorkovací frekvence osciluje mezi 8 a 48 kHz a algoritmickou latenci lze prodloužit z 2,5 na 20 milisekund. Pohled pod kapotu ukazuje, že vývojáři standardu zjednodušeně řečeno vzali existující zvukové kodeky, optimalizovali je a spojili v tzv. hybridní kodek. Opus v sobě tak spojuje upravené kodeky CELT (Constrained Energy Lapped Transform) a SILK. CELT byl vyvinut jako součást rodiny kodeků Ogg a byl stvořen především s důrazem na své schopnosti kódování v reálném čase. SILK byl vytvořen pro použití v komunikačním programu Skype, kde je využíván od verze 4 pro kódování hlasu. Struktura a fungování kodéru Opus jsou v principu jednoduché. Vstupní signál je downsamplován na vzorkovací frekvenci 48 kHz, neboť lidské ucho jen těžko rozlišuje rozdíl mezi vyššími vzorkovacími frekvencemi. Data poté v závislosti na frekvenci „tečou“ buďto skrz kodér CELT, nebo SILK. CELT je první volbou, má-li výsledkem být co nejvyšší kvalita výstupu. SILK naopak klade důraz především na optimální využití šířky pásma. Aby toho dosáhl, musí postupovat trochu jinak než další zavedené audioformáty.
Analýza hlasu během telefonní konverzace
SILK se hodí hlavně pro nízkofrekvenční signály s vzorkovací frekvencí do 16 kHz, což je typické pro telefonní konverzace. Veškerý zvukový materiál s nižší vzorkovací frekvencí proto Opus kóduje právě pomocí SILK. Ten se skládá ze sady komponentů, které lze rozdělit do čtyř oblastí: analýza, optimalizace (filtrování), kódování a výstup (viz grafika). Důraz je kladen na analýzu hlasu, která provádí také rozpoznávání řeči. Signál je nejprve rozdělen na samotný hlas a okolní hluk, což je následováno rozdělením hlasu na menší fragmenty podle frekvence. Z nich pak SILK odfiltruje zpoždění a určí vlastnosti hlasového signálu. Další optimalizace spočívá v analýze okolních ruchů a ve snaze o minimalizaci rozsahu pásma vyhrazeného přenosu informací o nich. S využitím informací získaných analýzou dokáže SILK patřičně předpovědět výšku a kvantifikovat frekvenci. Například pokud se výška hlasu během konverzace příliš nemění, je při úpravě paketů s řečí dostatečné přenášet pouze rozdílové informace. Cílem přitom je při zachování kvality dosáhnout co nejkompaktnějšího datového toku. Kvantifikace okolních ruchů je další cestou k dosažení dobrých výsledků. V tomto případě SILK zajišťuje, aby neprobíhala žádná nadbytečná optimalizace a nezbytný hluk nespotřebovával příliš z dostupného bitrate. Všechny signály o vyšších frekvencích -tedy až do hodnoty 20 kHz - využívají kodek CELT. Ten, stejně jako řada dalších kodeků, využívá modifikované diskrétní kosinové transformace (MDTC), jejíž pomocí konvertuje frekvence do koeficientů a v následné kvantifikaci „škrtá“ koeficienty, které jsou jen těžko, nebo dokonce nejsou vůbec slyšitelné lidským uchem. Vývojáři pro Opus definovali tři režimy (SILK a CELT mohou fungovat zároveň v hybridním režimu): režim SILK je určen pouze pro přenos hlasu při malé šířce pásma, hybridní režim umožňuje přenos hlasu v optimální kvalitě a režim CELT je určen pouze pro přenos hudby. Uživatelé prohlížeče Firefox mohou od verze 15 přehrávat soubory postavené na standardu bez dodatečného plug-inu, brzy se očekává rovněž nativní podpora přehrávačem VLC media player. Několik praktických ukázek možností kodeku Opus lze nalézt na adrese opus-codec.org/examples.
OPUS POD DROBNOHLEDEM
V jádru se Opus skládá ze dvou starších kodeků, CELT a SILK, které se starají o kompresi audia podle typu signálu (hudba, řeč). Zatímco tedy CELT funguje podobně jako kodeky formátu MP3, SILK před kódováním optimalizuje signál přenášející hlas.
HUDBA A HLAS
CELT komprimuje hudbu v reálném čase. K tomu nejprve balí data do malých úseků, díky čemuž je reálné dosáhnout algoritmické latence pouhých 2,5 milisekundy. SILK nejprve škáluje signál na vzorkovací frekvenci 16 KHz. Samotné kódování se odehrává až potom.
KÓDOVÁNÍ HLASU
Signál při kódování hlasu kodekem SILK prochází devíti fázemi:
1 Rozpoznávání řeči se snaží o oddělení hlasu od okolního hluku.
2 Analýza výšky hlasu redukuje vzorkovací frekvenci pro hlasové rámce.
3 Analýza okolních ruchů optimalizuje využívání šířky pásma pro přenos informací o hluku.
4 Prefiltrace upravuje signál a posílá jej dále ke kódování.
5 Předpověď výšky kalkuluje změny pro budoucí rámce na základě dosud zpracovaných hlasových rámců.
6 Frekvenční kvantifikace vyhlazuje výšku přenášené řeči.
7 Distorzní optimalizace zajišťuje, aby bylo kódování provedeno s důrazem na nízký bitrate při zachování přijatelné míry zkreslení řeči.
8 Kvantifikace okolních ruchů upravuje prefiltrovaný hluk u kódovaných hlasových rámců.
9 Plošné kódování zajišťuje výstup kompletního kódovaného signálu.
POROVNÁNÍ KODEKŮ
Ve srovnání s dalšími audiokodeky Opus pracuje s konstantním i variabilním tokem od 6 do 510 Kb/s, podporuje velikost rámce (algoritmickou latenci) od velmi nízkých 2,5 ms do 60 ms a frekvence od 8 do 48 kHz a až 255 kanálů. Především hlasové kodeky pro mobilní sektor jsou podobně rychlé, neumí však zajistit lepší kvalitu zvuku. Oproti tomu hudebním kodekům schází schopnost kódování v reálném čase.