Как проверить качество lossless-файлов с музыкой, полученных из сети? В данном посте я постараюсь ответить на этот вопрос. Новичкам в области аудиоформатов рекомендую предварительно ознакомиться с базовыми понятиями. Зачем вообще проверять lossless, что с ним может быть не так? Дело в том, что в интернете нередко встречаются файлы FLAC, APE, WavPack, перекодированные из MP3 или другого формата сжатия с потерями — подобный псевдоlossless называют «апконвертом». Такое творение сочетает в себе все минусы lossless-форматов (большой размер файлов, ограниченная поддержка ПО/оборудованием) с главным минусом lossy-форматов (безвозвратные потери в аудиоданных). Всю драматичность этой ситуации передал Высоцкий в своей песне: «Если FLAC оказался вдруг и не MPEG, и не FLAC, а — так…»
Откуда берётся подобный фальшивый lossless? Варианта тут два:
- Некто осознанно делает апконверт из lossy-контента, преследуя свои корыстные цели — например, желая привлечь трафик на сайт путём выкладывания редких записей в lossless, но при этом не имея их нормального исходника.
- Некто из благих побуждений делает lossless с CD и выкладывает его в сеть без проверки. Проблема возникает, если этот CD оказывается пираткой, сделанной из lossy.
Вывод из вышесказанного очевиден — следует проверять lossless-материал на то, не является ли он подделкой. Сразу скажу, что определить апконверт со стопроцентной точностью не всегда возможно. Однако, отбраковать бо́льшую часть мусора вполне реально при помощи соответствующего программного обеспечения, о котором я и расскажу ниже. Все программы, о которых пойдет речь, являются «портативными», то есть запускаются сразу после распаковки из архива, не требуя инсталляции. К сожалению, самые популярные из них давно не обновляются, поэтому нет гарантий, что данное ПО будет корректно работать с последними версиями Windows.
auCDtect
Скачать auCDtect можно тут. Эта консольная программа работает только с WAV-файлами, поэтому проверяемый материал необходимо предварительно вручную декодировать в этот формат при помощи соответствующего кодека. Те, кого в принципе смущает интерфейс командной строки, могут сразу перейти к следующему пункту, для остальных приведу пример работы с программой. Проверим FLAC-файл, который находится в папке D:\Test. Положим в эту папку файлы flac.exe (кодек FLAC) и aucdtect.exe, которые и будем запускать. Процедура проходит в два шага: сначала командой flac -d filename.flac
декодируем FLAC-файл в WAV, затем командой aucdtect filename.wav
запускаем проверку полученного WAV-файла в auCDtect:
Результатом проверки является заключение утилиты «This track looks like CDDA with probability 100%» («Этот трек похож на CDDA с вероятностью 100%»), из чего можно сделать вывод, что наш FLAC-файл почти наверняка содержит полноценный lossless-контент и не является фейком. В противном случае утилита выдала бы сообщение «This track looks like MPEG…»
auCDtect Task Manager
Представляет собой работающий как единое целое комплект из auCDtect, графической оболочки к ней, редактора SoX и набора аудиокодеков. В отличие от «голой» auCDtect не требует от пользователя никаких особых навыков, анализ делается в несколько кликов без дополнительных телодвижений. К сожалению, автор прекратил разработку новых версий, оригинальный сайт недоступен. Скачать архив с программой можно только со сторонних ресурсов — например, отсюда. Судя по документации из комплекта, корректная работа программы гарантируется под версиями Windows до 8 включительно, а дальше — как повезёт. Запустив auCDtect Task Manager, мы видим привычный графический интерфейс: нужно выбрать файлы/папки, которые требуется проанализировать, после чего нажать кнопку «Старт»:
Результат по каждому треку выводится в столбце «Резюме»: «CDDA» — честный lossless, «MPEG» — апконверт. По умолчанию программа также формирует отчёты в директории с проверяемыми аудиофайлами, эту функцию можно отключить в настройках. В процессе анализа auCDtect Task Manager создает спектрограммы треков, которые впоследствии можно использовать для визуального анализа (подробнее об этом я расскажу ниже).
Audiochecker
Скачать Audiochecker и языковые пакеты к нему можно здесь. Увы, поддержка программы автором тоже давно отсутствует. В плане использования Audiochecker похож на auCDtect Task Manager — всё делается через графический интерфейс, результаты анализа выводятся в аналогичном формате:
Lossless Audio Checker
Название данной программы похоже на название предыдущей, но не нужно их путать — это совершенно разные продукты. Lossless Audio Checker доступен для скачивания на оригинальном сайте, имеются графическая и консольная версии. Интерфейс программы минималистичен, какие-либо настройки отсутствуют. По результатам проверки полноценный lossless отмечается как «Clean», фейковый — «Upsampled»:
Надо отметить, что надёжность распознавания апконверта у Lossless Audio Checker’а оставляет желать лучшего, пользоваться этой программой если и стоит, то только в качестве дополнения к другому ПО.
Визуальный анализ спектрограмм
Давайте посмотрим, как изменяется спектр сигнала при перекодировании музыки из одного формата в другой. Для этого сделаем следующее:
- Возьмём CDDA с электронной музыкой, выберем на нём трек с максимально широким спектром, сохраним этот трек в WAV.
- Создадим ещё три копии полученного на предыдущем этапе WAV-файла, каждую из которых сожмём в MP3 при помощи кодера LAME с различными настройками. Тем же LAME’ом декодируем все MP3 обратно в WAV. Одну из копий после декодирования обработаем энхансером в аудиоредакторе.
- Полученные WAV-файлы сожмём во FLAC (технической необходимости в этом нет, можно анализировать и сразу WAV, но для наглядности пусть всё будет выглядеть так, как будто бы мы скачали музыку в формате FLAC из сети). Конечным результатом всех описанных манипуляций будут четыре варианта тестового трека, один из которых — полноценный lossless, а три другие — псевдоlossless, сделанный из MP3 разной степени урезанности.
- При помощи auCDtect Task Manager получим спектрограммы наших тестовых файлов, которые и рассмотрим. Рекомендую читателю сохранить нижеприведённые картинки в папку и посравнивать их самостоятельно в любой программе просмотра изображений, быстро переключаясь между ними — так различия будут видны максимально отчётливо.
Итак, вот спектрограмма исходного CDDA-трека:
А это наш трек после конвертации в MP3 при помощи LAME с пресетом extreme (один из наиболее качественных вариантов MP3-сжатия):
Отличия от исходного образца минимальны, но они есть. В целом спектр всё так же простирается до самой верхней границы (ФНЧ у LAME в этом режиме отключен), однако, на некоторых участках слабые высокочастотные составляющие всё равно подавлены, что видно по обрезке голубовато-фиолетовых составляющих спектрограммы.
А вот так выглядит спектрограмма трека, сжатого в MP3 LAME’ом с настройками по умолчанию (постоянный битрейт 128 kbps, используется фильтр нижних частот):
Тут мы видим работу ФНЧ во всей красе, частотные компоненты выше ~17 кГц почти полностью обрезаны.
Теперь посмотрим на спектрограмму этого же варианта трека, дополнительно обработанного энхансером (энхансер — ПО, добавляющее в высокочастотную область сигнала гармоники, субъективно делающие звук более ярким, насыщенным. Лет 15-20 назад многие пиратские CD, изготовленные из MP3, обрабатывались подобным образом). Видим, что энхансер добавил в верхнюю часть спектрограммы немного голубого цвета, что предсказуемо. Впрочем, всё это как мёртвому припарки, отрезанные на этапе MP3-сжатия высокие частоты уже не восстановишь:
Какие выводы можно сделать из увиденного?
- Современные lossy-кодеры в высококачественных режимах выдают материал, отличить который от оригинала по спектрограмме весьма сложно или вовсе невозможно. Однако, при переключении этих кодеров в режим «эконом», отличия от оригинала становятся очевидными.
- При анализе спектрограммы с целью вычисления апконверта смотреть нужно в первую очередь на наличие явного среза ВЧ. Если таковой присутствует на частотах ниже ~20 кГц — перед вами с высокой вероятностью псевдоlossless. Однако, подобные срезы иногда встречаются и на нормальных CDDA-записях.
- Высокочастотные составляющие, вырезаемые при сжатии с потерями, обычно имеют очень низкий уровень. Удаление этих компонентов приводит к уменьшению гладкости линий в верхней части спектрограммы — эти линии становятся более прерывистыми, контрастными, фиолетово-синие цвета в них замещаются чёрным. Следовательно, выраженная дискретность картинки в ВЧ-области также может быть признаком того, что перед вами апконверт.
Заключение
Как я уже говорил во вступлении, не стоит считать описанный в статье инструментарий панацеей, однако, в большинстве случаев он достаточно эффективно справляется с обнаружением поддельного lossless-контента. Проще всего, когда результаты анализа говорят о том, что перед нами откровенная фальшивка — таковую просто удаляем, и дело с концом. Сложнее принять решение в неоднозначных ситуациях — например, когда отдельные треки в альбоме определяются как апконверт с достаточно высокой вероятностью, а другие — как полноценный lossless. В таких случаях имеет смысл поискать нужные записи в альтернативных источниках и сравнить разные релизы друг с другом. Часто это помогает определиться, является ли сомнительный результат в тестах следствием особенностей фонограммы или же результатом чьей-то вредительской деятельности.
Метки: работа с аудиозаписями
На самом деле это очень больная тема, которая ещё больше усугубилась с появлением стриминговых сервисов. Например, высокобитрейтный разжатый AAC в подавляющем большинстве случаев программой fooCDtect (foobar2000 + auCDtect) определяется как CDDA 100%. Спектры WAV при сжатии треков в AAC ДАЖЕ при 256 kbps не разрушаются от слова совсем и визуально неотличимы от исходников. И если представить сколько таких FAKE с идеальным спектром (не путать с FLAC) может находиться в сети — становится не по себе.
А программы для linux?
Увы, тут ничего подсказать не могу.