Copyright (C) 2014, Taras Kovrijenko
Полное или частичное копирование текста допускается только с письменного разрешения автора.
О тесте
Данный тест призван выяснить, какой ресемплер для плеера foobar2000 обладает самым высоким качеством в режиме 44->48 kHz.
Для того чтобы Вы вникли в суть дела, рекомендую прочитать статью из журнала «Звукорежиссер» под названием «Конвертеры частоты дискретизации».
1. ПО и конфигурация ПК
В тесте использовалось следующее ПО:
Core (2011-06-05 09:16:20 UTC)
foobar2000 core 1.1.7
foo_benchmark.dll (2011-08-23 09:44:06 UTC)
Decoding Speed Test 1.1
foo_converter.dll (2011-06-05 09:13:50 UTC)
Converter 1.5
foo_dsp_resampler.dll (2011-08-23 09:42:57 UTC)
SoX Resampler 0.7.0
foo_dsp_spxresample.dll (2011-08-23 09:42:25 UTC)
Speex Resampler 0.1
foo_dsp_srcresample.dll (2011-08-23 09:42:40 UTC)
Secret Rabbit Code Resampler 0.1
foo_dsp_ssrc.dll (2011-08-23 09:43:14 UTC)
Resampler DSP (SSRC) 0.57
foo_dsp_std.dll (2011-06-05 09:14:22 UTC)
Standard DSP Array 1.0
foo_input_std.dll (2011-06-05 09:13:58 UTC)
Standard Input Array 1.0
foo_ui_std.dll (2011-06-05 09:14:24 UTC)
Default User Interface 0.9.5
ASIO4ALL 2.10
18/11/2015: foobar2000 1.3.9 with dbPoweramp/SSRC Resampler
RightMark Audio Analyzer 6.2.3
Adobe Audition 2.0
Sony Sound Forge 10.0c
Конфигурация компьютера:
Intel Core i3 530, 2.93 GHz; (Наборы инструкций x86, x86-64, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2)
2x2Gb DDR3 1333 MHz
2. Тест качества
2.1 Подготовка
Для начала создадим тестовые звуковые файлы.
- Первый сигнал будет представлять собой синусоиду с плавающей частотой в диапазоне от 1 до 22050 Гц. Вот параметры генерации данного сигнала в Adobe Audition:
С помощью визуального сравнения спектров исходного и результирующего файла мы сможем проанализировать качество работы ресемплера, а именно полосу пропускания и степень подавления копий спектра возникших в результате повышения частоты дискретизации. Параметры, спектрограмма и АЧХ нашего сигнала:
File name : Untitled.wav
Duration : 0:04.000 (176 400 samples)
Sample rate : 44100 Hz
Channels : 2
Bits per sample : 16
Bitrate : 1411 kbps
Codec : PCM
Encoding : lossless
- Второй тестовый семпл представляет собой единичный импульс с минимальной продолжительностью (1/44100 с) и максимальной амплитудой. С его помощью мы сможем увидеть импульсный отклик фильтров (ресемплеров), определить их тип (минимально-фазовый, линейный) а также оценить звон. Создан в программе Sony Sound Forge 10:
File name : impulse.wav
Duration : 0:04.000 (176 400 samples)
Sample rate : 44100 Hz
Channels : 2
Bits per sample : 16
Bitrate : 1411 kbps
Codec : PCM
Encoding : lossless
2.2 Обработка и анализ
1. Загружаем тестовые файлы в foobar2000 и конвертируем в WAV с включением одного из тестируемых ресемплеров. Выходным форматом будет 32 bit WAV с плавающей точкой, т.к. именно в таком виде плагины foobar2000 работают с аудио. Получаем следующие файлы (для PPHS):
Duration : 0:04.000 (192 000 samples)
Sample rate : 48000 Hz
Channels : 2
Bits per sample : 32
Bitrate : 3072 kbps
Codec : PCM (floating-point)
Encoding : lossless
File name : impulse_PPHS.wav
Duration : 0:04.000 (192 000 samples)
Sample rate : 48000 Hz
Channels : 2
Bits per sample : 32
Bitrate : 3072 kbps
Codec : PCM (floating-point)
Encoding : lossless
2. Загружаем результат для первого тестового файла в Adobe Audition и смотрим на спектрограмму.
3. Анализируем результат обработки этого же тестового файла программой RightMark Audio Analyzer.
4. Загружаем результат обработки второго файла в Adobe Audition и смотрим на импульсный отклик.
2.3 Результаты
PPHS
Что же мы видим? Проанализировав графики, можно заключить что ресемплирование было произведено весьма качественно, крутизна среза частот небольшая, начинается спад АЧХ примерно на уровне 21600 Гц (теоретическая максимальная частота в исходом аудио - 22050Гц), что приемлемо. Подавления отражений спектра в диапазоне выше 22050Гц на достаточном уровне, но всё-же неидеально, хотя на слух это заметить невозможно. Импульсный отклик указывает на то, что это фильтр с линейной фазой: звон равномерно распределен до и после всплеска.
SSRC
Сразу бросается в глаза изменение продолжительности: обработка привела к увеличению продолжительности на 0.5 секунды. Вероятно, это баг плагина. Но вообще, данный ресемплер показал очень достойный результат. Подавление отражений спектра отличное (отражения не видны даже на спектрограмме), полоса пропускания - практически полная. На графике импульсного отклика заметен немного иной характер звона, чем у PPHS - очевидно это связано с более крутым срезом. Тип фазы - линейная.
dbPoweramp/SSRC
По-видимому, это новая версия библиотеки SSRC. Здесь отсутствует баг с изменением продолжительности, а спад АЧХ более плавный. В остальном результаты совпадают.
SRC (Secret Rabbit Code)
Спад частот плавный, начиная примерно с 21200 Гц. Импульсный отклик очень схож с PPHS. Линейная фаза.
SoX (Sound eXchange)
Результат полностью соответствует настройкам: подавление отражений отличное, полоса пропускания - 95% (спад начинается примерно с 20900 Гц), фаза линейная.
Теперь же, для максимизации частотного диапазона регулятор passband установим на 99% + включим поддержку алиазинга (отражений спектра в области граничной частоты).
В этом режиме мы получили полную полосу пропускания, но ценой наличия отражений в области 22050 Гц (хотя с таким уровнем в -100 dBFS они конечно же слышны не будут), а также незначительно увеличенной продолжительности звона. В случае же отключенного алиазинга мы получим следующую картину:
В целом результат SoX можно считать аналогичным SSRC.
Speex
Этот совсем недавно появившийся плагин-ресемплер явно не отстает от своих соперников. Частотный срез располагается в диапазоне примерно 21300-21900 Гц. Фаза линейная.
Дополнительно: ASIO4ALL Resampler
Очевидно, что в данном случае разработчики значительно упростили алгоритм ресемплирования, чтобы он работал в реальном времени на большинстве процессоров. Как результат - плохое подавление алиазинга, даже в слышимом диапазоне частот.
2.4 О результатах
Все алгоритмы (кроме ASIO4ALL) показали более чем хорошие результаты и определенно не должны приводить к слышимому ухудшению звучания. Если же руководствоваться крутизной среза и степенью подавления отражений в его области, их всё-таки можно расположить следующим образом (в порядке убывания качества):
1. dbPoweramp/SSRC
2. SoX
3. Speex
4. SRC9 (Secret Rabbit Code)
5. PPHS
6. ASIO4ALL Resampler
Но не надо забывать, что качество — только одна сторона медали. А потому перейдем к тесту скорости.
3. Тест скорости
3.1 Методика тестирования
В качестве тестового файла выберем генерируемый программой RightMark Audio Analyzer сигнал с параметрами 16 бит 44.1 кГц. Тест производится с помощью плагина Decoding Speed Test для foobar2000 с включением одного из тестируемых DSP (настройки ресемплеров аналогичны приведенным на скриншотах выше).
Для минимизации погрешностей увеличим количество проходов до десяти, включим полную буферизацию файла в память а также повышение приоритета процесса.
3.2 Результаты
В результате теста получаем лог, который ниже приведен для каждого ресемплера.
PPHS
Info Read time: 0:00.000
Opening time: 0:00.008
Decoding time: 0:22.330
31.701x realtime
SSRC
Info Read time: 0:00.000
Opening time: 0:00.008
Decoding time: 0:30.914
22.899x realtime
dbPoweramp/SSRC
Info Read time: 0:00.000
Opening time: 0:00.000
Decoding time: 0:18.893
34.107x realtime
SRC
Info Read time: 0:00.000
Opening time: 0:00.008
Decoding time: 1:00.065
11.785x realtime
SoX (Best, Passband 99%, Allow aliasing)
Info Read time: 0:00.000
Opening time: 0:00.008
Decoding time: 0:07.665
92.356x realtime
Speex
Info Read time: 0:00.000
Opening time: 0:00.008
Decoding time: 1:50.764
6.391x realtime
3.3 О результатах
Показателем скорости является отношение продолжительности файла к времени его обработки (например, 10x realtime).
Самым быстрым оказался SoX, что объясняется поддержкой инструкций SSE3. Неплохую скорость показал стандартный ресемплер PPHS и SSRC. SRC9 и Speex в данных режимах оказались очень медленными и будут давать при воспроизведении сильную нагрузку на процессор (особенно на слабые).
Выводы
Ресемплер Sound eXchange явно выигрывает у остальных DSP и идеально подходит для ресемплинга в режиме реального времени. SSRC, хоть и незначительно, но превосходит SoX по качеству, правда при этом является медленным (в 3 раза медленнее). Как вы уже поняли, использовать сторонний компонент SSRC не нужно — теперь более новая версия встроена в плеер (при полной установке). И ешё: также существует еще один компонент — SSRC X, с возможностью тонкой настройки, однако на самых высоких настройках он всё же уступает версии dbPoweramp.
Учитывая скорость обработки, PPHS дал также приемлемые результаты, а вот SRC9 и Speex, хоть и дают высокое качество, но имеют слишком низкую скорость.
Ресемплер встроенный в ASIO4ALL использовать не рекомендуется, т.к. он хоть и избавит от менее качественной софтовой передискретизации драйверами некоторых звуковых карт, но всё равно может давать слышимые искажения.
P.S. Для того чтобы полностью раскрыть потенциал ресемплера, его тестирование лучше проводить на материале с высокой разрядностью — 24 бит и выше. При обработке же 16-битного материала нелинейные искажения вносимые обработкой (для данных ресемплеров/режимов их работы) находятся ниже шумов квантования. Тестирование работы ресемплеров с материалом более высокой глубины квантования неактуально, т.к. большинство материала в наших музыкальных коллекциях имеет разрядность 16 бит, а аудио более высокого качества, например DVD-Audio, имеет обычно частоту дискретизации 48 или 96 кГц и ресемплер в таком случае чаще всего не требуется.
Информация от спонсора
Теперь можно легко, бесплатно и без регистрации качать музыку с любых сайтов, которые вы посещаете. Программа ЛовиMusic позволит быстро и просто скачать музыку с zaycev.net, VKontakte, Odnoklassniki.ru и других ресурсов.
Немного не догоняю!
Я пользуюсь foobar-ом v 1.3.8, вывожу звук по USB на внешний ЦАП...
Мне НУЖНО ИЛИ НЕ НУЖНО включать Resampler (SoX) в настройках foobar-a ПРИ ВОСПРОИЗВЕДЕНИИ
во вкладке DSP Manager?
Или только при конвертации Hi-Res-а в WAV в настройках Converter setup..?