Як влаштований формат MP3

Формат MP3 – скорочення від MPEG Layer3. Це один з потокових форматів збереження і передачі аудіосигналу в цифровій формі, розроблений Fraunhofer IIS і THOMSON, пізніше затверджений як частина стандартів стислого відео та аудіо MPEG1 і MPEG2. Дана схема є найбільш складною схемою сімейства MPEG Layer 1/2/3. Вона вимагає найбільших витрат машинного часу для кодування в порівнянні з двома іншими і забезпечує більш високу якість кодування. Використовується головним чином для передачі аудіо в реальному часі з мережних каналах і для кодування CD Audio.

Формат MP3 – потоковий формат. Це означає, що передача даних відбувається потоком незалежних окремих блоків даних – фреймів. Для цього вихідний сигнал при кодуванні розбивається на рівні по тривалості ділянки, іменовані фреймами і кодуються окремо. При декодуванні сигнал формується з послідовності декодованих фреймів.

Високий ступінь компактності формат MP3 в порівнянні з PCM 16Bit Stereo 44.1kHz (CD Audio) і йому подібними форматами при збереженні аналогічної якості звучання досягається за допомогою додаткового квантування за встановленою схемою, що дозволяє мінімізувати втрати якості.

Останнє, у свою чергу, досягається урахуванням особливостей людського слуху, в тому числі ефекту маскування слабкого сигналу одного діапазону частот більш потужним сигналом сусіднього діапазону, коли він має місце, або потужним сигналом попереднього фрейму, що викликає тимчасове зниження чутливості вуха до сигналу поточного кадру. Також враховується нездатність більшості людей розрізняти сигнали, по потужності лежать нижче певного рівня, різного для різних частотних діапазонів.

Подібні техніки називаються адаптивним кодуванням і дозволяють економити на найменш значущих з точки зору сприйняття людиною деталях звучання. Ступінь стиснення, і, відповідно, обсяг додаткового квантування, визначаються не форматом, а самим користувачем в момент завдання параметрів кодування. Ширина потоку (bitrate) про кодуванні сигналу, аналогічного CD Audio (44.1kHz 16Bit Stereo) варіюється від найбільшого, 320kbs (320 кілобіт на секунду, також пишуть kbs, kbps або kb / s), до 96kbs і нижче.

Термін бітрейт в загальному випадку позначає загальну величину потоку, кількість переданої за одиницю часу інформації, і тому не пов’язаний з внутрішніми тонкощами будови потоку, його сенс не залежить від того, чи містить потік моно або стерео, або п’ятиканальну аудіо з текстом на різних мовах, або що-небудь ще.

На проведених тестах спеціально запрошені досвідчені експерти, що спеціалізуються на суб’єктивній оцінці якісності звучання, не змогли розрізнити звучання оригінального треку на CD і закодованого в формат MP3 з коефіцієнтом стиснення 6:1, тобто з бітрейтом в 256kbs. Правда, тести були проведені на невеликій кількості матеріалу, і насправді не все настільки добре, нерідко буває дійсно потрібно користуватися 320kbs. Для себе я вважав це достатньою підставою для повного переходу на кодування з бітрейтом 320kbs.

Більш низькі бітрейти, незважаючи на їх популярність, не дають можливості забезпечити належну якість кодування, що незаслужено забезпечило MP3 погану славу аматорського формату. Насправді, хоча і 256kbs, і навіть 320kbs теж не дають можливості здійснити повністю прозоре кодування, але відмінності від CD Audio, за яким кодується тестовий MP3, порівнянні з відмінностями самого CD Audio від вихідного аналогового сигналу, з якого він був отриманий шляхом оцифрування . Тобто втрати, звичайно, є, але несуттєві з точки зору того, кому якість CD Audio представляється достатнім. Фактично, їх виявлення зазвичай є завданням нетривіальною на апаратурі класу Hi-Fi.

Сьогодення та майбутнє MP3.

Формат MP3 на сьогодні має два величезні переваги перед іншими доступними форматами його роду. Одне з них полягає в тому, що ні про один з існуючих подібних форматів не можна поки сказати, що він повністю гарантує стійке збереження якості звучання на досить високих бітрейтах, крім формату MP3 , який гідно витримав перевірку часом. Мабуть, єдиний відомі мені конкурент у цьому плані – останні варіанти формату ATRAC, використовуваний в мінідиски.

