hangformátum From Wikipedia, the free encyclopedia
Az informatika területén az Opus egy veszteséges tömörítésű hangformátum, amit eredetileg a Xiph.Org alapítvány és a Skype fejlesztett, majd az Internet Engineering Task Force (IETF) karolt fel. Különösen alkalmas internetes, valós idejű alkalmazások céljaira.[3] Az RFC 6716-ban szabványosított nyílt formátumként 3-klauzulás BSD licencű referenciaimplementációt is készítettek hozzá. Az Opus által alkalmazott technológiákat lefedő összes ismert szoftverszabadalom bárki számára ingyenesen licencelhető.[4]
Opus ![]() | |
![]() | |
![]() | |
Fájlkiterjesztés | .opus |
MIME-típus | audio/ogg,[1] audio/opus[2] |
Fejlesztő | IETF codec working group |
Kiadás dátuma | 2012. szeptember 11. |
Formátum típusa | audio |
Konténerformátuma | Ogg |
Kiterjesztése ennek | SILK, CELT |
Standard | RFC 6716 |
Weboldal | http://opus-codec.org |
libopus | |
![]() | |
![]() | |
Fejlesztő | Xiph.Org Foundation |
Első kiadás | 2012. augusztus 26. |
Legfrissebb stabil kiadás | 1.3 (2018. október 18.) |
Programozási nyelv | C89 |
Platform | keresztplatformos |
Kategória | hangkodek, referenciaimplementáció |
Licenc | BSD licenc |
A libopus weboldala |
Az Opus technológiái két, külön fejlesztett kodekből származnak: a beszédorientált SILK és az alacsony késleltetésű CELT kodekből.[3] Az Opus zökkenőmentesen képes váltani a magas és az alacsony bitrátájú üzemmódok között; belsőleg átmenetet képez az alacsony bitrátán alkalmazott lineáris predikció és a magas bitrátán használt transzformációs kódolás között (egy hibrid kódolású, szűk átfedő szakasz is létezik). Az Opus algoritmikus késleltetése nagyon alacsony (alapértelmezetten 22,5 ms), ami szükségszerű az alacsony késleltetésű kommunikációs vonalakon való használatához, és alkalmassá teszi a telefonbeszélgetés, hálózati zenélés, élő események szájszinkronjának közvetítésére egyaránt. Az Opusszal minőségi, illetve bitrátabeli engedményeket téve a késleltetés akár 5 ms-ig leszorítható. Bár ez a késleltetési érték kiemelkedően jó az elterjedt zenei formátumok bőven 100 ms fölötti késleltetéséhez képest (ilyen az MP3, az Ogg Vorbis és a HE-AAC is), az Opus az adott bitrátán elért hangminőség terén is igen versenyképes ezekkel a kodekekkel.[5] Az Opus nem igényel nagyméretű kódtáblákat az egyes fájlok kódolásához, így rövid hangfelvételek felvételére is előnyös.[6]
Az Opus a konstans és a változó bitrátájú kódolást is támogatja 6 kbit/s és 510 kbit/s között, a keretméret 2,5 ms és 60 ms között változhat, a mintavételezési frekvencia lehetséges értékei 8 kHz-től (4 kHz sávszélesség) 48 kHz-ig (> 20 kHz sávszélesség, elegendő az emberi hallásküszöb lefedésére). Egy Opus adatfolyam legfeljebb 255 hangcsatornát tartalmazhat, melyek között páronként csatolásokat (mid-side coding, joint stereo) is megenged.
Az Opus alacsony késleltetése (alapértelmezetten 22,5 ms) ideálissá teszi az olyan valós idejű alkalmazásokra, mint a telefónia, a Voice over IP vagy a videokonferencia. A jó minőségű hangátvitelnél a magas bitrátáknál is megmaradó alacsony késleltetést a Xiph.Org alapítványnak a CELT kodekkel végzett munkája tette lehetővé. Egy Opus adatfolyam során, legyen szó egy élő streamről vagy egy fájlról, a bitráta, sávszélesség és a késleltetés gyorsan és zökkenőmentesen megváltoztatható anélkül, hogy a lejátszásban bármilyen torzulás vagy folytonossági probléma lenne érezhető.
Nyílt szabványról lévén szó, a felhasznált algoritmusokat dokumentálták, egy a forráskódot is tartalmazó referenciaimplementációt is publikáltak. A Broadcom és a Xiph.Org alapítvány rendelkezik néhány szoftverszabadalommal a CELT algoritmusok, a Skype Technologies S.A., illetve a Microsoft pedig a SILK algoritmusok területén – de valamennyi érdekelt fél ígéretet tett arra, hogy díjmentesen licenceli azokat bárki számára, amennyiben az IETF standardizálja a kodeket. A felek fenntartják a jogot arra, hogy a szabadalmak segítségével védekezzenek harmadik fél által indított szabadalomsértési per esetén. Az Opus a Qualcomm és a Huawei ingyenesen nem licencelhető szabadalmai általi érintettsége vita tárgyát képezi.[7]
Az Opus kodek fejlesztése során a beszédorientált SILK és az alacsony késleltetésű CELT kodekből indultak ki (mindkettőt erősen módosították, az eredeti formátumokkal inkompatibilisak). A transzformációs réteg (CELT) a módosított diszkrét koszinusz transzformáción (MDCT) alapul némi CELP beütéssel (kódtáblák a gerjesztésnél, de a frekvencia doménben). A CELT-et módosították, és többek között a 20 ms-os keretek támogatásával bővítették. A beszédorientált SILK réteg a lineáris prediktív kódoláson (LPC) alapul. A SILK módosítása során többek között a 10 ms-os keretek támogatásával bővült. A csomagok overheadjének minimalizálása érdekében a SILK támogatja a hosszabb, 60 ms-os késleltetést is (szemben a CELT 20 ms-ával). A hibrid adatfolyam mindkét része által használt range kódolás (~ aritmetikai kódolás) a CELT kódjából lett kölcsönözve.
A kodeknek három különböző üzemmódja van, ezek közül kettő a beszédkódolásra, a harmadik az általános hangkódolásra (beleértve a zenét is). A beszédüzemmódok egyike az emberi hallás teljes frekvenciatartományában működik. Ilyenkor a CELT végzi el a 8 kHz fölötti rész, a SILK pedig az ez alatti rész kódolását. Alacsonyabb bitráta esetén (mintegy 30 kbit/s alatt) a magasabb frekvenciákat egyszerűen levágja, a CELT réteg pedig kimarad. A magasabb bitrátájú hangkódolásnál a beszédre optimalizált SILK réteg marad ki, és az általános CELT réteg jut csak szerephez.
A referenciaimplementációt C-ben készítették el, lebegőpontos egységgel rendelkező és azzal nem rendelkező hardverarchitektúrákra is lefordítható.
Az Opus adatfolyam Ogg konténerekbe csomagolható. Az ilyen Ogg Opus streamek tartalmát audio/ogg; codecs=opus
-ként kell jelezni és az Ogg Opus fájlok kiterjesztésére a .opus
az ajánlott.[1] A Matroska tároló formátum támogatása még kidolgozás alatt van.[8]
Az Opust szabványosításra javasolták az IETF-ben. A javaslatot végül elfogadták és megalakították a „codec” munkacsoportot. Az Opus két, eredetileg teljesen független szabványjavaslaton alapul, melyeket a Xiph.Org alapítvány és a Skype Technologies S.A. (jelenleg Microsoft) nyújtott be. Fő fejlesztői Jean-Marc Valin (Xiph.Org, Octasic, Mozilla Corporation), Koen Vos (Skype) és Timothy B. Terriberry (Xiph.Org, Mozilla Corporation). Rajtuk kívül Juin-Hwey (Raymond) Chen (Broadcom), Gregory Maxwell (Xiph.Org, Wikimedia) és Christopher Montgomery (Xiph.Org) is részese volt a fejlesztésnek.
Az Opus részét képező CELT kodek kifejlesztése a Vorbis utódjának kereséséhez vezethető vissza („Ghost” munkanéven). A Xiph.Org alapítvány újabb beszédkódolójaként az Opus lecseréli a Xiph korábbi beszédkodekét, a Speexet, ami Jean-Marc Valin korábbi sikeres projektje volt. A CELT fejlesztése 2007 novemberében kezdődött meg.
Az Opus SILK részét a Skype 2007 januárja óta fejlesztette, a házi fejlesztésű SVOPC kodek utódjának szánták; ez egy belső projekt volt a vállalat függetlenítésére a külső cégek által fejlesztett kodekektől mint az iSAC és az iLBC, illetve az ezekkel járó licencdíjak megspórolására.
A Skype 2009 márciusában tett javaslatot az IETF-nek egy széles sávú hangkodek kifejlesztésére és szabványosítására. Csaknem egy év telt el a megfelelő munkacsoport létrehozásán való vitákkal.[9] Több olyan vállalat képviselője, amely részt vett korábban a szabadalmakkal terhelt versenytárs formátumok szabványosítási folyamatában, ellenezte egy új, jogdíjmentes kodek szabványosítási folyamatának megkezdését. Ezek közé tartoztak a Polycom és az Ericsson – a G.719 létrehozója és licencelője – képviselői, továbbá a G.718 létrehozásánál bábáskodó France Télécom, Huawei és Orange Labs (France Télécom-részleg) is.
A munkacsoport végül 2010 februárjában alakult meg, és a hozzátartozó ITU-T Study Group 16 is ígéretet tett munkájának támogatására.
2010 júliusában mutatták be egy hibrid formátum prototípusát, ami a két jelölt kodek, a SILK és a CELT kombinációjaként működött. 2010 szeptemberében az Opust benyújtották az IETF-hez szabványosítási javaslatként. Rövid ideig a formátum „Harmony” néven futott, mielőtt 2010 októberében elnyerte végleges nevét.[10][11] 2011. február elején a bitfolyam formátumát feltételesen befagyasztották, már csak néhány utolsó változtatást engedélyezve rajta.[12] 2011 július vége előtt Jean-Marc Valint megbízta a Mozilla Corporation az Opuson való további munkálatokkal.[13] 2011 novemberében a munkacsoport kiadta az utolsó felhívást a bitstream formátumának esetleges változtatására, majd 2012. január 8-án befagyasztották azt.[14] 2012. július 2-án az IETF elfogadta szabványosításra az Opust.[15] A referenciaszoftver 2012. augusztus 8-án érte el a kiadásra jelölt státust.[16] A végső specifikáció az RFC 6716-ban jelent meg 2012. szeptember 10-én,[7][17] a referenciaimplementáció 1.0 és 1.0.1 verziói a rákövetkező napon jelentek meg. Eközben folyt a referenciakódoló kísérleti forráskódágán a munka, az eredmények közt szerepelt a változó bitrátát kezelő mechanizmusok szélesebb körű használata és az ezzel járó jelentősen feljavult hangminőség, főleg tonális hangmintákon.
Az Opus hangminősége kiválónak bizonyult,[5] a tesztek szerint magasabb bitrátákon is versenyképes marad az olyan, nagyobb késleltetési idejű kodekekkel mint a HE-AAC vagy a Vorbis.[18]
A zenehallgatási tesztekben a kodek magasabb teljesítményt mutat a HE-AAC kodekekhez képest, melyek addig a szabadalmazott SBR (spektrálissáv-replikáció, spectral band replication) technológiának köszönhetően uralták a terepet.[19][20]
Az Opus algoritmikus késleltetése igen alacsony,[3] ami előfeltétele az alacsony késleltetésű kommunikációs csatornákon való alkalmazásához; alkalmas beszélgetés, hálózati zenélés, élő események szájszinkronjának közvetítésére egyaránt. A kodek teljes algoritmikus késleltetése az élő hangfolyam kódolásához és a dekódolásához szükséges idők összegéből adódik, nem számolva a feldolgozás sebességével és az átvitel idejével; a késleltetés adódhat például a hangminták puffereléséből, hogy elegendően legyenek egy-egy blokk vagy keret kitöltéséhez, az MDCT átfedési ablakához, a dekóder zajformálási előolvasásához vagy bármilyen más célú előolvasáshoz, vagy az VBR MP3-kódolás esetében a bit reservoir (bittartalék) céljára.[21]
A teljes egyutas késleltetés 150 ms alá szorítása a legtöbb VoIP rendszer célkitűzése,[22] mert ez szükséges ahhoz, hogy a késleltetés ne zavarja meg a beszélőváltás folyamatát, a közbeszólásokat. A zenészek mintegy 30 ms hangkésleltetésnél nem esnek ki a ritmusból,[23] nagyjából a Haas-hatás összeolvadási idejének megfelelően, bár a saját hangszer visszajátszási késleltetési idejének és a kommunikációs csatorna késleltetésének összehangolása segíthet.[24] A szájszinkron megteremtéséhez a javaslatok szerint 45-100 ms hangkésleltetés lehet elfogadható.[25]
Az Opusszal minőségi, illetve bitrátabeli engedményeket téve az algoritmikus késleltetés lejjebb is szorítható (5,0 ms minimumig).[26] Az alapértelmezett Opus keret 20 ms hosszúságú, ehhez azonban hozzá kell adni további 2,5 ms előolvasási időt a CELT réteg MDCT-jének átfedési ablakához és a SILK réteg zajformálásához, így a késleltetési idő tipikus értéke 22,5 ms. A SILK réteg kerethosszának minimuma 10 ms (12,5 ms késleltetés), a CELT réteg kereténél ez 2,5 ms (5,0 ms késleltetés).[27]
A formátum és az algoritmusok dokumentációja mindenki számára hozzáférhető, a referenciaimplementáció szabad szoftverként hozzáférhető. A Xiph különálló kódolóból és dekódolóból álló referenciaimplementációját (opus-tools) BSD licenc alatt tették közzé. C programozási nyelven írták, lebegőpontos egységgel rendelkező és azzal nem rendelkező hardverarchitektúrákra is lefordítható. A hozzá tartozó diagnosztikai eszköz, az opusinfo egy-egy Opus fájl részletes technikai információit listázza, köztük a szabványnak való megfelelést. A vorbis-tools részét képező ogginfo eszköz alapján írták, így, a kódolótól és a dekódolótól eltérőn GPL 2 alatt elérhető.
Seamless Wikipedia browsing. On steroids.