Opus ist ein Datenformat zur verlustbehafteten Audiodatenkompression mit spezieller Eignung für interaktive Echtzeitübertragungen über das Internet.
Es ist als ein internationaler Offener Standard in RFC 6716 beschrieben. Als grundlegende Verfahren werden eine Frequenztransformation und Linear Predictive Coding (LPC) genutzt. Es ermöglicht besonders hohe Klangqualität und besonders geringe Verzögerung in Übertragungen.
Merkmale mini|Spanne der möglichen Bitraten und algorithmischen Verzögerungen im Vergleich Opus hat eine besonders niedrige Codec-Latenz, um bei Echtzeit-Anwendungen in der Verarbeitung des typischerweise unmittelbar vor der komprimierten Übertragung erzeugten Signales möglichst wenig Verzögerung (Latenzzeit) zu verursachen. Opus arbeitet mit Blocklängen von 2,5 bis 20 (60) ms mit dynamischem, artefaktfreiem Wechsel zwischen unterschiedlichen Blocklängen. Hinzu kommen je nach Modus noch 2,5 bis 5 ms an Lookahead. Es erlaubt konstante und variable Bitraten über einen sehr weiten Bereich von 6 kbit/s bis zu 510 kbit/s und die Abbildung des gesamten menschlichen Hörbereiches. Es können nur je zwei Kanäle (Stereo) gekoppelt werden. Mehr Kanäle können dargestellt werden, indem sie (unabhängig oder eben eventuell paarweise gekoppelt) zusammen in eine Containerdatei gemultiplext werden. Für empfängerseitige Lautheits-Anpassungen wird die EBU-Empfehlung R 128 unterstützt.
Das Verfahren ist als offener Standard offen dokumentiert und eine Referenzimplementierung im Quellcode veröffentlicht. Teile des Verfahrens sind mit Softwarepatenten belastet, wobei die Rechteinhaber unbeschränkter Verwendung ihrer Patente im Rahmen der Verwendung des Codecs einschließlich zukünftiger Versionen des Standards zugestimmt haben. Dabei behalten sich jedoch alle vor, ihre Patente zur Abwehr von Patentklagen Dritter einzusetzen.
Opus ist ein Hybrid-Verfahren aus CELT und einer stark modifizierten, inkompatiblen Version von SILK. Das Verfahren kennt dreierlei Modi, zwei für reine Sprachsignale und einen unspezialisierten für beispielsweise Musik. Bei den Sprach-Modi steht ein Modus zur Verfügung, in dem der gesamte menschliche Hörbereich abgebildet wird, wobei die im Wesentlichen auf Frequenztransformation (MDCT) basierenden Algorithmen von CELT für einen oberen Frequenzanteil ab 8 kHz, die im Wesentlichen auf Linear Predictive Coding (LPC) basierenden SILK-Algorithmen für den unteren zuständig sind. Für niedrige Bitraten (sinnvoll unterhalb etwa 30 kbit/s) kann der Frequenzbereich eingeschränkt werden und die CELT-Schicht ausgelassen werden. Für andere Signalarten kann die auf Sprachsignale spezialisierte SILK-Schicht abgeschaltet und ausschließlich das unspezialisierte CELT benutzt werden. Ab Version 0.9.2 (März 2011) kann im laufenden Betrieb nahtlos zwischen diesen Modi umgeschaltet werden und der Encoder wählt in Voreinstellung den Modus automatisch.
Opus-Daten können in Ogg-Container verpackt werden. Der Inhalt solcher Ogg-Opus-Datenströme wird dann mit audio/ogg; codecs=opus angegeben und für Ogg-Opus-Dateien wird die Dateinamenserweiterung .opus empfohlen. Opus-Datenströme können außerdem in Matroska, WebM, MPEG-TS, und MP4-Containern eingebettet werden oder mit Verfahren wie RTP in Echtzeit über IP-basierte Netzwerke gesendet werden.
Tonqualität mini|Kodierungseffizienz-Kennlinie im Vergleich In vergleichenden Hörtests zeigt sich Opus bei niedrigen Bitraten den bisher durch die Verwendung der proprietären Spektralbandreplikation dominanten HE-AAC-Codecs qualitativ überlegen. Bei Bitraten von 12 kbit/s und darunter unterlag eine Version des Codecs von Mitte Februar 2011 bei Sprachsignalen den AMR-Codecs aus GSM, die hier qualitativ den Stand der Technik markieren. Für Sprachsignale zeigte sich Opus-intern der Hybrid-Modus bei Bitraten zwischen etwa 20 und 48 kbit/s überlegen – darüber der rein MDCT-basierte und darunter der rein LPC-basierte Modus. Im Unterschied zu anderen gängigen Transformationsverfahren sind für Opus stark tonale Signale besonders schwierig und komplexe Passagen hingegen relativ sparsam darstellbar.
Technik mini|400px|links|Spektrogramm einer Opus-kodierten Musikaufnahme bei unterschiedlichen Durchschnittsbitraten (≈32 bis ≈160 kbit/s) zeigt deutlich das Tiefpass-Verhalten des Kodierers und die vergleichsweise gute Erhaltung der Bandenergie durch CELT (vergleiche Original, Vorbis, MP3, AAC). Opus ist ein aus zwei verschiedenen, ursprünglich separaten Verfahren kombinierter Hybridcodec. Eine Transformations-Schicht (ursprünglich CELT) arbeitet auf Basis der modifizierten diskreten Kosinustransformation (MDCT) und Ansätzen von CELP (Codebuch zur Anregung, jedoch in der Frequenzdomäne). Eine auf Sprachsignale spezialisierte Schicht (ursprünglich SILK) basiert auf Linear Predictive Coding (LPC). Das ursprüngliche SILK wurde modifiziert und unter anderem Unterstützung für 10-Millisekunden-Blöcke hinzugefügt. Die gemeinsame Bereichskodierung der beiden Anteile eines Hybrid-Datenstromes wurde von CELT übernommen. Der LPC-Teil arbeitet intern mit einer Abtastfrequenz von 16 kHz. Der Kodierer besitzt einen eingebauten Abtastratenkonverter. Zur Kompensierung des geringeren Lookahead des CELT-Signales wird dieses entsprechend verzögert. SILK hat eine größere algorithmische Verzögerung, um in seinem typischen Einsatzszenario die durch die Übertragungsprotokolle anfallenden Verwaltungsdaten zu minimieren. So sind beispielsweise im reinen CELT-Betrieb niedrigere Latenzen möglich.
Transformations-Schicht (CELT) Siehe auch Artikel CELT, Abschnitt Technik
Die Transformations-Schicht von Opus funktioniert technisch weitgehend gleich dem aufgegebenen eigenständigen CELT. Es wurde allerdings für die Integration mit SILK modifiziert und auch weiterentwickelt. Hinzugekommen sind Unterstützung für 20-Millisekunden-Blöcke und signalisierbare Abweichungen von der festgelegten Zuweisung verfügbarer Bits auf die (Bark-)Bänder mit einem sogenannten „allocation tilt“ und einem sogenannten „band boost“.
Beteiligte Personen und Organisationen Opus wird von der Internet Engineering Task Force (IETF) als RFC 6716 als internationaler Offener Standard für verlustbehaftete Audiodatenkomprimierung im Internet empfohlen. Er wurde im Standardisierungsverfahren bei der IETF von der Codec-Arbeitsgruppe mit Personal von und auf Basis von zunächst separaten Vorschlägen der Xiph.Org Foundation und Skype Technologies S.A. (heute Microsoft) entwickelt. Hauptentwickler sind Jean-Marc Valin (Xiph.Org, Octasic, Mozilla Corporation), Koen Vos (Skype) und Timothy B. Terriberry (Mozilla Corporation). Weiterhin beteiligt waren Raymond Chen (Broadcom), Gregory Maxwell (Xiph.Org) und Christopher Montgomery (Xiph.Org).
Mozilla zahlt dem Hauptentwickler Valin im Rahmen einer bezahlten Anstellung ein Gehalt für seine Entwicklungsarbeit an Opus. Auch der Browser-Hersteller Opera Software unterstützt Opus explizit als neuen, offenen Standard. Google LLC setzt sich für die Etablierung von Opus als lizenzkostenfreies Standardformat im Internet ein. Die Skype-Abteilung von Microsoft ist als (Mit-)Initiator des Standardisierungsprozesses weiterhin aktiv an diesem beteiligt. Juin-Hwey (Raymond) Chen von Broadcom steuerte einen Vor- und Nachfilter zur Tonhöhen-Vorhersage in CELT bei. Weitere Beteiligte im Standardisierungsverfahren bei der IETF waren Vertreter des Lehrstuhls für Kommunikationsnetze der Universität Tübingen beziehungsweise deren kommerzieller Unternehmensausgründung Symonics, von Polycom und von Cisco Systems.
Broadcom und die Xiph.Org Foundation halten Patente mit Bezug auf CELT, Patente von Skype/Microsoft sind für den SILK-Teil von Belang. Angebliche Patentansprüche von Qualcommlists.xiph.org und Huawei erwiesen sich als unzutreffend.hacks.mozilla.org
Geschichte Die Entwicklung des CELT-Teils geht auf Überlegungen für einen Nachfolger für Vorbis zurück, als dessen Nachfolger es auch von den Merkmalen her gelten kann. Weiterhin löst Opus als neuer Sprachcodec der Xiph-Stiftung deren älteren Sprachcodec Speex ab, der auch das Vorgängerprojekt des Hauptentwicklers Jean-Marc Valin darstellt, mit dem er Erfahrungen mit der Gestaltung von Audio-Codecs gesammelt hat. An CELT wurde seit November 2007 praktisch gearbeitet. Der seit Januar 2007 von Skype entwickelte SILK-Teil ist das Nachfolgeprojekt des SVOPC, welcher als Eigenentwicklung das Unternehmen von den externen, kostenpflichtig lizenzierten Lösungen iSAC und iLBC unabhängig machen sollte.
Siehe auch Artikel CELT, Abschnitt Geschichte und Artikel SILK, Abschnitt Geschichte
Im März 2009 regte Skype bei der IETF die Entwicklung und Standardisierung eines breitbandigen Audio-Codecs an. Daraufhin verging nahezu ein Jahr mit langen und hitzigen Debatten über die Bildung einer entsprechenden Arbeitsgruppe. Vertreter verschiedener Firmen, die an der Standardisierung von patentbelasteten Konkurrenzformaten beteiligt waren, äußerten Einwände gegen die Aufnahme der Standardisierungsarbeiten für einen lizenzkostenfreien Codec. Namentlich traten dabei Vertreter der Firmen Polycom und Ericsson auf – den Machern und Lizenzverkäufern zu G.719 –, sowie von France Télécom, Huawei und den Orange Labs (Abteilung der France Télécom), welche an G.718 beteiligt waren. Im Februar 2010 kam die Arbeitsgruppe schließlich dennoch zustande, der sogar Unterstützung von der entsprechenden Study Group 16 der ITU-T zugesichert wurde.
Im Juli wurde ein erster Prototyp eines Hybridformates veröffentlicht, das die beiden eingereichten Codec-Kandidaten SILK und CELT kombinierte – die Ur-Version von Opus. Das Format wurde im September 2010 bei der IETF zur Standardisierung vorgelegt. Zwischenzeitlich war es eine kurze Zeit als „Harmony“ bekannt, bevor es im Oktober 2010 seinen heutigen Namen bekam. Das Bitstromformat ist seit Anfang Februar 2011 unter dem Vorbehalt letzter Änderungen vorläufig festgelegt. Zum Ende des Juli 2011 erhielt Jean-Marc Valin eine bezahlte Anstellung bei der Mozilla Corporation, um (mehr) an Opus zu arbeiten. Im November 2011 erging der letzte Aufruf der IETF-Arbeitsgruppe für Änderungen am Bitstrom-Format. Am 2. Juli 2012 wurde das Format von der IETF akzeptiert. Die Software befand sich seit dem 8. August im Release-Candidate-Stadium. Die offizielle Veröffentlichung der endgültigen Spezifikation und von Version 1.0 und 1.0.1 der Referenz-Software erfolgte am 11. September 2012.
Relativ schnell wurde in vielfältige Software Unterstützung für das Format eingebaut. Bereits im selben Jahr waren zahlreiche entsprechende Entwicklungsversionen verfügbar, unter anderem von einflussreichen und populären Projekten wie dem Web-Browser Firefox, dem Betriebssystem Debian und dem VLC media player.
Version 1.1 Mittlerweile wurde in einem experimentellen Entwicklungszweig des Referenz-Kodierers begonnen, auf eine Version 1.1 mit deutlich besserer Klangqualität hinzuarbeiten.git.xiph.orghydrogenaudio.org Am 21. Dezember 2012 erschien nach über einem Jahr Entwicklungszeit eine erste Alpha-Version der 1.1-Reihe.lists.xiph.org Am 11. Juli 2013 begann die Beta-Phase für Version 1.1 und wurde Version 1.0.3 veröffentlicht, die einige Fehler behebt und die Raumklang-API der 1.1-Serie übernimmt. Die fertige Version 1.1 wurde am 5. Dezember 2013 veröffentlicht.Opus Codec (Abschnitt News)