Что используется для сжатия потока аудио для хранения и для распаковки с целью воспроизведения codec

Обновлено: 04.07.2024

В этом посте я хочу рассказать о том, как получать наилучшие результаты при сжатии музыкального материала в форматы FLAC и MP3. В эпоху массового распространения стриминговых аудио- и видеосервисов эта тема может показаться малоактуальной, однако, как показывает практика, это не так. Во-первых, не все хотят быть зависимыми от сторонних ресурсов, которые в любой момент могут повести себя как угодно — от введения разнообразных ограничений на доступ к контенту до полного его удаления. Во-вторых, в мире есть множество мест, где интернет работает медленно, печально и с перерывами на обед. В-третьих, качество звучания при онлайн-прослушивании обычно вполне приемлемо для большинства пользователей, но искушенных слухачей с хорошей аппаратурой оно может ввергнуть в тоску. Учитывая всё вышесказанное, можно полагать, что тема самостоятельного сжатия аудиозаписей для их хранения и прослушивания оффлайн останется актуальной ещё достаточно долго.

Так как в статье будут рассматриваться консольные приложения Windows, то предполагается, что читатель знаком с основами работы в командной строке под этой операционной системой.

Базовые понятия

PCM (pulse code modulation), она же ИКМ (импульсно-кодовая модуляция) — способ представления аналогового сигнала в цифровом виде. Работает это так: на вход устройства под названием АЦП (аналого-цифровой преобразователь) подаются электрические колебания, представляющие из себя аналоговый звуковой сигнал. АЦП с определенной частотой замеряет уровень этого сигнала и передаёт полученные значения наружу, где они сохраняются. Таким образом формируется массив данных, представляющий из себя последовательность значений амплитуды исходного сигнала. Описанный процесс называется «оцифровка». Основной проблемой хранения PCM-данных в «голом» виде является довольно большой их объём, поэтому для более рационального использования места на носителе используются различные алгоритмы сжатия цифрового звука.

CDDA (Compact Disc Digital Audio) — старый добрый звуковой компакт-диск, исторически первый стандарт массового цифрового носителя для аудиозаписей. Несмотря на то, что в наше время сам CDDA уже не очень актуален, параметры представления звука на нём — ИКМ 16 бит/44.1 кГц/стерео — и по сей день являются базовыми почти для всех выходящих в свет музыкальных фонограмм.

WAV — аудиоформат, стандартно использующийся для хранения несжатого PCM-аудио в Windows. Формат может содержать в себе и сжатые данные, но на практике подобное встречается крайне редко и, можно сказать, является моветоном. Проигрывание WAV-файлов требует минимум ресурсов системы, так как никакой дополнительной обработки информации для этого не требуется. Сохранение материала в этом формате почти всегда является промежуточным шагом при обработке звука в аудиоредакторах, CD-грабберах и другом подобном ПО. Битрейт несжатого WAV с параметрами 16 бит/44.1 кГц/стерео — 1411 кбит/с, размер файла пятиминутной записи в таком виде — около 52 МБ.

Кодер (или «энкодер» от английского «encoder») — программное обеспечение, предназначенное для преобразования WAV в какой-либо иной формат с целью уменьшения объёма хранимых данных.

Декодер — программное либо аппаратное обеспечение, служащее для воспроизведения сжатых в соответствующий формат файлов или преобразования их в неcжатый вид.

Lossy — общее название семейства аудиоформатов, в которых используется сжатие данных с потерями. Типичными представителями семейства являются MP3, AAC, WMA, Ogg Vorbis. Главная особенность lossy-форматов заключается в том, что при сжатии материала в любой из них значительная часть исходной звуковой информации теряется безвозвратно и не может быть восстановлена впоследствии никаким способом. За счёт этого достигается высокая степень компрессии, при этом на слух потери малозаметны или вообще незаметны, так как отбрасываются только некритичные для человеческого восприятия данные.

Lossless — общее название семейства аудиоформатов, в которых используется сжатие данных без потерь. Типичные представители семейства: FLAC, Monkey’s Audio, ALAC, WavPack. В отличие от lossy-форматов, здесь никакая информация при сжатии не теряется, всё происходит примерно как в обычных архиваторах. Платой за полную сохранность данных является значительно меньшая по сравнению с lossy степень компрессии.

