Не так давно на Хабре в статье «Применение нелинейной динамики и теории Хаоса к задаче разработки нового алгоритма сжатия аудио данных» был анонсировал принципиально новый аудио-кодек с пятью невиданными ранее уникальными свойствами. Подобная формулировка вызвала интерес и желание немного разобраться, что к чему.

Далее будут рассмотрены заявленные уникальные свойства и произведено несколько тестовых измерений.

Обзор свойств


Предпрослушивание


В статье описывается довольно сложная формула для объяснения этого свойства, но на самом деле всё намного проще. По факту это свойство означает, что компрессии подвергается не весь сигнал, а только его часть, что продемонстрировано на следующем изображении:



Здесь зелёным цветом помечен исходный сигнал, синим — усреднённый по некоторому количеству точек (семплов) и сохраняемый в явном виде, и красным — остаток, подвергаемый сжатию.

В сильно грубом приближении можно сказать, что сжимается лишь высокочастотная часть сигнала. Более точно в частотной области разделение на усреднённый и остаточный сигналы будут выглядеть, например, так (для 4-кратного усреднения в 48 кГц):



Или так (для 32-кратного усреднения в 48 кГц):



Ещё более точный вид будет зависеть от конкретно взятого сигнала. Например, для синусоиды из самого первого изображения:



Здесь усреднение привело к появлению гармоник в противофазе в обоих сигналах, которые взаимокомпенсируются при сложении. Очевидно, что при изменении фазы или амплитуды гармоники в одном из сигналов (например, в результате сжатия) полной компенсации происходить уже не будет и приведёт к искажению исходного сигнала. Далее это будет показано на конкретных измерениях.

Частичная совместимость


Это свойство явно следует из предыдущего. Так как часть сигнала хранится без сжатия, её можно воспроизвести, игнорируя закодированную часть. Автор преподносит это как достоинство, но оно выглядит крайне сомнительным. Если вы скачали аудио-файл, который не воспроизводится плеером – понятно, что не хватает какого-то кодека. Но если файл воспроизводится с ухудшенным качеством – то логичнее предположить, что так и должно быть или он повреждён, чем искать кодек, улучшающий его звучание.

Разгон


Этим словом автор назвал возможность передискретизации (ресемплиннг, resampling) на уровне декодера. Это можно было бы назвать достоинством, если бы оно приводило к каким-либо значимым преимуществам перед использованием других ресемплеров, в том числе и встроенных в программные аудио-плееры или устройства вывода звука.

Качество ресемплера определяется степенью подавления паразитных гармоник за пределами оригинальной полосы частот. Далее будет показано, что данный кодек таким качеством не обладает.

Расширение динамического диапазона


А здесь уже происходит явная подтасовка фактов. При оцифровке аудио-сигнала происходит не просто уменьшение динамического диапазона – появляются шумы квантования, которые имеют нелинейный характер. Их довольно-таки сложно отфильтровать, поэтому на практике они просто маскируются техниками dithering и noise shaping.

Никакими способами невозможно возместить потерянную информацию, чтобы обеспечив заявленное расширение динамического диапазона. То, что новые выборки звукового потока будут синтезированы в расширенном диапазоне означает лишь отсутствие появление новых шумов квантования – и то лишь на этапе обработки, поскольку устройство воспроизведения звука также имеет ограниченную точность. И к тому же, этим свойством обладают абсолютно все ресемплеры.

Недетерминированное декодирование


Исходя из описания можно было бы предположить, что каждый раз после декодирования мы получаем немного разный результат. Однако реальное сравнение показало, что результаты идентичны. Это значит, что по факту это свойство не имеет никакого значения – с тем же успехом можно увидеть недетерминированность в том, в каком порядке складывать цифры 2 и 3 для получения цифры 5.

Испытание на тестовых данных


В статье есть изображение Лены, но нет ни одной осциллограммы. Восполним этот пробел в контексте рассмотрения вносимых кодеком искажений.

Для измерения будут использоваться синтезированные сигналы длительностью 65536 семплов (для удобства последующего Фурье-анализа). Результаты измерений будут представлены как во временной (зелёным цветом), так и в частотной (синим цветом) области в виде логарифмической амплитудно-частотной характеристики.

На всякий случай
Изменение амплитуды на 3 дБ примерно равно изменению в 1.4 раза.
Изменение амплитуды на 6 дБ примерно равно изменению в 2 раза.
Изменение амплитуды на 12 дБ примерно равно изменению в 4 раза.

