КЕЛЬТ
Разработано | Фонд Xiph.Org |
---|---|
Тип формата | Аудио |
Содержится | Огг |
Распространено на | Опус |
Стандартный | Документация |
Разработчик(и) | Фонд Xiph.org , Жан-Марк Вален |
---|---|
Предварительный выпуск | 0.11.1 / 15 февраля 2011 г |
Тип | Аудиокодек , эталонная реализация |
Лицензия | 2-пунктовый BSD |
Веб-сайт | опус-кодек |
Constrained Energy Lapped Transform ( CELT ) — это открытый, бесплатный с потерями формат сжатия звука и бесплатный программный кодек с особенно низкой алгоритмической задержкой для использования в с малой задержкой аудиосвязи . Алгоритмы открыто документированы и могут использоваться без ограничений , связанных с патентами на программное обеспечение . Разработку формата поддерживал фонд Xiph.Org (как часть семейства кодеков Ogg ), а затем координировал Opus рабочую группу Инженерной рабочей группы Интернета (IETF).
CELT был призван устранить разрыв между Vorbis и Speex для приложений, где требуется как высокое качество звука, так и низкая задержка. [1] Он подходит как для речи, так и для музыки. Он заимствует идеи из алгоритма CELP , но позволяет избежать некоторых его ограничений, работая исключительно в частотной области . [1]
Исходный автономный CELT был объединен с Opus .Таким образом, CELT как отдельный формат в настоящее время заброшен и устарел. Разработка ведется только для его гибридной формы в виде слоя Opus, интегрированного с SILK .В этой статье рассматривается исторический автономный формат; Интегрированную форму и ее эволюцию с момента интеграции в Opus см. в статье об Opus.
Свойства [ править ]
Центральной особенностью CELT является низкая алгоритмическая задержка. Он допускает задержку обычно от 3 до 9 мс, но его можно настроить на значение ниже 2 мс за счет увеличения битрейта для достижения аналогичного качества звука. [2] CELT поддерживает моно- и стереозвук и применим как к речи, так и к музыке. Он может использовать частоту дискретизации от 32 кГц до 48 кГц и выше и адаптивный битрейт от 24 до 128 кбит/с на канал и выше. [2]
Не существует известных проблем с интеллектуальной собственностью , касающихся алгоритма CELT, и его эталонная реализация публикуется под разрешительной лицензией с открытым исходным кодом ( 2-пунктная BSD ). [1] [3]
Как и Vorbis , CELT представляет собой полнополосный (весь диапазон человеческого слуха ) кодек общего назначения, т.е. не специализированный для особых типов аудиосигналов и поэтому отличающийся от своего родственного проекта Speex . Формат обеспечивает прозрачные результаты при высоких битрейтах, а также очень приличное качество при более низких битрейтах. В целом, возможности сжатия, как говорят, значительно превосходят возможности MP3 , а в качестве еще одной полезной функции для приложений реального времени, таких как телефония, качество звука CELT при более низких битрейтах даже находится на одном уровне с HE-AAC v1 благодаря сворачиванию полосы частот. . [4] [5] В сравнительных двойных слепых тестах на прослушивание он оказался заметно лучше HE-AACv1 на скорости ~64 кбит/с. [6]
Он имеет сравнительно низкую вычислительную сложность, напоминающую вариант AAC с малой задержкой (AAC-LD), и значительно ниже сложности Vorbis. [7]
Это позволяет использовать постоянный и переменный битрейт. Если сигнал исчезает в минимальном уровне шума в речевых паузах и подобных случаях, передача может быть ограничена сигналом о выводе комфортного шума в декодер. Большинство настроек формата с естественной поддержкой потоковой передачи можно изменить на лету, не прерывая передачу.
Формат устойчив к ошибкам передачи. Потеря целых пакетов, а также битовые ошибки могут быть замаскированы постоянным ухудшением качества звука ( сокрытие потери пакетов , ПЛК).
Технология [ править ]
CELT — это кодек преобразования, основанный на модифицированном дискретном косинусном преобразовании (MDCT) и концепциях CELP (с кодовой книгой для возбуждения, но в частотной области).
Исходный сигнал , закодированный PCM, обрабатывается относительно небольшими перекрывающимися блоками для MDCT ( оконной функции ) и преобразуется в частотные коэффициенты. Выбор особенно короткого размера блока, с одной стороны, обеспечивает низкую задержку, но также приводит к плохому разрешению по частоте, которое необходимо компенсировать. Для дальнейшего уменьшения алгоритмической задержки за счет незначительного ухудшения качества звука естественное 50% перекрытие между блоками практически сокращается до половины за счет подавления сигнала в течение одной восьмой на обоих концах блока соответственно. . [2]
Коэффициенты сгруппированы так, чтобы напоминать критические полосы слуховой системы человека. Все количество энергии каждой группы анализируется, а значения квантуются для сокращения данных и сжимаются посредством прогнозирования путем передачи только разницы в прогнозируемые значения ( дельта-кодирование ).
(Неквантованные) значения энергии полосы удаляются из необработанных коэффициентов DCT (нормализация). Коэффициенты результирующего остаточного сигнала (так называемая «форма полосы») кодируются с помощью пирамидального векторного квантования (PVQ, сферическое векторное квантование ). [8] Такое кодирование приводит к кодовым словам фиксированной (предсказуемой) длины, что, в свою очередь, обеспечивает устойчивость к битовым ошибкам и не оставляет необходимости в энтропийном кодировании . [5] Наконец, все выходные данные кодера кодируются в один битовый поток с помощью кодера диапазона . [9] В связи с PVQ CELT использует метод, известный как сворачивание полос, который обеспечивает эффект, аналогичный репликации спектральных полос (SBR), за счет повторного использования коэффициентов нижних полос для более высоких, но оказывает гораздо меньшее влияние на алгоритмическую задержку и сложность вычислений, чем СБР. Это работает против «птичьих» артефактов , сохраняя больше богатства в соответствующих полосах частот.
Декодер распаковывает отдельные компоненты из битового потока с диапазонным кодированием, умножает энергию полосы на коэффициенты формы полосы и преобразует их обратно (через iMDCT) в данные PCM. Отдельные блоки соединяются с использованием взвешенного перекрытия (WOLA). Многие параметры не кодируются явно, а реконструируются с использованием тех же функций, что и кодировщик.
Для связи каналов CELT может использовать стерео M/S или стерео интенсивности . Блоки могут описываться независимо от соседних кадров ( Intra-frame ); например, чтобы позволить декодеру перейти в текущий поток. При использовании кодеков преобразования могут стать слышимыми так называемые артефакты предварительного эха, поскольку ошибка квантования резких, энергоемких звуков ( переходных процессов ) может распространиться по всему блоку DCT, и переходный процесс не маскирует их как назад во времени, так и вперед. . С помощью CELT каждый блок можно дополнительно разделить, чтобы предотвратить появление таких артефактов.
История [ править ]
Первая работа над планами и набросками преемника Vorbis была проведена в 2005 году на сайте Xiph.org в рамках проекта Ghost (первоначально называвшегося «Vorbis II»). Эта дискуссия вместе с создателем Vorbis Кристофером Монтгомери привела к интересу Жана-Марка Валена к кодеку с особенно низкой задержкой. Валин работает в CELT с 2007 года. [5] В декабре 2007 года первая черновая версия libcelt была опубликована как версия 0.0.1, первоначально названная «Code-Excited Lapping Transform». [10] [11] CELT была создана как технология IETF в июле 2009 года. [3] [12] [13] [14] в рамках рабочей группы «ietfcodec». проект формата полезной нагрузки RTP для кодека CELT . В мае 2009 года был опубликован [15]
В версии 0.9 прогнозирование высоты тона, работающее в используемой до этого частотной области, было заменено менее сложным решением с парой пре- и постфильтров во временной области. [16] который был предоставлен Рэймондом Ченом из Broadcom . [5]
В CELT 0.11 от 4 февраля 2011 г. формат был предварительно заморожен («мягкое замораживание») – с сохранением возможности неожиданно необходимых последних изменений.
Вскоре после появления CELT/ SILK гибридного кодека Opus (ранее известного как Harmony) развитие CELT как отдельного проекта было остановлено, вместо этого жившего на базе Opus, [17] целью которого является обработка нижней части спектрального диапазона во временной области с помощью линейного предсказания (SILK) и верхней части в частотной области с помощью MDCT . Проект Opus зарегистрирован в IETF с сентября 2010 года.
Программное обеспечение [ править ]
Библиотека программного обеспечения libcelt служит эталонной реализацией CELT, написанной на C и опубликованной как бесплатное программное обеспечение под собственной трехпунктной лицензией BSD Xiph.
Несмотря на то, что формат не был окончательно заморожен, он использовался во многих приложениях VoIP, таких как Ekiga. [18] и FreeSWITCH , [19] которые перешли на CELT после перехода в режим мягкого замораживания в январе 2009 года, а также Mumble , TeamSpeak и другие [20] программное обеспечение. В апреле 2011 года поддержка CELT была включена в FFmpeg . [21] [22]
CELT также поддерживается или используется: [20]
- GStreamer
- комплект для подключения аудиоразъема (netjack)
- Мамбл (начиная с версии 1.2)
- SFLтелефон
- ТимСпик 3
- СПАЙС
- Дота 2 [23]
- Counter Strike: Глобальное наступление
- Командная крепость 2 [24]
См. также [ править ]
- Сравнение форматов кодирования звука
- Opus (аудиоформат) — преемник CELT
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б с Xiph.Org Аудиокодек CELT со сверхмалой задержкой — домашняя страница. Архивировано 31 августа 2018 г. на Wayback Machine , проверено 1 сентября 2009 г.
- ^ Jump up to: Перейти обратно: а б с Презентация кодека. Архивировано 7 августа 2011 г. на Wayback Machine Тимоти Б. Терриберри (65 минут видео в ~ 100 МБ OggTheora+Vorbis, см. также слайды презентации. Архивировано 10 августа 2011 г. на Wayback Machine в формате PDF, ~). 2,3 МБ)
- ^ Jump up to: Перейти обратно: а б Вален, Жан-Марк; Терриберри, Тимоти Б.; Максвелл, Грег; Монтгомери, Кристофер (8 июля 2010 г.). «Кодек преобразования с перекрытием ограниченной энергии (CELT)» .
- ^ Фиона Глейзер (18 ноября 2010 г.). «Важно: предстоящее замораживание битового потока CELT!» . ffmpeg-devel.mplayerhq.hu — обсуждения разработки FFmpeg и список рассылки исправлений . mplayerhq.hu . Проверено 11 июня 2012 г.
- ^ Jump up to: Перейти обратно: а б с д Кристофер Монтгомери (23 декабря 2010 г.). «Аудио следующего поколения: обновление CELT 20101223» . Демо-страницы Монти . Xiph.Org. Архивировано из оригинала 23 августа 2013 г. Проверено 11 июня 2012 г.
- ^ Дирк Бёзель (18 апреля 2011 г.). «CELT впечатляет результатами теста мультиформатного прослушивания со скоростью 64 кбит/с (2011 г.)» . MPeX.net (на немецком языке). MPeX.net GmbH . Проверено 25 апреля 2011 г.
- ^ Вален, Жан-Марк; Терриберри, Тимоти Б.; Монтгомери, Кристофер ; Максвелл, Грегори (17 апреля 2009 г.), «Высококачественный речевой и аудиокодек с задержкой менее 10 мс» (PDF) , Транзакции IEEE по обработке звука, речи и языка , том. 18, нет. 1, Общество обработки сигналов IEEE , получено 16 февраля 2011 г.
- ^ Фишер, Томас Р. (июль 1986 г.), «Пирамидный векторный квантователь», IEEE Transactions on Information Theory , vol. 32, нет. 4, стр. 568–583, номер документа : 10.1109/TIT.1986.1057198.
- ^ вторая версия проекта спецификации
- ^ Жан-Марк Вален (9 декабря 2007 г.). «Экспериментальный выпуск Ghost/CELT 0.0.1» . Форумы Hydrogenaudio . Проверено 11 июня 2012 г.
- ^ Xiph.Org (08 декабря 2007 г.) Релизы CELT - celt-0.0.1.tar.gz , дата обращения 1 сентября 2009 г.
- ^ Моника Эрмерт (13 ноября 2009 г.). «IETF заботится о бесплатном аудиокодеке» . Хайз онлайн . Проверено 12 февраля 2011 г.
- ^ Вален, Жан-Марк; Терриберри, Тимоти; Максвелл, Грегори; Монтгомери, Кристофер (8 июля 2010 г.). «Кодек преобразования с перекрытием ограниченной энергии (CELT)» . Трекер данных IETF .
- ^ IETF - Рабочая группа AVT (04 июля 2009 г.) Кодек преобразования с ограниченной энергией (CELT) , дата обращения 1 сентября 2009 г.
- ^ IETF - Рабочая группа AVT (08 мая 2009 г.) Формат полезной нагрузки RTP для кодека CELT , дата обращения 1 сентября 2009 г.
- ^ Жан-Марк Вален (15 февраля 2011 г.). «Сложность декодера CELT» . CELT-разработчик . Xiph.Org. Архивировано из оригинала 02 апреля 2012 г. Проверено 11 июня 2012 г.
- ^ Жан-Марк Вален, Коэн Вос (октябрь 2010 г.). «Определение аудиокодека Opus» . Интернет-проекты IETF . Рабочая группа сети IETF . Проверено 11 июня 2012 г.
- ^ Доступна Экига 3.1.0.
- ^ FreeSWITCH: Новый выпуск к Новому году
- ^ Jump up to: Перейти обратно: а б «Программное обеспечение, которое использует или поддерживает CELT» . Сайт ЦЭЛТ . Xiph.Org . Проверено 12 июня 2012 г.
- ^ Джордж, Николас (20 апреля 2011 г.). «[FFmpeg-devel] [ИСПРАВЛЕНИЕ] Поддержка декодирования Xiph CELT/Opus с использованием libcelt» .
- ^ «git.videolan.org Git — ffmpeg.git/commit» . git.videolan.org .
- ^ «Примечания к обновлению — Разработчики Dota2» .
- ^ «Тим Фортресс 2» . www.teamfortress.com .