Как следует из названия, эта статья посвящена описанию
некоторых тонкостей, которые возникают при использовании
стандарта сжатия аудиоданных MPEG I/II Layer 3 (mp3).
Здесь нет описания какой-то законченной работы вроде
тестирования кодеров или проигрывателей mp3, тут я
попытался структурировать и изложить свои знания,
отразить свой опыт в работе с вышеупомянутым стандартом
сжатия.
Способ подачи материала предполагает наличие у читателя
базовых знаний по mp3, которые, впрочем, вы можете
почерпнуть в любой момент из источников, указанных
в разделе ссылок.
Стратегические вопросы
В этом разделе я рассмотрю вопросы общего плана,
не касающиеся непосредственно процесса сжатия.
Имеет ли смысл вообще использовать сжатие с потерями?
Я уверен, что не имеет смысла делать архивы звуковых
данных (библиотеки сэмплов, фонотеки и т.п.) в mp3
(это касается и MiniDisk, так как там тоже используется
кодирование с потерями, и других форматов). После
этого звук нельзя обработать: при использовании многих
способов цифровой обработки появляются слышимые искажения,
из-за этого нельзя хранить, скажем, сэмплы в mp3.
Нельзя никак восстановить утраченные на этапе кодирования
части, улучшить звук. То есть это дорога в одну сторону.
Для себя я выбрал хранение фонотеки в wav-файлах.
Можно также использовать CD-DA: больше совместимость,
но меньше надежность, что меня не устраивает. Еще
одна альтернатива - сжатие без потерь, например обычное
архивирование (ZIP, RAR) или специальные программы
типа RKA, Monkey's Audio. Этот способ порождает
множество проблем при работе с этими файлами: wav
играют подавляющее большинство проигрывателей, а вот
экзотику типа RKA... Я знаю о существовании плагина
для RKA под WinAmp, но на WinAmp свет клином не сошелся.
В любом случае, один только WinAmp - это не есть совместимость
в моем представлении. А другие программы-проигрыватели?
А аппаратные плееры? А mp3-CD плееры? Не знаю, как
для вас, а для меня совместимость, именно в смысле,
указанном выше, очень важна. Я не согласен использовать
только одну пару кодер/проигрыватель - это существенно
ограничивает мою свободу. Например, для того, чтобы
поделиться каким-то файлом со своими знакомыми (оставим
пока в стороне вопросы авторских прав) нужно еще убеждать
их в необходимости использовать новый проигрыватель.
Хранение wav-файлов позволит мне в случае изобретения
некоего принципиально нового и лучшего алгоритма,
условно назовем его mp6, быстренько перегнать все
свои записи в новый, более качественный формат из
точных копий оригиналов, в то время как самих оригиналов
может уже и не быть под рукой... Вспомните, аналогичная
ситуация возникла, когда начал свое победное шествие
формат видеосжатия MPEG4, в этом случае архаизмом
считался MPEG 1/2.
Еще аргумент: вы знаете, как аудио-диск, перегнанный
в mp3, записать обратно на аудио компакт диск, да
так, чтобы между треками не было ни пауз лишних, ни
щелчков? Не знаете? Почитайте, скажем, http://www.r3mix.net/. В общем, та еще
морока... (Если вы хотите сказать - "а я вот делал
- все ОК!" - конкретизирую задачу: музыка без пауз
переходит из трека в трек, как на концертах, или у
Enigma. Паузой считается не только промежуток в 1-2
секунды, а и маленькие отрезки тишины в единицы-десятки
миллисекунд. Знаю, теоретически и в этом случаем можно
все сделать идеально слитно, но объемы затрат времени
и труда в случаях исходного материала в wav и mp3
просто несоизмеримы.)
Какой формат сжатия с потерями лучше использовать:
mp3, LQT, WMA, MP+ или какой-то ещё?
До сих пор я для себя использую простой принцип:
никаких экспериментов с форматами. Пока ни одна из
альтернатив mp3 даже близко не лежала по качеству
и совместимости одновременно. Есть такие, которые
имеют приемлемое качество, ну а совместимость? (Про
совместимость еще много сказано в ответе на предыдущий
вопрос.)
Я знаю, что есть такие форматы, которые уже сегодня
обеспечивают качество, сравнимое или даже лучшее,
чем у mp3, например LQT AAC, который часто называют
mp4. Правда, у него битрейт ограничен до 192 кб/с,
за что его не любят ценители mp3 @ 256/320 kbps. И
запросы к аппаратуре у него куда как серьезнее, в
сравнении с mp3. Последнее, правда, в свете бурного
развития вычислительной техники является проблемой
временной. Тем не менее, думаю, вы согласитесь, что
с совместимостью mp3 пока никому не сравниться.
Мое мнение: вытеснять mp3 будут долго. Вы посмотрите
на CD-DA, которому пророчили скорую смерть по появлении
mp3, MiniDisk и прочее. Вот что значит - объем уже
накопленной информации в старом формате.
У mp3 есть своя область применения. Ведь неудобно
каждый час вставлять новый музыкальный диск в дисковод,
когда объем винчестера составляет десятки гигабайт.
Куда как удобнее записать музыку в mp3 на винчестер
или CD-ROM и слушать оттуда. Тут же можно вспомнить
о плеерах mp3, mp3-CD, автомагнитолах с поддержкой
mp3. Вспомните про выкачивание mp3 из Интернета. Я,
например, держу дома около 5 ГБ mp3, в основном 128
кб/с, не потому, что я такой глупый, а потому, что
90% из этих файлов делал не я. Пока эти записи не
появились в моей фонотеке в wav - пусть лежат.
Из каких соображений нужно исходить при выборе параметров
сжатия?
По моему мнению, можно выделить два режима сжатия:
"сохранение приемлемого уровня качества при достижении
максимального сжатия" и "полное сохранение качества
исходного материала при хоть каком-то сжатии". Правда,
стоит заметить, что и тот, и другой пороговые битрейты
(и для того, и для другого режимов) сугубо индивидуальны.
Так, для меня они составляют 128 и 256 кб/с соответственно.
Я считаю, что неразумно беспокоить себя вопросами
в духе "а какого битрейта достаточно, чтобы никто
не услышал разницу по сравнению с CD?" Делайте для
себя. Особенно если есть склад точных копий, из которых
при необходимости можно сделать mp3 с любыми необходимыми
параметрами, или даже гипотетические mp6.
Дело в том, что психоакустическая модель, основная
часть сжатия mp3, разрабатывается под среднестатистического
человека с его среднестатистическими ушами. Достаточно
часто можно встретить отклонения как в одну сторону
("А зачем весь сыр-бор городить? Для меня качество
mp3@128 kbps, сделанного Xing'ом, ничуть не хуже Audio
CD. Я даже на отличной аппаратуре не слышу разницы".),
так и в другую ("А вот моя жена/друг/кум/сват/брат
запросто отличает mp3@320 kbps от Audio CD. Я даже
слепое тестирование провел с записью сэмплов на CD-R,
набором из десятков композиций самых разных стилей
- оказалось вероятность ошибки практически 0%"). В
первом случае вам не нужно тратить много денег на
качественную аудиотехнику, а во втором можете порадоваться
за ее/его тонкий слух. Так бывает. Чувствительность
слухового аппарата индивидуальна.
Таким образом, самым простым и надежным вариантом
я считаю делать все для себя. Один раз придется поэкспериментировать,
определить, каких параметров вам достаточно, а потом
просто механически их придерживаться.
Какой проигрыватель mp3 лучше?
Я сам не занимался сравнением и прослушиванием, тем
не менее, попробую ответить, исходя из услышанного
от других. Среди программных проигрывателей лучшими
традиционно считаются все, сделанные на коде Fraunhofer:
некоторые версии WinAmp'а, WinPlay, AudioActive, Microsoft
Windows Media Player,... (Код от Фраунгофера используется
в WinAmp версий 1.6, 2.20, 2.21, 2.22, 2.666, 2.7,
остальные версии используют собственный декодер от
NullSoft, называемый Nitrane). Также заслуживает упоминания
X-Audio и все, что сделано на этом коде (C4, CoolPlay).
Еще есть множество проигрывателей, сделанных на коде
ISO, среди самых удачных можно выделить MPG123 и мой
любимый Apollo (он хоть и не столь идеален при воспроизведении,
зато очень удобен). Все, что сделано на коде Xing
(Xing player, FreeAmp) считается самым худшим вариантом
- эти проигрыватели задирают высокие частоты, что
сделано, по-видимому, для компенсации завала высоких
всеми кодерами Xing.
В области аппаратных проигрывателей mp3 я знаю совсем
мало, но в любом случае, различная аппаратура использует,
как правило, те же алгоритмы, что и программные проигрыватели.
Я читал об аппаратной реализации алгоритма Fraunhofer
в какой-то микросхеме. Некоторые проигрыватели даже
содержат flash-микросхемы для того, чтобы иметь возможность
обновлять декодер mp3. В любом случае, советую обращать
внимание как минимум на то, на основе какого кода
построен алгоритм декодирования. Считается, что все
на основе Fraunhofer - хорошо, ISO и X-Audio - зависит
от реализации, Xing - однозначно плохо.
Лейм - это ISO код или нет?
Изначально лейм делался как патч (исправление или
замена нескольких файлов) для оригинального кода ISO,
при этом упор делался на исправление ошибок и совершенствование
алгоритма (например, использование коротких блоков).
Но уже где-то с полгода назад на версии около 3.6
было замечено, что весь код ISO изменен, и лейм свободно
компилируется без оригинальных исходников ISO - все,
что нужно для компиляции вошло в патч. Так что на
сегодня лейм можно называть ISO кодером только в историческом
плане, с точки зрения алгоритма там столько изменено,
что проще считать лейм самостоятельной разработкой.
Причем разработкой достаточно качественной и перспективной
- сейчас лейм уверенно конкурирует с кодерами на основе
кода от Fraunhofer как по скорости, так и по качеству.
Что лучше, LAME или Fraunhofer-based кодеры?
Ну... Одним нравится арбуз, другим - свиной хрящик.
Единственное, что могу сказать наверняка, что все
ISO-based кодеры, а тем более на базе Xing, сегодня
использовать смысла не имеет. Лейм впитал в себя все
лучшее от ISO и двинулся догонять Fraunhofer, быстро
двинулся. Кто-то считает, что уже догнал. Кто-то считает,
что лучше не рисковать, а использовать старый добрый
Fraunhofer. За ним опыт такой серьезной организации!
Ведь у лейма версии появляются каждый день, постоянно
в старых версиях ошибки находят. Да, все так. У Фраунгофера
тоже находят, но не исправляют годами - разве это
лучше? К тому же координатор проекта лейм принял решение
с какой-то регулярностью делать stable версии, то
есть такие, в которые не вносится никаких новшеств
(которые могут содержать ошибки), а только исправляются
старые огрехи. Текущая stable - 3.70. Ради большей
уверенности в качестве получаемых мп3, имеет смысл
использовать именно её. Хотя, мне очень не советовали
это делать. Мол, в 3.8х добавили новые возможности,
в частности ABR, и улучшили качество.. Но я обычно
боюсь непроверенных временем решений.
Замечу, однако, что последняя бета версия - 3.87
- продержалась уже 2,5 месяца. Это наталкивает на
мысли о том, что в ней за такой срок не замечено сколько
нибудь серьезных огрехов. Для меня этих аргументов
достаточно, чтобы сделать свой выбор в пользу 3.87.
По крайней мере, VBR в лейме - точно лучше Fraunhofer'а,
хотя и тут он далек от идеала.
Подготовка материала перед сжатием
В этот раздел вошли советы по подготовке аудиоматериала
в цифровом виде к процессу сжатия. Как вы получите
этот материал - в этой статье я рассматривать не буду.
Надо ли понижать уровень файла?
Да, если пиковый уровень исходного сигнала около
0 дБ, иначе при кодировании имеете шанс получить искажения
сигнала. Из-за того, что будет использовано сжатие
с потерями, исходный сигнал будет восстановлен не
точно, а приблизительно. Таким образом, на участке
с пиковой амплитудой вы имеете шанс получить превышение
пикового уровня сигнала, что и повлечет за собой искажения.
Количество искажений будет зависеть от кодера и битрейта
(чем выше битрейт, тем меньше искажений). Естественно,
чтобы быть гарантированно защищенным, уровень исходного
сигнала лучше занизить перед сжатием.
На сколько понижать? Вопрос спорный. Нужно также
считаться с тем, что при понижении уровня и передискретизации
также будут возникать искажения исходного сигнала.
Естественно, что куда как меньше искажений передискретизации
будет внесено при понижении в 2 раза, но это достаточно
большое понижение громкости. Другие предпочитают целые
числа децибелам, указывая, скажем, -3 дБ.
Поскольку наличие искажений от превышения пикового
уровня сигнала зависит от битрейта и кодера, приведу
здесь наблюдения одного из моих знакомых: "при 320
+ лейм нормально - 98%, а при 128 - 85-88% от максимального
уровня (100% = 0dB) ." Я сам с такими файлами не экспериментировал.
Надо ли использовать нормализацию?
Практически всегда - нет. Есть такой принцип: невмешательство
в работу исполнителя и звукорежисера. Если что-то
звучит тише - оно так и должно звучать по задумке.
Это все равно, что вы читаете книжку с главной героиней-брюнеткой,
но представляете ее себе блондинкой, потому что вам
так больше нравится. Это будет уже не та книжка (или
песня, соответственно), а ваша вольная обработка.
Тем более неразумно в свете предыдущего вопроса выглядит
нормализация под очень высокий уровень (часто 98%
или даже 100%).
Таким образом, нормализация при работе с материалом,
полученным с аудио компакт-дисков практически никогда
неприменима, а при работе с другими записями - только
в случае очень уж низкого уровня сигнала и только
для альбома целиком (а не для каждой песни). Ведь,
часто, отдельные, более лирические композиции, выделяются
пониженной громкостью.
Тут также справедливы оговорки, сделанные в предыдущем
вопросе, по поводу увеличения уровня в целое число
раз, если такая возможность есть - ведь нормализация
- это суть передискретизация с новым уровнем сигнала.
Тонкости процесса сжатия
В этом разделе отражены тонкости собственно процесса
сжатия, как то выбор параметров кодера, битрейта и
прочего.
Надо ли в Лейме выключать психоакустику (-f)?
Думаю, нет. Обратите внимание на то, что лейм очень
быстро развивается. Год назад я тестировал версию
3.24. Сейчас актуальная версия 3.87. В той старой
версии, я действительно слышал разницу между файлом,
сделанным со включенной психоакустикой и с выключенной.
Последний вариант мне нравился больше. Но идеологически
это неверно, с точки зрения теории кодирования mp3.
Психоакустика составляет неотъемлемую и достаточно
важную часть алгоритма сжатия. Так что это была скорее
ошибка тех версий лейма - плохо реализованные алгоритмы
психоакустики. Ошибку исправили. Тут же могу повторить
- кодируйте для себя. Возьмите и послушайте, сравните.
Таким образом, теоретически это неверно, отключать
полметода - психоакустику. Практически - попробуйте
проверить сами.
Какой режим кодирования стерео сигнала лучше: stereo
или joint stereo?
По-разному бывает. Если вы понимаете, в чем разница,
то сможете сами придумать пример, когда лучше одно,
а когда - другое. Следует учесть, что некоторые записи
содержат сдвиг фаз между каналами, что практически
исключает возможность использование joint stereo.
Правда, есть специальное ПО, которое находит и корректирует
такой сдвиг, однако использование еще одной программы
в процессе сжатия не делает этот самый процесс проще.
Где взять такую программу - сказано в разделе ссылок.
Отметьте, что последние версии лейма умеют автоматически
выбирать для каждого фрейма, что лучше: stereo или
joint stereo. Именно такой режим я и использую.
Использовать ли переменный битрейт (VBR)?
Проблема в том, что под VBR (Variable BitRate - переменный
битрейт) нужна своя психоакустическая модель, которая
и будет управлять изменением битрейта. Раньше кодеры
использовали CBR (Constant BitRate - постоянный битрейт)
и пользовались принципом "обеспечить максимальное
качество, упаковывая данные в поток заранее заданной
ширины". Переменный битрейт требует совершенно другого
подхода - "обеспечить заданный уровень качества, использую
поток минимальной ширины", поэтому алгоритмы сжатия
для VBR нужно создавать заново, практически с нуля.
Из-за этого пока достаточно развитым прообразом такого
алгоритма обладает только лейм, как самый быстро развивающийся
кодер. Ни Ксинг, ни Фраунгофер качественного результата
в области VBR не добились - их алгоритмы варьируют
средний битрейт в пределах 10-15% от основного, что
нельзя считать удовлетворительным результатом. Все
это, очевидно, есть результаты попыток адаптировать
алгоритмы CBR для использования с VBR, забывая, что
старые алгоритмы вообще не имели возможность изменения
битрейта.
Проблема также состоит в том, что до сих пор не существует
сколько-нибудь точной математической модели человеческого
слуха. Поэтому разработка психоакустических алгоритмов
ведется в основном опытным путем, методом проб и ошибок,
постоянных прослушиваний и других тестов. Поэтому
тем сложнее построить алгоритм, получающий на вход
некий "уровень качества", так как не до конца ясно,
как этот уровень качества связан с прочими параметрами
алгоритма, в частности с битрейтом. Хотя бесспорно,
что человеку, далекому от этой технологии, куда как
проще оперировать с параметром, непосредственно задающим
уровень качества сжатия, чем с некими внутренними
параметрами алгоритма.
На этом фоне вполне логичным выглядит появление компромиссного
варианта - ABR (Average BitRate - средний битрейт)
- реализованного в LAME. По сути, это тот же VBR,
но с использованием несколько доработанного старого
алгоритма кодирования CBR. В случаях, когда качество
падает ниже некоторого порога - битрейт увеличивается.
Если кодируемый сигнал достаточно прост, то битрейт
занижается, чем и обеспечивается получение в среднем
по файлу приблизительно заданного битрейта. В результате
мы получаем обычный файл с VBR потоком. В качестве
параметра мы указываем не некий абстрактный уровень
качества, а средний битрейт, который мы хотим получить
- много людей, давно работающих с mp3 CBR, найдут
такой способ более удобным просто в силу своих привычек.
Тут же имеет смысл упомянуть о том, что некоторые
проигрыватели не умеют корректно воспроизводить VBR.
Например, очень качественный проигрыватель NAD дает
ужасные искажения при воспроизведении таких файлов;
просто когда этот проигрыватель был создан, ни один
из кодеров не использовал VBR. Аналогичную проблему
в себе таят некоторые из аппаратных проигрывателей
mp3.
Тем не менее, понятно, что принцип, заложенный в
основу VBR, куда удобнее использовать на практике.
Таким образом, за VBR - будущее. Осталось только дождаться
достойной программной реализации алгоритмов, создающих
VBR файлы.
На сегодня вопрос практического использования VBR
я считаю следствием личных пристрастий и экспериментов.
Есть ли для LAME оконные оболочки?
Есть, самые популярные - LameBatch
и RazorLame, первую я сам использовал
раньше, пока не увидел вторую :)
Чем и как ты сам кодируешь музыку?
Леймом, 3.87. На 128 CBR, психоакустика включена. Для
того, чтобы показать друзьям-товарищам - хватает. У
самого уши не вянут, да и вслушиваться, дабы найти отличия
от оригинала, не хочу. То есть это режим "сохранения
приемлемого уровня качества при достижении максимального
сжатия". Опять же, весь материал, достойный хранения
в моей фонотеке, записывается в формате wav.
|