CELT - CELT

KELTE
Entwickelt von Xiph.Org-Stiftung
Formattyp Audio
Enthalten von Ogg
Erweitert um Opus
Standard Dokumentation
libcelt
Entwickler Xiph.org-Stiftung , Jean-Marc Valin
Vorschauversion
0.11.1 / 15. Februar 2011 ; vor 10 Jahren ( 2011-02-15 )
Typ Audio-Codec , Referenzimplementierung
Lizenz 2-Klausel BSD
Webseite opus-codec .org

Constrained Energy Lapped Transform ( CELT ) ist ein offenes, lizenzfreies verlustbehaftetes Audiokompressionsformat und ein kostenloser Software- Codec mit besonders geringer algorithmischer Verzögerung für den Einsatz in der Audiokommunikation mit geringer Latenz . Die Algorithmen sind offen dokumentiert und dürfen frei von Softwarepatentbeschränkungen verwendet werden. Die Entwicklung des Formats wurde von der Xiph.Org Foundation (als Teil der Ogg- Codec-Familie) betreut und später von der Opus- Arbeitsgruppe der Internet Engineering Task Force (IETF) koordiniert .

CELT sollte die Lücke zwischen Vorbis und Speex für Anwendungen schließen, bei denen sowohl eine hohe Audioqualität als auch eine geringe Verzögerung erwünscht sind. Es ist sowohl für Sprache als auch für Musik geeignet. Es übernimmt Ideen aus dem CELP- Algorithmus, vermeidet jedoch einige seiner Einschränkungen, indem es ausschließlich im Frequenzbereich arbeitet .

Das ursprüngliche eigenständige CELT wurde in Opus zusammengeführt . Daher ist CELT als eigenständiges Format mittlerweile aufgegeben und veraltet. Die Entwicklung wird nur für seine hybridisierte Form als Schicht von Opus, integriert mit SILK , fortgesetzt . Dieser Artikel behandelt das historische, eigenständige Format; für die integrierte Form und ihre Entwicklung seit der Integration in Opus siehe den Artikel über Opus.

Eigenschaften

Das zentrale Merkmal von CELT ist die geringe algorithmische Verzögerung. Es ermöglicht Latenzen von typischerweise 3 bis 9 ms, ist jedoch auf unter 2 ms konfigurierbar, zum Preis einer höheren Bitrate, um eine ähnliche Audioqualität zu erreichen. CELT unterstützt Mono- und Stereo-Audio und ist sowohl auf Sprache als auch auf Musik anwendbar. Es kann eine Abtastrate von 32 kHz bis 48 kHz und mehr und eine adaptive Bitrate von 24 kbit/s bis 128 kbit/s pro Kanal und mehr verwenden.

Es sind keine Probleme mit geistigem Eigentum in Bezug auf den CELT-Algorithmus bekannt, und seine Referenzimplementierung wird unter einer freizügigen Open-Source-Lizenz veröffentlicht (die 2-Klausel BSD ).

CELT ist wie Vorbis ein Fullband (gesamter menschlicher Hörbereich ) Allzweck-Codec, dh nicht auf spezielle Arten von Audiosignalen spezialisiert und daher anders als sein Geschwisterprojekt Speex . Das Format ermöglicht transparente Ergebnisse bei hohen Bitraten sowie eine sehr gute Qualität bei niedrigeren Bitraten. Insgesamt sollen die Komprimierungsfunktionen denen von MP3 deutlich überlegen sein , und als weiteres nützliches Feature für Echtzeitanwendungen wie Telefonie ist die Audioqualität von CELT bei niedrigeren Bitraten dank der Bandfaltung sogar auf dem Niveau von HE-AAC v1 . In vergleichenden Doppelblind-Hörtests erwies er sich mit ~64 kBit/s gegenüber HE-AACv1 deutlich überlegen.

Es hat eine vergleichsweise geringe Rechenkomplexität, die der Low-Delay-Variante von AAC (AAC-LD) ähnelt und deutlich unter der Komplexität von Vorbis bleibt.

Es ermöglicht eine konstante und variable Bitrate. Verschwindet das Signal in Sprechpausen und ähnlichen Fällen im Grundrauschen, kann die Übertragung eingeschränkt werden, um die Ausgabe von Komfortrauschen an den Decoder zu signalisieren . Die meisten Einstellungen des natürlich Streaming-fähigen Formats können im Handumdrehen geändert werden, ohne die Übertragung zu unterbrechen.

Das Format ist robust gegenüber Übertragungsfehlern. Der Verlust ganzer Pakete sowie Bitfehler können mit einer stetigen Verschlechterung der Audioqualität ( Packet Loss Concealment , PLC) maskiert werden .

Technologie

Blockschaltbild des Codecs

CELT ist ein Transformationscodec basierend auf der modifizierten diskreten Kosinustransformation (MDCT) und Konzepten von CELP (mit einem Codebuch für die Anregung, aber im Frequenzbereich).

Das anfängliche PCM-codierte Signal wird in relativ kleinen, überlappenden Blöcken für die MDCT ( Fensterfunktion ) behandelt und in Frequenzkoeffizienten transformiert. Die Wahl einer besonders kurzen Blockgröße ermöglicht einerseits eine geringe Latenz, führt aber auch zu einer schlechten Frequenzauflösung, die kompensiert werden muss. Für eine weitere Reduzierung der algorithmischen Verzögerung auf Kosten einer geringen Einbuße bei der Audioqualität werden die naturgemäß 50% der Überlappung zwischen den Blöcken praktisch auf die Hälfte reduziert, indem das Signal während einer Acht an beiden Enden eines Blocks jeweils stummgeschaltet wird .