Для формату MP3 також написано безліч зручного програмного забезпечення. Цей факт відображає друге, не менш важлива перевага – на найближчі роки, а можливо, і на все десятиліття, формат MP3 став стандартом де факто, настільки багато зроблено в нього вкладень користуються їм сторонами, в тому числі і цифровими радіостанціями.

Формат MP3 досить довго залишався невідомим, але кілька років тому розпочався вибухове зростання його популярності, настільки ж швидко почали з’являтися поклади нелегальних файлів у формат MP3 . Зараз налагоджено виробництво апаратних MP3 плеєрів, а кишенькових, і для автомобілів. Таким чином, формат MP3 став першим масово визнаним форматом зберігання аудіо після CD-Audio.

Незважаючи на те, що формат MP3 з’явився досить давно, більш нові формати, що претендують на його місце, що з’явилися до справжнього моменту, все на перевірку виявилися аматорськими. Вони можуть бути або не бути гарні в порівнянні з форматом MP3 на низьких бітрейтах, це залежить від треку та особливостей слуху конкретної людини, але на місце формату MP3 256kbs … 320kbs претендувати не здатні.

Можливо, монополія формату MP3 у сфері комп’ютерів на низьких бітрейтах все ж буде частково зламана новим форматом від Microsoft – WMA. Але поки рано говорити про це. З іншого боку, поява Microsoft на даному ринку з настільки сильною розробкою означає швидке відсіювання опинилися невдалими гілок AAC і VQF. Втім, залишається надія, що AAC ще буде доопрацьовано.

Опис процесу кодування

Підготовка до кодування. Фреймова структура Перед кодуванням вихідний сигнал розбивається на ділянки, звані фреймами, кожен з яких кодується окремо і поміщається до кінцевому файлі незалежно від інших. Послідовність відтворення визначається порядком розташування фреймів. Кожен фрейм може кодуватися з різними параметрами. Інформація про них міститься в заголовку кадру.

Початок кодування Кодування починається з того, що вихідний сигнал за допомогою фільтрів поділяється на кілька, що представляють окремі частотні діапазони, сума яких еквівалентна вихідному сигналу.

Робота психоакустичної моделі Для кожного діапазону визначається величина маскуючого ефекту, створюваного сигналом сусідніх діапазонів і сигналом попереднього кадру. Якщо вона перевищує потужність сигналу цікавить діапазону або потужність сигналу в ньому виявляється нижче певного досвідченим шляхом порогу чутності, то для даного фрейму даний діапазон сигналу трохи кодується.

Для решти даних для кожного діапазону визначається, скількома бітами на семпл ми можемо пожертвувати, щоб втрати від додаткового квантування були нижче величини маскуючого ефекту. При цьому враховується, що втрата одного біта веде до внесення шуму квантування величиною порядку 6 dB.

Завершення кодування Після завершення роботи психоакустичної моделі формується підсумковий потік, який додатково кодується по Хаффману, на цьому кодування завершується.

Зауваження На практиці схема дещо складніше. Наприклад, необхідно узгоджуватися з вимогами бітрейта. Залежно від кодера це призводить при підвищенні бітрейта до різного роду релаксація при відборі сохраняемой частини вихідного сигналу, а при зниженні – навпаки, до посилення критеріїв.

Способи кодування стерео сигналу

У рамках формату MP3 кодування стереосигнала допустимо чотирма різними методами:

Dual Channel – Кожен канал отримує рівно половину потоку і кодується окремо як моно сигнал. Рекомендується головним чином у випадках, коли різні канали містять принципово різний сигнал – скажімо, текст на різних мовах.
Виставляється в деяких кодерах на вимогу.

Stereo – Кожен канал кодується окремо, але кодер може прийняти рішення віддати одному каналу більше місця, ніж іншому. Це може бути корисно в тому випадку, коли після покидька частини сигналу, що лежить нижче порога чутності або повністю маскованої, виявилося, що коду не повністю заповнює виділений для даного каналу обсяг, і кодер має можливість використовувати це місце для кодування іншого каналу. У документації до mp3enc відмічено, що цим, наприклад, уникається кодування тиші в одному каналі, коли в іншому є сигнал.
Даний режим виставлений за умовчанням в більшості ISO-based кодерів, а також використовується продукцією FhG IIS на бітрейтах вище 192kbs. Застосуємо і на більш низьких бітрейтах порядку 128kbs … 160kbs.