MP3 (MPEG-1 Layer 3) — исторически первый и самый распространённый формат сжатия с потерями. Несмотря на то, что в силу возраста MP3 на сегодняшний день не блещет эффективностью компрессии, его популярность остаётся весьма высокой по причине универсальности — проигрывать данный формат умеет любой утюг. При этом, если применяются адекватные кодер и декодер, качество звучания MP3 находится на очень достойном уровне. Сочетание этих двух факторов делает использование формата оправданным и сейчас. Коэффициент сжатия MP3 при сохранении высокого качества звучания — 6-9 раз. Средний битрейт такого MP3 с параметрами 16 бит/44.1 кГц/стерео — 150-240 кбит/с, размер файла пятиминутной записи в этом виде — 6-9 МБ.

FLAC (Free Lossless Audio Codec) — самый популярный на текущий момент формат сжатия аудио без потерь. Если для какого-либо ПО или оборудования заявлена поддержка lossless, почти наверняка данное ПО/оборудование умеет проигрывать FLAC. Формат является стандартом де-факто в среде любителей качественного звука. Коэффициент сжатия FLAC — 1.2-3.5 раза. Битрейт FLAC с параметрами 16 бит/44.1 кГц/стерео — 400-1200 кбит/с, размер файла пятиминутной записи в таком виде — 15-44 МБ. Для lossless-форматов, представителем которых является FLAC, правило «больше битрейт — выше качество звучания» не работает, качество всегда остается идентичным оригиналу. Степень сжатия и битрейт варьируются в зависимости от сложности сжимаемого материала — например, пение под гитару поддается компрессии лучше, чем запись симфонического оркестра.

В заключение раздела приведу картинку, наглядно иллюстрирующую ключевые особенности вышеописанных аудиоформатов:

Соотношение размера файлов и качественные свойства WAV, FLAC, MP3

Общие вопросы

Можно ли пережимать материал из lossless в lossy — например, из FLAC в MP3?

Можно и часто нужно. Например, если вы хотите слушать музыку в «походных» условиях с портативного устройства без аудиофильских замашек, а исходный материал у вас хранится в lossless-формате, то перед переносом на портатив имеет смысл сконвертировать нужные треки в lossy. Так вы уменьшите размер файлов и сможете сохранить на мобильном носителе значительно больше музыки. Деградации звука от такого преобразования вы, скорее всего, не почувствуете совсем.

Можно ли пережимать материал из lossy в lossless — например, из MP3 во FLAC?

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

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

Какой из lossless-форматов лучше по качеству звучания — FLAC, Monkey’s Audio, WavPack?

Как уже говорилось ранее, lossless-форматы сжимают данные без потерь. Это означает, что в плане качества звучания все они абсолютно идентичны. Выбирать lossless-формат для использования в каждом конкретном случае следует, ориентируясь исключительно на его совместимость с ПО/оборудованием и на ваши личные предпочтения.

Влияют ли выбор кодера и его настройки на качество звучания при сжатии материала в MP3?

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

Влияет ли декодер на качество звучания при прослушивании материала в MP3? Чем лучше воспроизводить MP3 на ПК?

MP3-декодер может влиять на качество звучания. Некоторые (особенно старые) декодеры заметно искажают звук при проигрывании MP3, что может создать ложное впечатление об ущербности этого формата как такового. Для проигрывания музыки на ПК следует пользоваться проверенными программами-плеерами, желательно последних версий. Я использую foobar2000, который всем и рекомендую — у него проблем с качеством воспроизведения как MP3, так и других поддерживаемых форматов нет.

Влияют ли настройки кодера на качество звучания при сжатии материала во FLAC? Какую степень сжатия лучше выбрать?

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

Влияет ли декодер на качество звучания при прослушивании материала во FLAC? Чем лучше воспроизводить FLAC на ПК?

В случае с FLAC и другими lossless-форматами декодер на качество звучания не влияет, исходные аудиоданные при воспроизведении восстанавливаются с точностью до бита. Поэтому для прослушивания FLAC можно использовать любой плеер, который поддерживает данный формат и нравится лично вам. Однако, я ещё раз порекомендую foobar2000 как проверенное временем универсальное решение для проигрывания музыки под Windows.

