MP3: знакомый незнакомец

Дмитрий СМИРНОВ [email protected]

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

Вместо вступления

MPEG Layer 3 (MP3) стал популярен не сразу. Взрывная волна его популярности захлестнула мир всего несколько лет назад. Пираты всех уголков света дружно кинулись выпускать диски с музыкой в новомодном формате, а пользователи — их покупать. Ведь непросто удержаться при виде красочной надписи на диске: 11 часов музыки CD-качества! Обычно такой диск был под завязку забит MP3-файлами с битрейтом 128 Кбит/с, сделанными на неизвестно каком кодере (если вам непонятны термины битрейт или кодер , просмотрите одним глазом соответствующие разделы статьи, если же вам ни о чем не говорят слова CD или качество , то вы по ошибке, наверное, взяли не тот журнал). Но постепенно пена стала спадать, а пользователи захотели узнать: а действительно ли им предлагали то, за что они платили? В результате выяснилось, что фраза про 11 часов музыки и CD-качество не совсем соответствует действительности, хотя последнее можно намного улучшить, если знать специфику самого формата. Об этом мы и поговорим в этой статье.

О главном...

В основу формата положена специфика человеческого слуха, а именно эффект маскирования слабого сигнала одного диапазона частот более мощным сигналом соседнего диапазона. Кроме того, учитывается неспособность большинства людей различать сигналы, по мощности лежащие ниже определенного уровня, варьирующегося для разных частотных диапазонов. Все это позволяет получить впечатляющую степень сжатия: от 5 до 11 и более раз! При разумной степени сжатия качество звука довольно близко к оригиналу. В ряде случае даже эксперты не могут отличить звучание MP3-файла с битрейтом 256 Кбит/с от оригинального трека с CD. Правда, в тесте, о котором идет речь, было использовано весьма небольшое число композиций — в реальной жизни не все может быть так хорошо.

Итак, хватит технических подробностей и вступительных слов — пора переходить к делу, а именно к кодированию в MP3. Какие ошибки наиболее часто допускают начинающие пользователи при первом знакомстве с MP3 и как их избежать, мы и попытаемся разобраться. Все мои советы выражают субъективную точку зрения и не претендуют на истину в последней инстанции. Но при желании вы можете провести свой собственный тест и составить свое мнение по каждому пункту. Как это сделать, я расскажу ниже.

О кодерах...

Будем считать, что звуковой материал для кодирования уже подготовлен (например, сграблен с CD) и лежит в заветной папочке на вашем HDD в виде wav-файлов (описание процесса подготовки звукового материала выходит за рамки этой статьи).

Первое, с чем необходимо определиться, — для каких целей вы планируете использовать получаемые файлы? Ведь музыку можно слушать и на дешевых компьютерных колоночках, продвинутых немногим дальше PC-спикера :-), а можно и на акустике за тысячу зеленых . Поэтому сразу определитесь с тем, что вы хотите услышать. Лично я всегда кодирую музыку, которая мне нравится, в максимальном качестве, независимо от того, где я буду ее слушать (а вдруг я завтра сказочно разбогатею?)

Вторым серьезным шагом является выбор кодера, т.е. программы, которая будет кодировать ваши файлы. На сегодняшний день существуют три основных организации, поставляющие программы для кодирования музыки в формат MP3. Это Fraunhofer-IIS, Xing Technologies и ISO, которая приложила к стандарту ISO MPEG демонстрационный свободно распространяемый (но весьма медленный) код.

Кодеры на основе кода от Fraunhofer-IIS работают и быстро, и достаточно качественно. Кодеры на основе кода от Xing быстры, но некачественны. Кодеры на основе кода от ISO очень медленны (демонстрационный код совсем не оптимизирован), обеспечивают высокое качество и степень сжатия вплоть до 4:1 (320 Кбит/с), но очень плохо ведут себя на низких битрейтах, что проявляется в виде специфического звона, вносимого кодером.

