Главная
Условия
Трейдеры
I need
I like
Советы
Каталог
Участник Российского вебринга по обмену MP3 и мультимедиа
~Nathaley mp3 exchange~  Советы  MP3-кодирование. Часть 1: Максимум качества и вся правда о Lame
MP3-кодирование. Часть 1: Максимум качества и вся правда о Lame

Каждый, наверное, кто кодировал купленный CDDA-диск в формат mp3, задумывался о таком интуитивно ясном понятии как «качество». Понятно, что оно зависит от кодировщика и выбранных параметров при кодировании. В сети существует громадное множество по этому поводу мнений, да и просто заблуждений, к которым частенько прислушиваются начинающие пользователи, как кодировать и чем, либо наоборот, чем и как не надо. Я попытаюсь поднять такую горячую тему, которая точно вызовет много вопросов и встречных мнений как кодирование mp3 с максимально возможным качеством, рассказать о параметрах, дающих наиболее высокие результаты, наглядно обосновав свой выбор математически (а точнее — статистически).

Качество

Вообще, что такое качество в кодировании? Многие кодируют звук определенным способом, потому что они просто довольны результатом, или даже слышат реальную разницу при кодировании другим способом. Однако эта оценка субъективна, даже не из-за того, что человек может и не слышит разницы на самом деле (почему бы и нет?), а хотя бы потому, что на «качество» звука влияет электроника, колонки и даже окружающая среда. Да и просто человеческий фактор имеет место (7ой трек, например, может понравится больше, чем 13ый). А ведь мы работаем с цифровыми данными, которые можно складывать, делить и (что самое главное) сравнивать.

Основной характеристикой сигнала является его спектр (двумерный график, отображающий степень присутствия в сигнале всех возможных частот), и при кодировании он, конечно же, искажается. Чаще всего при mp3-кодировании высокие частоты срезаются или становятся рваными (что хорошо видно на 3-мерной спектрограмме). Остальные частоты, конечно, тоже изменяются, но незначительно. Таким образом, оценке качества можно дать вполне конкретное определение. Уровень качества кодирования прямо пропорционален степени приближения спектра конечного звукового потока к исходному. Проще говоря, чем меньше разница в амплитудах частотных несущих, тем выше качество кодирования. А, имея конкретные цифровые данные, это приближение (расстояние, разницу) можно посчитать.

Предыстория

Заинтересовавшись этой проблемой достаточно давно, я пробовал множество способов кодирования, анализировал существующие mp3-файлы, пытаясь понять, почему в одном файле при битрейте в 192 kbps присутствует весь спектр, а в другом при 320 kbps есть срез частоты на уровне 20 kHz. В конце концов я нашел способ, дающий удовлетворительные для меня результаты, но заявлять, что такое кодирование вносит минимальные искажения в оригинальный сигнал, я не мог, так как сам об этом точно не знал. Нужно было провести тест, чтоб сравнить результаты, которые дают наиболее распространенные версии кодеков (в тесте использовались только кодеки Lame различных версий — причины см. далее) с моим результатом. Что и было сделано, одновременно разрешив проблему спора «CBR против VBR».

И так, для теста я взял две финальные, рекомендуемые сообществом hydrogenaudio.org и последнюю доступную на момент написания статьи версии кодеков Lame. Почему Lame? Во-первых, этот кодек бесплатен. Во-вторых, он наиболее популярен, и, наконец, лично мне просто нравятся его результаты. Если хочется добавить в обзор другие методы кодирования, то прочитайте последний абзац.

Теперь расскажу, какой же метод кодирования дает максимально возможные результаты при кодировании (при первом «визуальном» исследовании). Конечно, во-первых, использование параметра [-q0], который отвечает за качество работы самого алгоритма. Еще, читая help по Lame, я обратил внимание на параметр [-k], который по описанию должен отключить все фильтры, «грызующие» спектр. Действительно, при его использовании качество спектров значительно улучшилось, однако срез частот все равно был даже при 320kbps, и еще удивительнее то, что качество спектра было выше при кодировании переменным битрейтом (V0). Объяснение показалось мне совершенно нелогичным: я пользовался слишком новой версией кодека (3.96). Полный исходный спектр показал только кодек версии 3.93. Оказалось, что Lame 3.93.1 — это последняя версия «первозданного» алгоритма Lame. Потом его полностью перекроили, внеся определенные изменения, улучшая алгоритм кодирования переменным битрейтом, однако влияние параметра [-k] стало очевидно слабее. Таким образом, подводя итог, наилучший (еще раз обращу внимание, при первом «визуальном» исследовании) результат дает следующая комбинация параметров: кодек Lame 3.93.1, параметры кодирования [-q0 –k], при CBR [-b320], а при VBR [-V 0].