Кодирование и декодирование MP3 при помощи LAME

Как уже говорилось выше, в случае с MP3 качество звучания итоговых файлов напрямую зависит от выбора кодера и его настроек при сжатии. На сегодняшний день наилучшие результаты для данного формата даёт кодер LAME. Оригинальный сайт проекта выглядит несколько запутанно, поэтому сразу дам ссылку на файлы. Из архива нам нужен файл lame.exe. Открываем командную строку.

Для получения краткой справки по использованию LAME наберите lame --help (информация будет выведена на экран) или lame --help > usage.txt (информация будет выведена в файл usage.txt). Для получения подробной справки замените --help на --longhelp .

Пресет standard. Описание из встроенной справки:

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

Средний битрейт при использовании standard составляет 170-210 кбит/с, срез ВЧ начинается примерно с 18.7 кГц. Рекомендую использовать данный пресет как режим по умолчанию, он является наиболее сбалансированным по сочетанию характеристик.

Кодирование WAV в MP3 с данным пресетом:

lame --preset standard infile.wav outfile.mp3 , где infile.wav — имя исходного WAV-файла, outfile.mp3 — имя получаемого MP3-файла (последнее можно не указывать).

Пресет extreme. Описание из встроенной справки:

Если вы обладаете крайне хорошим слухом и таким же оборудованием, этот пресет даст чуть более высокое качество, чем standard.

Средний битрейт при использовании extreme составляет 220-260 кбит/с, ВЧ-фильтр не задействуется. Рекомендую использовать данный пресет в тех случаях, когда требуется получить MP3 с очень высоким качеством звучания. При прослушивании музыки на среднестатистическом оборудовании этот пресет по сравнению со standard обычно не даёт ничего, кроме увеличения размера файла.

Кодирование WAV в MP3 с данным пресетом:

lame --preset extreme infile.wav outfile.mp3

Пресет insane. В отличие от предыдущих пресетов, использующих VBR, этот использует режим с постоянным битрейтом 320 кбит/с. Описание из встроенной справки:

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

Использовать insane я не рекомендую в силу его практической бессмысленности. Если вас мучают приступы перфекционизма, используйте не MP3 с заоблачными настройками, а какой-нибудь из lossless-форматов. Например, FLAC.

Декодирование MP3 в WAV:

lame --decode infile.mp3 outfile.wav

Кодирование и декодирование FLAC

Рассмотрим сжатие файлов кодером FLAC, скачать который можно здесь. Для работы нам нужен файл flac.exe. Если запустить его без параметров, будет выдана краткая справка по использованию кодера. Для получения подробной справки наберите flac --help (информация будет выведена на экран) или flac --help > usage.txt (информация будет выведена в файл usage.txt).

Кодирование WAV во FLAC со степенью сжатия по умолчанию (5):

Кодирование WAV во FLAC с указанной степенью сжатия:

flac -n infile.wav , где n — число от 0 (минимальное сжатие) до 8 (максимальное сжатие).

Декодирование FLAC в WAV:

flac -d infile.flac

Чтобы убедиться в том, что FLAC сжимает данные действительно без потерь, можно использовать любое ПО, умеющее сравнивать файлы побитно — например, встроенную в Windows утилиту fc. Для эксперимента выбираем любой WAV-файл и делаем с ним следующие преобразования: original.wav (оригинальный файл) > compressed.flac (кодируем файл во FLAC) > decompressed.wav (декодируем FLAC обратно в WAV). Далее сравниваем original.wav и decompressed.wav при помощи fc в режиме двоичного сравнения:

fc /b original.wav decompressed.wav

Автоматизация сжатия при помощи foobar2000

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

Для начала добавим в конвертер пресеты для LAME:

2) Нажимаем Output format > Add New, в появившемся окне заполняем поля как на скриншоте:

Добавление нового пресета для MP3 в конвертер foobar2000

В поле Encoder file следует указать полный путь к файлу lame.exe. После того, как всё заполнено, жмём OK, затем Back.

3) Вернувшись в окно Converter Setup, сохраняем созданный пресет кнопкой Save

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

00 > 0
01 > 10
10 > 110
11 > 111

В таком случае шестнадцать битов:

00 01 00 00 11 10 00 00

будут преобразованы в тринадцать битов:

0 10 0 0 111 110 0 0

Если мы запишем сжатую строку без пробелов, мы всё равно сможем расставить в ней пробелы — а значит, восстановить исходную последовательность.

FLAC (Free Lossless Audio Codec — свободный аудио-кодек без потерь)

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

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

Сжатие с потерями (MP3, AAC, WMA, OGG)

Используется алгоритм сжатия с потерями, размер MP3-файла со средним битрейтом 128 кбит/с примерно равен 1/11 от оригинального файла с аудио CD (несжатое аудио формата CD-Audio имеет битрейт 1411,2 кбит/с). MP3 файлы могут создаваться с высоким или низким битрейтом, что влияет на качество результата.

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

Эффект маскировки

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

Одновременная маскировка
Любые два звука при одновременном прослушивании оказывают влияние на восприятие относительной громкости между ними. Более громкий звук снижает восприятие более слабого, вплоть до исчезновения его слышимости. Чем ближе частота маскируемого звука к частоте маскирующего, тем сильнее он будет скрываться. Эффект маскировки не одинаков при смещении маскируемого звука ниже или выше по частоте относительно маскирующего. Низкочастотный звук маскирует высокочастотные. При этом важно отметить, что высокочастотные звуки не могут маскировать низкочастотный.

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

Постстимульное утомление
Нередко после воздействия громких звуков высокой интенсивности у человека резко снижается слуховая чувствительность. Восстановление обычных порогов может продолжаться до 16 часов. Этот процесс называется «временный сдвиг порога слуховой чувствительности» или «постстимульное утомление». Сдвиг порога начинает появляться при уровне звукового давления выше 75 дБ и соответственно увеличивается при повышении уровня сигнала. Причём наибольшее влияние на сдвиг порога чувствительности оказывают высокочастотные составляющие сигнала.

Типы битрейта MP3

CBR расшифровывается как Constant Bit Rate, то есть постоянный битрейт, который задаётся пользователем и не изменяется при кодировании произведения. Таким образом, каждой секунде произведения соответствует одинаковое количество закодированных бит данных (даже при кодировании тишины).

VBR расшифровывается как Variable Bit Rate, то есть изменяющийся битрейт или переменный битрейт, который динамически изменяется программой-кодером при кодировании в зависимости от насыщенности кодируемого аудиоматериала и установленного пользователем качества кодирования (например, тишина закодируется с минимальным битрейтом). Минусом данного метода кодирования является то, что VBR считает «незначительной» звуковой информацией более тихие фрагменты, таким образом получается, что если слушать очень громко, то эти фрагменты будут некачественными, в то время как CBR делает с одинаковым битрейтом и тихие, и громкие фрагменты.

ABR расшифровывается как Average Bit Rate, то есть усредненный битрейт, который является гибридом VBR и CBR: битрейт в кбит/c задаётся пользователем, а программа варьирует его, постоянно подгоняя под заданный битрейт. Таким образом, кодек будет с осторожностью использовать максимально и минимально возможные значения битрейта, так как рискует не вписаться в заданный пользователем битрейт. Это является явным минусом данного метода, так как сказывается на качестве выходного файла, которое будет немного лучше, чем при использовании CBR, но хуже, чем при использовании VBR (при том же размере файла) .

Кодеки MP3

Тип программ, необходимых для преобразования форматов файлов. Наиболее распространённые кодеки MP3:

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

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

Музыкальные записи можно сжимать и обычными архиваторами, однако они не могут работать в режиме реального времени, к тому же, уровень сжатия несжатых музыкальных записей редко когда превышает 50%. Другой, используемый на практике, способ сжатия аудиоинформации заключается в применении специальных программ – так называемых кодеков, с помощью которых можно сжимать и "на лету" заниматься раскодированием и воспроизведением сжатых композиций.

Говоря о кодеках для сжатия аудиоинформации, следует различать понятия кодек и контейнер медиаданных. Контейнер – это, упрощенно говоря, некая стандартная оболочка , в которой хранятся аудиоданные, сжатые тем или иным кодеком. Например, в MP4-контейнере могут храниться данные, сжатые различными кодеками – в частности – кодеком сжатия с потерями AAC , кодеком сжатия без потерь ALAС и другими. Обычно для различных типов данных, которые хранятся в MP4-контейнере, применяются различные расширения файла. Точно так же, в WAV -файле могут храниться различные данные – например, сжатые в популярном формате MP3 или несжатая информация в формате PCM – в случае с WAV -файлами расширение имени файла остается неизменным (. wav ), а различаются эти файлы лишь по своей внутренней структуре.