При кодировании использовались следующие параметры:

  • Maximum sample length of rang = от 4 до 32, для каждого производилось отдельное измерение;
  • Length of encoding superframe = 8 (при использовании значения по-умолчанию, 10, файл обрабатывался не полностью и обрезался по правой границе);
  • Relative shifting between domains = 1 (по-умолчанию).

MLS – Maximum Length Sequence


Это стандартный инструмент для проведения подобного рода измерений. По виду и на слух он похож на белый шум с той лишь разницей, что ограничен на заданном промежутке времени и имеет дискретный характер. Для аудио-измерений обычно формируется через обратное преобразование Фурье, в котором все амплитуды приравниваются константе, а фазы – псевдослучайным значениям.

После измерения по виду АЧХ можно оценить отклик системы на каждой отдельно взятой частоте по отклонению её амплитуды от 0 дБ.

Поскольку анализировать шум на искажения во временной области довольно проблематично, здесь будут представлены результаты измерений только в частотной области.

Исходный сигнал:





Результаты измерений:

sample length = 4:



sample length = 8:



sample length = 16:



sample length = 32:



Здесь хорошо виден спад и сильное зашумление на высоких частотах, возрастающих с увеличением параметра sample length (который, вероятно, определяет количество усредняемых точек).

Логарифмический свип-тон (sweep-tone)


Представляет из себя синусоиду с постоянно увеличивающейся или уменьшающейся частотой.

Здесь с уменьшением частоты амплитуда уменьшается, чтобы компенсировать наклон АЧХ (в линейном свип-тоне это не требуется), а также наложено сглаживающее окно.
Его часто используют, чтобы помимо частотного отклика оценить ещё и нелинейные искажения (distortion). Здесь мы никаких коэффициентов считать не будем, а просто оценим результат визуально.

Исходный сигнал:





Результаты измерений:

sample length = 4:





sample length = 8:





sample length = 16:





sample length = 32:





На осциллограмме хорошо видно, что часть высокочастотной информации теряется, и чем больше коэффициент сжатия, тем сильнее.

На АЧХ в то же время видно, что она не просто теряется – а замещается гармониками (которые неизбежно возникают при децимации усреднением) и шумом.

На осциллограмме также можно увидеть искажение противоположного характера – появления звука там, где его не было. Сложно сказать, является ли это ошибкой или же особенностью алгоритма.

Последовательность из 8 тонов


Содержит ноты «ля» от контроктавы (55 Гц) до «ля» пятой октавы (7040 Гц).

Исходный сигнал:





Результаты измерений:

sample length = 4:





sample length = 8:





sample length = 16:





sample length = 32:





Здесь мы уже можем однозначно утверждать о наличии выраженных гармонических искажений. Поскольку синусоида – это чистый тон, любое её искажение приводит к появлению гармоник — их хорошо видно (на частоте 5 кГц в первом графике, например).

Рассмотрим синусоиду с частотой 440 Гц из последнего замера чуть ближе:



Здесь можно увидеть, что она собрана из кусочков от других синусоид. Также хорошо видно и разрывы на краях блоков.

Испытание «разгона» и расширения динамического диапазона


В декодере есть возможность увеличить частоту дискретизации в 2 или 4 раза и глубину квантования до 24 бит. Испытаем эту возможность на предыдущем сигнале (с параметром sample length = 4):





По форме сигнала видно, что он претерпел ещё бо?льшие искажения. По АЧХ видно, что расширенный частотный диапазон заполнен шумом. Ничего похожего на расширение динамического диапазона также не наблюдается (например, в виде снижения уровня шума).

Заключение


Разумеется, из приведённых выше графиков вовсе не следует, что этот кодек нельзя использовать на практике. Вполне возможно, что для кого-то слова «Фрактальное Сжатие» и «Теория Хаоса» будут иметь намного бо?льший вес, чем какие-то там графики. Не менее возможно, что кто-то воспримет его искажения как особенные и приятные на слух, которые только улучшают звучание.

Но лично мне идея фрактального сжатия как таковой кажется притянутой за уши ещё с начала её появления и представляется своего рода «Святым Граалем». Ведь со времени выхода «Фрактальной геометрии природы» ничего особо нового так и не появилось — из книги в книгу кочуют одни и те же фрактальные листья и деревья, множества Мальдеброта и Жулиа, кривые Коха, Гильберта, Пеано и треугольники Серпинского (и оригинальная статья также не стала в этом плане исключением). К тому же, все они имеют исключительно геометрическую природу – никто ещё не заявил о существовании «аудио-фракталов», наделённых свойствами самоподобных множеств с дробной метрической размерностью.
Поделиться с друзьями
-->