Тест

И так, самая суть, которая поможет выявить объективные результаты, распределив различные способы кодирования по местам. А участвовать в тесте будет следующий набор кодеков: Lame 3.93.1, Lame 3.96.1, Lame 3.97b3 и Lame 3.98a3. Каждым из них будет закодирован эталонный wav-файл с оригинального диска, которым у нас будет первые 1:37 минут песни Mylene Farmer «L'Amour n'est rien…» (44100 Hz, stereo).

С каждым кодеком будет проведено по 4 кодирования со следующими параметрами: [-b 320 -q0 -k], [-V 0 -q0 -k], [--preset insane] и [--preset extreme]. Как можно заметить, первые два — это CBR- и VBR-вариации на выбранные мной параметры как самые лучшие, два последних — стандартные CBR- и VBR-методы кодирования с максимальными значениями параметров по качеству, рекомендуемые разработчиками.

После каждого кодирования полученный mp3-файл будет переведен обратно в wav-формат и пропущен через специальную программу для спектрального анализа SpectraPro (можно воспользоваться и SpectraLab), в результате чего мы получим файл-таблицу с 2027 численными амплитудными значениями всего спектра звукового потока для левого канала (для уменьшения количества манипуляций работать будем только с одним каналом). Проделав тоже самое с эталонным wav-файлом, в обыкновенном Microsoft Excel посчитаем квадрат расстояния (квадрат разницы значений эталонного сигнала и кодированного) для каждого из 2027 значений частоты, и выведем среднее значение, которое и будет главным критерием при ранжировании всех результатов кодирования.

Таблица результатов

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

В колонке AvgDev среднее значение модуля разности амплитудных значений для каждого из 2027 частотных составляющих. Грубо говоря, это просто «среднее значение абсолютной разницы» между оригинальным звуком и кодированным.

В колонке StdDev приводится среднее значение квадрата разности амплитудных значений. Иначе, StdDev=AvgDev*AvgDev. Почему вообще мы возимся с квадратами? А это принятый в вычислительной математике подход, использующийся при оптимизации или аппроксимации. Считается, что квадрат расстояния (модуль разницы) между «желаемым» (в нашем случае, эталонным) значением и несколькими реальными (кодированными) при выявлении наибольшего приближения, позволяет дать более объективную оценку, нежели простая разница. Поэтому и мы будем ориентироваться на это значение.

В колонке FileSizeRange — результат ранжирования каждого mp3-файла по своему размеру. Значения от 0 до 1 (чем ближе значение к 1, тем меньше размер mp3-файла). А подсчитывается так: определяются максимальный и минимальный размеры среди всех файлов; из размера конкретного файла вычитается размер минимального и делится на разность максимального и минимального значений; последний результат вычитается из единицы, чтоб привести к виду «больше значение — лучше результат».

Колонка StdRange отображает результат ранжирования по среднему квадрату расстояний (далее — просто квадрат), то есть по колонке StdDev. Значения также от 0 до 1, и чем больше значение, тем качественнее результат. Вычисляется так же, как и при ранжировании по размеру файла: находится минимальное и максимальное значения квадрата; из текущего квадрата вычитается минимальный и разница делится на разницу максимального и минимального значений; последний результат вычитается из 1. Эта колонка самая главная, размещающая способы кодирования на шкале от 0 до 1, и по которой можно сказать, на сколько именно один результат хуже другого. ◢Продолжение >>

© Shonn, 10.2006

Использование материала возможно только с согласия автора.

◢Продолжение >>

~Nathaley mp3 exchange~  Советы  MP3-кодирование. Часть 1: Максимум качества и вся правда о Lame
наверх | главная | условия | трейдеры | i need | i like | советы | каталог
При использовании материлов с сайта ссылка на сайт и автора обязательна!
© Copyright Nathaley, 2005      © Design by Shonn
Используются технологии uCoz