Перечень программ

* Программа ImToo WMA MP3 Converter поддерживает большое количество входных форматов файлов, на выходе же могут быть лишь MP3 и WMA .

** Программа MP4 Converter конвертирует видеофайлы различных форматов в формат, понятный плеерам Apple iPod .

*** Программа для разбиения больших аудиофайлов в соответствии с индексными картами.

Сжатие с потерями

Среди существующих форматов сжатия аудиоданных с потерями можно отметить "большую четверку" - MP3 , WMA , Ogg Vorbis и AAC . Ваш MP3 -плеер с практически 100% вероятностью будет поддерживать один из этих форматов, а скорее всего – несколько. Знания о некоторых особенностях форматов будут особенно полезны при практической работе с аудиоинформацией. Например, в следующих лекциях мы рассмотрим ПО для работы со звуком, в частности, подробно остановимся на конверсии звука из одного формата в другой, и если вы будете знать о формате сжатия данных немного больше, чем его название, это может вам неплохо помочь. Итак, начнем с самого популярного формата.

Полное название MP3 – MPEG 1 Audio Layer 3. MP3 – это формат сжатия аудиоданных с потерями, который добился невероятной популярности по всему миру. В настоящее время существуют варианты стандарта - MPEG-2 Layer 3 и MPEG-2 .5 Layer 3.

История MP3 начинается в конце 1980-х годов, когда рабочая группа инженеров института Фраунгофера (Fraunhofer Society) начала работать над проектом DAB ( Digital Audio Broadcast ). Проект был частью исследовательской программы EUREKA и в ее рамках был известен как EU -147. MP3 стал результатом переработки стандартов сжатия аудиоинформации Musicam и ASPEC, добавления к идеям, используемых в этих стандартах, новых оригинальных концепций. Непосредственное отношение к стандарту имеет так же компания Thomson.

Стандарт развивался в начале 1990-х, в 1995 году была опубликована окончательная версия стандарта, однако еще в 1994 году был создан первый программный MP3 -кодировщик, который назывался l3enc. Тогда же было выбрано расширение . mp3 для файлов, закодированных в данном формате, а в 1995 году появился первый программный MP3 -проигрыватель Winplay3, доступный широкой общественности. Благодаря высокому качеству музыки при небольшом размере файлов, а так же из-за появления простого и качественного программного обеспечения для проигрывания и создания MP3 -файлов (например, широко известного и ныне здравствующего WinAmp’a, который появился еще в середине 1990-х годов), стандарт обрел огромную популярность и пользуется ей до сих пор.

Возможности MP3

Говоря о возможностях формата MP3, пожалуй, надо начать с формата, в котором хранят музыку на обычных музыкальных CD-дисках, на так называемых Audio CD . Звук, записанный на такие диски, имеет вполне определенные характеристики, а именно, это 44.1kHz 16Bit Stereo (44,1 кГц, 16-битный стереозвук). В переводе на нормальный человеческий язык это означает, что каждая секунда звучания состоит из 44100 образцов (этот параметр называют частотой дискретизации), каждый из которых имеет размер 16 бит (то есть – два байта), причем, информация записывается для двух каналов – для правого и для левого. В итоге получается, что для хранения одной секунды музыки в формате Audio CD потребуется 44100*16*2=1411200 бит, или 176400 байт, или 172,2 Кб. Таким образом, пятиминутная композиция займет 176400*5*60=52920000 байт, то есть – почти 50 мегабайт дискового пространства. Даже сегодня, учитывая десятки, а чаще – сотни гигабайт жестких дисков, которые есть в распоряжении обычных пользователей, довольно сложно представить себе музыкальную коллекцию, состоящую исключительно из звука, записанного в таком неэкономном формате. Что и говорить о жестких дисках на пару гигабайт, которые были пределом мечтаний многих лет десять назад.