Die Koeffizienten sind gruppiert, um den kritischen Bändern des menschlichen Hörsystems zu ähneln . Die gesamte Energiemenge jeder Gruppe wird analysiert und die Werte zur Datenreduktion quantisiert und durch Vorhersage komprimiert, indem nur die Differenz zu den vorhergesagten Werten übertragen wird ( Delta-Codierung ).

Die (unquantisierten) Bandenergiewerte werden aus den DCT-Rohkoeffizienten entfernt (Normalisierung). Die Koeffizienten des resultierenden Restsignals (sog. „Band Shape“) werden durch Pyramid Vector Quantization (PVQ, eine sphärische Vektorquantisierung ) kodiert . Diese Codierung führt zu Codewörtern mit fester (vorhersagbarer) Länge, was wiederum eine Robustheit gegenüber Bitfehlern ermöglicht und keine Notwendigkeit für eine Entropiecodierung lässt . Schließlich werden alle Ausgaben des Codierers durch einen Bereichscodierer zu einem Bitstrom codiert . In Verbindung mit dem PVQ verwendet CELT eine als Bandfaltung bekannte Technik, die einen ähnlichen Effekt wie die Spektralbandreplikation (SBR) liefert, indem Koeffizienten niedrigerer Bänder für höhere verwendet werden, aber viel weniger Einfluss auf die algorithmische Verzögerung und die Rechenkomplexität hat als der SBR. Dies wirkt gegen „Birdie“-Artefakte, indem mehr Fülle in den entsprechenden Frequenzbändern erhalten bleibt.

Der Decoder entpackt die einzelnen Komponenten aus dem bereichscodierten Bitstrom, multipliziert die Bandenergie mit den Bandformkoeffizienten und wandelt sie (über iMDCT) zurück in PCM-Daten. Die einzelnen Blöcke werden mittels Weighted Overlap-Add (WOLA) wieder zusammengefügt. Viele Parameter werden nicht explizit codiert, sondern unter Verwendung der gleichen Funktionen wie der Codierer rekonstruiert.

Für die Kanalkopplung kann CELT M/S-Stereo oder Intensitäts-Stereo verwenden . Blöcke können unabhängig von benachbarten Frames beschrieben werden ( Intra-Frame ); um beispielsweise einem Decoder das Springen in einen laufenden Stream zu ermöglichen. Bei Transform-Codecs können sogenannte Pre-Echo-Artefakte hörbar werden, da sich der Quantisierungsfehler von scharfen, energieintensiven Klängen ( Transienten ) über den gesamten DCT-Block ausbreiten kann und der Transient diese nicht sowohl zeitlich rückwärts als auch vorwärts maskiert . Mit CELT kann jeder Block weiter unterteilt werden, um solche Artefakte zu verhindern.

Geschichte

Erste Arbeiten an Plänen und Entwürfen für einen Vorbis-Nachfolger wurden 2005 bei Xiph.org im Rahmen des Ghost-Projekts (ursprünglich als „Vorbis II“ bezeichnet) durchgeführt. Diese Diskussion zusammen mit Vorbis-Schöpfer Christopher Montgomery führte dazu, dass Jean-Marc Valin sich für einen Codec mit besonders niedriger Latenz interessierte. Valin arbeitet seit 2007 an CELT. Im Dezember 2007 wurde die erste Entwurfsversion von libcelt als Version 0.0.1 veröffentlicht, zunächst mit dem Namen „Code-Excited Lapped Transform“. CELT wurde im Juli 2009 im Rahmen der Arbeitsgruppe "ietfcodec" als IETF- Technologie gegründet. Im Mai 2009 wurde ein Entwurf des RTP- Nutzlastformats für den CELT-Codec veröffentlicht.

In der Version 0.9 wurde die bis dahin verwendete Tonhöhenvorhersage im Frequenzbereich durch eine weniger komplexe Lösung mit einem Vor- und Nachfilterpaar im Zeitbereich ersetzt, die von Raymond Chen von Broadcom beigesteuert wurde .

Mit CELT 0.11 vom 4. Februar 2011 wurde das Format versuchsweise eingefroren („Soft Freeze“) – vorbehaltlich unerwartet notwendiger letzter Änderungen.

Kurz nach dem Aufkommen des CELT/ SILK- Hybrid-Codecs Opus (früher bekannt als Harmony) wurde die Entwicklung von CELT als separates Projekt gestoppt und stattdessen auf der Basis von Opus gelebt, der den unteren Teil des Spektralbereichs in behandeln soll der Zeitbereich mit linearer Prädiktion (SILK) und der höhere Teil im Frequenzbereich mit der MDCT . Der Entwurf für Opus ist seit September 2010 bei der IETF registriert.

Software

Die Softwarebibliothek libcelt dient als Referenzimplementierung für CELT, ist in C geschrieben und als freie Software unter Xiphs eigener 3-Klausel-BSD-ähnlicher Lizenz veröffentlicht.

Obwohl das Format nicht endgültig eingefroren wurde, wurde es in vielen VoIP- Anwendungen wie Ekiga und FreeSWITCH verwendet , die nach dem Eintritt in Soft-Freeze im Januar 2009 auf CELT umgestellt wurden, sowie in Mumble , TeamSpeak und anderer Software. Im April 2011 wurde die Unterstützung für CELT in FFmpeg aufgenommen .

CELT wird auch unterstützt oder verwendet von:

Siehe auch

Verweise

Externe Links