25 мая 2020      2565    

Форматы сжатия аудиоданных с потерями (lossy). Часть I

Форматы сжатия аудиоданных с потерями (lossy). Часть I

Как мы выяснили в прошлый раз, сжать аудиоинформацию без потерь можно, но не сильно: в среднем где-то всего в два раза. Это, конечно, хорошо, но всегда существовал запрос на более высокую степень сжатия: раз так в десять, ну или хотя бы в пять… Раз так — значит, надо действовать с умом: дать компьютеру возможность выбрать, какую часть информации о файле сохранять, а какую кодировать упрощённо  или вообще убрать. Именно по такому принципу работают форматы сжатия аудиоданных с потерями (lossy).

Принципы работы кодировщика

Как же компьютерный кодировщик узнаёт, что из звука оставить, а что отбросить?

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

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

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

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

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

Надо сказать, что современные форматы сжатого с потерями звука начинали разрабатываться уже не на пустом месте, поскольку эксперименты с психоакустическим сжатием звуковых данных речи имели место ещё в 60-80-х гг. XX века. А по мере совершенствования технологий появилась возможность для сжатия и более сложной звуковой информации, то есть музыки.

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

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

Наконец, при воспроизведении декодер собирает весь «конструктор» обратно, то есть синтезирует звук, который на слух должен звучать (почти) «идентично натуральному». Таким образом, любой аудиокодек может работать и как анализатор (при кодировании), и как синтезатор (при декодировании).

Отличия звука, сжатого с потерями, от оригинала

Насколько сильно сжатый таким образом звук отличается от оригинала? Это, как мы уже говорили, зависит от степени сжатия и самого формата. Как правило, больше всего при сжатии страдают тихие звуки, а также высокие частоты (из тех, которые человеческий слух начинает воспринимать существенно хуже, чем низкие — их кодеки «режут» в первую очередь). Кроме того, большему упрощению, как правило, подвергается шумовая составляющая сигнала (по сравнению с тональной).

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

Сравнение полных спектров

Проиллюстрируем сказанное примером. Возьмём какую-нибудь песню в качестве Audio CD и конвертируем в разные форматы сжатого звука с такими настройками, которые давали бы сопоставимый коэффициент сжатия. В нашем случае это была песня «Molina» группы Creedence Clearwater Revival, а в качестве форматов-участников эксперимента выступили:

— MP3 (кодек Lame 3.100, переменный битрейт, коэффициент сжатия 2, размер файла 3,84 МБ);

— OGG (версия 2.88, libVorbis 1.3.6, коэффициент качества 6/10, размер файла 3,35 МБ);

— OPUS (libOpus 1.3.1., переменный битрейт 192 кбит/с, размер файла 3,75 МБ);

— WMA (кодек WMA 0.2.9, переменный битрейт 192 кбит/с, размер файла 3,78 МБ);

— M4A (кодек QAAC 2.64, коэффициент качества 82/127, размер файла 3,42 МБ).

Сжатие высоких частот наглядно может быть представлено на спектрограмме (рисунок 1). В качестве программы-анализатора спектра сигнала выступил аудиоредактор iZotope RX 7.

Сжатие высоких частот наглядно может быть представлено на спектрограмме

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

Спектр оригинального файла очень ровный, в нём представлены все частоты до 22050 Гц. Их интенсивность падает практически равномерно снизу вверх. Это типичный спектр цифровой записи без потерь (с поправкой на то, что в зависимости от жанра и стиля количество высоких частот и быстрота их спада в разных записях может существенно отличаться).

Во всех сжатых файлах появились участки черноты сверху. Видно, что кодек отбрасывает существенную часть сигнала на высоких частотах. Так, кодек OPUS очень ровно убирает все частоты выше 20 кГц, а кодек MP3 Lame существенно ограничивает поток аудиоданных выше 16 кГц, кодируя лишь самые громкие из них. Граница фильтрации в нашем масштабе выглядит очень резко и, прямо скажем, пугающе, но при масштабировании спектра в аудиоредакторе и увеличении его разрешения становится виден более плавный переход.

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

Можно также заметить, что отдельные всплески звука снизу доверху, пронизывающие «черноту» отсутствующих высоких частот, появились в спектрах файлов формата M4A и WMA. К сожалению, они не имеют отношения к полезному сигналу и связаны с тем, что форма волны звука с потерями слегка изменилась и в некоторых местах «пробила» потолок пикового значения звука, вызвав «клипирование», перегруз. Это при том, что уровень записи левого канала в песне достигал -0,78 dB, то есть у звука был некоторый запас. Правый канал, правда, был записан с куда более рискованным уровнем -0,22 dB. Более того: анализатор формы волны обнаружил перегруженные места во всех сжатых файлах, кроме файла формата OGG (что было вовсе не так очевидно при взгляде на спектрограммы этих файлов).

Как видим, низкая точность сжатого звука вполне допускает заметные колебания его уровня, что приводит к опасности возникновения перегруза. Это особенно актуально для записей, уровень громкости которых выставлен практически в «ноль» — а таковы почти все современные записи (к современным переизданиям старых записей — как в нашем примере — это, как правило, тоже относится).

В следующей части нашей статьи мы продолжим рассматривать форматы сжатия аудиоданных с потерями и их особенности.

© 2024 CanoraSound · Копирование материалов сайта без разрешения запрещено
Политика конфиденциальности I Публичная оферта I Sitemap