Научный метод и сжатие музыки
Иногда картинки и музыка занимают неоправданно много места. При этом люди верят, что если все это сжать, то качество заметно пострадает. Как правило, это не так. То есть качество, конечно, пострадает. Но скорее всего это будет незаметно. В этой статье я расскажу, как выяснить предел сжатия картинок и музыки, при котором воспринимаемое качество не упадет.
Наивный подход заключается в том, чтобы просто посмотреть/послушать два образца, зная какой где, и сказать «Да я легко отличу mp3 от lossless — вот mp3, а вот lossless». Однако когда человек видит название файла, его размер и битрейт в плеере, сделать это нетрудно. Мнение в этом случае основано на самовнушении и вере, а не на объективных данных. Чтобы узнать правду, следует использовать слепой метод, т. е. такой, при котором человек не знает ответа заранее и полагается только на чувственное восприятие. Поможет в этом ABX-тест («эй-би-икс», не «а-вэ-ха»).
ABX-тест — это метод сравнения двух вариантов звука/изображения для выявления ощутимой разницы между ними. Испытуемому предоставляется 2 известных образца (А — первый вариант, B — второй вариант), а также неизвестный образец X, выбираемый случайно между A и B. Испытуемый должен опознать X как A или B. Если X не может быть определен с достаточной надежностью в серии опытов, то наличие ощутимой разницы между образцами считается недоказанным.
Чтобы сравнить два файла, нужно сделать так, чтобы они были внешне одинаковы, т. е. чтобы их нельзя было отличить без прослушивания. На рисунке ниже показано содержимое папки в файловом менеджере. Как думаете, какой из файлов mp3, а какой lossless?
Самые внимательные из вас заметили, что один из файлов имеет расширение flac и размер 28 Мб, а другой — расширение mp3 и размер 3 Мб. Так не пойдет. Надо преобразовать файлы, чтобы их нельзя было идентифицировать. У файлов должен быть одинаковый формат и одинаковый размер. Это легко сделать в программе Audacity: импортировав файл (меню File→Import→Audio), экспортировать его в wav (File→Export Audio).
В результате папка будет выглядеть так:
Уже лучше, a.wav и b.wav выглядят одинаково. При этом содержимое a.wav по качеству lossless, а b.wav — mp3, и звучать они будут соответствующе.
Теперь надо сделать несколько тестовых файлов, каждый из которых будет равен a.wav или b.wav, а ответы записать в текстовый файлик для последующей сверки. Разумеется, при слепом методе это должна делать программа.
Программку можно взять вот эту. Работает под линуксом и под виндой. Предполагается, что в одной папке с прогой будут файлы типа a.ext и b.ext, расширение ext передается в качестве обязательного аргумента. Для bmp и wav сделаны батники/скрипты. В результате работы программы будут созданы 10 файлов, среди которых будет минимум по 3 каждого варианта, а ответы записаны в файл answers.txt.
Теперь происходит собственно тестирование. Нужно послушать каждый файл и идентифицировать его как A или B, ответы записать в файлик, затем сравнить с правильными ответами из answers.txt. Во время прослушивания можно и нужно сверяться с образцами A и B.
Статистически значимым результатом будет 9 правильных ответов из 10, 8 — уже не годится.
Я проверил себя на композиции Земфира - Рассветы. Железо: ЦАП FiiO E17 с усилителем FiiO E09K, уши Beyerdynamic DT 990 PRO.
Исходный файл lossless flac, сжатие кодеком mp3 в режиме Average bitrate.
У меня получилась такая нелестная статистика:
80 kb/s — 10/10
96 kb/s — 10/10
112 kb/s — 9/10
128 kb/s — 7/10
Получается, я уже не отличаю mp3 128 kb/s от lossless. Такие дела.
То же самое можно проделать и с картинками. В каком качестве следует сохранять jpg? 100? 95? 90? 80? Принцип тестирования аналогичен — перегоняем оригинал в a.bmp, далее сохраняем его как jpg с определенным качеством, сохраненный jpg перегоняем в b.bmp, запускаем прогу, проверяем себя.
Знакомый с темой читатель возразит: зачем заморачиваться, когда уже есть foobar2000 с плагином ABX comparator? Foobar2000 хорош, спору нет. Но у него есть один недостаток — привязка к винде. Допустим, нужно сжать музыку, чтобы закинуть на портативный плеер. Места мало, хочется, чтоб музыки влезло побольше, но чтобы потеря качества была незаметна. Проверять качество нужно именно на плеере, а не на компе. Или юзер работает под линуксом, а использовать foobar2000 под wine ему не позволяет религия. Рассматриваемый метод носит универсальный характер, не привязан к операционной системе и типу сравниваемых файлов.
Если у вас вся музыка исключительно в lossless-форматах, если вы аудиофил международного класса — проверьте себя. Ричард Фейнман говорил «Главный принцип - не дурачить самого себя. А себя как раз легче всего одурачить».