AIMP3 против foobar2000: исследование звукового тракта

Дата обновления: 06 Августа 2013
2013-08-06T14:34
Audiophile's Software

Внимание: с выходом новой версии AIMP3 большая часть результатов в этом обзоре стала неактуальной. Ознакомиться с обзором новой версии AIMP вы можете здесь.

Пролог

Следуя принципу «не foobar'ом единым», я решил заняться рассмотрением альтернативных плееров. Начну я конечно же с AIMP, так как он является вторым по популярности среди посетителей данного сайта (60% foobar2000, 20% AIMP).

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

Используемое оборудование и ПО

Microsoft Windows 7 Ultimate SP1 x64

AIMP v3.50 build 1277
foobar2000 core 1.2.9 + SoX Resampler 0.8.3
RightMark Audio Analyzer 6.3.0
Adobe Audition CS6
Sony Sound Forge 10.0c

Creative X-Fi XtremeGamer

В процессе исследования звуковой поток будет выводиться либо в файл, либо записываться с источника «What U Hear» карты Creative X-Fi XtremeGamer. В режиме Bit-Matched playback (Audio Creation mode) карта способна без внесения изменений пропускать через себя 24-битный поток.

Декодер

В плеере используются декодеры BASS. Собственно, здесь нас интересуют результаты декодирования для lossy форматов, т.к. для lossless результаты на выходе декодеров всегда идентичны (иначе это было бы грубой ошибкой). Сравнивать мы будем декодер AIMP3 с декодером foobar2000. Кодировать будем тестовый сигнал RightMark Audio Analyzer 16 бит/44.1 кГц с помощью LAME 3.99.5 с ключами -b 320 -q 0.

Чтобы не мучиться с записью, декодировать будем конвертерами AIMP и foobar2000 (т.к. декодеры там те же, что в плеерах). Но тут обнаруживается один интересный факт. Если в foobar2000 доподлинно известно, что декодирование и вся обработка происходят в формате 32-bit float, то в AIMP, похоже, с этим проблемы. Скажем, если воспроизводить закодированный MP3 файл, в окне статуса воспроизведения мы видим:

Здесь говорится о том, что с декодера поступает поток в формате 16 бит. Это не очень хорошо, т.к. MP3 файл может быть получен также и из 24-битного источника (этого точно знать нельзя, разрядность у lossy файлов отсутствует как таковая, а данные о разрядности источника не сохраняются), т.е. запись может иметь динамический диапазон больше 97 дБ (максимум для 16 бит), и тогда, при декодировании в 16 бит самые тихие звуки (ниже -97 dBFS) обрежутся. Что ж, это мы еще проверим. Пока займемся 16-битным источником.

Итак, в foobar2000 декодируем по накатанной схеме. В AIMP открываем конвертер и выбираем WAVE.

Для равноправия плееров форсируем в конвертере вывод в 32-bit float. Будет это так называемый padding (добивание из 16 бит до 32 нулями) или же декодер правда будет работать в 32 бит с плавающей точкой — сейчас разберемся.

А теперь посмотрим на отчет анализа полученных файлов.

Худшие опасения насчет AIMP подтвердились. Посмотрите на шумовую полку:

То, что 16-битный уровень шумов (-97 dBFS) сохраняется и после 20 кГц (где LAME уже применяет НЧ фильтр), говорит не иначе, как о том, что в процессе декодирования использовался формат 16 бит. Иначе шумы в зоне отсутствия сигнала были бы как у foobar2000 — куда ниже.

Но сразу успокою ярых поклонников AIMP, спектральный состав в диапазоне до 20 кГц идентичен:

И для обычных MP3 файлов, полученных из 16-битных источников, шумы ну уровне -97 дБ в диапазоне >20 кГц совершенно безобидны, т.к. даже при большом желании услышать их невозможно.

А теперь, чтобы выяснить таки, был ли ошибкой выбор 16-битного формата декодирования, перейдем к MP3 из 24-битного источника. А еще лучше — поиграем в максималиста и также поднимем частоту дискретизации до 48 кГц. Это воссоздает условия кодирования какого-нибудь DVD-Audio источника.

И сразу смотрим отчет.