Joint Stereo (MS Stereo) – Стереосигнал розкладається на середній між каналами і різницевий. При цьому другий кодується з меншим бітрейтом. Це дозволяє дещо збільшити якість кодування в звичайній ситуації, коли канали по фазі збігаються. Але призводить і до різкого його погіршення, якщо кодуються сигнали, по фазі що не збігаються. Зокрема, фазовий зсув практично завжди присутня в записах, оцифрованих з аудіокасет, але зустрічається і на CD, особливо якщо CD сам був записаний в свій час з аудіоленти. З іншого боку, вже здійснена (перша?) Спроба написати програму для автоматичної корекції фазового зсуву. Можливо, вона трохи допоможе любителям кодувати оцифровки з аудіокасет з бітрейтом порядку 128kbs.
Режим виставлений за умовчанням продукцією FhG IIS, а також кодером Lame, для бітрейтів від 112kbs до 192kbs.

Joint Stereo (MS / IS Stereo) – Вводить ще один метод спрощення стереосигнала, підвищуючий якість кодування на особливо низьких бітрейтах. Полягає в тому, що для деяких частотних діапазонів залишається вже навіть не різницевий сигнал, а тільки відношення потужностей сигналу в різних каналах. Зрозуміло, для кодування цієї інформації вживається ще менший бітрейт.
На відміну від усіх попередніх, цей метод призводить до втрати фазової інформації, але вигоди від економії місця на користь середнього сигналу виявляються вище, якщо мова йде про дуже низьких бітрейтах.
Цей режим за замовчуванням використовується продукцією FhG IIS для високих частот на бітрейтах від 96kbs і нижче (іншими якісними кодерами цей режим практично не використовується).
Але, як уже говорилося, при застосуванні даного режиму відбувається втрата фазової інформації, також втрачається будь протівофазний сигнал.

Прості помилки користувачів MP3

Одне з найбільших помилок, пов’язаних з форматом MP3, постійно проявляється в суперечці 128kbs vs 256kbs – з яким бітрейтом кодувати. Аргументи прихильників першого варіанту вичерпуються нагадуванням, що такі MP3 вдвічі менше. Твердження, що вже краще тримати CD Audio замість MP3 256kbs, неспроможне – якість формату MP3 256kbs … 320kbs практично сответствует оригіналу, а обіймав обсяг в 4.5-6 разів менше. Оману ж полягає в тому, що і 128kbs дає досить високу якість. Насправді ж для людей, свідомо вибирають 128kbs, збереження близького до вихідного якості просто не є надто важливим, так як їх апаратура зазвичай не краще плеєрів – мильниць;. У той же час багато власників CD кодують їх у форматі MP3 навіть просто тому, що набагато рідше потрібно CD міняти – на моєму 8Gb вінчестері поміститься більше п’ятдесяти годин музики у форматі MP3 бітрейта 320kbs. Як кажуть, у цьому випадку мотиви користувачів 128kbs нам незрозумілі.

Щоб не зуміти відрізнити формат MP3 128kbs від оригіналу, потрібно або не мати слуху, або взяти апаратуру гірше. І те, що на більшості комп’ютерних систем з моменту покупки варто жахливо гучна звукова плата від ESS, відомо всім добре. Тільки мені з деяких пір здається, що справа ще й у постійному отруєння неякісним звуком, і, як наслідок, тимчасової (але постійно відновлюваної) втрати чутливості. Ми занадто часто слухаємо те, що слухати не варто було б, і справа не тільки характеристиками комп’ютерної техніки – формат MP3 128kbs при нормальному слуху не сподобається і на ESS. Звичайно, в порівнянні з дребезгом колонок вуличного кіоску під акомпанемент трамвая звучання формат MP3 128kbs може здаватися досить непоганим, але це не нормально.