Многие пользователи совершают роковую ошибку, выбирая кодер исключительно по скорости кодирования и забывая при этом про качество. Конечно, все разработчики проводят оптимизацию. Но любая оптимизация имеет предел, и лично мне не нужна оптимизация за счет качества. В частности, этим страдают все кодеры от Xing, в том числе небезызвестный Audio Catalyst (http://www.xingtech.com), о котором мы сейчас дружно забудем. Вообще, скорость кодирования меня не интересует вовсе, несмотря на то, что компьютер у меня не поддерживает даже MMX... Поэтому я выбираю кодеры получше.

Оптимальным выбором, как мне кажется, является Blade Encoder (http://bladeenc.mp3.no), написанный Тордом Янсоном (Tord Jansson) и основанный на оригинальном коде от ISO. Сочетает в себе высокую скорость работы и отменное качество звука. Программа консольная, но в Интернете для нее можно найти множество графических оболочек.

Для маньяков я бы рекомендовал LAME (http://www.mp3encoder.org), разрабатываемый группой энтузиастов и изобилующий морем всяческих настроек. Например, программа поддерживает так называемые психоакустические модели, ориентированные на улучшение восприятия звука неким среднестатистическим человеком (на разных людей эта штука может произвести совершенно разное впечатление, и потому для пущей уверенности в качестве ее можно отключить). Работает быстро и при правильной настройке (а это удел истинных маньяков) может дать качество лучшее, чем Blade Encoder. Программа также консольная и также основана на коде от ISO. Распространяется в виде исходников, но в Инете можно найти откомпилированные версии под любую ОС. Там же можно найти и скины.

На высоких битрейтах (192 Кбит/с и выше) предыдущие два кодера просто вне конкуренции. Ну а что делать любителям низких битрейтов (128 Кбит/с и ниже)? Для них я бы рекомендовал MP3 Producer (http://www.opticom.de/) — коммерческий кодер от Fraunhofer IIS (http://www.iis.fhg.de), специально оптимизированный для этих целей.

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

О битрейтах...

Итак, с кодером мы разобрались. Пусть это будет Blade Encoder. Теперь нам предстоит не менее важная задача — выбор битрейта, т.е. количества бит, необходимых для представления одной секунды аудиоданных. Здесь самое время вспомнить, для чего предназначались ваши mp3-файлы, и учесть то, что пропорционально битрейту растет качество, а вместе с ним и размер файла. Я дам лишь несколько немного субъективных оценок.

Наверное, никто не порекомендует вам использовать битрейт, меньший 128 Кбит/с, разве что в ситуациях, когда большую роль играет размер файла или пропускная способность сети. Поэтому нижней границей будем считать 128 Кбит/с (сжатие 11:1). При таком битрейте вносимые кодером искажения отчетливо заметны на слух (звук как бы немного смазывается, пропадают высокие частоты, появляется звон и т.д.) При этом никогда не верьте красочным надписям на компакт-дисках типа пресловутых 11 часов музыки CD-качества  — с CD-качеством MP3 вообще не имеет ничего общего! Впрочем, людей, которые такое заявляют, все-таки можно понять. Будем все же считать, что никакой это был не обман, а наивное допущение, что на своей старой звуковушке и мультимедийных колонках юзер все равно не заметит разницы между CD и MP3 128 Кбит/с. А потом в дело вмешались профи и все испортили. Вот так.

Битрейт в 160 Кбит/с (сжатие 8:1) или 192 Кбит/с (сжатие 7:1) дают лучшее качество звучания (позже я поясню, в чем разница между stereo и joint stereo), но искажения все еще имеют место быть. При битрейте 256 Кбит/с (сжатие 5:1) уже сложно отличить на слух оригинал и MP3-файл, даже на очень хорошей аппаратуре. Именно этим битрейтом пользуюсь я. И ни один человек в этом мире, наверное, не переубедит меня понизить его. Файл с битрейтом 320 Кбит/с (сжатие 4:1) практически неотличим на слух как от оригинала, так и от файла с битрейтом 256 Кбит/с, поэтому использовать этот битрейт следует лишь в том случае, когда необходимо максимально сохранить качество, даже ценой увеличения размера файла.

Еще полезно знать, что если файл стерео, то указанный битрейт будет разделен поровну (или почти поровну) между каналами, и каждый из них получит только половину. Например, при 256 Кбит/с каждый канал получит по 128 Кбит/с. Отсюда следствие: не кодируйте монофонические файлы с тем же битрейтом, что и стерео — берите ровно половину!

Теперь пару слов о переменном битрейте (VBR). Впервые его начала использовать Xing где-то в начале 1999 года и, как обычно бывает в кодерах этой фирмы, реализация его оставляла желать лучшего. От Fraunhofer IIS мир тоже не увидел достойной реализации VBR. Зато VBR в кодере LAME реализован весьма неплохо. Суть его состоит в том, что кодер пытается обеспечить указанный уровень качества, используя минимально необходимый битрейт. Но учтите, что старые mp3-проигрыватели не понимают VBR. Так что если вас в первую очередь привлекает стильное мигание циферок битрейта в Winamp и сознание того, что ваши подборки эмпешек не всем дано прослушать, то эта фича для вас :-).

О стерео...

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

Dual Channel или Dual Stereo — левый и правый каналы кодируются раздельно, как две разные записи; на каждый из каналов отводится ровно половина места в результирующем файле. Используется крайне редко, например, когда в одном канале идет дикторский текст, а в другом — музыка;

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

Joint Stereo — левый и правый каналы кодируются вместе, а в результирующий файл записывается информация о двух каналах в нетривиальной форме — например, левый канал и отличия правого канала от левого (на вторую часть отдается меньше места). Есть несколько стандартов представления информации Joint Stereo, но всех их объединяет существенный недостаток: плохая передача стереоэффектов, в частности, портится фазовая информация. Такой способ кодирования в большинстве случаев существенно ухудшит звук.

Не все кодеры позволяют в явном виде выбирать режим кодирования стереосигнала. Так, Blade Encoder использует только Stereo; LAME — Stereo или Joint Stereo без ограничений, а вот Audio Catalyst и MP3 Producer предпочитают в основном Joint Stereo, но позволяют иногда указать и Stereo (Dual Channel все эти кодеры просто терпеть не могут :-)).

Отмечу, что выбор какого-либо из трех режимов мало влияет на объем файла, и в случае с Joint Stereo вы просто получаете менее качественный звук почти в том же объеме!

О флагах...

И последнее, о чем хотелось бы сказать, это о флагах (не о государственных, конечно :-), а о тех, что позволяют устанавливать у файла почти все кодеры). Это флаги CRC, Copyrighted, Original и Private. Они никак не влияют на качество или размер файлов, поэтому можете смело их устанавливать или сбрасывать. Исключение составляет лишь флаг CRC, который добавляет к файлу контрольную сумму. Контрольная сумма нужна только при воспроизведении файлов из сети Интернет или какой-либо другой сети, когда передача может осуществляться с ошибками. Для обычного прослушивания CRC абсолютно не нужна, к тому же может немного ухудшить качество, и некоторые программы могут отказаться открывать ваш MP3-файл. Будьте внимательны!

Вместо заключения

В завершение статьи пару слов о том, как провести собственные тесты.

Самым очевидным способом является, конечно, оценка на слух. Но этот тест требует наличия высококачественной аппаратуры (и хороших ушей :-) (или группы экспертов, как сказано выше :-))), к тому же полученные результаты будут субъективны. Наиболее правильный тест, дающий к тому же объективные результаты — это анализ спектрограммы (уровня сигнала по каждой из частотных полос) mp3-файла и его оригинала, т.е. записи в формате музыкального CD. Для проведения этого теста вам понадобится какая-нибудь программа, умеющая строить эту самую спектрограмму. Я бы рекомендовал Cool Edit (http://www.syntrillium.com) или SpectraLAB (http://www.soundtechnology.com). Далее все просто:

1. Берете какой-нибудь музыкальный компакт-диск, в качестве которого вы не сомневаетесь.

2. Копируете с него любую песню к себе на винчестер. Для этого можно использовать специализированную программу, например WinDAC32 (http://www.windac.de/).

3. Кодируете полученный wav-файл в .mp3.

4. Открываете этот файл, например, в Cool Edit (при наличии кодека он по умолчанию преобразуется в линейный формат), входите в Spectrum Analysis и смотрите.

5. Сравниваете полученный результат с другими аналогичными картинками, полученными для различных композиций и битрейтов. Различия обычно находятся в области высоких частот, и насколько они заметны, зависит от настроек анализатора.

6. Собираете полученные результаты в кучу и делаете сенсационные выводы насчет качества .mp3 (чем повергаете в шок пресловутую группу экспертов :-)).

Именно так я и делал.

Что ж, позвольте на этом завершить сей рассказ о тонкостях формата .mp3. Надеюсь, что он (рассказ) хоть какой-то своей частью будет вам полезен.