Для наглядности я добавил анализ исходного WAV файла — чтобы иметь представление о реальных характеристиках 24-битного аудио. Итак, что мы видим? Во-первых интересно, что в данном случае при отсутствии сигнала (когда тестируются шумы) декодер AIMP выдает нам полный ноль (-400 dBFS для 32-битного формата). Это можно объяснить тем, что в MP3 данных в этот момент уровень сигнала описывается значениями намного ниже — 97 dBFS, и во время преобразования в 16-бит мы получаем конечно же тот самый круглый ноль. А потом этот ноль преобразовывается в заданный нами в конвертере формат — т.е. в 32-битный ноль, который соответствует -400 dBFS. Да, именно так — AIMP продолжает использовать при декодировании 16-битный формат. И это весьма прискорбно. Если foobar2000 по параметрам «уровень шумов» и «динамический диапазон» полностью соответствует исходному аудио, то у AIMP с динамическим диапазоном явно проблемы.

Чтобы окончательно утвердить разгром AIMP на этапе декодирования, проведем эксперимент: закодируем чистый тон с частотой 1 кГц и уровнем -110 дБ в MP3, а потом декодируем его.

Спектр исходного сигнала (24 бит 48 кГц):

Спектр сигнала кодированного в MP3 и декодированного foobar2000:

А теперь спектр на выходе декодера AIMP...

Полный штиль! Абсолютная цифровая тишина. Т.е., сигнал утерян. И, таким образом, динамический диапазон в 102 дБ (по результатам для AIMP) говорит, что все звуки тише -102 dBFS будут безвозвратно утеряны.

Еще печальнее, что 16-битное декодирование используется для всех lossy форматов — AAC, OGG, MPC...

1-0 в пользу foobar2000.

Обработчики

На данном этапе нас прежде всего интересует преобразование частоты и разрядности квантования. Посмотрим, какие возможности предлагает нам AIMP. Для того чтобы получить возможность ручного выбора разрядности и количества каналов, необходимо указать вывод DirectSound либо WASAPI Exclusive. В остальных случаях эти параметры выбираются автоматически, но об этом позже.

Вообще, сразу бросается в глаза фиксированный параметр частоты дискретизации. Т.е. при воспроизведении источников с различной частотой семплирования, нам придется или постоянно менять настройки вывода, или пользоваться встроенным ресемплером. Кстати, в случае, когла ASIO поддерживает автомат опорной частоты, значение семплрейта «as source» очень бы пригодилось... Что ж, может всё-таки стоит воспользоваться ресемплером? Давайте проверим его качество.

Итак, если мы будем воспроизводить, скажем, Audio CD, потом DVD Audio (с частотой семплирования, скажем, 96 кГц), то лучшим вариантом будет установить в настройках максимальную частоту — чтобы всё при необходимости преобразовывалось в 96 кГц. И опорную частоту звуковой карты тогда тоже стоит поставить 96 кГц.

В документации к AIMP явно не указано, какой алгоритм ресемплинга используется, но указано использование BASS Audio Library, так что вероятно, эта библиотека включает в себя и ресемплер. В любом случае, давайте наконец перейдем к тестированию.

Будем использовать также тестовый сигнал RightMark и конвертер AIMP3. Сигнал мы возьмем формата 24 бит/44 кГц, чтобы подробно исследовать качество передискретизации. Сравнивать будем с ресемплером SoX (Best, Aliasing: off) из foobar2000.

Посмотрим на результаты. Давайте по порядку.

Судя по АЧХ, AIMP использует минимально-фазовый фильтр. Об этом говорит пологость среза. Напротив, SoX, в данном случае установлен в режим с линейной фазой, крутизна среза очень высока. В общем, АЧХ у обоих ресемплеров вполне приемлемая.

А вот на графиках интермодуляционных и гармонических искажений мы видим большое количество искажений у AIMP, в т.ч. новые спектральные составляющих в диапазоне >22.05 кГц, которые представляют собой алиазинг (отражение частот) и обусловлены плохим подавлением. Здесь AIMP яявно проигрывает SoX'у, график которого практически идеален.

Теперь продолжим тестирование ресемплера AIMP по методике, которую я уже использовал в сравнительном тесте ресемплеров. Начнем со спектрограммы. Напомню: тестовый сигнал имеет разрядность 16 бит, так что мы увидим реальные результаты, которые получатся при воспроизведение, обычных записей, например Audio CD.

Вот те самые искажения в области слышимых частот, которые мы видим на графиках RMAA. НЧ фильтр явно работает очень плохо — настолько плохо, что алиазинг даже восприниматься на слух (проверено на семgле udial). Теперь для сравнения взгляните на результаты SoX:

Срез на уровне 21 кГц. Подавление отражений идеальное.

Перейдем к тесту звона.