Файлы, сжатые в MP3 практически без потери первоначального качества, занимают в 6-10 раз меньше места, чем оригинал. То есть из огромного 50-мегабайтного файла получается вполне пристойный 5-мегабайтный. Причем, если сжать такой файл с помощью обычных алгоритмов сжатия (RAR или ZIP, например), которые используются для простых файлов, мы получим, в лучшем случае, 50% выигрыш (то есть файл порядка 25 Мб). В чем же дело? Почему же MP3 способен так сильно сжимать файлы, практически не ухудшая их качества. Ответ на вопрос здесь кроется в слове "практически". Ведь обычное сжатие не изменяет качества композиций, оно полностью сохраняет его, а MP3 проводит некие манипуляции с файлом, которые могут сказаться на его качестве.

Как работает MP3

В основе MP3 лежит множество механизмов сжатия, в частности, так называемое адаптивное кодирование, основанное на психоакустических моделях, которые учитывают особенности восприятия звука человеком и удаляют из него все "лишнее" - все то, что среднестатистическому человеку невозможно услышать при прослушивании композиций. Как мы уже говорили, если не стремиться слишком сильно сжать композицию, применив наиболее качественный вариант MP3-кодирования, то ее размер будет примерно в 6-10 раз меньше оригинала с CD-качеством, а качество этих двух записей будет идентичным – вряд ли даже профессионал различит их. При более высоких уровнях сжатия потери (их еще называют артефактами сжатия) слышны гораздо сильнее, но тот, кто пользуется сильно сжатой MP3-музыкой, сознательно идет на такой шаг. Например, сильно сжатые MP3 чрезвычайно популярны в среде сотовых телефонов – часто встроенной памяти аппарата не хватает для того, чтобы закачать в него достаточное количество качественных MP3, в результате владелец жертвует качеством записи ради количества. Но вернемся к описанию принципов работы MP3, в частности, к психоакустическим моделям.

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

Битрейт

При MP3-кодировании особенную важность имеет так называемый битрейт (bitrate или ширина потока), который задается при кодировании. Например, уже описанный Audio CD может быть закодирован с максимальным битрейтом 320 Кбит/c (килобит в секунду – этот показатель так же обозначают как kbps , kbs , kb/s) до 128 и ниже. На практике, при битрейте ниже 128 Кбит/с качество звучания падает настолько сильно, что кодировать с подобным битрейтом есть смысл лишь тогда, когда другой альтернативы просто нет.

С одним и тем же битрейтом могут быть закодированы различные исходные материалы, например, звук может быть не стереофоническим, а монофоническим, другой может быть частота дискретизации или размер выборки, однако битрейт – это очень важный интегральный показатель качества MP3-файла. В общем случае, чем он больше – тем это лучше. Очень часто при кодировании MP3-записей Audio CD -качества, можно встретить битрейт 192 Кбит/с – он неплохо подходит для этих целей, однако при прослушивании подобных записей на качественной аудиоаппаратуре (особенно, если сравнить их с оригинальными Audio CD ), заметны артефакты сжатия.

Однако, нельзя однозначно утверждать, что любая музыкальная композиция, скажем, записанная на битрейте 192 Кбит/с лучше, чем композиция, записанная на 128 Кбит/с. Многое зависит от самой музыки, от кодировщика, от исходного качества записи, а так же от того, какой тип битрейта использован при записи композиции.

Так, наиболее простой тип битрейта – это постоянный битрейт – или CBR ( Constant Bit Rate ). Этот битрейт не меняется в течение кодирования всей композиции, то есть каждая секунда звучания, независимо от ее содержимого, кодируется одинаковым количеством бит.

Интереснее выглядит переменный битрейт ( VBR , Variable Bit Rate ). Он динамически изменяется при кодировании в зависимости от аудиоданных, которые подвергаются обработке. Это наиболее прогрессивный тип кодирования MP3 – при его использовании качество записей повышается, в сравнении с использованием постоянного битрейта, а размер файлов уменьшается. Это происходит из-за того, что более насыщенные участки записи кодируются с более высоким битрейтом, а участки, где высокий битрейт не требуются, кодируются с битрейтом более низким. Основной минус VBR заключается в том, что перед началом кодирования практически невозможно назвать размер выходного файла.

