Эволюция кодирования аудио
На дворе 2014-й год, с момента появления первого MP3 кодировщика прошло уже 20 лет. Но то, что большинство из нас до сих пор спокойно слушает музыку в формате MP3 — вовсе не значит, что прогресс всё это время топтался на месте. И это касается не только развития алгоритма кодирования MP3, но и эволюции кодирования аудио с потерями вообще — в виде новых, более совершенных кодеков, действительно позволяющих получить лучшее качество при меньшем размере. Такие форматы, как OGG Vorbis, AAC, WMA, Musepack, — давно оставили позади устаревший MP3 с его многочисленными ограничениями и недостатками.
Параллельно, всё большие обороты набирает кодирование без потерь (lossless). Но из-за больших объемов данных на сегодняшний день оно всё еще непригодно для полномасштабного использования — особенно для портативных устройств с ограниченным объемом памяти, для потокового вещания в сети, и просто для быстрого обмена музыкой в интернете (надо признать, что не у всех и не всегда под рукой есть 100-мегабитный доступ в интернет).
Итак, MP3 устарел, и ему определенно созрела замена. Только как быть пользователю непосвященному, но желающему добиться максимально качественного звучания с минимальными затратами объемов памяти? Ведь альтернативных кодеков довольно много: Apple продвигает с помощью своего iTunes Store формат AAC (Advanced Audio Coding — позиционируется как преемник MP3), Microsoft — свой собственный лицензируемый WMA (Windows Media Audio), Xiph.Org предлагает нам свободный кодек OGG Vorbis. Кроме того, всё большую известность приобретает новый высокотехнологичный формат Opus. Также не забываем о всё еще не сдающем свои позиции (с 2009-го года) новаторском формате Musepack. Так который из этих кодеков выбрать?
Однозначного ответа на этот вопрос нет — и именно поэтому я пишу эту статью.
Как определиться?
Выбор того или иного кодека зависит от конкретной задачи. А именно:
1. От оборудования и ПО, с помощью которого будет воспроизводиться звук. Т.е. от наличия поддержки того или иного формата аудио, а также качества воспроизведения (им желательно руководствоваться при выборе битрейта). 2. От объема памяти, который будет выделен под конечный материал. Соответственно подбирается больший или меньший целевой битрейт/качество.
Ну и, конечно же, необходимо кроме формата и битрейта подобрать оптимальный кодировщик и параметры кодирования. При этом надо понимать, что различные форматы/кодеры по-разному проявляют себя на разных диапазонах битрейта.
Таким образом, алгоритм примерно следующий:
1) Выяснить, какие форматы поддерживает целевое устройство.
2) Определиться, сколько места вы сможете выделить под аудио материал, а также определить суммарную продолжительность аудио предназначенного для кодирования.
3) Вычислить нужный битрейт по формуле: битрейт = дисковое_пространство(в килобитах) / суммарная_продолжительность(в секундах).
4) В соответствии с битрейтом выбрать из поддерживаемых форматов оптимальный (об этом далее).
5) Подобрать наилучший кодер и параметры к нему.
Подробнее о наших героях
AAC
Развитие методов сжатия данных и психоакустики постепенно приводило к тому, что стандарт МР3 стал «тесным» для реализации новых идей в кодировании аудио. В результате, к 1997 году институтом Фраунгофера (Fraunhofer IIS), который в начале 90-х создал МР3, а также компаниями Dolby, AT&T, Sony и Nokia — был разработан новый метод компрессии аудио — Advanced Audio Coding (AAC), вошедший в стандарты MPEG-2 и MPEG-4. Основными отличиями от стандарта МР3 стали:
- поддержка более широкого набора форматов (вплоть до 48 каналов) и частот дискретизации звука (от 8 кГц до 96 кГц);
- более эффективный и простой банк фильтров: гибридный банк фильтров МР3 был заменен обычным MDCT (модифицированным дискретным косинусным преобразованием);
- более широкие пределы варьирования частотно-временного разрешения в банке фильтров — в восемь раз (в МР3 — в три раза) — привели к улучшению кодирования транзиентов (переходных процессов) и стационарных участков аудиосигнала;
- более качественное кодирование частот выше 16 кГц;
- более гибкий режим кодирования стереосигналов, позволяющий переключаться в режим M/S («joint stereo») независимо в различных частотных полосах;
- дополнительные возможности стандарта, повышающие эффективность компрессии: технология формирования шума во временной области (TNS), предсказание MDCT-коэффициентов по времени (long term prediction), режим параметрического кодирования стереосигнала (parametric stereo), синтез шумов (perceptual noise substitution), технология восстановления высоких частот (SBR).
Благодаря этим особенностям, стандарт AAC способен достигать более гибкого и эффективного, а значит — и более качественного кодирования звука. В результате широкого распространения формата МР3, стандарт AAC до сих пор не приобрел сравнимой с МР3 популярности. Тем не менее, AAC является основным форматом в популярном интернет-магазине iTunes Store, плеерах iPod, iTunes, телефоне iPhone, игровых приставках PlayStation 3, Nintendo Wii и в цифровом радиовещании DAB+/DRM.
OGG Vorbis
Ogg Vorbis — это относительно новый универсальный формат аудио компрессии, официально вышедший летом 2002 года. Он принадлежит к тому же типу форматов, что и МР3, AAC, VQF и WMA, то есть к форматам компрессии с потерями. Психоакустическая модель, используемая в Ogg Vorbis, по принципам действия близка к МР3 и иже с ними, но и только — математическая обработка и практическая реализация этой модели в корне отличаются, что позволяет авторам объявить свой формат совершенно независимым от всех предшественников.
Главное неоспоримое преимущество формата Ogg Vorbis — это его полная открытость и свободность. Более того, в нем использована новейшая и наиболее качественная психоакустическая модель, из-за чего соотношение битрейт/качество значительно ниже, чем у других форматов. Как результат — качество звука лучше, но размер файла меньше.
В формате имеется большое количество достоинств. Например, формат Ogg Vorbis не ограничивает пользователя только двумя аудио каналами (стерео — левый и правый). Он поддерживает до 225 отдельных каналов с частотой дискретизации до 192 кГц и разрядностью до 32 бит (чего ранее не позволял ни один формат сжатия с потерями), поэтому Ogg Vorbis великолепно подходит для кодирования 6-ти канального звука DVD-Audio. К тому же, формат OGG Vorbis — sample accurate. Это гарантирует, что звуковые данные перед кодированием и после декодирования не будут иметь смещений или дополнительных/потерянных сэмплов относительно друг друга. Это легко оценить, когда вы кодируете non-stop музыку (когда один трек постепенно входит в другой) — в итоге сохранится целостность звука.
Возможностью потокового вещания сейчас никого не удивишь, но у этого формата она заложена с самых основ. Это дает формату достаточно полезный побочный эффект — в одном файле можно хранить несколько композиций с собственными тегами. При загрузке такого файла в плеер должны отобразиться все композиции, будто их загрузили из нескольких различных файлов.
Отдельно стоит упомянуть достаточно гибкую систему тегов. Заголовок тегов легко расширяется и позволяет включать тексты любой длины и сложности (например, текст песни), перемежающиеся изображениями (например, фотография обложки альбома). Текстовые теги хранятся в UTF-8, что позволяет писать хоть на всех языках одновременно и исключает возможные проблемы с кодировками. Это значительно удобнее различных ухищрений типа id3 тегов.
Ogg Vorbis по умолчанию использует переменный битрейт, при этом значения последнего не ограничены какими-то жесткими рамками, и он может варьироваться даже на 1 кбит/с. При этом стоит заметить, что форматом жестко не ограничен максимальный битрейт, и при максимальных настройках кодирования он может варьироваться от 400 кбит/с до 700 кбит/с. Такой же гибкостью обладает частота дискретизации — пользователям предоставляется любой выбор в пределах от 2000 Гц до 192000 Гц.
Ogg Vorbis был разработан сообществом Xiph.Org для того, чтобы заменить все платные запатентованные аудио форматы. Ogg Vorbis довольно скоро получил полную поддержку на всех известных платформах (Windows, PocketPC, Symbian, DOS, Linux, MacOS, FreeBSD, BeOS и др.), а также большое количество аппаратных реализаций.
WMA
Windows Media Audio — лицензируемый формат файла, разработанный компанией Microsoft для хранения и трансляции аудиоинформации.
Изначально формат WMA рекламировался как альтернатива MP3, но на сегодняшний день Microsoft противопоставляет ему формат AAC. Номинально формат WMA характеризуется хорошей способностью сжатия, что позволяет ему «обходить» формат MP3 и конкурировать по параметрам с форматами Ogg Vorbis и AAC. Но, как было показано независимыми тестами, а также субъективной оценкой, качество форматов всё-таки не является эквивалентным, а преимущество — даже перед MP3 — однозначным, как это утверждает компания Microsoft.
Musepack
MusePack (mpp, mp+, mpc, MPEG+) — нелицензируемый формат файла для хранения аудиоинформации, распространяемый по GNU General Public License.
Качество кодирования MPC на высоких битрейтах (160 Кбит/с и выше) заметно (если не сказать значительно) выше качества, обеспечиваемого MP3.
Главные преимущества:
- Формат не производит второе dct-преобразование, он фактически не страдает артефактами pre-echo, в отличие от таких форматов как MP3, Vorbis, AAC и WMA.
- Более эффективные алгоритмы переменного битрейта. Если проследить, как изменяется битрейт во время проигрывания треков MPC, можно заметить, что для более простых участков кодер выделяет меньший битрейт, а для сложных — значительно больший, иногда выше 400 кбит/с. Так же тут стоит упомянуть один интересный факт: кодер МР3 в режиме VBR для тишины выделяет битрейт 32 кбит/с (при частоте дискретизации 44100 Гц), AAC и OGG Vorbis — 2кбит/с, Musepack же кодирует тишину с минимальными затратами, <1 кбит/с (например, минута тишины займет каких-то 514 байт). Всё это говорит о чрезвычайной «экономности» данного кодера.
- Мощная и гибкая психоакустическая модель. Тут можно упомянуть, например, динамический НЧ фильтр на базе фреймов (в других кодерах устанавливается фиксированная полоса пропускания для каждой предустановки качества).
- Более продвинутое сжатие, основанное на оптимизированных таблицах Хаффмана (тот же LAME MP3 впустую тратит около 20% битрейта — только лишь из-за несовершенного математического сжатия)
Последняя версия кодера датирована 2009-м годом.
Opus
Opus — последнее слово в области lossy кодирования аудио. Сочетает в себе новейшие разработки — низко-латентный кодек CELT от Xiph.Org и ориентированный на речь кодек SILK, разработанный Skype. Оба эти кодера в значительной степени модифицированы и благодаря этому очень эффективно взаимодействуют. Opus может не только незаметно переключаться между реализзациями SILK и CELT, но также и работать в гибридном режиме — когда SILK кодирует диапазон до 8 кГц с линейным предсказанием, а CELT — всё что выше, с использованием МДКП.
Изначально Opus разрабатывался как кодер с очень низкой задержкой (в среднем 22.5 мс) и хорошей устойчивостью к потерям, предназначенный для онлайн трансляций и перформансов. Однако, благодаря основательному подходу разработчиков, Opus оказался достойным соперником для других кодеков и в области сжатия аудио для хранения.
На сегодня независимые тесты показывают однозначное превосходство Opus над всеми другими форматами в районе 64 и 96 кбит/с. Отдельные субъективные тесты также подтверждают превосходство кодека и на более высоких битрейтах (вплоть до 200 кбит/с).
Opus отличается наиболее совершенной на сегодня психоакутсической моделью и непревзойденной гибкостью битрейта (от 1 до 256 кбит/с на канал, с приращением ±0.4 кбит/с). На сегодня он имеет довольно широкую программную поддержку, в частности уже поддерживается несколькими плеерами для Android OS.
Подбор формата, кодера и параметров
Теперь непосредственно к сути дела.
Чтобы облегчить вам выбор, я хотел бы поделиться своим опытом, полученным в ходе многочисленных сравнений, прослушиваний, а также на основе анализа результатов открытых слуховых тестов.
Итак, ниже я расскажу о наиболее подходящих для каждого отдельного случая кодерах, а также о правильном выборе параметров. Для конвертирования рекомендую использовать foobar2000 (подробно настройка конвертера описана здесь), собственно параметры указаны как раз для него. Кроме того, для foobar2000 есть большое количество полезных DSP, которые могут нам пригодиться для предварительной обработки аудио.
Для тех же, кто собирается конвертировать через консоль или другую программу: переменную %s надо заменить на имя файла-источника (или аналогичную переменную), а %d — на имя выходного файла.
Обратите внимание, что для каждого диапазона битрейта указаны возможные варианты форматов: первый — самый приоритетный. Если же ваш плеер не поддерживает первый вариант — обратите внимание на следующий, и т. д. Также должен сразу сказать, что кодек WMA (в силу его закрытости и заброшенности разработчиком) особым качеством не отличается, но всё же в большинстве случаев лучше, чем MP3. Учитывая, что некоторые устройства из альтернатив поддерживают только WMA, я буду давать рекомендации для каждого из пяти описанных здесь форматов, включая Windows Media Audio.
Насчет битрейтов: надо понимать, что оптимальным режимом кодирования является т. н. True VBR, т. е. режим с целевым качеством, а не битрейтом. В идеале результатом является трек с переменным битрейтом, но постоянным качеством (не приравнивайте эти два понятия — более сложным фрагментам трека для поддержания качества нужно больше бит). Таким образом битрейт на выходе — трудно предсказуем. Потому значения битрейтов ниже указаны только как примерные, по возможности — средние для большого количества композиций различной сложности.
Упоминаемые в этой статье, а также некоторые другие кодеры, с русскими описаниями основных параметров и рекомендациями можно найти на странице кодеров и утилит.
Сверхнизкие битрейты (~25—40 кбит/с)
Этот диапазон неплохо подходит для кодирования аудиокниг, и в данном случае вариант может быть только один — AAC, а точнее, Nero AAC. Параметры следующие:
-lc -q 0.35 -ignorelength -if - -of %d
При этом материал должен быть предварительно преобразован в моно и ресемплирован до частоты 22050 Гц (желательно ресемплером SoX). На выходе получим обычное Low Complexity AAC с битрейтом около 25 кбит/с.
Для музыки в этом диапазоне тоже есть варианты:
1) Nero AAC. Тут никаких преобразований не нужно:
-q 0.15 -ignorelength -if - -of %d
На выходе — High Efficiency AAC v2 (с параметрическим стерео и синтезом ВЧ), ~35 кбит/с. Прекрасный вариант для интернет-радио и низкой пропускной способностью канала. Только тут надо не забывать, что декодер в плеере должен поддерживать HE-AACv2, иначе получите полное отсутствие ВЧ и монофонию.
2) Opus — довольно приличное звучание с полным и естественным (без синтеза, как у AAC) частотным диапазоном. К сожалению, на этом битрейте Opus еще несколько сужает стерео-панораму.
--bitrate 35 - %d
3) OGG Vorbis AoTuV — чуть более сильные искажения, чем у Opus и частотный диапазон обрезанный до 13 кГц, однако более натуральная стерео-панорама. Командная строка:
-s %r -Q -q-2 - -o %d
Полученные таким образом файлы должны быть полностью совместимы со стандартными декодерами OGG Vorbis. Битрейт — аналогичный — около 35 кбит/с.
4) WMA 10 Pro. Для таких случаев у Microsoft тоже есть что-то наподобие SBR (синтез ВЧ), звучит не так плохо, как могло бы. Правда битрейт чуть выходит за рамки — 48 кбит/с.
-silent -a_codec WMA9PRO -a_mode 3 -a_setting 48_44_2_16 -input %s -output %d
Учтите, что старые (особенно «железные») декодеры не поддерживают WMA 10. Для такого случая можно использовать WMA 9.2 (кодер тот же), правда, его качество на низких битрейтах значительно хуже.
-silent -a_codec WMA9STD -a_mode 3 -a_setting 48_44_2 -input %s -output %d
Низкий битрейт, ~64 кбит/с
Изначально я думал сразу перейти к более высоким скоростям. Но так как относительно недавно на hydrogenaudio.org прошло сравнение кодеров именно на этом битрейте, грех его пропустить.
1) Opus — однозначный лидер на 64 кбит/с. --bitrate 35 - %d
Обеспечивает натуральное кодирование как частотного диапазона, так и стерео-панорамы, с вполне приемлемым уровнем искажений.
2) QAAC: -s -v 64 --he -q 2 --ignorelength - -o %d
На выходе имеем HE-AAC (с SBR, но без Parametric Stereo), что должно поддерживаться различными iPod'ами и тому подобным.
3) OGG Vorbis AoTuV — хоть и оказался довольно далеко от QAAC, но всё же:
-s %r -Q -q0 - -o %d
4) И на всякий случай WMA 10 Pro:
-silent -a_codec WMA9PRO -a_mode 3 -a_setting 64_44_2_16 -input %s -output %d
Для старых декодеров — WMA 9 Standard:
-silent -a_codec WMA9STD -a_mode 3 -a_setting 64_44_2 -input %s -output %d
Чуть выше, ~96 кбит/с
1) Как показал последний тест, лучше всего с этим битрейтом справляется кодер Opus:
-s %r -Q -q1 - -o %d
2) QAAC -s -V 48 --ignorelength - -o %d
3) OGG Vorbis AoTuV -s %r -Q -b 96 - -o %d
Стандарт де-факто, 128 кбит/с
Интересный факт: многие утверждают, что для MP3 128 кбит/с — «пограничный битрейт», с которого начинается неотличимое от оригинала качество. Пожалуй, это так... для пластмассовых китайских колонок и русского шансона. Реально же этот порог находится где-то около 200 кбит/с, причем новые форматы дают на этом битрейте более стабильное качество.
Современным кодерам эту планку в 128 кбит/с удалось занизить чуть ли не в два раза (опять же, по заявлениям разработчиков). Но, тем не менее, если у вас более-менее приличная акустика (или наушники), на сложных фрагментах разницу можно уловить и при 128 кбит/с.
1) Opus --bitrate 128 - %d
2) OGG Vorbis AoTuV -s %r -Q -b 128 - -o %d
3) QAAC -s -V 60 --ignorelength - -o %d
4) WMA 10 Pro -silent -a_codec WMA9PRO -a_mode 3 -a_setting 128_44_2_24 -input %s -output %d
Для старых декодеров — WMA 9 Standard:
-silent -a_codec WMA9STD -a_mode 3 -a_setting 128_44_2 -input %s -output %d
~160 кбит/с
В этом диапазоне разница межу кодерами Nero, QuickTime AAC и Vorbis практически сходит на нет. Но здесь уже на сцену выходит Musepack. Как раз на этих битрейтах начинает проявляться его преимущество (за счет принципиально другого алгоритма сжатия)/ Что касается соперничества Musepack с Opus — в данном диапазоне битрейтов они находятся примерно на одном уровне качества. Однако в пользу Opus говорит его увеличивающаяся программная поддержка и перспективы дальнейшей разработки.
1) Opus --bitrate 160 - %d
2) Musepack --silent --quality 5 - %d
3) QAAC -s -V 80 --ignorelength - -o %d 3) OGG Vorbis AoTuV -s %r -Q -q5 - -o %d
4) WMA 9 Standard -silent -a_codec WMA9STD -a_mode 3 -a_setting 160_44_2 -input %s -output %d
Порог прозрачности: ~200 кбит/с
То, о чем я говорил. При этом битрейте практически все кодеры дают прозрачный для большинства слушателей звук. И именно этот диапазон является оптимальным в плане размер/качество.
Кстати, у LAME MP3 в этом районе тоже находится подобный порог (VBR V2), но у этого кодека очень большие проблемы с пре-эхом (искажения предшествующие резким всплескам сигнала), а на слух часто ощущается Noise Shaping (шумы от ошибок квантования таким образом переносятся в высокочастотную область).
У таких же кодеков, как Vorbis, AAC и MPC (не говоря уже об Opus), на этом пороге начинается четкая прорисовка в композициях даже фоновых шумов.
1) Opus --bitrate 200 - %d
2) Musepack --silent --quality 6 - %d
3) QAAC: -s -V 90 --ignorelength - -o %d
4) OGG Vorbis AoTuV: -s %r -Q -q6 - -o %d
5) WMA 10 Pro:
-silent -a_codec WMA9PRO -a_mode 3 -a_setting 192_44_2_24 -input %s -output %d
WMA 9 Standard, максимальный битрейт воспринимаемый старыми декодерами:
-silent -a_codec WMA9STD -a_mode 3 -a_setting 192_44_2 -input %s -output %d
Разумный максимум: ~320-350 кбит/с
Должен обратить ваше внимание: после ~225 кбит/с повышение битрейта чаще всего уже не дает слышимого прироста качества, а размер файлов, естественно увеличивается. Но всё же, для особенно сложных композиций (и хорошей аппаратуры/ушей) существуют более высокие настройки качества. На этих битрейтах для таких кодеров как Musepack, Vorbis и Opus мне даже не удалось найти киллер-семплов (проблемные семплы, на которых явно проявляются недостатки алгоритма кодирования). Итак:
1) Opus --bitrate 320 - %d 1) OGG Vorbis AoTuV -s %r -Q -q9 - -o %d
2) Musepack --silent --quality 10 - %d
3) QAAC -s -V 127 --ignorelength - -o %d
4) WMA 10 Pro -silent -a_codec WMA9PRO -a_mode 3 -a_setting 384_44_2_24 -input %s -output %d
Опережая ваши вопросы: да, для некоторых из этих кодеров существуют и более высокие настройки качества, но дальнейшее их повышение уже не имеет никакого смысла. Разве что вам действительно не важен объем занимаемый музыкой памяти, а поддержкой lossless ваше устройство не располагает.
[Обсудить на форуме]
Информация от спонсора
Shift+7: доступные ответы на ваши вопросы. На нашем сайте вы сможете узнать, как сделать правильный выбор фотоаппарата. В статье рассматривается несколько вариантов бюджета, а также важнейшие характеристики, на которые следует обращать внимание.
|