это программа или устройство реализующая определенный алгоритм кодирования данных
Код Хэмминга. Пример работы алгоритма
Прежде всего стоит сказать, что такое Код Хэмминга и для чего он, собственно, нужен. На Википедии даётся следующее определение:
Коды Хэмминга — наиболее известные и, вероятно, первые из самоконтролирующихся и самокорректирующихся кодов. Построены они применительно к двоичной системе счисления.
Другими словами, это алгоритм, который позволяет закодировать какое-либо информационное сообщение определённым образом и после передачи (например по сети) определить появилась ли какая-то ошибка в этом сообщении (к примеру из-за помех) и, при возможности, восстановить это сообщение. Сегодня, я опишу самый простой алгоритм Хемминга, который может исправлять лишь одну ошибку.
Также стоит отметить, что существуют более совершенные модификации данного алгоритма, которые позволяют обнаруживать (и если возможно исправлять) большее количество ошибок.
Сразу стоит сказать, что Код Хэмминга состоит из двух частей. Первая часть кодирует исходное сообщение, вставляя в него в определённых местах контрольные биты (вычисленные особым образом). Вторая часть получает входящее сообщение и заново вычисляет контрольные биты (по тому же алгоритму, что и первая часть). Если все вновь вычисленные контрольные биты совпадают с полученными, то сообщение получено без ошибок. В противном случае, выводится сообщение об ошибке и при возможности ошибка исправляется.
Как это работает.
Для того, чтобы понять работу данного алгоритма, рассмотрим пример.
Подготовка
Допустим, у нас есть сообщение «habr», которое необходимо передать без ошибок. Для этого сначала нужно наше сообщение закодировать при помощи Кода Хэмминга. Нам необходимо представить его в бинарном виде.
На этом этапе стоит определиться с, так называемой, длиной информационного слова, то есть длиной строки из нулей и единиц, которые мы будем кодировать. Допустим, у нас длина слова будет равна 16. Таким образом, нам необходимо разделить наше исходное сообщение («habr») на блоки по 16 бит, которые мы будем потом кодировать отдельно друг от друга. Так как один символ занимает в памяти 8 бит, то в одно кодируемое слово помещается ровно два ASCII символа. Итак, мы получили две бинарные строки по 16 бит:
и
После этого процесс кодирования распараллеливается, и две части сообщения («ha» и «br») кодируются независимо друг от друга. Рассмотрим, как это делается на примере первой части.
Прежде всего, необходимо вставить контрольные биты. Они вставляются в строго определённых местах — это позиции с номерами, равными степеням двойки. В нашем случае (при длине информационного слова в 16 бит) это будут позиции 1, 2, 4, 8, 16. Соответственно, у нас получилось 5 контрольных бит (выделены красным цветом):
Было:
Стало:
Таким образом, длина всего сообщения увеличилась на 5 бит. До вычисления самих контрольных бит, мы присвоили им значение «0».
Вычисление контрольных бит.
Теперь необходимо вычислить значение каждого контрольного бита. Значение каждого контрольного бита зависит от значений информационных бит (как неожиданно), но не от всех, а только от тех, которые этот контрольных бит контролирует. Для того, чтобы понять, за какие биты отвечает каждых контрольный бит необходимо понять очень простую закономерность: контрольный бит с номером N контролирует все последующие N бит через каждые N бит, начиная с позиции N. Не очень понятно, но по картинке, думаю, станет яснее:
Здесь знаком «X» обозначены те биты, которые контролирует контрольный бит, номер которого справа. То есть, к примеру, бит номер 12 контролируется битами с номерами 4 и 8. Ясно, что чтобы узнать какими битами контролируется бит с номером N надо просто разложить N по степеням двойки.
Но как же вычислить значение каждого контрольного бита? Делается это очень просто: берём каждый контрольный бит и смотрим сколько среди контролируемых им битов единиц, получаем некоторое целое число и, если оно чётное, то ставим ноль, в противном случае ставим единицу. Вот и всё! Можно конечно и наоборот, если число чётное, то ставим единицу, в противном случае, ставим 0. Главное, чтобы в «кодирующей» и «декодирующей» частях алгоритм был одинаков. (Мы будем применять первый вариант).
Высчитав контрольные биты для нашего информационного слова получаем следующее:
и для второй части:
Вот и всё! Первая часть алгоритма завершена.
Декодирование и исправление ошибок.
Теперь, допустим, мы получили закодированное первой частью алгоритма сообщение, но оно пришло к нас с ошибкой. К примеру мы получили такое (11-ый бит передался неправильно):
Вся вторая часть алгоритма заключается в том, что необходимо заново вычислить все контрольные биты (так же как и в первой части) и сравнить их с контрольными битами, которые мы получили. Так, посчитав контрольные биты с неправильным 11-ым битом мы получим такую картину:
Как мы видим, контрольные биты под номерами: 1, 2, 8 не совпадают с такими же контрольными битами, которые мы получили. Теперь просто сложив номера позиций неправильных контрольных бит (1 + 2 + 8 = 11) мы получаем позицию ошибочного бита. Теперь просто инвертировав его и отбросив контрольные биты, мы получим исходное сообщение в первозданном виде! Абсолютно аналогично поступаем со второй частью сообщения.
Заключение.
В данном примере, я взял длину информационного сообщения именно 16 бит, так как мне кажется, что она наиболее оптимальная для рассмотрения примера (не слишком длинная и не слишком короткая), но конечно же длину можно взять любую. Только стоит учитывать, что в данной простой версии алгоритма на одно информационное слово можно исправить только одну ошибку.
Примечание.
На написание этого топика меня подвигло то, что в поиске я не нашёл на Хабре статей на эту тему (чему я был крайне удивлён). Поэтому я решил отчасти исправить эту ситуацию и максимально подробно показать как этот алгоритм работает. Я намеренно не приводил ни одной формулы, дабы попытаться своими словами донести процесс работы алгоритма на примере.
Это программа или устройство реализующая определенный алгоритм кодирования данных
Абзац – фрагмент текста, заканчивающийся нажатием клавиши Enter.
Алфавит – конечное множество объектов, называемых буквами или символами.
Байт – 1. восьмиразрядное двоичное число; 2. элемент памяти, позволяющий хранить восьмиразрядное двоичное число.
Векторный редактор – графический редактор, использующий в качестве элемента изображения линию, являющуюся кривой третьего порядка. Используется, когда форма линии важнее информации о цвете.
Графический редактор – программа, предназначенная для создания и обработки графических изображений.
Двоичное кодирование – один из распространенных способов представления информации. В вычислительных машинах, в роботах и станках с числовым программным управлением, как правило, вся информация, с которой имеет дело устройство, кодируется в виде слов двоичного алфавита
Документ Windows – любой файл, обрабатываемый с помощью приложений, работающих под управлением операционной системы Windows.
Звук – волна, распространяющая в какой либо среде (воздухе) и обладающая непрерывными характеристиками частоты и интенсивности. Волна, дойдя до органов слуха, вызывает колебания, которые затем преобразуются мозгом в звуковой сигнал. На этом же принципе реализовано кодирование звуковой информации.
Импульсивно- кодовая модуляция, ИКМ (англ. Pulse Code Modulation — PCM )- дискретизация сигнала во времени в совокупности с методом однородного квантования.
Код – это набор условных обозначений (или сигналов) для записи (или передачи) некоторых заранее определенных понятий
Кодовая модуляция – разностная ИКМ (англ. « Differential PCM» – DPCM).
Криптография – это тайнопись, система изменения письма с целью сделать текст непонятным для непосвященных лиц
Метод FM(Frequency Modulation) – метод частотной модуляции. В нем используется разложение сложного звука на последовательность простейших гармонических сигналов разной частоты. Гармонический сигнал представляет собой правильную синусоиду, которую можно описать набором числовых параметров –амплитуды, фазы и частоты.
Растровый редактор – графический редактор, использующий в качестве элемента изображения точку, имеющую цвет и яркость. Используется, когда информация о цвете важнее информации о форме линии.
Сурдожесты – язык жестов, используемый людьми с нарушениями слуха
Текстовый процессор – прикладная программа, предназначенная для создания, редактирования и форматирования текстовых документов.
Текстовый редактор – прикладная программа, предназначенная для ввода текстов в компьютер их редактирования.
Частота дискретизации- количество отсчетов сигнала в единицу времени.
Юникод – это система для линейного представления текста.
Кодирование для чайников, ч.1
Не являясь специалистом в обозначенной области я, тем не менее, прочитал много специализированной литературы для знакомства с предметом и прорываясь через тернии к звёздам набил, на начальных этапах, немало шишек. При всём изобилии информации мне не удалось найти простые статьи о кодировании как таковом, вне рамок специальной литературы (так сказать без формул и с картинками).
Статья, в первой части, является ликбезом по кодированию как таковому с примерами манипуляций с битовыми кодами, а во второй я бы хотел затронуть простейшие способы кодирования изображений.
0. Начало
Давайте рассмотрим некоторые более подробно.
1.1 Речь, мимика, жесты
1.2 Чередующиеся сигналы
В примитивном виде кодирование чередующимися сигналами используется человечеством очень давно. В предыдущем разделе мы сказали про дым и огонь. Если между наблюдателем и источником огня ставить и убирать препятствие, то наблюдателю будет казаться, что он видит чередующиеся сигналы «включено/выключено». Меняя частоту таких включений мы можем выработать последовательность кодов, которая будет однозначно трактоваться принимающей стороной.
1.3 Контекст
2. Кодирование текста
Текст в компьютере является частью 256 символов, для каждого отводится один байт и в качестве кода могут быть использованы значения от 0 до 255. Так как данные в ПК представлены в двоичной системе счисления, то один байт (в значении ноль) равен записи 00000000, а 255 как 11111111. Чтение такого представления числа происходит справа налево, то есть один будет записано как 00000001.
Итак, символов английского алфавита 26 для верхнего и 26 для нижнего регистра, 10 цифр. Так же есть знаки препинания и другие символы, но для экспериментов мы будем использовать только прописные буквы (верхний регистр) и пробел.
Тестовая фраза «ЕХАЛ ГРЕКА ЧЕРЕЗ РЕКУ ВИДИТ ГРЕКА В РЕЧКЕ РАК СУНУЛ ГРЕКА РУКУ В РЕКУ РАК ЗА РУКУ ГРЕКУ ЦАП».
2.1 Блочное кодирование
Информация в ПК уже представлена в виде блоков по 8 бит, но мы, зная контекст, попробуем представить её в виде блоков меньшего размера. Для этого нам нужно собрать информацию о представленных символах и, на будущее, сразу подсчитаем частоту использования каждого символа:
Понятно о кодировании аудио
© 2002-2004 Александр Радзишевский
http://websound.ru
v3
Все права в отношении данного документа принадлежат автору. Воспроизведение данного текста или его части разрешается только с письменного разрешения автора.
Широкую известность MP 3 получил вполне заслуженно, однако эта известность сыграла для MP 3 и негативную роль: многие скептически настроенные пользователи расценивают широкую известность как ширпотреб, а ширпотреб – как второсортность. Очень жаль, но зачастую даже вполне сведущие в компьютерах пользователи, воспринимают этот формат хранения звука как заведомо низкопробный и относятся к нему несерьезно. Такое совершенно неоправданное отношение к себе MP3 заработал в Интернете. Интернет уже давно кишит аудио файлами в этом формате, однако большая их часть очень низкого качества. Основная причина такого положения кроется совсем не в низкосортности MP 3, а в некомпетентности и дилетантстве тех пользователей, которые выкладывают неумело сжатые в MP 3 некачественные аудио материалы на всеобщее обозрение в Интернете.
Однако эта статья не просто об MP3. В этой статье мы постараемся разобраться в том, как правильно использовать технологии кодирования аудио, подобные MP3; затронем вопросы, связанные с современными приемами кодирования аудио, с их преимуществами и недостатками; разберемся, каким образом в форматах MP3, OGG, AAC, MPC и WMA можно получить качественный звук, а также обсудим другие сопутствующие вопросы, связанные с кодированием аудио.
Оговоримся сразу, что MP3 – не панацея. Похожих кодеков/форматов аудио файлов существует уже достаточно много и о некоторых из них мы поговорим в этой статье подробно, а начали мы это обсуждение с MP3 лишь потому, что « MP3» находится у всех «на слуху».
I. Цифровое и аналоговое представление звуковых сигналов
Чтобы нам было проще разобраться в дальнейшем материале, приведем для начала несколько общеизвестных фундаментальных понятий из области физики звука.
Звук представляется в звуковой аппаратуре либо непрерывным электрическим сигналом, либо набором цифр (нулей и единиц). Аппаратура, в которой рабочий сигнал является непрерывным электрическим сигналом, называется аналоговой аппаратурой (например, радио приемник, осциллограф и т.д.), а сигнал, передающийся через такую аппаратуру, – аналоговым сигналом. Преобразование звуковой волны в аналоговый сигнал можно осуществить, например, следующим способом. Мембрана из тонкого металла с намотанной на нее катушкой индуктивности, подключенной в электрическую цепь и находящаяся в поле действия постоянного магнита, подчиняясь колебаниям воздуха, вызывает соответствующие колебания силы тока в цепи. Эти колебания как бы моделируют оригинальную звуковую волну. Приблизительно так работает привычный для нас микрофон, преобразовывающий звуковые колебания в аналоговый сигнал. Аналоговый сигнал может быть записан на магнитную ленту и впоследствии воспроизведен.
А теперь посмотрим на частотный спектр такой звуковой волны (см. рис. 2).
Как видно на рис. 2, спектр сигнала содержит пики на соответствующих синусоидам частотах и полную «тишину» в остальных точках спектра. Высота каждого пика показывает амплитуду соответствующей синусоиды.
Примечание :
1. человеческий слуховой аппарат способен различать частотные составляющие звука в пределах от 20 Гц до
А теперь поговорим о близких к цифровому звуку понятиях. Как известно, компьютер оперирует данными в цифровом виде. Поэтому, чтобы продолжить обсуждение дальше, нам необходимо разобраться в том, как можно представить звуковой сигнал в цифровом виде.
Цифровой звук – это аналоговый звуковой сигнал, представленный посредством дискретных численных значений его амплитуды. Реальный звуковой сигнал – это сложное по форме колебание, некая сложная функция зависимости амплитуды звуковой волны от времени. Технология преобразования аналогового звукового сигнала в цифровой вид (оцифровка) заключается в осуществлении замеров амплитуды сигнала с определенным временным шагом и последующей записи полученных значений в численном виде. В этом, казалось бы, простом методе есть свои сложности, а именно, значения амплитуды сигнала невозможно записать с бесконечной точностью, и поэтому их необходимо округлять. Таким образом, выходит, что в процессе оцифровки мы приближаем звуковую (аналоговую) волну сразу по двум координатным осям – амплитудной и временной, то есть, берем значения амплитуды волны с определенным шагом и записываем их с конечной точностью.
Квантование по амплитуде – это процесс замены реальных значений сигнала приближенными с определенной точностью (см. рис. 4).
Примечание :
Здесь и далее по тексту мы неоднократно будем пользоваться понятием «качество звучания». Немаловажно заметить, что это понятие не является хоть сколько-нибудь объективной характеристикой и не имеет ничего общего с физическими оценочными характеристиками звучания. Это связано с тем, что само звучание воспринимается разным слушателем по-разному. «Качество звучания» характеризует, скорее, степень удовлетворенности слушателя звучанием. Принято считать, что качество звучания определяется в основном наличием и «поведением» высоких частот (в полосе от 5 кГц и выше), тогда как частоты в полосе от 0 до 3-5 кГц определяют ясность звучания. Например, человеческую речь и музыку невозможно разобрать без наличия в ней нижней полосы частот, тогда как верхние частоты придают звучанию окрас четкости и качества.
Оцифрованный сигнал в виде набора последовательных значений амплитуды можно сохранить в памяти компьютера. В случае, когда записываются абсолютные значения амплитуды, такой формат записи называется PCM ( Pulse Code Modulation).
Несколько слов необходимо сказать о восприятии слушателем пространственности звучания. Человек слышит двумя ушами и за счет этого способен различать направление прихода звуковых сигналов. Объяснение этому простое. Уши человека расставлены на определенном расстоянии по ширине головы. Скорость распространения звуковой волны относительно невелика. Сигнал, приходящий от источника звука, находящегося напротив слушателя, приходит в оба уха одновременно, и мозг интерпретирует это как расположение источника сигнала либо позади, либо спереди, но не сбоку. Если же сигнал приходит от источника, смещенного относительно центра головы, то звук приходит в одно ухо быстрее, чем во второе, что позволяет мозгу соответствующим образом интерпретировать это как приход сигнала слева или справа. Если осуществить запись звукового сигнала с помощью одного приемника (микрофона), то при воспроизведении этого сигнала через один или даже несколько репродукторов, слушатель не сможет ощутить пространственную картину оригинального звучания, поскольку записанный на ленту сигнал есть монофоническая запись (одноканальная запись), т.е. запись оригинального звучания лишь из одной точки пространства. Если же запись была произведена с помощью двух приемников одновременно, расположенных в двух разных точках пространства (фактически, две независимых параллельных записи), то воспроизведение такого сигнала через два репродуктора, правильно расположенных относительно слушателя, даст возможность передать слушателю пространственность звучания оригинального сигнала. Такая запись (т.е. две параллельных записи одного и того же сигнала в разных точках пространства) называется стереофонической или двухканальной (см. рис. 5).
Качество донесения до слушателя оригинальной пространственности звучания можно повышать путем добавления в запись дополнительных каналов (то есть, осуществляя запись сигнала с трех и более точек пространства).
II. Приемы кодирования аудио
Как мы выяснили, путем простой оцифровки реального звукового сигнала с высокой частотой выборки и разрядностью квантования можно очень качественно, почти без потерь качества, сохранить желаемый аудио материал в компьютере. Тогда возникает вопрос: зачем нужны различные алгоритмы сжатия звукового материала, подобные MP 3?
Таким образом, чтобы иметь возможность хранить относительно большие объемы аудио данных в хорошем качестве приходится прибегать к «ухищрениям», которые помогают записать аудио данные с использованием ощутимо меньшего объема памяти (то есть, уплотнить, сжать, закодировать данные) и не слишком сильно ухудшая (или даже совсем не ухудшая) при этом качество звучания. Об этих ухищрениях мы сейчас и поговорим.
Существует два распространенных способа кодирования аудио информации (кроме простого хранения в оцифрованном виде «как есть»).
Примечание:
* Кодирование информации – представление информации в определенной системе кодовых символов и их структур. Шифрование, а также уплотнение (сжатие) информации являются частными случаями кодирования.
* Под потоком данных мы будем понимать содержимое файла, данные, принимаемые из Интернета или любую другую последовательную информацию.
Такой способ сжатия данных, хотя и идеален с точки сохранности качества аудио материалов, но неспособен обеспечить высокий уровень компрессии.
Теперь о том, каким образом происходит упрощение сигнала в процессе кодирования (опять же, на примере механизма работы кодера, основанного на упрощении спектра обрабатываемого сигнала). Механизм «упрощения» аудио сигнала можно пояснить следующим образом. Исходный аудио сигнал разделяется на блоки определенной длины, после чего каждый блок обрабатывается в отдельности. В процессе кодирования каждый блок раскладывается на частотные составляющие спектра. Как мы сказали, чем меньше «тонких нюансов звучания» имеется в сигнале (чем проще частотный спектр сигнала), тем эффективнее его компрессия. Упростить сигнал можно по-разному. Например, можно отфильтровать все частотные составляющие сигнала, располагающиеся выше определенной границы, что автоматически упростит сигнал в высоких частотных областях (но при этом, естественно, заметно испортит звучание). Однако основным способом является проведение психоакустического анализа с последующей соответствующей обработкой сигнала: кодер анализирует аудио информацию и, опираясь на указанный пользователем битрейт, «решает» какие тонкости звучания можно выбросить.
Следует особо подчеркнуть, что применение психоакустики в качестве механизма упрощения приводит к тому, что процесс декодирования уже не способен восстановить утраченные во время компрессии данные (выброшенные нюансы звучания, отфильтрованные частоты и проч.). Это означает, что сжимать данные нужно «с умом»: если вы сжимаете музыку для вашей аудио коллекции, то не следует слишком ограничивать битрейт кодера, поскольку это может привести к серьезным потерям качества. С другой стороны, если подходить к кодированию компетентно, то результатом кодирования будет хороший коэффициент сжатия (что и является целью кодирования) плюс высокое качество звучания.
III. Компрессия на практике
Для того чтобы практически воспользоваться возможностями аудио кодеров и закодировать аудио данные в полюбившийся формат (скажем, тот же MPEG-1 Layer 3), необходимо сначала оцифровать аудио информацию, если она находится на аналоговых носителях (например, на магнитной ленте).
Закодированные файлы можно сохранить в своей аудио коллекции или даже взять с собой в дорогу, вооружившись каким-нибудь аппаратным проигрывателем аудио файлов.
IV. Подробнее о lossy аудио кодеках MP3, OGG, WMA, AAC и MPC
Современных lossy-кодеров существует достаточно много: MPEG-1 Layer 3 ( MP3), Windows Media Audio ( WMA), Ogg Vorbis ( OGG), MusePack ( MPC), MPEG-2/4 AAC и другие. Мы остановимся подробно на рассмотрении именно этих пяти наиболее распространенных сегодня кодеков.
MP3 – MPEG-1 Layer 3
О стандартах MPEG в общем и о MP3 в частности
Нюансы кодирования
Техника кодирования аудио является достаточно сложной и имеет множество нюансов. Все их невозможно пояснить в рамках одной статьи, однако самые важные из них мы все же рассмотрим, поскольку почти каждый пользователь сталкивается с ними при самостоятельном кодировании файлов.
Кодирование данных в MP3 (как и в WMA о OGG) происходит поблочно: кодируемый файл разбивается на так называемые фреймы (кадры) с одинаковым временным интервалом, каждый кадр в отдельности кодируется и записывается в выходной поток; таким образом, выходной поток также имеет кадровую структуру. Фреймы могут быть закодированы не на любом битрейте, а только на одном из входящих в таблицу стандартных для MPEG1 Layer 3 битрейтов (Кбит/с): 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 (кодирование на произвольных промежуточных битрейтах стандартом не предусмотрено, хотя возможно). В виду осуществления покадровой разбивки исходных файлов можно говорить о сжатии данных с постоянным ( CBR ) и переменным ( VBR ) битрейтом.
Необходимо отметить, что использование MS Stereo не вносит в сигнал никаких дополнительных погрешностей, поскольку при переразбиении стерео сигнала в формате + канал на mid- и side-канал не происходит ничего, кроме безобидных и притом полностью обратимых математических вычислений. В то же время, этот несложный прием кодирования стерео информации позволяет кодеру более эффективно реализовывать свой потенциал в процессе кодирования, нежели в режиме Stereo.
ОGG – Ogg Vorbis
Одной из неприятных особенностей кодека MP3 всегда являлась его коммерциализованность, которая заключается как минимум в том, что каждый производитель, создающий новый MP3-кодер, обязан платить отчисления «отцам» кодека. Такое положение вещей не могло не вызвать появление каких-то новых разработок в области потребительской компрессии аудио. Так и случилось.
WMA – Windows Media Audio
Кодек Windows Media Audio (сокращенно WMA) является сегодня собственной разработкой компании Microsoft и успешно продвигается. Изначально, кодек WMA разрабатывался фирмой Voxware и имел название Voxware Audio Codec, однако впоследствии компания забросила его доработку, остановившись на v4.0. Все же, кодек не остался гнить, и был полностью куплен фирмой Microsoft. Программисты серьезно доработали этот кодек, а фирма Microsoft переименовала кодек в Windows Media Audio, не забыв позаботиться о том, чтобы он был бесплатным.
AAC – MPEG-2/4 AAC (Advanced Audio Coding)
Стандарт MPEG-2 AAC
Так же, как и в комплекте аудио стандартов кодирования MPEG-1, в основе алгоритма AAC лежит психоакустический анализ сигнала. Вместе с тем, алгоритм AAC имеет в своем механизме множество дополнений, направленных на улучшение качества выходного аудио сигнала. В частности, используется другой тип преобразований, улучшена обработка шумов, изменен банк фильтров, а также улучшен способ записи выходного бит-потока. Кроме того, AAC позволяет хранить в закодированном аудио сигнале так называемые «водяные знаки» ( watermarks) – информацию об авторских правах. Эта информация встраивается в бит-поток при кодировании таким образом, что уничтожить ее становится невозможно не разрушив целостность аудио данных. Эта технология (в рамках Multimedia Protection Protocol) позволяет контролировать распространение аудио данных (что, кстати, является препятствием на пути распространения самого алгоритма и файлов, созданных с помощью него). Следует отметить, что алгоритм AAC не является обратно совместимым ( NBC – non backwards compatible) с уровнями MPEG-1 не смотря на то, что он представляет собой продолжение (доработку) MPEG-1 Layer I, II, III.
MPEG-2 AAC предусматривает три различных профиля кодирования: Main, LC ( Low Complexity) и SSR ( Scalable Sampling Rate). В зависимости от того, какой профиль используется во время кодирования, изменяется время кодирования и качество получаемого цифрового потока. Наивысшее качество звучания (при самой медленной скорости компрессии) обеспечивает основной Main профиль. Это связано с тем, что профиль Main включает в себя все механизмы анализа и обработки входного потока. Профиль LC упрощен, что сказывается на качестве звучания получаемого потока, сильно отражается на скорости компрессии и, что более важно, декомпрессии. Профиль SSR также представляет собой упрощенный вариант профиля Main.
Говоря о качестве звука, можно сказать, что поток AAC ( Main) 96 Кбит/с обеспечивает качество звучания, сравнимое с качеством MPEG-1 Layer III 128 Кбит/с. При компрессии AAC 128 Кбит/с, качество звучания ощутимо превосходит MPEG-1 Layer III 128 Кбит/с.
Стандарт MPEG- 4 AAC
MPEG-4 AAC LC (Low Complexity)
MPEG-4 AAC Main
MPEG-4 AAC SSR (Scalable Sampling Rate)
MPEG-4 AAC LTP (Long Term Prediction)
MPEG-4 Version 2
MPEG-4 Version 3 ( включая HE-AAC)
Не смотря на совершенно разное происхождение всех описанных кодеков, их механизмы базируются на одной и той же идее «упрощения» сигнала на основе психоакустики с последующей компрессией упрощенных данных. Каждый кодек имеет свои индивидуальные ноу-хау и совершенно отличную от других реализацию, однако поскольку эти кодеки основаны на общей идее, то и усредненные результаты кодирования в одинаковых условиях по соотношению размер/качество находятся на близком друг к другу уровне.
Кодек MP 3 заложил основу идее упрощения сигнала путем использования психоакустики. На сегодняшний день, несмотря на все ухищрения конкурентов, MP 3 вот уже который год упорно держит свои позиции по соотношению размер/качество. Конечно, говорить о кодеке MP3 в общем нельзя, поскольку есть множество различных его реализаций. Одной из наиболее удачных и непрерывно развивающихся реализацией кодека MP3 является кодер Lame (его разработку ведет группа независимых энтузиастов, кодер распространяется бесплатно).
Кодеки Ogg Vorbis и MusePack, будучи последователями MPEG-1 Layer II, дают в среднем заметно лучшие результаты кодирования на средних и высоких битрейтах по сравнению с MP3. Это утверждение справедливо для битрейтов 160 Кбит/с и выше. Использование же Ogg Vorbis и MusePack на низких битрейтах почти не оправдано.
Кодек WMA, особенно версии 8 и 9, дает чуть лучшие результаты кодирования, нежели MP3. Надо отметить, что, как показывают тестирования и практика, особую ценность WMA несет на низких битрейтах. Например, MP3 на 32 Кбит/с почти невозможно слушать (на таком низком битрейте сигнал сильно искажается), в то время как WMA на этом битрейте звучит вполне достойно, а это значит, что при сжатии не критичной к качеству аудио информации WMA явно выигрывает у MP3.
Таким образом, при выборе кодека и параметров кодирования аудио необходимо руководствоваться соображениями целесообразности, будущими планами на использование сжатого материала, а также соображениями удобоваримости (в частности, форматы MP3 и WMA «понимаются» уже очень многими аппаратными проигрывателями, в то время как OGG, AAC и MPC в этом заметно отстают). Не нужно бояться, что оригинальное качество материалов в результате компрессии будет безвозвратно потеряно – используя наивысшие битрейты, вы получаете многократный выигрыш в занимаемом сжатыми данными объеме и при этом остаетесь c качеством звучания близким к качеству оригинального материала.
Рассмотрим приблизительные диапазоны битрейтов, рекомендуемые при кодировании типичного аудио материала в форматы MP3, WMA, OGG, AAC и MPC (см. табл. 1) c целью комфортного прослушивания.
Тип материала
Требования, предъявляемые качеству сжатого материала
Рекомендуемый диапазон, Кбит / с