Що з усім цим робити? Та просто бережіть вуха від зайвих катувань, воно корисно. А що до карти – проста малошумна карта і відносно пристойні навушники коштують не так вже багато. Тому в огляді не враховуються шуми комп’ютера і карти – ці труднощі можна подолати.

Інше невелике помилка полягає в тому, що рівень шумів декодованого сигналу сильно пов’язаний з рівнем якості формату MP3 . Але це омана майорить дуже швидко – помітити, що якість формату MP3 залежить від інших причин, легше легкого. Як правило, рівень шумів дуже низький на будь-яких бітрейтах, це скоріше характеристика плеєра.

Крім того, в більшості підручників прямо говориться про нездатність людини чути частоти вище 16kHz. Але по-перше, це просто невірно, багато що залежить від потужності сигналу і від віку слухача. По-друге, людина – істота, не позбавлене оригінальності. Навіть коли він не чує такі звуки за допомогою вуха усвідомлено, він все ж відчуває їх. І це впливає на сприйняття. Тому обрізання частот вище 16kHz можна вважати обгрунтованим на низьких бітрейтах, коли воно дозволяє набагато краще закодувати нижчі діапазони, але не можна не брати в розрахунок, коли мова заходить про високі бітрейтах, що наближають якість сигналу до рівня CD Audio. Так, до речі, у дітей частотний поріг чутності куди вище 16kHz.

Способи зберігання MP3

Стандарт формату MP3 не визначає ніякого точного стандартного математичного алгоритму кодування, його розробка цілком і повністю залишається на совісті розробників кодерів. Замість цього він визначає загальну схему процесу кодування, а також формат закодованого кадру. Самі послідовності фреймів можуть передаватися потоком (процес передачі такого потоку називається streaming) або зберігатися у файлах.

Файл формату MP3 , як і потік, складається з послідовно розміщених фреймів, між якими може міститися довільна інформація. Основна вимога полягає в тому, що не повинно бути збігів з сигнатурою початку кадру.

Часто до послідовності фреймів додають стандартний заголовок мета-аудіоформату WAV, і виходить те, що називають WAV-MP3. Ще частіше до MP3-файлу додається інформаційний блок ID3v2, що містить інформацію про виконавця, жанрі, назві композиції, та іншу подібну інформацію про трек. Він додається в кінець файлу. У середину поки ніхто нічого ставити не придумав. Хоча, взагалі кажучи, може представляти певний інтерес вставка спецтега для VBR з інформацією про те, в якій частині треку ми, власне, перебуваємо.

Характер втрат при кодуванні

На низьких бітрейтах завжди зрізаються дрібні, порівняно тихі деталі, наявність або відсутність яких нерідко серйозно змінює емоційне забарвлення композиції, надає або позбавляє її таких ефектів, як відчуття кришталевої чистоти звуку (в тій мірі, в якій вона присутня в CD Audio). Крім того, відповідно до психоакустичної моделлю, вищі (вище 16 кГц) частоти на низьких бітрейтах кодуються з дуже низьким пріоритетом.

Далі, мають місце різні особливості кодерів. Так, у кодерів від FhG IIS на 128 kbs виявляються змащені верхні частоти, спостерігається ефект шепелявості, в той час як у ISO-based замість цього – дзвін. Швидше за все, це пов’язано з різним ставленням до частот вище 16kHz у даних кодерів. У кодере Lame, до речі, вони за замовчуванням зрізаються, що збільшує якість кодування на 128kbs.

На вищих бітрейтах при послідовному дотриманні психоакустичної моделі, розробленої FhG IIS, проблеми можуть доставляти тільки помилки, внесені при написанні кодера. Втім, через не надто великий заклопотаності FhG IIS якістю його кодерів на високих бітрейтах вже не раз виявлялося, що нова версія звучить іноді навіть дещо гірше старої. Вважаю, причина криється в недостатньому або неправильному ослаблення обмежень психоакустичної моделі при підвищенні бітрейта. Знову ж, перший серйозний замовник, і проблема зникне.

Коментування вимкнено .

  1. Семецкий коментує:

    Дуже добре подготовленнаястатья.

  2. autolord коментує:

    хороша стаття .. тільки невистачає жівихпрімеров … наприклад на пальцях бирассказалі як ці блоки тамкадіруются і декодуються