[Из песочницы] Анализ аудио-кодека ROAD

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

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

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

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


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

20b2380faf8a401b9fe4ae7f15fd5f4f.png

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

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

36e5c44449044dec9377b4b36dfe9181.png

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

f0b92b62b2ea419997179648ac328542.png

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

29cffb3e583d4b87b250f5df62d98081.png

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

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


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

Разгон


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

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

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


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

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

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


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

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

На всякий случай
Изменение амплитуды на 3 дБ примерно равно изменению в 1.7 раза.
Изменение амплитуды на 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 дБ.

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

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

faf484484bd34299895c33e20af25f3a.png

9d17a9b7853a45c78485208f9fd962c8.png

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

sample length = 4:

faefb46b71d2496588d134a1b76a9b40.png

sample length = 8:

f87a81f656d540abbae38db987e056f6.png

sample length = 16:

fb396f41e8d74a49b051ba9057bf9ee0.png

sample length = 32:

c78b20394e3744e69445cc6c8153f87f.png

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

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


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

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

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

23a0b6dc69d5405ca3d7f54b716a01da.png

08233af2bd674d5ba549264cd45ed55e.png

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

sample length = 4:

7864bbd237e94d3da212284278f8faf5.png

f26ce1598d9a4e06bd0a85d27a80bbfe.png

sample length = 8:

20f3bc1be3174be58d668e55afbfb82b.png

db16fc39c3bf4ef680bb4f61e0232539.png

sample length = 16:

6d80e930a4094027a005b9b617bdf718.png

734f278b132047c292eb66ba72c285d7.png

sample length = 32:

211673254c464749ba7315af9e04ce79.png

eb8653a246d0415faa21ea369e7f16c9.png

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

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

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

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


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

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

627f7ace6b78491182c6cdb5be3aa2a0.png

0140fc0d39e2400d968ac2e4e9d72588.png

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

sample length = 4:

44d8b79c635f44848adb27c64349bb4d.png

fc90857c511041c1b1131f705a637dff.png

sample length = 8:

5e8cc910307c4bafac65c968d5e0d086.png

8b75be304203498b994f64d41e02bcde.png

sample length = 16:

13d40073fe9c40448e564e26e767899d.png

1c95f02dae9f4ae59a8dbac1f0354ef9.png

sample length = 32:

17457fd202c74b58a298eaf528dd33ff.png

e785346e68df4fb0a61903767e8d8683.png

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

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

3467cfd79bc546f882f470b54ef3e229.png

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

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


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

3b1bda88c1dc403d9cebe3acf0b02078.png

ed9db6e80a1346dba866064ccbf2d750.png

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

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

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

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

  • 24 сентября 2016 в 15:07

    0

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

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

© Habrahabr.ru