На чем основано сжатие звука в алгоритме mp3
Формат сжатия звука MP3
Методы сжатия звуковой информации
Сжатие звуковых данных
Сжатие аудиоданных представляет собой процесс уменьшения скорости цифрового потока за счет сокращения статистической и психоакустической избыточности цифрового звукового сигнала.
Сжатие без потерь
Сложность сжатия звука без потерь заключается в том, что записи звука являются чрезвычайно сложными в своей структуре. Одним из методов сжатия является поиск образцов и их повторений, однако этот метод не эффективен для более хаотических данных, которыми являются, например оцифрованный звук или фотографии. Интересно, что если сгенерированная компьютером графика значительно легче поддается сжатию без потерь, то синтезированный звук в этом отношении не имеет преимуществ. Это объясняется тем, что даже сгенерированный компьютером звук обычно имеет очень сложную форму, которая представляет сложную задачу для изобретения алгоритма.
Другая сложность заключается в том, что звучание обычно меняется очень быстро и это также является причиной того, что упорядоченные последовательности байтов появляются очень редко.
Сжатие с потерями
Сжатие с потерями имеет чрезвычайно широкое применение. Кроме компьютерных программ, сжатие с потерями используется в потоковом аудио в DVD, цифровом телевидении и радио и потоковому медиа в интернете.
Наиболее распространенными форматами сжатия с потерями являются: AAC, ADPCM, ATRAC, Dolby AC-3, MP2, MP3, Musepack Ogg Vorbis, WMA и другие.
Формат сжатия звука MP3
MP3 (более точно, англ. MPEG-1/2/2.5 Layer 3 (но не MPEG-3) — третий формат кодирования звуковой дорожки MPEG) — лицензируемый формат файла для хранения аудио-информации.
На данный момент MP3 является самым известным и популярным из распространённых форматов цифрового кодирования звуковой информации с потерями. Он широко используется в файлообменных сетях для оценочной передачи музыкальных произведений. Формат может проигрываться практически в любой популярной операционной системе, на практически любом портативном аудио-плеере, а также поддерживается всеми современными моделями музыкальных центров и DVD-плееров.
В формате MP3 используется алгоритм сжатия с потерями, разработанный для существенного уменьшения размера данных, необходимых для воспроизведения записи и обеспечения качества воспроизведения очень близкого к оригинальному (по мнению большинства слушателей), хотя меломаны говорят об ощутимом различии. При создании MP3 со средним битрейтом 128 кбит/с в результате получается файл, размер которого примерно равен 1/10 от оригинального файла с аудио CD. MP3 файлы могут создаваться с высоким или низким битрейтом, который влияет на качество файла-результата.
Принцип сжатия заключается в снижении точности некоторых частей звукового потока, что практически неразличимо для слуха большинства людей. Данный метод называют кодированием восприятия.[1] При этом на первом этапе строится диаграмма звука в виде последовательности коротких промежутков времени, затем на ней удаляется информация не различимая человеческим ухом, а оставшаяся информация сохраняется в компактном виде. Данный подход похож на метод сжатия, используемый при сжатии картинок в формат JPEG.
MP3 разработан рабочей группой института Фраунгофера (нем. Fraunhofer-Institut f?r Integrierte Schaltungen) под руководством Карлхайнца Бранденбурга и университета Эрланген-Нюрнберг в сотрудничестве с AT&T Bell Labs и Thomson (Джонсон, Штолл, Деери и др.).
Основой разработки MP3 послужил экспериментальный кодек ASPEC (Adaptive Spectral Perceptual Entropy Coding). Первым кодировщиком в формат MP3 стала программа L3Enc, выпущенная летом 1994 года. Спустя один год появился первый программный MP3-плеер — Winplay3.
При разработке алгоритма тесты проводились на вполне конкретных популярных композициях. Основной стала песня Сюзанны Веги «Tom’s Diner». Отсюда возникла шутка, что «MP3 был создан исключительно ради комфортного прослушивания любимой песни Бранденбурга», а Вегу стали называть «мамой MP3».
В этом формате звуки кодируются частотным образом (без дискретных партий); есть поддержка стерео, причём в двух форматах (подробности — ниже). MP3 является форматом сжатия с потерями, то есть часть звуковой информации, которую (согласно психоакустической модели) ухо человека воспринять не может или воспринимается не всеми людьми, из записи удаляется безвозвратно. Степень сжатия можно варьировать, в том числе в пределах одного файла. Интервал возможных значений битрейта составляет 8 — 320 кбит/c. Для сравнения, поток данных с обычного компакт-диска формата Audio-CD равен 1411,2 кбит/c при частоте дискретизации 44100 Гц.
MP3 и «качество Audio-CD»
В прошлом было распространено мнение, что запись с битрейтом 128 кбит/c подходит для музыкальных произведений, предназначенных для прослушивания большинством людей, обеспечивая качество звучания Audio-CD. В действительности всё намного сложнее. Во-первых, качество полученного MP3 зависит не только от битрейта, но и от кодирующей программы (кодека) (стандарт не устанавливает алгоритм кодирования, только описывает способ представления). Во-вторых, помимо превалирующего режима CBR (Constant Bitrate — постоянный битрейт) (в котором, проще говоря, каждая секунда аудио кодируется одинаковым числом бит) существуют режимы ABR (Average Bitrate — усредненный битрейт) и VBR (Variable Bitrate — переменный битрейт). В-третьих, граница 128 кбит/c является условной, так как она была «изобретена» в эпоху становления формата, когда качество воспроизведения звуковых плат и компьютерных колонок как правило было ниже, чем в настоящее время.
Дата добавления: 2017-01-29 ; просмотров: 8003 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
Как работает сжатие аудио
Сегодня количество потребляемой нами информации в сети выросло в тысячи раз в сравнении с началом 2000-х. И неудивительно, ведь раньше, помимо намного менее распространенного интернет-покрытия, привычные нам сайты и сервисы выглядели совсем по другому.
Мы ежедневно читаем статьи и новости о том, что та или иная компания разработала новый стандарт соединения, превосходящий нынешние аналоги по скорости передачи данных. За уже практически два десятилетия провайдеры и производители многих гаджетов сделали огромный шаг в направлении к скоростному доступу в Интернет. Но не одними лишь скоростями наш мгновенный доступ к сайтам един.
Огромную роль в экономии нашего времени сыграло развитие алгоритмов сжатия изображений, аудио и видеофайлов. Гуляя по просторам сети, зачастую мы даже не задумываемся над тем, как и что устроено, сколько сил было приложено к разработке той или иной технологии. В новой серии статей мы рассмотрим методы сжатия таких популярных форматов, как MP3 и JPEG, а также базово рассмотрим процесс кодирования видео.
Работа алгоритма
Первым в новой серии статей станет самый популярный формат сжатия аудио–файлов *.mp3. Появился он в 1993 году, благодаря рабочей группе института Фраунгофера, а стандартизирован объединением MPEG. По данным Википедии, объединение было образовано международной организацией ISO для разработки норм в сжатии аудио и видеофайлов. Ими были установлены также следующие стандарты:
Все таки давайте вернемся обратно к mp3. Основной задачей формата было и является уменьшение размера файлов за счет удаления определенных участков звукового спектра, которые не ощущаются на непрофессиональной аудиотехнике, в соответствии с психоакустической моделью звуковосприятия человека.
На этом этапе при помощи алгоритма преобразования Фурье, звуковая волна раскладывается на спектры разной частоты. Все те малоразличимые нашим слухом частоты просто удаляются. В основном это весь спектр звука выше 16 000 Гц. По такому принципу, кстати, работают и сервисы определения музыки, типа SoundHound и Shazam. Встроенный в их работу алгоритм разделяет слышимую звуковую волну на несколько, выделяет ритмику, основные ноты и сравнивает их со своей базой данных.
Но тем не менее, общая картина звучания, например, mp3-файла в битрейте 320 кбит/с мало чем отличается от несжатого файла, при этом в размере может составлять 1/10 от оригинального.
Уже на этом этапе размер файла можно значительно уменьшить, но самый больший процент сжатия происходит на следующих этапах маскировки. Работа первого из них заключается в удалении кратных звуковых частот на громких моментах в песне, то есть если звучит громкий барабан, то все остальные сигналы исходящие от включенных в аранжировку инструментов, можно просто–напросто убрать, и никто этого не заметит.
А в некоторых случаях, в соответствии с той же психоакустической моделью, можно удалять доли перед, и после звучания громких звуков, так как в этот период у всех людей наступает кратковременная (буквально на несколько сотых секунды) глухота.
Потом идет распределение звуков по каналам. Это происходит не без потерь в детализации, с помощью специальных формул, которые вы можете посмотреть на картинке (упрощено). Разница в звучании каждого из каналов сводится почти к нулю с целью сэкономить еще одну сотню-другую байт.
В конце каждый из сжатых фреймов аудиозаписи закодированные одинаковыми символами (например нулями), сокращаются до минимальных размеров при помощи метода кода Хаффмана. В процессе его работы дополнительная информация не теряется, просто к каждому из значений фреймов присваивается какой-то код, в зависимости от того, сколько раз то или иное число в нем встречается. Далее все оставшиеся куски нашей аудиозаписи склеиваются и на выходе образуют привычный нам аудио–файл.
Спасибо, что дочитали до конца теперь мы разобрались с тем, как устроен один из самых распространенных аудиоформатов. B следующей статье мы рассмотрим процесс сжатия видео.
Форматы сжатия аудиоданных с потерями
Особенности сжатия цифрового звука
Сегодня большинство из нас имеет дело преимущественно с цифровыми системами воспроизведения звука. В этих системах звук хранится в цифровом виде – то есть – в виде последовательностей нулей и единиц, которые после раскодирования их с помощью специального программного и аппаратного обеспечения, превращаются в звук. В мире цифровой музыки идет борьба, с одной стороны, за качество воспроизведения, а с другой – за объем хранимых данных. Это два противоборствующих понятия – чем выше качество звука, тем, обычно, больше места требуется для его хранения. Для того, чтобы сохранить цифровой звук с как можно более высоким качеством в как можно меньшем объеме информации, были разработаны алгоритмы сжатия звука.
Существует два различных подхода к сжатию аудиоинформации. Первый называется сжатием без потерь ( lossless ) – в ходе такого сжатия звук, записанный в цифровом виде, сохраняется полностью, без потерь. Другой подход к сжатию аудиоданных называется сжатием с потерями ( lossy ) – звук особым образом обрабатывается, из него удаляется все, по заключению алгоритма сжатия, лишнее, а то, что остается, сжимается. Такое сжатие, в сравнении со сжатием без потерь, позволяет добиться гораздо более высоких уровней сжатия, то есть – уменьшить размеры звуковых файлов, в то время как качество звучания, если не стараться сжать файл слишком сильно, страдает не особенно заметно.
Музыкальные записи можно сжимать и обычными архиваторами, однако они не могут работать в режиме реального времени, к тому же, уровень сжатия несжатых музыкальных записей редко когда превышает 50%. Другой, используемый на практике, способ сжатия аудиоинформации заключается в применении специальных программ – так называемых кодеков, с помощью которых можно сжимать и «на лету» заниматься раскодированием и воспроизведением сжатых композиций.
Перечень программ
Программы и форматы | MP3 | OGG | WMA | AAC | VQF | FLAC | WAV PACK | APE | ALAC |
---|---|---|---|---|---|---|---|---|---|
Lame | + | ||||||||
Winlame | + | + | + | ||||||
RazorLame | + | ||||||||
Windows Media Encoder | + | ||||||||
aoTuV | + | ||||||||
iTunes | + | ||||||||
ImToo WMA MP3 Converter* | + | + | |||||||
MP4 Converter** | |||||||||
ImToo Audio Encoder | + | + | + | + | + | + | + | ||
Flac Frontend | + | ||||||||
Cue Splitter *** | |||||||||
WavPack Frontend | + | ||||||||
Monkey’s Audio | + | ||||||||
dBpoweramp | + | + | + | + | + | + | + | + |
*** Программа для разбиения больших аудиофайлов в соответствии с индексными картами.
Сжатие с потерями
Возможности MP3
Файлы, сжатые в MP3 практически без потери первоначального качества, занимают в 6-10 раз меньше места, чем оригинал. То есть из огромного 50-мегабайтного файла получается вполне пристойный 5-мегабайтный. Причем, если сжать такой файл с помощью обычных алгоритмов сжатия (RAR или ZIP, например), которые используются для простых файлов, мы получим, в лучшем случае, 50% выигрыш (то есть файл порядка 25 Мб). В чем же дело? Почему же MP3 способен так сильно сжимать файлы, практически не ухудшая их качества. Ответ на вопрос здесь кроется в слове «практически». Ведь обычное сжатие не изменяет качества композиций, оно полностью сохраняет его, а MP3 проводит некие манипуляции с файлом, которые могут сказаться на его качестве.
Как работает MP3
Адаптивное кодирование, основанное на психоакустических моделях, применяет различные знания об особенностях восприятия звуков человеком. Так, если одновременно воспроизводятся два звуковых сигнала, один из которых слабее, то более слабый сигнал заглушается (или, как говорят, маскируется) более сильным сигналом. В результате получается, что человек слышит более сильный звук, а более слабый – нет. В таком случае информация о более слабом звуке просто отбрасывается. Точно так же происходит, если сразу после громкого звука идет тихий – громкий звук вызывает временное понижение слуховой чувствительности, в результате – тихий звук оказывается не слышным – информацию о нем так же можно убрать. Так же при обработке музыкальных композиций учитывается то, что большинство людей не способны различить сигналы, мощность которых находится ниже определенного уровня для различных частотных диапазонов.
Битрейт
Однако, нельзя однозначно утверждать, что любая музыкальная композиция, скажем, записанная на битрейте 192 Кбит/с лучше, чем композиция, записанная на 128 Кбит/с. Многое зависит от самой музыки, от кодировщика, от исходного качества записи, а так же от того, какой тип битрейта использован при записи композиции.
Так, наиболее простой тип битрейта – это постоянный битрейт – или CBR ( Constant Bit Rate ). Этот битрейт не меняется в течение кодирования всей композиции, то есть каждая секунда звучания, независимо от ее содержимого, кодируется одинаковым количеством бит.
В ходе кодирования исходный аудиосигнал разбивается на участки, которые называются фреймами. Каждый фрейм кодируются отдельно, а при декодировании звуковой сигнал реконструируется из декодированных фреймов. Особый интерес при кодировании MP3 представляет способ обработки стереосигнала – давайте остановимся на этом вопросе подробнее.
Рекомендации по использованию стандарта сжатия mp3
От редактора
Мы публикуем второе издание этой статьи, дополненное и переработанное. Многим нашим читателям изложенный здесь материал покажется слишком очевидным, другим — весьма спорным. Однако, для людей, только что открывших для себя существование магического мира MP3, данная статья должна принести неоценимую пользу и ответить на большинство возникших вопросов.
От автора
Как следует из названия, статья посвящена описанию некоторых тонкостей, которые возникают при использовании стандарта сжатия аудиоданных MPEG I/II Layer 3 (mp3). Данная работа не претендует на статус законченного исследования, включающего в себя тестирование кодеров или проигрывателей mp3. Это лишь попытка автора структурировать свои знания, а также отразить свой опыт знакомства с вышеупомянутым стандартом.
Способ подачи материала предполагает наличие у читателя базовых знаний по mp3, которые, впрочем, вы можете почерпнуть в любой момент из источников, указанных в разделе «Список ссылок».
Стратегические вопросы
Имеет ли смысл использовать сжатие с потерями вообще?
Давайте попытаемся обозначить границы применения mp3. Везде, где качество звука не должно в точности соответствовать оригиналу и где в будущем наверняка не потребуется серьезная обработка хранимых данных, использование mp3 (или другого формата сжатия с потерями) вполне допустимо. Не всякому захочется каждый час вставлять в CD привод новый музыкальный диск, если объем винчестера составляет десятки гигабайт. Куда как проще записать музыку в mp3 на винчестер или CD-ROM и слушать оттуда. Или воспользоваться портативным mp3 плеером, mp3-CD плеером, автомагнитолой с поддержкой mp3. А можно просто скачать mp3 из интернета на выбор.
В этом и следующем подразделах будут описаны случаи, когда применение сжатия с потерями недопустимо, а также предпринята попытка разобраться — почему?
Не имеет смысла делать архивы звуковых данных для их дальнейшей обработки (библиотеки сэмплов, фонотеки и т.п.) в mp3. Это касается и MiniDisk (там тоже используется сжатие с потерями), и других форматов: многие виды цифровой обработки влекут за собой слышимые искажения. Данное правило не зависит от используемого битрейта. Говоря о дальнейшей обработке звука я имею в виду нечто более серьезное, чем просто микширование или fade in/out, например flange, distortion, dynamic compression, reverberation, фильтрация шумов и даже использование эквалайзера… Скажем, в mp3 нельзя хранить сэмплы (для их хранения используют специальные форматы сжатия без потерь, например sfArk). Так как в случае кодирования с потерями нельзя восстановить утраченные на этапе кодирования данные, то в mp3 желательно сохранять только окончательные варианты звукозаписей.
Еще один аргумент: вы знаете как аудиодиск, перегнанный в mp3, записать обратно на аудиокомпакт-диск так, чтобы между треками не было ни пауз лишних, ни щелчков? Не знаете? Почитайте, скажем, www.r3mix.net. Морока та еще… Если вы хотите сказать: «А я вот делал — все ОК!» — конкретизируем задачу: музыка должна переходить без пауз из трека в трек, причем паузой считается не только промежуток в 1-2 секунды, но и маленькие отрезки тишины в единицы-десятки миллисекунд. Теоретически и в этом случае можно все сделать идеально слитно, но может так оказаться, что «овчинка не будет стоить выделки».
Какие существуют способы хранения звука без потерь?
Я храню фонотеку в wav-файлах (в PCM формате). Можно также использовать CD-DA; для него характерны большая совместимость, но меньшая точность считывания при проигрывании. Есть и другие варианты — обычное архивирование (ZIP, RAR) или специальные программы типа WavPack, Monkey’s Audio, RK Audio, FLAC, LPAC Archiver, Shorten. Однако работа с файлами, сжатыми подобным образом, чревата неприятными сюрпризами: wav (PCM) играют подавляющее большинство проигрывателей, а вот экзотику типа RKA… Известно о существовании плагина для RKA под WinAmp, но на WinAmp свет клином не сошелся: есть же люди, которые им не пользуются. Таким образом, один только WinAmp — это еще не совместимость (в широком смысле). А другие программы-проигрыватели? А аппаратные плееры? А mp3-CD плееры? Не знаю, как для вас, а для меня совместимость в указанном выше смысле очень важна. А использование только одной пары кодер/проигрыватель существенно ограничивает свободу. Например, для того чтобы дать послушать какой-то файл своим друзьям, нужно еще убеждать их в необходимости использовать новый проигрыватель.
Из каких соображений нужно исходить при выборе параметров сжатия?
По моему мнению, можно выделить два основных режима сжатия: «сохранение приемлемого уровня качества при достижении максимального сжатия» (например, для публикации в Сети) и «полное субъективное сохранение качества исходного материала при не самом большом сжатии» (для хранения и регулярного прослушивания). Стоит заметить, что пороговые битрейты для того и другого режимов индивидуальны. Для меня они составляют 128 и 256 кб/с соответственно. Безусловно, существует множество промежуточных вариантов: есть портативный плеер mp3 с плохонькими наушниками, которому достаточно 160 кб/с; в машине установлена магнитола с поддержкой mp3 и акустикой получше — тут потребуется, скажем, 192 кб/с. Таким образом, выбирая параметры сжатия, нужно прежде всего определить те задачи, для которых создаются mp3 файлы, и уже исходя из этого решить, какое соотношение между качеством звука и размером файла вас устроит. Следует также учитывать, что понятие качества звука у разных людей может сильно отличаться.
С точки зрения здравого смысла, не стоит беспокоить себя вопросами: «Какого же битрейта достаточно, чтобы никто не услышал разницу с CD-DA?» Ведь всё дело в том, что психоакустическая модель алгоритмов mp3 разрабатывалась под среднестатистического человека с его среднестатистическими ушами. Поэтому оценочные суждения по затронутому вопросу могут быть диаметрально противоположными. Для кого-то качество mp3@128 kbps, сделанного Xing’ом, ничуть не хуже Audio CD даже на отличной аппаратуре. Другой запросто отличает mp3@320 kbps от музыкального CD в любых слепых тестах. Отсюда просто нужно сделать правильные выводы. В первом случае человеку не нужно тратить много денег на качественную аудиотехнику, а во втором — можно только порадоваться за ее (его) тонкий слух. Таким образом, исходя из собственных потребностей Вам придется один раз поэкспериментировать, чтобы выяснить, каких параметров в дальнейшем стоит придерживаться.
Хранение wav-файлов позволит в случае изобретения некоего принципиально нового, усовершенствованного алгоритма (условно назовем его mp2000) перегнать в более качественный формат точные копии оригиналов, в то время как самих оригиналов может уже и не быть под рукой… Если помните, аналогичная ситуация возникла с началом победного шествия формата видеосжатия MPEG4.
Какой формат сжатия с потерями лучше использовать: mp3, LQT, WMA, MP+, ogg vorbis …
Следует отметить, что пока ни одна из перечисленных в заголовке альтернатив формату mp3 одновременно и по качеству, и совместимости к нему не приблизилась. Существуют форматы, которые уже сегодня обеспечивают качество сравнимое или даже лучшее, чем у mp3. Например LQT AAC, который часто называют mp4. Однако битрейт у него ограничен до 192 кб/с (за что его не любят ценители mp3 @ 256/320 kbps), и запросы к аппаратуре куда как серьезнее (последнее, правда, в век бурного развития вычислительной техники является проблемой временной). Тем не менее, думаю, вы согласитесь, что по совместимости с mp3 пока никому не сравниться.
Еще один реальный конкурент — ogg vorbis. Формат сейчас находится в стадии бета-тестирования, но, говорят, у него очень неплохие показатели и, следовательно, большой потенциал. В Сети уже обсуждают «плюсы» и «минусы» использования ogg и mp3, и сравнение часто оказывается не в пользу последнего.
Воспроизведение mp3
Этот раздел будет интересен даже тем, кто вовсе не собирается заниматься сжатием звуковых данных. Речь пойдёт о некоторых неочевидных моментах проигрывания уже готовых файлов.
Какой проигрыватель mp3 лучше?
Среди программных проигрывателей лучшими традиционно считаются сделанные на коде Fraunhofer: некоторые версии WinAmp’а, WinPlay, AudioActive, Microsoft Media Player… Код от Фраунгофера используется в WinAmp версий 1.5, 1.6, 2.13, 2.20, 2.21, 2.22, 2.666, 2.7 и более поздних; остальные версии оснащены собственным декодером от NullSoft, а копирайт Фраунгофера лишь соблюдение лицензионных требований. Также заслуживает упоминания X-Audio и все, что сделано на этом коде (C4, CoolPlay, MusicMatch Jukebox). Еще есть множество проигрывателей, использующих код ISO, самые удачные — MPG123, UltraPlayer и мой любимый Apollo (качество воспроизведения, конечно, не идеальное, но в целом он очень удобен). Существует даже плагин под WinAmp для декодирования mp3, построенный на основе MPG123. Широко известен проигрыватель NAD, базирующийся на коде ISO. Звук его считается одним из лучших, но беда в том, что он не понимает VBR. Все, что сделано на коде Xing (Xing player, FreeAmp), считается самым худшим вариантом: эти проигрыватели задирают высокие частоты, что сделано, по-видимому, для компенсации завала высоких частот кодерами Xing.
Что касается аппаратных проигрывателей mp3, то о их внутреннем устройстве по части применённых алгоритмов известно совсем мало. Но безусловно то, что алгоритмы в них используются те же, что и в программных проигрывателях. Некоторые содержат аппаратную реализацию алгоритма Fraunhofer в отдельном чипе. Другие проигрыватели имеют даже flash-микросхемы для обновления алгоритмов декодирования mp3. В любом случае нужно смотреть, на основе какого кода сделан проигрыватель. Считается, что Fraunhofer — это всегда хорошо, ISO и X-Audio — зависит от реализации, Xing — однозначно плохо.
Имеет ли смысл выбирать проигрыватель mp3 файлов в зависимости от используемого кодера?
Да. Как было написано выше, проигрыватели на базе Xing задирают высокие частоты, так как при сжатии кодеры на базе Xing эти частоты безбожно режут. В паре они компенсируют друг друга: mp3, сделанные Xing’ом, гораздо лучше звучат в исполнении Xing MPEG Player’а, чем Fraunhofer’a. Авторы LAME (см. следующий раздел) также советуют использовать именно LAME для декодирования сделанных ими mp3.
Безусловно, держать дома набор проигрывателей или даже декодеров (программ, которые могут только преобразовать mp3 в PCM wav файл) неудобно. Поэтому к таким крайним мерам я рекомендую прибегать только в особо ответственных случаях преобразования звука из mp3: запись на аудиокомпакт-диски, микширование, переупаковка другим кодером и т.п.
Как определить, каким кодером был создан mp3 файл?
Поскольку формат mp3 не предусматривает никаких подписей кодера в созданном файле, однозначно определить использовавшийся кодер очень сложно. Есть несколько примет, позволяющих с большей или меньшей степенью вероятности строить догадки: например, кодеры на основе Fraunhofer’а и ISO заполняют тишину разными значениями (акустически тишина не нарушается). Кодеры Xing первыми использовали технологию VBR. В такие файлы они вставляли свою подпись. Позже такую же подпись стал делать LAME (см. следующий раздел), чем, понятное дело, усложнил задачу определения использовавшегося кодера. Сегодня LAME ставит уже свою подпись.
Существуют программы, которые на основе известных признаков пытаются установить, каким кодером пользовались при создании mp3. Одна из таких программ — RenaTager. При ее использовании могут возникнуть проблемы: программа уже не модифицируется, в связи с чем неверно определяет новые версии кодеров. Возможно, такая функция скоро будет включена в альтернативный плагин под WinAmp для воспроизведения mp3 MAD. Я слышал еще о программе mp3GuessEnc, которая имеет интерфейс командной строки, и EncSpot, аналогичной программе с удобным оконным интерфейсом. Но со 100% вероятностью каким кодером был получен файл невозможно. Часто эти программы показывают, что один-два трека с компакт-диска сделаны другим кодером, хотя ведь диск был сжат одним кодером с одинаковыми параметрами.
К слову, стандарт id3v2 предусматривает поле, в котором указано название кодера.
Ламерам посвящается…
Чтобы читатель лучше понял, о чем пойдет речь, позволю себе привести выдержку из англо-русского словаря:
lame — [leim] — прил. 1) хромой, изувеченный; 2) неудачный, неправильный; 3) разг. простоватый, отсталый
Что такое лейм?
LAME (читается как «лейм») — это проект по созданию программного кодера mp3, основанный на принципах открытых исходных кодов. Название проекта расшифровывается как «Lame Ain’t a Mpeg Encoder», что означает «лейм — это не MPEG кодер».
Весь его код пишет группа програмистов-энтузиастов. За основу был взят свободно распространяемый в качестве приложения к стандарту MPEG демонстрационный код от ISO. Кодер динамично совершенствуется: новые версии выходят практически каждый день.
На мой взгляд, лейм заслуживает большего признания. Это отличный кодер, который имеет огромное количество настроек, позволяющих кодировать на любой вкус. Лейм поддерживает VBR, кодирование на битрейтах до 320 кб/с включительно, выбор режима кодирования стереосигнала, выбор частот среза фильтров ВЧ и НЧ и многое другое. Качество кодирования на высоких битрейтах всеми признано лучшим.
Чтобы обойти лицензионные ограничения автора стандарта MPEG Layer 3 и владельца патентов Fraunhofer IIS, лейм официально распространяют только в виде патча (исправление или замена нескольких файлов) для оригинального кода mp3 кодера от ISO. В соответствии с этими ограничениями автор или распространитель программ для работы с mp3 должен платить лицензионные отчисления вне зависимости от того, продается ли эта программа или распространяется свободно. Заявляя о нарушении своих прав, Fraunhofer добилась закрытия ряда интересных проектов в области mp3, например проигрывателя NAD, кодера mpegEnc.
Официальный сайт проекта LAME — lame.sourceforge.net.
Практически весь исходный код ISO подвергся доработке, поэтому для компиляции и сборки работающей версии лейма достаточно его исходных текстов. Учтите, на официальной странице нет готовых программ (чтобы Fraunhofer не могла придраться). О том, где их найти, вы узнаете в одном из следующих подразделов.
Лейм не имеет графической оболочки и управляется из командной строки. Где найти графические оболочки, созданные специально для этой программы, будет сказано ниже. Некоторые программы (например, для копирования музыки с аудиокомпакт-дисков) имеют возможность подключения внешнего mp3 кодера, в частности LAME. Список таких программ приведен на сайте лейма.
Какие версии лейма существуют? Какая версия новее, какая надежнее?
Самая последняя версия имеет типовое название alfa. Никто, включая авторов кодера, не может гарантировать отсутствие в ней ошибок. Поскольку обновление происходит очень часто, для однозначной идентификации версии кодера нужно указывать номер альфа-версии и дату внесения последних изменений в исходный код. Альфа-версии рекомендуется использовать только для тестирования новых возможностей лейма.
После того, как текущая версия пройдет стадию альфа-тестирования и исправления ошибок, появляется бета-версия. Иногда даже в ней встречаются серьезные огрехи (например — 3.67, если память не изменяет), и тогда выпускается новая, улучшенная бета-версия. Как правило, бета-версии работают много лучше и надежнее альфа-версий. Лично я предпочитаю подождать некоторое время (2 — 3 месяца), прежде чем начать использовать данную бета-версию.
В 1999 году координатор проекта лейм принял решение о регулярном выпуске stable (отлаженных) версий, отличающихся от текущих тем, что на протяжении длительного времени не подлежат содержательному обновлению (во избежание свежих ошибок, хотя исправление старых только приветствуется). Нынешняя stable — 3.70 (апрель 2000 года). Меня отговаривали от ее использования, потому что в 3.8х добавили ABR, улучшили качество (постоянная дилемма между надежностью и новыми возможностями).
Замечу, что последняя бета-версия — 3.87 — держится с сентября 2000 года. Это означает, что за все это время сколько-нибудь серьезных оплошностей не было замечено. И, для меня лично, этого достаточно, чтобы сделать свой выбор в пользу 3.87.
Лейм — это ISO код или нет?
Изначально лейм делался как патч именно для кода ISO. При модернизации кодера упор делался на исправление ошибок и совершенствование алгоритма. Но уже в 2000 году в версии, кажется, 3.6, было замечено, что весь код ISO изменен и лейм свободно компилируется без оригинальных исходников ISO. Так что сегодня лейм можно называть ISO-кодером только в историческом смысле, структура же его изменена настолько, что проще считать лейм самостоятельной разработкой. Причем разработкой качественной и перспективной: сейчас лейм уверенно конкурирует как по скорости, так и по качеству с аналогичными программами на основе кода от Fraunhofer.
Что лучше: LAME или Fraunhofer-based кодеры?
Одним нравится попадья, другим — свиной хрящик. Эта дискуссия сродни спорам о том, с какой стороны нужно разбивать яйцо. В августе 1999 года я в результате тестирования установил, что Fraunhofer-based кодеры имеют преимущество перед леймом на битрейтах в 160 кб/с и ниже. Лейм, соответственно, лучше при 192 кб/с и выше. Изменилось ли что-то с тех пор? Повсеместно наблюдаемая тенденция к использованию высоких битрейтов (от 160 и выше) и VBR может обеспечить LAME большое будущее.
ISO-based кодеры, а тем более кодеры на базе Xing использовать сегодня смысла не имеет. Лейм вобрал в себя все лучшее от ISO и ринулся догонять Fraunhofer. Кто-то считает, что уже догнал. А кто-то полагает, что лучше не спешить с выводами и использовать старый добрый Fraunhofer. Вспоминают о том, что во всех тестированиях на низких битрейтах (128 и ниже) Fraunhofer был лидером и уверенно обходил лейм, но забывают, что за прошедшее с тех пор время ситуация могла измениться.
Говорят, что версии лейма появляются чуть ли не каждый день потому, что в старых находят ошибки. Да, все так. У Фраунгофера тоже находят, но не исправляют годами — разве это лучше?
По крайней мере, VBR в лейме лучше, чем в Fraunhofer’е, хотя и тут он далек от идеала.
Где взять откомпилированный под Windows LAME?
На большинстве сайтов можно найти как stable-версии, так и последнюю beta, а иногда и alfa.
Есть ли для LAME оконные оболочки под Windows?
Есть, самые популярные — vbLamer и RazorLame. Есть ещё LAMEr, LAMEb, Lame GUI frontend. LameBatch — уже долгое время не модифицируется и, соответсвенно, не использует новые возможности лейма.
В качестве оболочки для лейма удобно также использовать программу для копирования данных с Audio-CD — ExactAudioCopy, WinDAC, AudioGrabber, CDeX…
Подготовка материала перед сжатием
В этот раздел вошли советы по подготовке аудиоматериала в цифровом виде к процессу сжатия. Как вы получите этот материал — в этой статье я рассматривать не буду.
Постоянная составляющая
В некоторых случаях (практически никогда на CD и фактически всегда при записи с линейного или микрофонного входа) сигнал имеет так называемую постоянную составляющую: колебания уровня сигнала происходят не относительно условного нуля (середины диапазона уровней сигнала), а относительно некоторого другого уровня. Настоятельно рекомендуется эту составляющую убирать перед кодированием, благо это умеет практически любой звуковой редактор (remove DC offset). Некоторые кодеры (например лейм), кодируя такие файлы, сильно искажают звук, так как их психоакустическая модель рассчитана на исходный сигнал без постоянной составляющей.
Надо ли понижать уровень файла?
Да, надо, если пиковый уровень исходного сигнала около 0 дБ, иначе при кодировании может произойти искажение сигнала. Использование сжатия с потерями подразумевает, что исходный сигнал будет восстановлен не точно, а приблизительно. Из-за этого, на участке с пиковой амплитудой вы имеете шанс получить превышение пикового уровня сигнала (0 дБ), что и повлечет за собой искажения. Количество таких искажений зависит от кодера и битрейта (чем выше битрейт, тем меньше искажений). В общем, только заниженный перед сжатием уровень исходного сигнала гарантирует (в какой-то мере) защиту от искажений.
На сколько понижать? Вопрос спорный. Нужно учитывать то, что при понижении уровня и передискретизации также будут возникать искажения исходного сигнала. Естественно, что искажения будут меньше при понижении уровня ровно в 2 раза, но это достаточно большое понижение громкости. Можно попробовать выбрать что-то кратное этому «вдвое». Скажем, снизить уровень на 25%. А кто-то, может быть, предпочтет целые числа по децибелам, скажем — 3,00 дБ.
Поскольку наличие искажений от превышения пикового уровня сигнала зависит от битрейта и кодера, приведу здесь наблюдения одного из моих знакомых: «при 320 + лейм нормально — 98%, а при 128 — 85-88% от максимального уровня (100% = 0dB)». Сам я с файлами, уровень сигнала которых приближался к 0 дБ, не экспериментировал.
Надо ли использовать нормализацию?
Как правило, нет. Существует принцип невмешательства в работу исполнителя и звукорежиссера. Если что-то звучит тише, значит, так задумано. Это все равно, что читать книгу с главной героиней-брюнеткой, но представлять ее себе блондинкой, потому что вам так больше нравится. Это будет уже не авторский замысел, а ваша вольная обработка.
Тем более неразумно выглядит нормализация под очень высокий уровень (часто 98% или даже 100%) — см. предыдущий подраздел.
Таким образом, нормализация при работе с материалом, полученным с аудио компакт-дисков, практически не нужна, а при работе с другими записями — только в случае очень уж низкого уровня сигнала и только для альбома целиком.
Замечания по поводу увеличения уровня в целое число раз справедливы и в данном случае, так как нормализация — это передискретизация с новым уровнем сигнала.
Тонкости процесса сжатия
В этом разделе описаны некоторые особенности процесса сжатия, как-то: выбор параметров кодера, битрейта и прочего.
Надо ли (в лейме) выключать психоакустику?
Думаю, нет. Лейм очень быстро развивается. В августе 1999 года я тестировал версию 3.24, нынешняя версия — 3.87. В той, старой, версии я действительно слышал разницу в звучании между файлами, сделанными со включенной психоакустикой и с выключенной. Последний вариант мне нравился больше. Но, с точки зрения теории кодирования mp3, это неверно. Психоакустика составляет неотъемлемую и достаточно важную часть алгоритма сжатия. Так что плохо реализованные алгоритмы психоакустики были ошибкой старых версий лейма. И ее, кстати, исправили. Попробуйте сравнить сами.
Есть, правда, одно «но».
Тонкая настройка психоакустики при сжатии
Как я уже говорил выше, психоакустика рассчитана на среднего человека и соответствует настройкам «по умолчанию» для проигрывателя. Из-за этого, подняв высокие частоты в эквалайзере, мы можем услышать искажение идеального, на первый взгляд, звучания мп3 файла. Вот что говорят по этому поводу на MP3 Forum’е:
Народ! Я, кажется, раз 20 писал про одно простое соображение. Повторюсь еще раз.
Иногда некоторые моменты психоакустики отключать надо. Вот, например, в лейме есть опция понижения ATH (Absolute threshold of hearing), т.е. абсолютный порог слышимости. Зачем кодировать звуки, которые мы не слышим, скажете вы? А вот зачем. Если человек будет слушать эту музыку через эквалайзер, то данные параметры (параметры психоакустической модели с стандартным ATH — АГ) можно считать неприменимыми. Т.е. стоит чуток поднять высоких частот, все огрехи mp3 как на ладони.
Ну почему об этом до сих пор никто не написал, а?
Только вот понижение ATH слишком уж «больно» отражается на битрейте в виде его сильного увеличения.
Какой режим кодирования стереосигнала лучше: stereo, joint stereo или dual channel?
Выбор режима кодирования стерео зависит от конкретной ситуации. С одной стороны, при использовании joint stereo на кодирование среднего канала выпадает больше половины битрейта при почти одинаковых правом и левом каналах, с другой стороны, кодер может оставить слишком мало места для кодирования разницы каналов и смазать стереоэффекты. В таком случае, казалось бы, предпочтительнее режим stereo, когда кодер кодирует каналы раздельно, но пропорция, в которой он делит битрейт для правого и левого каналов, может изменяться. А если на каком-то ответственном отрезке кодер сделает поток в одном из каналов чересчур маленьким? Словом, у каждого метода есть преимущества и недостатки — оптимальный выбор будет зависеть от типа записи.
Следует учесть, что некоторые записи содержат сдвиг фаз между каналами, что практически исключает возможность использования joint stereo. Правда, есть специальное ПО, которое находит и корректирует такой сдвиг, однако использование еще одной программы в процессе сжатия не делает этот самый процесс проще. Где взять такую программу, сказано в разделе «Список ссылок».
Лейм автоматически выбирает для каждого фрейма stereo или joint stereo (при желании вы можете запретить ему делать это: «-m s» — только stereo, «-m f» — только joint stereo). Я использую режим с автоматическим выбором «-m j».
Существует мнение, что кодеру нужно запрещать перераспределение потока между каналами стереозаписи, для того чтобы на каком-то ответственном отрезке кодер не сделал поток в одном из каналов чересчур маленьким. Режим, когда каждому каналу отдается ровно половина потока битов, называют dual channel. В лейме этот режим активируется ключом «-m d». Рекомендую использовать такой режим только при заведомо большом размере потока — битрейт в 256 кб/с и больше.
Использовать ли переменный битрейт (VBR)?
Проблема в том, что под VBR (Variable BitRate — переменный битрейт) нужна своя психоакустическая модель, которая и будет управлять изменением битрейта. Раньше кодеры использовали CBR (Constant BitRate — постоянный битрейт) и принцип «обеспечить максимальное качество, упаковывая данные в поток заранее заданной ширины». Переменный битрейт требует совершенно другого подхода: «обеспечить заданный уровень качества, используя поток минимальной ширины», поэтому алгоритмы сжатия для VBR нужно создавать практически с нуля. Более или менее приемлемым прообразом такого алгоритма обладает только лейм, как самый быстроразвивающийся кодер. Ни Ксинг, ни Фраунгофер качественной разработки VBR пока не представили. Их алгоритмы варьируют средний битрейт в пределах 10-15% от основного, что, по-видимому, является результатом попытки адаптировать алгоритмы CBR для использования с VBR (а ведь в старых алгоритмах вообще не было возможности изменить битрейт).
Проблема также состоит в том, что до сих пор не существует сколько-нибудь точной математической модели человеческого слуха. Поэтому разработка психоакустических алгоритмов ведется опытным путем — методом проб и ошибок. Сложность построения алгоритма, получающего на входе некий «уровень качества», заключается в том, что не до конца ясно, как этот уровень качества связан с прочими параметрами алгоритма, в частности с битрейтом. Хотя человеку, далекому от этой технологии, куда как проще оперировать с параметром, непосредственно задающим уровень качества сжатия, чем с некими внутренними параметрами алгоритма.
На этом фоне вполне логичным выглядит появление компромиссного варианта — ABR (Average BitRate — средний битрейт), реализованного в LAME. По сути, это VBR с элементами доработанного старого алгоритма кодирования CBR. Когда качество падает ниже некоторого порога, битрейт увеличивается, если кодируемый сигнал достаточно прост, битрейт уменьшается. В итоге мы получаем обычный файл с VBR потоком, где параметром является не некий абстрактный уровень качества, а заданный битрейт.
Следует отметить, что некоторые проигрыватели не умеют корректно воспроизводить VBR. Например, очень качественный проигрыватель NAD сильнейшим образом искажает звук таких файлов. Объясняется это тем, что, когда этот проигрыватель был создан, ни один из кодеров не использовал VBR. С аналогичной проблемой можно столкнуться при использовании некоторых аппаратных проигрывателей mp3.
И все-таки будущее за принципом, положенным в основу VBR. Осталось только дождаться достойной программной реализации алгоритмов, создающих VBR файлы.
Следует подробнее остановиться на следующей ситуации: при переключении битрейта между фреймами один фрагмент сложного участка может быть закодирован с большим битрейтом, другой — с меньшим, полученный в результате скачок — слышимый дефект звучания. Случай во многом напоминает рассмотренный выше с режимом стерео — вот поэтому-то любители dual channel всегда используют CBR.
Список ссылок
В этом разделе приведен список ссылок на тематически связанные с mp3 ресурсы интернета, которые, на мой взгляд, больше других заслуживают внимания. Некоторые из них содержат свои богатые списки ссылок, дублировать которые не имеет смысла.
Ставший уже классикой и использующийся как ФАК в ФИДО эхоконференции RU.MPEG «Обзор MP3» (в двух частях: часть 1, часть 2). В обзоре много ссылок на различные, связанные с mp3 сайты. Очень советую новичкам.
Техническая документация по стандарту сжатия mp3 — www.mp3-tech.org.
Официальный сайт проекта LAME — lame.sourceforge.net.
Сайт Дмитрия Куцанова (mitiok). Этот сайт можно назвать mp3-порталом: тут содержится много полезных программ для работы с mp3 и множество ссылок на другие ресурсы интернета по сжатию звука. Автор выкладывает откомпилированный для Windows лейм как в варианте exe-файла, так и dll-библиотеки (прилагаются ссылки на другие сайты с откомпилированными LAME). Здесь есть и программа для добавления/удаления wav RIFF заголовка, и программы для сжатия звука без потерь, и плагин под WinAmp от версии 2.22 (декодер с кодом Фраунгофера).
Сайт Сергея Сапелина. На этом сайте вы найдете небольшие, но весьма полезные авторские программы по работе с mp3, например: программу для выравнивания фаз в каналах wav-файла, программу для изменения громкости (и нормализации) mp3 файла без перепаковки и другие.
Сайт проекта Apollo (проигрыватель mp3, mp2, wav).
Программы для копирования данных с Audio-CD: ExactAudioCopy, WinDAC, AudioGrabber, CDeX. Настоятельно рекомендую использовать первую из упомянутых — ExactAudioCopy.
Что нового появилось за год в Сети по этой теме?
Много интересных материалов на русском языке по данной тематике появляется в разделе Мультимедиа на сайте iXBT, например:
Об авторе
Тем, кому не понравилась эта статья просьба дальше не читать. — прим. ред. 🙂
Я — студент Киевского политехнического, учусь на 5-ом курсе, специальность: информатика. Не являюсь специалистом в области цифрового звука, но о mp3 знаю достаточно много. В свое время учился 5 лет в музыкальной школе по классу фортепиано. Музыкальный слух — со слов моего бывшего учителя музыки — у меня есть. Слушать музыку люблю. Направления и стили не различаю — слушаю то, что нравится. Mp3 заинтересовался пару лет назад, а около года назад даже провел тестирование программ MPEG Layer 3 (MP3) кодеров. Интересуюсь новинками в данной области, являюсь участником эхоконференции ФИДО RU.MPEG.
Эта статья изначально задумывалась как дополнение к моему предыдущему материалу о тестировании программ MPEG Layer 3 (MP3) кодеров. В новой работе я постарался дать ответы на большинство заданных мне вопросов. Некоторые ответы помещены ниже.
Откуда взялась идея протестировать кодеры?
Пару лет назад я начал собирать свою фонотеку на CD-R в mp3, тогда-то и заинтересовался технологией кодирования. После проработки сотен килобайт информации из Сети, чтения статей, общения посредством E-mail с такими же энтузиастами, мне показалось, что информации для выбора кодера и битрейта по-прежнему мало. Вот тут созрело решение попробовать разобраться самому. Вообще-то, можно было бы вполне ограничиться несколькими кодерами на основе Fraunhofer’а и несколькими — от ISO. Отказаться от идеи использовать Ксинг меня убедили очень быстро, стоило разок послушать, что он делает на 320 кб/с… Я честно хотел найти хороший кодер на основе кода от Ксинга. Не получилось. 🙂
Встал вопрос: как тестировать? Была мысль вычесть из одного wav’а другой (wav, полученный из mp3, и wav с эталонного CD), но испугался проблем с offset. Из множества возможных вариантов тестирования я в конце концов выбрал сравнение АЧХ с усреднением по 30 секундам звукового фрагмента, что должно устранить искажения результатов, вызванные различием offset’ов. Фрагменты по 30 секунд были взяты из начала композиций, что должно показать работу кодера в большом динамическом диапазоне. Как я выбирал композиции, написано в исходной статье. Метод тот еще, конечно 🙂 Можете не рассказывать, что лучше использовать сонограмму и что усреднение не вполне приемлемо в таком тонком вопросе, как психоакустика. Знаю. Согласен на компромиссный вариант: метод усреднения не позволяет точно сравнить кодеры, но помогает выявить некоторые тенденции. То есть получить результат на качественном, а не на количественном уровне.
Следующий вопрос — АЧХ какого канала стереозаписи? Решил делать все: и правый, и левый и их среднее. А дальше уже дело техники.
Чем снимать АЧХ? Под рукой был CoolEdit. Пойдет? Вполне!
А что делать с тысячей графических файлов, с нарисованными АЧХ? Я написал программу, которая эти картинки сама обрабатывала. Тоже, кстати, интересная задачка — примитивное распознавание образов. По крайней мере, границы графика с точностью до пиксела неизвестны, цвет линии — тоже. Хорошо, что обработкой графики занимался компьютер, а не я.
Такую работу жалко было оставлять у себя на винчестере — хотелось показать людям.
Таким образом, единственная цель, которую я ставил перед собой — разобраться. А потом подумал: вдруг кому-то еще это будет интересно. Так родился отчет о тестировании программных mp3 кодеров
Намечается ли новое тестирование?
Честно говоря, сейчас я не считаю это необходимым. Я теперь не испытатель, а скорее аналитик: собираю информацию о чужих тестах, анализирую, делаю выводы.
Как ты сам кодируешь музыку?
Как со мной связаться?
Мой e-mail: krolyk@Hopka.kiev.ua. Если есть вопросы, не стесняйтесь, задавайте. Я отвечаю на все письма. Если вы участвуете в обсуждении этой статьи в каком-то форуме, сообщите, пожалуйста, мне об этом.
Вместо заключения
Я признателен всем, кто присылал критические замечания, предложения, пожелания. Особо хочу выделить постоянных участников MP3 Forum и автора этого проекта Михаила Федотова. Отдельной благодарности заслуживают Максим Лядов (maxim@ixbt.com) и Павел Соколов (pavel@ixbt.com), при участии которых был подготовлен данный материал.
Спасибо за внимание. Надеюсь, хотя бы часть из приведенной выше информации окажется полезной.