The Jerusalem PostEilat records first rain of year as authorities issue flash flooding warning in Dead Sea regionESPN DeportesCheco Pérez abandona la sprint de Singapur tras choquePunchSowore visits Ondo crash site, demands independent probeRTP DesportoDecisão da FPF. Cristiano Ronaldo com suspensão preventivaESPNHow Bob Chesney has completely turned around UCLAInquirerSandiganbayan grants Romualdez’s motion to sign pre-trial order at QC jailZDF heuteAktuelle Pressemitteilungen des ZDF20 Minuten«In die Schweiz zu ziehen, fühlte sich an wie Heimkommen»SRF NewsIhre Anfragen im Faktencheck – 5 Technik-Fails – von der Panta Rhei bis zur HochrheinbrückeVanguardCORRIGENDUMNOSOpnieuw vijf Palestijnen in Gaza gedood door Israëlische aanvallenEgyptian StreetsNobel Peace Prize Goes to Former UN Rights Chief Navi Pillay
The Daily Newsstand · Free, Always
Saturday, October 10, 2026

FLAC против MP3: что кодировщик выбрасывает из трека и слышно ли это

Translate

Спор «FLAC или MP3» обычно идёт на словах: один слышит «воздух», другой не слышит ничего. Я взял один трек, сжал его шестью способами и измерил, что изменилось в файле.

MP3 128 кбит/с обрезал всё выше 16,5 кГц, MP3 320 дошёл до 20,1 кГц. После десяти пересохранений MP3 128 потерял больше 10 дБ. FLAC после повторного сжатия совпал с оригиналом до бита. Под катом пять замеров с графиками, расчёт для слепого теста и таблица, какой формат для чего брать.

Что сравниваю

Трек: COOL&CREATE, «Help me, ERINNNNNN!!», издание 2024 года. Это аранжировка музыки из Touhou: быстрая электроника с вокалом, плотная и громкая. Длина 5 минут 16 секунд, 44,1 кГц, 16 бит, стерео. Это параметры обычного компакт-диска.

Кодировщик MP3: LAME 3.100, настройки по умолчанию.

ffmpeg -i track.flac -c:a pcm_s16le orig.wav      # несжатый звук
lame -b 128 orig.wav cbr128.mp3                   # постоянные 128 кбит/с
lame -b 320 orig.wav cbr320.mp3                   # постоянные 320 кбит/с
lame -V2 orig.wav v2.mp3                          # переменный битрейт
lame -V0 orig.wav v0.mp3                          # переменный, выше качество

-V0 и -V2 задают качество, а битрейт кодировщик подбирает сам для каждого отрезка. Вики Hydrogenaudio даёт для них средние 245 и 190 кбит/с. На моём треке вышло 261 и 184.

Замер 1. Размер

Размер одного трека в разных форматах

Размер одного трека в разных форматах

Формат

Размер

Средний битрейт

Доля от WAV

WAV

55,7 МБ

1411 кбит/с

100%

FLAC

43,0 МБ

1090 кбит/с

77%

MP3 320

12,6 МБ

320 кбит/с

23%

MP3 V0

10,3 МБ

261 кбит/с

19%

MP3 V2

7,3 МБ

184 кбит/с

13%

MP3 128

5,1 МБ

128 кбит/с

9%

FLAC сжал трек на четверть, MP3 320 в четыре с лишним раза. На тысячу таких треков FLAC займёт около 43 ГБ, MP3 320 около 13 ГБ, MP3 128 около 5 ГБ. Степень сжатия FLAC зависит от музыки. Здесь плотная громкая электроника, и она сжалась слабо: тихая акустика обычно сжимается сильнее.

FLAC при этом ничего не теряет. Я проверил это контрольной суммой распакованного звука:

ffmpeg -i track.flac -f s16le - | md5sum      # 511b1390...
ffmpeg -i orig.wav   -f s16le - | md5sum      # 511b1390...
ffmpeg -i again.flac -f s16le - | md5sum      # 511b1390...

Третья строка: WAV, заново сжатый во FLAC. Все три суммы совпали, то есть звук совпадает до бита. FLAC работает как архиватор: предсказывает следующий отсчёт по предыдущим и хранит только ошибку предсказания.

Замер 2. Где обрывается верх