Вверху импульсная характеристика AIMP, внизу — foobar2000 SoX. Как видно из характеристики AMP., фильтр всё же не минимально фазовый, т.к. присутствует упреждающий звон. Тем не менее, уровень и продолжительность звона несколько меньше, чем у SoX — и это единственное преимущество, полученное ценой плавного спада АЧХ. Так или иначе, у SoX звон в любом случае находится в области 20 кГц и на уровне —120 dBFS и на 16-битные записи он не возымеет абсолютно никакого влияния (а на 24-битных просто не будет слышен).

Таким образом, алгоритм ресемплирования AIMP однозначно проигрывает, даже стандартному фубаровскому PPHS (смотрите тест). 2-0 в пользу foobar2000, а мы тем временем переходим к тесту преобразования разрядности.

Для проверки мы будем преобразовывать 24-битную запись в 16-битную, имитируя таким образом воспроизведение 24-битного контента на картах без поддержки данного формата.

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

вместо этого:

получить вот такое:

Каким же образом выполняет преобразование AIMP? Настроек дизеринга я в нем не нашел. Возможно, дизеринг включается автоматически? Давайте проверим.

Возьмем ту самую синусоиду с уровнем -60 dBFS в формате 24/96 и выполним преобразование конвертером AIMP в 16 бит. Затем проанализируем спектр результата с помощью RMAA.

Очень жаль, но AIMP выполняет преобразование простым отбрасыванием младших разрядов, без использования дизеринга. Результат — значительные гармонические искажения и малый динамический диапазон. 3-0 в пользу foobar2000.

Итак, у нас осталось преобразование каналов. Я не буду слишком подробно останавливаться на данном вопросе. Процитирую справку AIMP:

Вопрос:
Что делает опция «Расширенная обработка каналов» из настроек воспроизведения?

Ответ:
Опция отвечает за включение микширования каналов, если количество каналов на входе не равно количеству на выходе. При отключенной опции исходные каналы будут либо дублироваться, либо отбрасываться.

Пример 1:
Исходный файл имеет 5.1 (6 каналов), а на выходе стерео (2 канала). При отключенной опции в колонках будет воспроизводиться только 1-й и 2-й каналы исходного сигнала.
Если же опцию включить — на левый канал пойдет микс 1-го, 3-го (левые каналы) и 5-го (центральный) каналов, а на правый канал — микс 2-го, 4-го (правые) и 5-го (центральный) каналов.

Пример 2:
Исходный файл имеет стерео формат (2 канала), а на выходе 5.1 (6 каналов).
При включенной опции — на 1-й и 3-й (левые) каналы 5.1 системы пойдет сигнал левого канала стерео, на 2-й и 4-й (правые) — пойдет правый канал, на центральный канал пойдет микс обоих каналов стерео, а на сабвуфер — низкочастотная составляющая центрального канала.

Таким образом все настройки микширования сводятся к вкл/выкл и выбору количества каналов. Нет возможности даже установить частоту среза для сабвуфера. А теперь вспомним Channel Mixer (стерео в 5.1, 5.1 в стерео) и Crossover DSP для foobar'a... Счет 4-0 в пользу foobar2000.

Вывод звука

Что мне нравится в AIMP3 — так это наличие всех необходимых компонентов прямо «из коробки». И если в foobar2000 вам придется ставить вывод ASIO, WASAPI Exclusive, декодеры APE, TAK и проч., то в AIMP вы имеете это всё сразу после установки.

Итак, у нас есть 4 метода вывода, рассмотрим их по порядку.

DirectSound

Этот метод предназначен для совместимости с Windows XP. В нем доступен выбор разрядности, и конфигурации каналов. Звук передается операционной системе в обычном режиме, работают все эффекты и преобразователи микшера Windows. В Windows Vista/7/8, например, сигнал будет приводиться к формату указанному в свойствах устройства вывода (панель управления Windows).

WASAPI Exclusive

Монопольный режим, который отключает все обработчики WASAPI. Аналогичен выводу Kernel Streaming в Windows XP. Доступен ручной выбор частоты, разрядности и количества каналов. Вся необходимая обработка (преобразование частоты, разрядности, количества каналов) производится плеером.

ASIO

Этот режим позволяет достичь двух целей: во-первых обойти обработчики Windows, во-вторых достичь низкой задержки вывода (что для обычного проигрывания музыки в общем-то не важно). Настройки разрядности и количества каналов диктуются драйвером ASIO.

