CELTA - CELT

CELT
Sviluppato da Fondazione Xiph.Org
Tipo di formato Audio
Contenuto da Ogg
Esteso a Opus
Standard Documentazione
libcelt
Sviluppatore/i Fondazione Xiph.org , Jean-Marc Valin
Rilascio in anteprima
0.11.1 / 15 febbraio 2011 ; 10 anni fa ( 2011-02-15 )
Tipo Codec audio , implementazione di riferimento
Licenza 2-clausola BSD
Sito web opus-codec .org

Constrained Energy Lapped Transform ( CELT ) è un formato di compressione audio lossy aperto e privo di royalty e un codec software gratuito con un ritardo algoritmico particolarmente basso per l'uso in comunicazioni audio a bassa latenza . Gli algoritmi sono documentati apertamente e possono essere utilizzati senza restrizioni sui brevetti software . Lo sviluppo del formato è stato mantenuto dalla Xiph.Org Foundation (come parte della famiglia di codec Ogg ) e successivamente coordinato dal gruppo di lavoro Opus dell'Internet Engineering Task Force (IETF).

CELT aveva lo scopo di colmare il divario tra Vorbis e Speex per applicazioni in cui si desidera sia un audio di alta qualità che un basso ritardo. È adatto sia per il parlato che per la musica. Prende in prestito idee dall'algoritmo CELP , ma evita alcune delle sue limitazioni operando esclusivamente nel dominio della frequenza .

L'originale CELT stand-alone è stato fuso in Opus . Pertanto, il CELT come formato autonomo è ora abbandonato e obsoleto. Lo sviluppo è in corso solo per la sua forma ibrida come strato di Opus, integrato con SILK . Questo articolo copre il formato storico e autonomo; per la forma integrata e la sua evoluzione dall'integrazione in Opus si veda l'articolo su Opus.

Proprietà

La caratteristica centrale di CELT è il basso ritardo algoritmico. Consente latenze di solito da 3 a 9 ms, ma è configurabile al di sotto di 2 ms al prezzo di un bitrate maggiore per raggiungere una qualità audio simile. CELT supporta l'audio mono e stereo ed è applicabile sia alla voce che alla musica. Può utilizzare una frequenza di campionamento da 32 kHz a 48 kHz e oltre e un bitrate adattivo da 24 kbit/sa 128 kbit/s per canale e oltre.

Non sono noti problemi di proprietà intellettuale relativi all'algoritmo CELT e la sua implementazione di riferimento è pubblicata con una licenza open source permissiva (la 2 clausole BSD ).