MP3 устроен иначе. Он делит звук на кадры по 1152 отсчёта, переводит каждый в спектр и решает, какие частоты записать точно, какие грубо, а какие выбросить. Первым под нож идёт самый верх спектра. На спектрограмме это видно как чёрная полоса сверху: слева оригинал, дальше MP3 320 и MP3 128.

Спектрограммы одного отрывка: FLAC, MP3 320 и MP3 128

Спектрограммы одного отрывка: FLAC, MP3 320 и MP3 128

То же самое одним графиком, усреднённо по всему треку:

Усреднённый спектр файлов от 10 до 22 кГц

Усреднённый спектр файлов от 10 до 22 кГц

Чёрная линия FLAC доходит до 22 кГц, это предел для частоты дискретизации 44,1 кГц. Остальные линии в какой-то момент падают вниз:

Формат

Спектр обрывается на

MP3 64

10,9 кГц

MP3 128

16,5 кГц

MP3 V2 и MP3 192

18,7 кГц

MP3 320

20,1 кГц

MP3 V0

обрыва нет, линия идёт рядом с FLAC

Линия MP3 V0 идёт вплотную к FLAC, потому что на этой настройке LAME фильтр верхних частот выключает. Кодировщик сам об этом пишет, если запустить его с ключом --verbose:

-V0     polyphase lowpass filter disabled
-b 320  Using polyphase lowpass filter, transition band: 20094 Hz - 20627 Hz
-V2     Using polyphase lowpass filter, transition band: 18671 Hz - 19205 Hz
-b 128  Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz

Из этого не следует, что V0 равен FLAC. График показывает, сколько энергии в среднем на каждой частоте. Насколько точно эти частоты записаны, по нему не видно. V0 оставляет верх спектра на месте и кодирует его грубо. Точность показывает следующий замер, и там V0 уступает MP3 320.

Слышен ли обрыв, зависит от слуха и от музыки. Верхняя граница слуха с возрастом опускается, и от 17 до 20 кГц в музыке мало энергии: на графике этот участок примерно на 50 дБ ниже пика спектра. Свою границу легко узнать: включите генератор тона и ведите частоту вверх, пока звук не пропадёт.

MP3 64 устроен ещё жёстче: LAME на этом битрейте сам понижает частоту дискретизации до 24 кГц, выше 12 кГц в таком файле звука нет совсем. Горб на 13 кГц, скорее всего, след обратного пересчёта в 44,1 кГц для графика: он зеркален спаду у 11 кГц относительно 12 кГц.

Замер 3. Разница с оригиналом

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

Спектрограмма разницы между FLAC и MP3

Спектрограмма разницы между FLAC и MP3

Слева разница для MP3 320, справа для MP3 128, отрывок тот же, что на спектрограмме выше. Яркость показывает громкость. У MP3 128 разница идёт по всему спектру, а сильнее всего она ниже 5 кГц, где звучит сама музыка.

В цифрах: насколько разница тише самого трека.

Формат

Разница тише трека на

MP3 128

16,7 дБ

MP3 V2

20,2 дБ

MP3 V0

25,9 дБ

MP3 320

30,2 дБ

30,2 дБ мало. Шум на таком уровне, включённый отдельно, слышит любой. В MP3 его обычно не слышно, потому что кодировщик прячет ошибку рядом с громкими звуками. Ухо плохо различает тихий звук, если на близкой частоте в тот же момент звучит громкий. Это свойство называется маскировкой, и на нём построен весь формат: модель слуха в кодировщике считает, сколько ошибки поместится под каждым громким звуком, и тратит биты там, где спрятать её негде.

Поэтому число из таблицы нельзя читать как «слышимость». Оно говорит, сколько звука изменилось, и молчит о том, заметит ли это человек.

Замер 4. Повторное сжатие

Маскировка рассчитана на один проход. Если распаковать MP3 и сжать снова, кодировщик заново решает, что выбросить, и ошибки складываются. Я прогнал трек через LAME десять раз подряд.

Отличие от оригинала после каждого перекодирования

Отличие от оригинала после каждого перекодирования

Сколько раз сжали

MP3 320

MP3 128

1

30,2 дБ

16,7 дБ

5

25,8 дБ

9,9 дБ

10

23,9 дБ

6,4 дБ