WASAPI (Shared)

Стандартный метод вывода для Windows Vista/7/8. Аналогичен в этих ОС выводу DirectSound, но при этом частота семплирования, разрядность и количество каналов выбираются автоматически. Здесь надо рассказать чуть подробнее.

Частота семплирования и количество каналов выбирается в соответствии с разрядностью, установленной в параметрах звукового устройства Windows. При несоответствии количества каналов источника и устройства плеер выполняет микширование (в случае включенной расширенной обработки каналов).

Ресемплирование также выполняется плеером, что весьма и весьма странно. Дело в том, что WASAPI включает в себя т.н. resampler MFT (Media Foundation Transform). Этот ресемплер выполняет преобразование частоты всех поступающих на него аудио сигналов до значения указанного в свойствах звукового устройства Windows. API позволяет изменять качество алгоритма ресемплирования от 1 до 60 (значение по умолчанию — 30). Но даже в режиме по умолчанию качество ресемплера Windows превосходит качество ресемлпера AIMP.

Давайте проверим. Сравним ресемплер AIMP и ресемплер Windows, который будет работать, если в AIMP выбрать вывод через DirectSound.

Итак, сначала в панели Windows устанавливаем для карты формат 24 бит/96 кГц, опорную частоту карты также ставим 96 кГц. Устанавливаем в AIMP режим WASAPI (shared). Затем воспроизводим тестовый файл формата 24 бит/44.1 кГц и записываем его Райтмарком. В этом случае ресемплирование будет выполнять AIMP (в окошке статуса будет указан формат вывода 32 бит 96000 Гц). Далее устанавливаем в AIMP режим DS, частоту 44.1 кГц и разрядность 32 бита (float). Снова воспроизводим тестовый файл и записываем его Райтмарком. Таким образом преобразование 44.1->96 будет выполнять Windows.

Смотрим на результат. Ресемплер Windows действительно намного лучше встроенного в AIMP.

Хотел бы еще сказать о разрядности. foobar2000 в режиме WASAPI shared (там этот режим указан как DS) использует вывод в формате с плавающей точкой. Преимущества от этого очевидны — при таком формате исключается клиппинг на этапе вывода звука плеером. Для случаев, когда сигнал превышает допустимый уровень, Windows применяет специальный лимитер (limiter APO), по принципу работы аналогичный Advanced Limiter DSP в foobar2000. Таким образом аудио данные в foobar2000, начиная с декодера (для lossy) и включая вывод представляются в формате 32-bit floating point, что является очень большим преимуществом.

Что касается AIMP, то здесь всё весьма странно. Не смотря на то что в режиме DirectSound возможен выбор формата 32-bit (float), в режиме WASAPI (shared) плеер автоматически выбирает режим с фиксированной точкой. Тем самым сводя на нет возможности предотвращения клиппинга лимитером Windows. Выходит, что вывод DirectSound с ручной установкой частоты и количества каналов предпочтительней, чем WASAPI.

Итог

Здесь я хотел бы еще раз вернуться к декодированию. В AIMP поток от декодера идет в формате 16 бит, а следовательно, при наличии превышения уровня в источнике (скажем, MP3), сразу же происходит клиппинг, и никакие лимитеры уж не помогут. У foobar2000 же есть масса методов борьбы с клиппингом — ReplayGain, Advanced Limiter и другие DSP, регулятор громкости. В случае вывода через WASAPI shared (DS) сработает лимитер Windows, или опять же можно воспользоваться занижением громкости для приложения в микшере Windows. AIMP же лишен всех этих возможностей (несмотря на наличие поддержки ReplayGain и ограничителя — всё это сводится на нет из-за декодирования с фиксированной точкой). И по моему мнению это делает его непригодным для качественного воспроизведения аудио.

Итак, что касается возможностей обработки и качественного вывода звука — здесь полная и безоговорочная победа foobar2000 со счетом 5-0. Насчет удобства — всё конечно же индивидуально. Но если качество для вас является необходимым условием, то выбор очевиден.

[Обсудить на форуме]


Информация от спонсора

BezProgramm.net: программы первоочередной важности для Вашего ПК. Здесь Вы можете бесплатно, без регистрации и смс скачать один из лучших браузеров для Windows — браузер Opera. Программу отличает удобство и прекрасная конфигурируемость.

 
   
Категория: Авторские статьи | Автор: | Добавил: Audiophile
Просмотров: 59484| Рейтинг: 5.0/5, голосов: 2
Комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]