Come Vorbis , CELT è un codec a banda larga (intera gamma dell'udito umano ) per uso generale, cioè non specializzato per tipi speciali di segnali audio e quindi diverso dal suo progetto fratello Speex . Il formato consente risultati trasparenti a bitrate elevati, nonché una qualità molto decente a bitrate inferiori. Tutto sommato, si dice che le capacità di compressione siano significativamente superiori a quelle di MP3 e, come un'altra caratteristica utile per applicazioni in tempo reale come la telefonia, la qualità audio di CELT a bitrate più bassi è persino alla pari con HE-AAC v1, grazie alla piegatura della banda . Nei test comparativi di ascolto in doppio cieco si è rivelato notevolmente superiore a HE-AACv1 a ~64 kBit/s.

Ha una complessità computazionale relativamente bassa che assomiglia a quella della variante a basso ritardo di AAC (AAC-LD) e rimane significativamente al di sotto della complessità di Vorbis.

Consente il bitrate costante e variabile . Se il segnale scompare nel rumore di fondo nelle pause del parlato e in casi simili, la trasmissione può essere limitata per segnalare l'uscita del rumore di comfort al decoder. La maggior parte delle impostazioni del formato abilitato per lo streaming naturale può essere modificata al volo senza interrompere la trasmissione.

Il formato è resistente agli errori di trasmissione. La perdita di pacchetti interi così come gli errori di bit possono essere mascherati con un costante degrado della qualità audio ( occultamento della perdita di pacchetti , PLC).

Tecnologia

schema a blocchi del codec

CELT è un codec di trasformazione basato sulla trasformata del coseno discreta modificata (MDCT) e sui concetti di CELP (con un libro di codici per l'eccitazione, ma nel dominio della frequenza).

Il segnale codificato PCM iniziale viene gestito in blocchi sovrapposti relativamente piccoli per MDCT ( funzione finestra ) e trasformato in coefficienti di frequenza. La scelta di una dimensione del blocco particolarmente corta da un lato consente una bassa latenza, ma porta anche a una scarsa risoluzione di frequenza che deve essere compensata. Per un'ulteriore riduzione del ritardo algoritmico a scapito di un minor sacrificio in termini di qualità audio, il 50% di sovrapposizione per natura tra i blocchi viene praticamente dimezzato silenziando il segnale durante un otto ad entrambe le estremità di un blocco, rispettivamente .

I coefficienti sono raggruppati per assomigliare alle bande critiche del sistema uditivo umano. L'intera quantità di energia di ogni gruppo viene analizzata e i valori quantizzati per la riduzione dei dati e compressi attraverso la previsione trasmettendo solo la differenza ai valori previsti ( codifica delta ).

I valori di energia di banda (non quantizzati) vengono rimossi dai coefficienti DCT grezzi (normalizzazione). I coefficienti del segnale residuo risultante (la cosiddetta "forma a banda") sono codificati dalla quantizzazione vettoriale piramidale (PVQ, una quantizzazione vettoriale sferica ). Questa codifica porta a parole in codice di lunghezza fissa (prevedibile), che a sua volta consente robustezza contro errori di bit e non lascia bisogno di codifica entropica . Infine, tutte le uscite dell'encoder sono codificate in un flusso di bit da un encoder di intervallo . In connessione con il PVQ, il CELT utilizza una tecnica nota come piegatura della banda, che offre un effetto simile alla replicazione della banda spettrale (SBR) riutilizzando i coefficienti delle bande inferiori per quelle superiori, ma ha un impatto molto minore sul ritardo algoritmico e sulla complessità computazionale rispetto a l'SBR. Questo funziona contro gli artefatti "birdie" preservando più ricchezza nelle bande di frequenza appropriate.

Il decoder decomprime i singoli componenti dal flusso di bit codificato in intervallo, moltiplica l'energia della banda per i coefficienti di forma della banda e li trasforma di nuovo (tramite iMDCT) in dati PCM. I singoli blocchi vengono riuniti utilizzando l' aggiunta di sovrapposizione ponderata (WOLA). Molti parametri non sono codificati in modo esplicito, ma ricostruiti utilizzando le stesse funzioni dell'encoder.

Per l' accoppiamento dei canali CELT può utilizzare M/S stereo o stereo di intensità . I blocchi possono essere descritti indipendentemente da frame adiacenti ( Intra-frame ); ad esempio per consentire a un decodificatore di saltare in un flusso in esecuzione. Con i codec di trasformazione i cosiddetti artefatti pre-eco possono essere udibili, perché l'errore di quantizzazione di suoni acuti e ricchi di energia ( transitori ) può diffondersi sull'intero blocco DCT e il transitorio non li maschera indietro nel tempo così come in avanti . Con CELT ogni blocco può essere ulteriormente suddiviso per contrastare tali artefatti.

Storia

Il primo lavoro su piani e bozze per un successore Vorbis è stato svolto nel 2005 su Xiph.org come parte del progetto Ghost (inizialmente chiamato "Vorbis II"). Questa discussione insieme al creatore di Vorbis Christopher Montgomery ha portato all'interesse di Jean-Marc Valin per un codec a latenza particolarmente bassa. Valin ha lavorato su CELT dal 2007. Nel dicembre 2007, la prima versione bozza di libcelt è stata pubblicata come versione 0.0.1, inizialmente denominata "Code-Excited Lapped Transform". CELT è stata fondata come tecnologia IETF nel luglio 2009 nell'ambito del gruppo di lavoro "ietfcodec". Nel maggio 2009 è stata pubblicata una bozza del formato del payload RTP per il Codec CELT .

Nella versione 0.9, la previsione del passo operante nel dominio della frequenza utilizzata fino ad allora è stata sostituita da una soluzione meno complessa con una coppia di pre e post-filtro nel dominio del tempo, fornita da Raymond Chen di Broadcom .

Con CELT 0.11 del 4 febbraio 2011 il formato è stato provvisoriamente congelato ("soft freeze"), riservandosi la possibilità di ultime modifiche inaspettatamente necessarie.

Poco dopo l'avvento del codec ibrido CELT/ SILK Opus (precedentemente noto come Harmony), lo sviluppo di CELT come progetto separato è stato interrotto, vivendo invece sulla base di Opus, che mira a trattare la parte inferiore della gamma spettrale in il dominio del tempo con previsione lineare (SILK) e la parte superiore nel dominio della frequenza con il MDCT . La bozza di Opus è stata registrata presso l'IETF da settembre 2010.

Software

La libreria software libcelt funge da implementazione di riferimento per CELT, scritta in C e pubblicata come software libero sotto la licenza BSD a 3 clausole di Xiph.

Nonostante il formato non sia stato definitivamente congelato, è stato utilizzato in molte applicazioni VoIP come Ekiga e FreeSWITCH , che sono passati a CELT dopo essere entrati in soft-freeze nel gennaio 2009, così come Mumble , TeamSpeak e altri software. Nell'aprile 2011, il supporto per CELT è stato incluso in FFmpeg .

CELT è anche supportato o utilizzato da:

Guarda anche

Riferimenti

link esterno