MP3 320 за десять проходов потерял 6,3 дБ, MP3 128 потерял 10,3 дБ. В жизни это выглядит так: трек скачали в MP3, обрезали в редакторе и сохранили, залили на сервис, сервис сжал его ещё раз. С FLAC такого не случается: его можно распаковывать и сжимать сколько угодно, сумма из первого замера останется той же.

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

Замер 5. FLAC, в котором нет верха

Расширение .flac говорит только о том, что файл сжат без потерь. Что лежало на входе кодировщика, оно не говорит. Мне попался такой файл на Wikimedia Commons, когда я искал трек для статьи:

Спектры двух файлов FLAC

Спектры двух файлов FLAC

У обоих файлов одинаковые параметры: 44,1 кГц, 16 бит. У «Help me, ERINNNNNN!!» спектр доходит до 22 кГц. У второго файла он обрывается на 15,3 кГц ступенькой, как у MP3 на графике из второго замера.

По самому файлу не узнать, откуда обрыв. Так выглядит MP3, пересохранённый во FLAC, и так же может выглядеть запись, которую отфильтровали при сведении. Но если вы платите за FLAC или качаете его ради качества, спектр стоит проверить. Спектрограмму показывают Audacity и Spek, а одной командой её строит ffmpeg:

ffmpeg -i track.flac -lavfi showspectrumpic=s=1200x600 spectrum.png

Перекодировать MP3 во FLAC бессмысленно: файл вырастет в несколько раз, а выброшенное не вернётся.

Слышно ли это

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

В 2009 году на конвенции Audio Engineering Society показали такую работу: Pras, Zimmerman, Levitin и Guastavino, «Subjective Evaluation of MP3 Compression for Different Musical Genres». Тринадцать подготовленных слушателей, музыканты и звукорежиссёры, сравнивали CD-качество с MP3 от 96 до 320 кбит/с. По аннотации работы, они значимо предпочитали CD файлам MP3 с битрейтом до 192 кбит/с. Про 256 и 320 кбит/с такого вывода в аннотации нет.

Вики Hydrogenaudio пишет то же другими словами: в слепых тестах LAME обычно становится неотличим от оригинала на битрейтах заметно ниже максимального.

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

Попыток

Верных ответов

Шанс угадать столько случайно

10

8 и больше

5,5%

10

9 и больше

1,1%

16

12 и больше

3,8%

16

13 и больше

1,1%

Восемь из десяти ещё похоже на удачу. Девять из десяти или тринадцать из шестнадцати уже говорят, что разницу вы слышите.

Два условия, без которых тест ничего не покажет:

  • Громкость файлов должна совпадать. Более громкий вариант обычно кажется лучше.

  • Наушники должны быть проводными. Bluetooth сам сжимает звук с потерями: SBC, AAC, aptX и LDAC все относятся к таким кодекам. FLAC по дороге к беспроводным наушникам перекодируется так же, как MP3.

Что из этого следует

Задача

Формат

Почему

Домашняя библиотека, архив

FLAC

Исходник без потерь: из него получается любой формат, повторное сжатие ему не вредит

Телефон с небольшой памятью

MP3 V0 или 320

В 3 или 4 раза меньше FLAC. В работе 2009 года слушатели предпочитали CD только файлам до 192 кбит/с

Мобильный интернет

от 128 до 192 кбит/с

Экономит трафик, потери уже можно услышать

Трек, который будут резать и пересохранять

FLAC

У MP3 128 десять пересохранений съели больше 10 дБ

В Nami это устроено так: сервер хранит файлы в исходном формате, а в экономном качестве сжимает их на лету в Opus 128 кбит/с и отдаёт телефону.

Ограничения замеров

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

  • Кодировщик один, LAME 3.100. Старые кодировщики на том же битрейте работают хуже.

  • Разница в децибелах не равна слышимости, об этом сказано в третьем замере. На слух её проверяет только слепой тест.

  • Opus и AAC я не сравнивал. Они новее и на низких битрейтах сжимают лучше MP3. Fraunhofer закрыл программу лицензирования MP3 23 апреля 2017 года и сам назвал AAC более эффективным кодеком.

  • FLAC 24 бита и 96 кГц я тоже не трогал: это отдельный спор.

Попробовать

Nami бесплатный, без рекламы и аккаунтов. Про проект целиком я рассказывал в первой статье.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.