Комментарии (15)


  1. S_A
    24.09.2016 15:07

    Спасибо за статью!

    Но лично мне идея фрактального сжатия как таковой кажется притянутой за уши ещё с начала её появления и представляется своего рода «Святым Граалем». Ведь со времени выхода «Фрактальной геометрии природы» ничего особо нового так и не появилось


    Дело не в картинках и геометрии. Дело в том, что не все «хаосы» фрактальны. Фрактальным он становится когда на систему действуют в течении (продолжительного) времени однородные силы (например для биржевых котировок теория хаоса очень хорошо работает). «Полезный» сигнал в аудиозаписи этому условию уже при первом приближении не удовлетворяет. Система конечно, динамическая и всё такое, но не фрактальная, потому что даже вряд ли хаос. Сжатие с потерями всегда достигается (спектральное через Фурье или еще какое другое) при наличии предположений о полезной информации, что противоречит подходу к хаотичным системам.


    1. Xirexel
      24.09.2016 15:27

      В данном случае «хаос» предполагает чуствительность к отклонениям, а фрактальные преобразования обладают такой чуствительностью в связи с их рекурсивной природой.


  1. Xirexel
    24.09.2016 15:23

    Интересная публикация. Возможно, часть искажений являются результатами ошибок в коде. Но по поводу «аудио-фракталов» несоглашусь. В этом случае нужно определить, что значит «аудио» — психо-физиологическое восприятие изменение давления воздух, созданное акустической системой под воздействием цифро-аналогового преобразования массива байтов, интерпетируемого как множество выборок аудио потока. Фрактальные преобразования могут апроксимировать множества при услови дробности пространства. Дробность пространства определяется операциями над множествами — в случае кода это операция усреднения над данными в double типе — эта операция дробления пространства между элементами множества, так-как уменьшает расстояние между элементами множества(если расстояние между элементами было четыре элемента, то в результате оно станет равным двум элементам.). Таким образом, не существует особых «аудио-фракталов». Существуют только множества семплов, которые можно апроксимировать фрактальными преобразованиями, если поместить их в дробное пространство.
    Идея оригинальной статьи является попытка инженерного исследования возможности применения математических принципов, в корне отличающихся от принципов, положенных в основу известных форматов сжатия аудио данных: апроксимацией ортогональными рядами (Дискретно-Косинусные Преобразования) и линейными предсказаниями.


    1. VaalKIA
      24.09.2016 15:34

      Дробность пространства определяется операциями над множествами

      Вообще-то изначально, дробность пространства фракталов не означает ничего интересного вообще. Суть такова: берём фрактал состоящий из линии — размерность 1, поскольку это «линия», потом начинаем эту линию корёжить, собственно, строя сам фрактал, получается загогулина. Ну а поскольку корёжить можно до бесконечности и она становится всё пушистей и пушистей, то в пределе можно говорить о том, что будет заполненны все промежутки между близкими линиями и получится уже не линия, а фигура обладающая площадью. Потом следуют какие-то красивые слова «бла-бла-бла», дробная размерность фрактала 1.9 приехали мы почти что двухмерная фигура.


      1. Xirexel
        24.09.2016 15:58

        На мой взгляд, для описания линии как фрактала более подходяще "Канторова пыль (множество)", но хотел бы уточнить, что вы имеете в виду под


        размерность 1

        В чём измеряется эта размерность? В случае усреднения семплов это понятно — было четыре семпла с максимальным расстоянием в три семпла и минимальным ноль семплов, после усреднения получили максимальное расстояние в один семпл и минимальным ноль семплов. В этом случае семпл есть мера расстояния и размерность определяется совокупностью всех семплов во множестве.


    1. S_A
      24.09.2016 19:37

      Фрактальные преобразования могут апроксимировать множества при услови дробности пространства. Дробность пространства определяется операциями над множествами — в случае кода это операция усреднения над данными в double типе — эта операция дробления пространства между элементами множества, так-как уменьшает расстояние между элементами множества(если расстояние между элементами было четыре элемента, то в результате оно станет равным двум элементам.). Таким образом, не существует особых «аудио-фракталов». Существуют только множества семплов, которые можно апроксимировать фрактальными преобразованиями, если поместить их в дробное пространство.


      «Вон оно чо, Михалыч». Что-то в этом есть. Давайте будем разбираться. «Фрактальные преобразования могут аппроксимировать множества»… — да, могут. «При условии дробности пространства». Дело не в дробности пространства. Дробность пространства разве гарантирует фрактальность (если ехать в обратную сторону)? Неясно, именно то деление, что делает усреднение double, вообще фрактально ли…


  1. Vilyx
    24.09.2016 15:50
    +3

    Refridgerator, вы молодец! Шикарная статья, именно такими и должны быть научные статьи. Интересно, когда-нибудь для получения научного звания будут учитываться статьи опубликованные на хабре? У меня до недавнего времени почта была просто завалена предложениями опубликоваться, подозреваю, что большинство не то что не рецензируется, но даже и не читается.


    1. gluck59
      19.01.2017 07:00

      Думаю, суток ему всяко бы хватило на отогрев, но тем не менее увы.
      Гель представляет собой такой же электролит (химию ведь еще не отменили), только с добавкой-загустителем, так что вода пришлась кстати.


    1. IIvana
      26.09.2016 02:18

      Да, шикарно, человек разрабатывает и реализует алгоритм — и это «плохая и неаучная статья», а потом приходит Белинский, прогоняет готовый алгоритм на тривиальных тестовых данных, смотрит спектр и заключает — «фигня» :) Вот это уровень, да. Какая заслуга перед [s]отечеством[/s] сообществом!.. Понятно, что автор реализации алгоритма не лишен понтов и склонности к громким заявлениям (Стивена Вольфрама вспомните), но ведь он написал принципиально отличающуюся от всего имеющегося реализацию, и то, что она вообще хоть как-то работает, уже хорошо. А через полгода выяснится, что этот алгоритм, к примеру, лучше всех жмет данные с датчиков уровня воды при волнении (в силу фрактальной природы волн), и найдет свое применение. А Белинские и прочие критики/рецензенты канут в лето :)


      1. Vilyx
        26.09.2016 02:44

        Человек не придумал ничего нового. Он прикрутил квадратное колесо к телеге, о чем и написано в этой статье. Жмёт хуже почти любого аналога, потери качества астрономические, Refridgerator в комментариях предоставил ссылку на звуки сжатые этим алгоритмом.
        Вы вот просто подумали, что автор обсуждаемого алгоритма придумал что-то полезное, а другой человек решит потратить годы своей жизни чтобы улучшить его. И только благодаря такой статье как эта, будет спасено несколько лет человеческой жизни. Очевидно же, что алгоритм тупиковый. С тем же успехом можно уменьшить сэмплирование wav файла, а потом интерполировать значения между сэмплами чтобы «восстановить» исходный звук. Я вас уверяю, что сжатие будет сильнее, а качество результирующего звука выше, чем в предложенном алгоритме.


  1. AEP
    25.09.2016 17:22
    -1

    Поставил минус. Да, кодек искажает. Статья показывает, как именно он искажает тестовые сигналы. Но в контексте объективных испытаний аудиокодека это просто неправильная постановка задачи.

    Правильная постановка: заметит ли человек искажения при данных параметрах кодека на тех звуках, для сжатия которых изначально предназначен кодек? Или, если кодек изначально позиционируется как универсальный, то отдельно нужен ответ для речи и отдельно для музыки.

    Для объективной и автоматизируемой (т.е. не требующей участия человека) оценки заметности искажений служат различные психоакустические модели.


    1. Vilyx
      25.09.2016 19:26
      +1

      Поставил вам минус. Да, кодек искажает, да, статья это показывает. Указанный кодек позиционируется как конкурент FLAC по степени сжатия, а это сжатие БЕЗ ПОТЕРЬ.


      1. AEP
        25.09.2016 21:46

        Цитирую оригинальную статью:

        Что вы найдёте здесь:

        Краткий обзор применения фрактальных преобразований к задаче сжатия данных с потерями


        1. Vilyx
          25.09.2016 23:57
          +1

          Включите голову, я вам могу ещё десяток таких же бесполезных алгоритмов сжатия с потерями придумать. Сжатие как у FLAC, звук как у MIDI.


  1. Refridgerator
    25.09.2016 19:29
    +3

    1. Хотите послушать — пожалуйста.
    2. Все эти сигналы имеют непосредственное отношение к музыке. Чистые тона — основа электронной музыки. Логарифмические свип-тона можно услышать у Jean Michel Jarre в Oxygen II. Также существуют стили музыки (например, Нойз) в которых шуму отводится первоочередное значение.