Еще один вариант битрейта называется усредненным битрейтом ( ABR , Average Bit Rate ) – его можно назвать комбинацией VBR и CBR . Так, перед началом кодирования пользователь задает средний битрейт, а при кодировании программа, используя переменный битрейт, следит за тем, чтобы в итоге битрейт вписался в установленное пользователем ограничение. Качество выходного файла получается, таким образом, хуже, чем при использовании VBR (но немного лучше, чем при использовании аналогичного CBR ), однако размер файла поддается гибкой и точной регулировке.

В ходе кодирования исходный аудиосигнал разбивается на участки, которые называются фреймами. Каждый фрейм кодируются отдельно, а при декодировании звуковой сигнал реконструируется из декодированных фреймов. Особый интерес при кодировании MP3 представляет способ обработки стереосигнала – давайте остановимся на этом вопросе подробнее.

В недавней статье о беспроводном звуке мы коснулись темы кодирования цифрового аудиопотока с потерями и без потерь. Сегодня мы остановимся на этой теме поподробнее.

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

Формат звука зависит от способа квантования аналогово-цифровым преобразователем (АЦП), распространение получили два вида квантования:

импульсно-кодовая модуляция (PCM, большинство форматов от MP3 до FLAC)

сигма-дельта-модуляция (Delta-sigma, формат DSD)

Основными параметрами цифрового звука являются разрядность квантования (бит) и частота дискретизации (кГц/МГц), которые указывают для различных устройств записи и воспроизведения как формат представления цифрового звука, например, 24 бита / 192 кГц.

Существуют аудиоформаты без сжатия (например, WAV, AIFF), но для более удобного хранения/распространения, часто используются кодеки, которые сжимают аудиоданные. Сжатие данных (data compression) производится с целью уменьшения занимаемого файлами объема и основано на устранении избыточности, содержащейся в исходных данных. Есть два типа форматов со сжатием данных:

Lossless — сжатие без потерь (FLAC, ALAC, APE)

Lossy — сжатие с потерями (MP3, Ogg, AAC)

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

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

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

Спектрограмма MP3 (слева) и оригинального файла (справа)

Примеры распространенных Lossy-форматов:

MP3 — определен спецификацией MPEG-1, пожалуй, все еще самый распространенный формат

Ogg Vorbis — отличается отсутствием патентных ограничений и более высоким качеством при одинаковом с MP3 битрейтом

AAC, AAC+ — существует в нескольких вариантах, определённых спецификациями MPEG-2 и MPEG-4, получил широкое распространение вместе с техникой от Apple

eAAC+ — формат, предлагаемый Sony, как альтернатива AAC и AAC+

WMA — формат, разработанный Microsoft

Ранее аудиоформаты сжатия без потерь чаще использовались для архивного хранения данных и в случаях, когда искажения недопустимы или нежелательны, а большинство обычных слушателей использовали музыку в сжатых с потерями форматах. Но объемы памяти электронных устройств неуклонно растут, а цены на нее снижаются, поэтому все больше людей переходят на прослушивание Lossless форматов, позволяющих воспринимать музыку в первозданном виде. Кроме того, поддержка Lossless форматов сегодня появилась практически на всех потребительских устройствах, даже отдельные стриминговые сервисы начинают передавать звук в качестве без потерь, например, представленный в России Deezer или отсутствующий у нас официально Tidal.

Примеры распространенных Lossless-форматов:

Free Lossless Audio Codec — FLAC — самый распространенный свободный формат

ALAC — Apple Lossless Audio Codec — вариант от Apple

Audio Lossless Coding — также известен как MPEG-4 ALS

Direct Stream Transfer — DST

DTS-HD Master Audio

Meridian Lossless Packing — MLP

Monkey's Audio — Monkey’s Audio APE

WavPack — WavPack lossless

WMA Lossless — Windows Media Lossless

Нужен ли вам Lossless или можно продолжать пользоваться классическими MP3 или AAC? Здесь все не так однозначно. Конечное качество сжатого с потерями файла будет зависеть и от битрейта, и от используемого алгоритма/кодека, тогда как Lossless, вне зависимости от формата, будет соответствовать оригиналу. Ну и, конечно, чем лучше техника, на которой воспроизводится музыка, тем очевиднее будет преимущество Lossless над Lossy. А учитывая, что объемы памяти продолжают расти, имеет ли смысл экономить на качестве?

Читайте также: