Copyright © 2017, Taras Kovrijenko
Полное или частичное копирование текста допускается только с письменного разрешения автора.
Пролог
Хоть интернет полнится различного рода инструкциями по проверке честности lossless аудио, проверке на апконверт и т. п., я решил написать на этот счет свою инструкцию, подойдя к рассмотрению вопроса с должной основательностью и расстановкой.
Итак, перейдем непосредственно к делу.
Что будем мерить
Сперва хочу предупредить: невозможно, полагаясь лишь на программные средства (анализаторы и т.п.), с абсолютной уверенностью судить о превосходстве качества одной версии трека над другой. Имеются ввиду, например, различные раздачи на торренте, отличающиеся как источником, так и способом, которым они были закодированы. Ни одна программа не даст Вам полного понятия о звучании трека.
О чем же в данном случае можно судить? Во-первых — о частотном диапазоне анализируемого сигнала (это единственное, что можно определить точно), о его спектральном составе, ну и, как следствие (уже с той или иной вероятностью):
1. Если это lossless трек: был ли он получен из lossless источника, или же ранее был закодирован с использованием одного из lossy алгоритмов. Имеются ввиду алгоритмы, использующие психоакустическое сжатие. Сжатие с динамическим понижением разрядности (lossy WavPack, lossyWAV) скорей всего выявить не удастся, возможно, только на слух, по фоновым шумам.
2. Если это lossy: соответствует ли материал текущему своему виду, т.е., опять же, был ли источником кодирования lossless сигнал, или это апконверт. Апконвертом является любое преобразование с повышением битрейта. Например, перекодирование MP3 128 кбит/с в 320 кбит/с. Однако, осознанное перекодирование качественного AAC, OGG или MPC 200-256 кбит/с в MP3 320 кбит/с (для лучшей совместимости с устройствами воспроизведения) — случай довольно спорный, и при отсутствии других исходников даже не осуждается. Но, конечно же, при создании раздачи подобного материала, источник надо обязательно указывать.
Кроме того, для lossy (и в особенности, для LAME MP3) можно с той или иной степенью достоверности определить параметры кодирования. А определив например такой параметр, как частота срез НЧ фильтра, и сравнив его с актуальным частотным диапазоном записи, можно в некоторых случаях выявить тот самый апконверт.
Что будем использовать
1. foobar2000 — для декодирования, воспроизведения и просмотра технических характеристик музыкальных файлов. Дополнения к foobar2000: fooCDTect (оболочка к auCDTect — проверка lossless на предмет апконверта), AuSpec (удобный просмотр спектрограммы нажатием одной кнопки), MP3 Packer — просмотр специфических параметров MP3.
Примечание: дабы не устанавливать дополнительно горы декодеров и дополнений, рекомендую сразу скачать мою сборку. Альтернативы foobar2000 и дополнениям не советую, т.к. по возможностям они значительно уступают.
2. EncSpot Professional — с его помощью мы будем просматривать технические характеристики MP3 файлов.
3. Adobe Audition 2 — для просмотра спектрограмм с удобным масштабированием.
Собственно, сам процесс
Lossy
И так, возьмем в качестве примера закодированный мной Pink Floyd — Time (Pink Floyd — The Dark Side Of The Moon (AAD, Capitol CDP 7 46001 2)). Загрузим его в foobar2000 и поставим на воспроизведение:
Вверху мы видим примерную форму огибающей громкости (которая совмещена с полосой прокрутки), над ней VU Meter (аналог пикметра, но с некоторым усреднением по времени), внизу расположены остальные анализаторы:
Осциллограмма — волновая форма проигрываемого в данный момент отрезка записи.
Спектральная диаграмма (Spectrum Analyser), показывающая распределение мощности среди спектральных составляющих в данный момент времени,
пикметр, показывающий текущий уровень семпла (точнее, модуль его отклонения от нулевого положения)
Спектрограмма — аналог спектральной диаграммы, но с третей осью (время). Т.е., если мысленно выстроить спектральные диаграммы одну за одной, и глянуть на них сверху, получим спектрограмму («высота столбцов» задается яркостью цвета). Проще говоря, по горизонтали у нас время, по вертикали — линейно частота от 0 до 22 кГц, яркость — мощность спектральной составляющей.
Что мы сейчас видим на анализаторах:
- довольно высокий уровень записи (мы находимся на относительно громком участке) показывает нам пикметр
-как видно из огибающей громкости, динамический диапазон (диапазон, в котором меняется громкость фрагментов) трека довольно велик — это хорошо (для более-менее качественного оборудования).
— судя по спектральной диаграмме: наличие спектральных составляющих примерно до 20 кГц включительно, высокий уровень наиболее слышимого диапазона ВЧ (~11-16 кГц), что обычно говорит о значительной «звонкости» материала (это конечно же зависит от качества самой студийной записи и её (ре)мастеринга).
— спектрограмма подтверждает вышесказанное, но для более тщательного анализа спектра надо воспользоваться дополнительными утилитами
Теперь посмотрим на вкладку Info (справа). foobar2000 говорит нам о том, что запись имеет два канала, частоту дискретизации 44100 Гц и битрейт потока 320 кбит/с (реальный битрейт файла может немного отличаться, здесь он — 319 кбит/с). Насчет частоты: запомните, что весь музыкальный материал, выпускаемый на Audio CD, имеет частоту дискретизации 44.1 кГц, а потому музыка, имеющая семплрейт 48 кГц — это весьма подозрительно (т.к. неизвестно, каким алгоритмом и с каким качеством мог быть выполнен ресемплинг).
Далее написано, что трек был закодирован релизной версией кодера LAME 3.99 (на момент написания статьи это последняя версия). Более точное указание версии (например, 3.99.5) стандартом LAME Tag, к сожалению, не предусмотрено, однако есть один способ: надо открыть MP3 файл в текстовом редакторе и в поиске прописать «LAME» — у последней версии LAME (возможно, и в других недавних версиях) в закодированных данных периодически прописана версия — «LAME3.99.5».
А сейчас выделим трек и нажмем кнопочку RG (вверху, на панели плеера). После анализа нажмем кнопку Update File Tags. Теперь у нас появится дополнительная графа ReplayGain, где нас интересует значение Track Peak — уровень пикового семпла записи. В данном случае оно составляет 1.018077, что для MP3 (и lossy в целом) вполне нормально и не требует каких-либо действий направленных ан предотвращение клиппинга. Вообще, значения до 1.10 включительно (перегрузка до +1 dBFS) можно считать допустимыми. Подробнее о ReplayGain и громкости читайте в моей статье О понятии громкости в цифровом представлении звука и о методах её повышения
Постепенно переходим к тяжелой артиллерии. Открываем папку с треком в программе EncSpot и в контекстном меню файла жмем Lame Header. Видим следующее:
Полное описание информации отображаемой EncSpot можно почитать в отдельной статье. Здесь мы видим, опять же, что использовался кодер LAME 3.99, был применен НЧ фильтр на частоте 20.5 кГц. Качество алгоритма кодирования использовалось максимальное (Quality кратно 10), источник имел частоту дискретизации 44.1 кГц. Возвращаясь к теме частоты семплирования — очень важно, чтобы частота источника (точнее, частота потока поступившего на вход кодера) и MP3 файла совпадала. Если это не так, то был использован встроенный в LAME ресемплер, а он качеством не отличается.
Отдельно хочу сказать о параметрах Join Stereo mode и Safe Joint — для музыки сочетание этих параметров наиболее предпочтительно (JS без режима Safe допустимо только при низких битрейтах).
Идем дальше, открываем в контекстном меню файла Details.
Все фреймы конечно же имеют битрейт 320 кбит/с.
Здесь видно, что запись имеет широкую стереопанораму, различия между каналами довольно велики, а потому большинство фреймов закодированы в режиме Simple Stereo. Большинство блоков имеют тип Long, что говорит об относительно простой форме сигнала (малое количество транзиентов).
Тут стоит обратить внимание на резервуар бит — для MP3 CBR 320 он должен активно использоваться. Также хорошо, если стоят отметки Scalefac_scale и Scfsi.
А теперь можно перейти к более детальному анализу спектра. Жмем правой кнопкой на треке->Run Srviice->Open As... и открываем его через Adobe Audition 2:
Развернем окно на весь экран и уменьшим масштаб колесиком мышки:
Перед Вами просто таки характернейший для MP3 спектр: частотный диапазон составляет ~20 кГц, при этом спектральная плотность, начиная с 16 кГц резко падает. Это обусловлено особенностями психоакустической модели используемой в MP3 — она просто таки нещадно вырезает большинство слабых гармоник с частотой выше 16 кГц. Таким образом MP3 (даже с высоким битрейтом) очень легко узнать по спектру: если на записи есть фоновые шумы, выше 16 кГц они вырезаются, и на этом уровне образуется такая себе полка. Хотя, при достаточно высоком уровне ВЧ (обычно в электронной музыке), они могут в большинстве своём и сохранится.
Давайте рассмотрим спектры еще для нескольких кодеков-битрейтов.
LAME 3.99.5, VBR V2:
Здесь видно еще более жесткое обращение с ВЧ (хотя на слух это обычно неотличимо).LAME 3.99.5, CBR 128 kbps (-q 0):
При 128 кбит/с частоты выше 16 кГц практически всегда отсутствуют, а НЧ фильтр установлен на 17000 Гц (ширина фильтра по умолчанию — 5%, так что спад начинается с 16.15 кГц). Вдобавок здесь спектр явно прорежен уже даже в районе 8 кГц, а то и ниже, в итоге спектрограмма начинает чем-то походить на решето.
Fraunhofer MP3 Encoder, CBR 320 kbps (highest, join stereo):
Как видите, битрейт 320, а по спектру скорее похож на VBR V2 (~200 кбит/с). Кстати, это тот случай, когда результаты для спектрограммы совпадают с результатами прослушивания — качество кодера FhG заметно хуже LAME (за исключением CBR 128 кбит/с — здесь результаты прослушивания весьма спорные).
Как я уже говорил, сравнивая значение Lowpass Filter из EncSpot с фактической шириной спектра материала, можно судить о «честности» данного рипа (не апконверт). Тут же приведу соответствие популярных пресетов и стандартных частот среза для последней версии LAME:
CBR 320 — 20500 Гц
CBR 256 — 19700 Гц
CBR 192 — 18600 Гц
CBR 160 — 17500 Гц
CBR 128 — 17000 Гц
VBR V0 — 22100 Гц
VBR V2 — 18500 Гц
Если ширина спектрального диапазона не соответствует данному значению, это может говорить об апконверте. Однако, здесь довольно много «но» — ширина зависит от версии кодера, настроек (есть настройка, меняющая значение предельной частоты), самого материала в конце концов.
И последний штрих — конечно же MP3 Packer. Эта программка покажет нам, насколько эффективно сжат MP3 файл (чисто математически). Кликаем по треку правой кнопкой, выбираем Run service->MP3 Info. Видим окно:
Тут нас прежде всего интересует пункт Minimum bitrate possible — он показывает нам, какого битрейта можно достичь при перепаковке фреймов данного CBR файла в VBR фреймы (без потерь качества). Сравнив это значение с актуальным битрейтом, можно судить об эффективности сжатия. Это расхождение обычно связано с нерациональным использованием резервуара бит старыми версиями LAME. Приемлемыми можно считать отклонения до 10 кбит/с включительно (310 кбит/с для актуальных 320 кбит/с), если расхождения больше — это косвенно может говорить о низком качестве кодирования. Также обратите внимание на значение Largest frame uses (kbps) — оно указывает пиковый битрейт для трека с учетом битов из резервуара. Большое значение (>400) говорит об эффективном использовании резервуара и сложности отдельных фрагментов трека.Теперь, что касается современных кодеров (AAC, OGG Vorbis, Musepack). Они обладают более гибкими алгоритмами и не имеют такой статичной полки на 16 кГц, как MP3 (она у них динамически перемещается, в зависимости от целевого битрейта/качества), а на высоких битрейтах (>300 кбит/с) могут быть на глаз (не говоря уже о «на слух») неотличимы от lossless (если конечно не сравнивать непосредственно со спектром источника). Так что здесь ситуация посложнее, особенно если взять такой продвинутый формат как Musepack (MPC) — он работает по несколько другому принципу, чем MP3, AAC и Vorbis. Это сказывается как на спектральном отображении, так и на звучании. Например, тот же фрагмент, MPC q 6 (~210 кбит/с):
Преимущество перед LAME MP3 VBR V2 — очевидное, и, к тому же, ощутимое на слух. Сохранены практически все составляющие до 18 кГц (этого диапазона обычно бывает достаточно даже людей с «идеальным» слухом), а пики достигают и 20. К тому же этот кодер практически не страдает от пре-эхо — главной проблемы психоакустического lossy кодирования.А теперь взглянем на спектры AAC и OGG Vorbis.
QuickTime AAC True VBR 127 (~350 кбит/с):
OGG Vorbis -q9 (~350 кбит/с):А теперь, для сравнения, спектр оригинала:
Как видите, оба кодека охраняют весь частотный диапазон, а QAAC даже практически не урезает спектр фоновых шумов. Согласитесь: довольно трудно догадаться, что спектр QAAC принадлежит lossy источнику. А если бы на записи еще не было фоновых шумов — это не смог сделать никто (даже специальная программа). Впрочем, и на слух этот метод кодирования остается (по крайней мере, для меня) лучшим.
Касаемо определения параметров кодирования AAC, OGG и MPC — здесь инструментарий довольно скромный. Практически всю доступную информацию можно найти на вкладке Properties в foobar2000.
Lossless
О спектрах мы уже говорили, с характерными особенностями спектра MP3 (и других кодеров) Вы уже знакомы, а потому, обнаружив их в спектре lossless трека, уже сможете сделать соответствующие выводы. Но, что касается спектра апконвертов — один очень важный момент. Большинство lossless кодеров не принимают на вход PCM с плавающей точкой, а если источником является lossy, в нем с большой вероятностью присутствуют фрагменты с уровнем выходящим за 0 dBFS. После преобразования в фиксированную точку, так как «умникам», клепающим lossless из MP3, лимитирование сделать мозгов не хватает, мы получаем срезы, а прямоугольные срезы содержат полный спектр частот. В итоге на спектрограмме полученного трека мы будем видеть вертикальные полосы, простирающиеся аж до 22.05 кГц (при чем сама запись обычно уложена в диапазон до 20 кГц). Вот пример такого безобразия:
Завидев это дело, можете смело расстреливать автора раздачи из реактивного гранатомета.
Ну а теперь можно смело перейти к автоматическому анализу.
Здесь всё просто: выделяете lossless треки, нажимаете третью с конца кнопку на панели моего foobar2000 и через несколько минут видите что-нибудь эдакое:
Я специально выделил кроме lossless (TAK) еще и закодированные ранее (для получения спектрограмм выше) lossy треки — чтобы показать, насколько хорошо программа обнаруживает lossy кодирование. «95% MPEG» можно интерпретировать как «скорее всего, имело место lossy кодирование». «CDDA 100%» — означает, что материал с очень большой вероятностью (конечно не 100 %, но 99 уж точно) не был подвергнут lossy кодированию. Обмануть эту программу удается только Musepack на высоком битрейте (и то редко) или lossyWAV.Честно говоря, программа при анализе фактически руководствуется теми же критериями, что и мы при рассмотрении спектрограммы — поиск резкого спада плотности спектра, той самой «полки» — а потому, её выводы практически всегда совпадают с заключением человека с наметанным глазом, сделанным по спектрограмме.
Целостность
Также очень важно проверять треки на наличие ошибок. Для этого выделите их в foobar2000, нажмите на выделенном правую кнопку мыши и выберите из раскрывшегося списка Utils->Verify Integrity. При наличии ошибок в файлах формата MP3 foobar2000 может их исправить. Если Вы увидите ошибку вроде «Reported length is inaccurate...», выделите треки для которых отобразилась данная ошибка, нажмите правую кнопку и выберите Utils->Fix VBR MP3 Header, после обработки проверьте трек еще раз, ошибка должна отсутствовать. Если при проверке Вы наблюдаете ошибку вида «MPEG Stream error...», её можно исправить с помощью опции Utils->Rebuild MP3 Stream. После выполнения операции исправления ошибки не забывайте повторно проверять треки.
Для других lossy форматов, а также lossless исправить ошибки в foobar2000 нельзя, но проверить всё равно стоит.
Das Ende
В общем, по теме — это всё, чем я хотел с Вами поделиться. Если есть вопросы, обращайтесь, пишите — помогу разобраться.
Ссылки по теме
EncSpot - всё что вы хотите знать о MP3 файле
Видеопрезентация сборки foobar2000 by Audiophile
Информация от спонсора
Газгольдер.ру: автономные системы снабжения сжиженным газом, автономная газификация. Общепризнанный лидер в отрасли, стоявший в России у истоков её основания. Вам предоставляется широчайший спектр услуг по газификации, в т.ч. гарантийное и сервисное обслуживание. Компания работает как с частными, так и с юридическими лицами. Стоимость автономной газификации Вы можете узнать на сайте компании (по ссылке выше).