Конвертеры частоты дискретизации (SRC) повсеместно используются в работе с цифровым звуком даже тогда, когда пользователь об этом не подозревает. Практически любой АЦП и ЦАП, будь то дорогой внешний прибор или дешевая встроенная звуковая карта, работают с так называемой передискретизацией, то есть осуществляют собственно АЦ- и ЦА-преобразование с повышенной частотой дискретизации (до мегагерцовых значений) и пониженной разрядностью (чаще всего 1 бит). Такая передискретизация производится цифровыми методами в цифровом сигнальном процессоре (DSP) конвертера.
Программное изменение частоты дискретизации (передискретизация) применяется как независимо для пользователя — внутри семплера или при микшировании звуковых потоков с разной частотой дискретизации в операционной системе, — так и по желанию пользователя, например, при преобразовании проекта из формата 96 кГц в 44,1 кГц в процессе мастеринга Audio-CD.
Рис. 1. Восстановление тона 13 кГц интерполяцией нулевого порядка и частотно-ограниченной интерполяцией |
Существует популярное представление, что цифровой звук — это «ступеньки», аппроксимирующие звуковую волну, и когда ЦАП воспроизводит волну, аналоговый сигнал получается ступенчатым. На самом же деле правильнее представлять цифровую волну как мгновенные значения аналоговой волны в дискретные моменты времени. А ЦАП, чтобы восстановить аналоговую волну, осуществляет гладкую интерполяцию между цифровыми отсчетами. Вид этой интерполяции определяется фильтром передискретизации и, как правило, является приближением к частотно-ограниченной интерполяции с помощью sinc-функций. Это позволяет избежать искажений при работе с высокочастотными сигналами. На рис. 1 показан пример восстановления тона с частотой 13 кГц при частоте дискретизации 44,1 кГц. При «ступенчатой» интерпретации волна даже отдаленно не напоминает синусоиду, а корректная передискретизация восстанавливает тон практически идеально. Кстати, этот пример показывает еще один интересный факт: аналоговая волна может иметь более высокие пиковые значения, чем цифровые отсчеты, и это может перегружать ЦАП при воспроизведении.
Алгоритмы передискретизации
Наиболее просты алгоритмы изменения частоты дискретизации в целое число раз. При уменьшении частоты дискретизации в N раз частота Найквиста (половина частоты дискретизации) становится в N раз ниже, т.е. частотный диапазон сужается. Поэтому для предотвращения наложения спектра (алиасинга) применяют НЧ-фильтр, подавляющий все частотные составляющие выше будущей частоты Найквиста. После фильтрации отсчеты сигнала прореживаются в N раз. При этой операции спектр сигнала ниже новой частоты Найквиста остается неискаженным.
Для увеличения частоты дискретизации в M раз сигнал сначала интерполируется («разбавляется») нулями. Это сохраняет неизменным спектр сигнала ниже частоты Найквиста, но создает копии спектра выше частоты Найквиста. После этого возникшие копии спектра отфильтровываются НЧ-фильтром.
Понятно, что параметры алгоритма определяются свойствами НЧ-фильтра. Гладкость АЧХ и ФЧХ фильтра в полосе пропускания обеспечивает неискаженную передачу сигнала в допустимом частотном диапазоне. Степень подавления в полосе подавления определяет, насколько будут подавлены помехи, не укладывающиеся в допустимый частотный диапазон при уменьшении частоты дискретизации, или насколько будут подавлены возникшие копии спектра при увеличении частоты. Переходная полоса фильтра покажет поведение фильтра вблизи частоты Найквиста (для Audio-CD — вблизи 22 кГц). Форма импульсной характеристики фильтра покажет осцилляции, которые фильтр вносит в сигнал во временной области. В реальных фильтрах эти параметры взаимосвязаны (см. «Цифровые эквалайзеры», «Звукорежиссер» 8/2006). Например, для улучшения параметров частотной характеристики приходится использовать фильтры с более длинным импульсным откликом и большим количеством пульсаций во временной области.
Для передискретизации сигнала в нецелое число раз (например, из 96 кГц в 44,1 кГц) можно скомбинировать повышение и понижение частоты дискретизации в целое число раз (например, 44100 = =96000?M/N = 96000?147/320). Поскольку НЧ-фильтрация выполняется после повышения частоты дискретизации в M раз, но до понижения ее в N раз, то две фильтрации можно совместить в одну, установив частоту среза фильтра на минимум из двух необходимых частот среза. Отметим, что фильтр в данном случае работает над сигналом с повышенной в M раз частотой дискретизации.
Специальные алгоритмы полифазной фильтрации позволяют избежать явного вычисления такого промежуточного сигнала, сокращая число операций. Они сразу вычисляют отсчеты выходного сигнала как взвешенную сумму окружающих отсчетов входного сигнала и подмножества коэффициентов фильтра. При этом число операций почти не зависит от величин M и N, а зависит лишь от порядка интерполяции, то есть от числа взвешиваемых отсчетов входного сигнала.
Большинство конвертеров частоты дискретизации работают именно по принципу полифазной фильтрации, а в качестве фильтра используется НЧ-фильтр с линейной фазой.
Тестирование алгоритмов
Канадской студией Infinite Wave было организовано тестирование некоторых объективных параметров алгоритмов SRC в режиме преобразования записей из 96 кГц в 44,1 кГц (такой режим считается «трудным» из-за некратности частот дискретизации). Набор тестовых сигналов согласовывался с инженерами компании Weiss, участниками сообщества Mastering Web-board и автором статьи. В качестве тестовых сигналов использовались:
- скользящий тон с амплитудой -6 дБFS, охватывающий частоты от 0 до 48 кГц за 8 секунд. В качестве результата строятся спектрограммы преобразованного сигнала, по которым можно оценить нелинейные искажения, вносимые в сигнал, и наложение спектров (рис. 2). Динамический диапазон спектрограмм составляет 180 дБ;
- тон 1 кГц с амплитудами -0.1 и -60 дБFS. В качестве результата строится спектр преобразованного сигнала, показывающий нелинейные искажения и шумы квантования (рис. 3);
- серия импульсов, по которой во многих случаях можно восстановить ядро используемого НЧ-фильтра и проанализировать его АЧХ, ФЧХ и импульсный отклик. В качестве результата строится АЧХ фильтра в полосе пропускания (рис. 4) и переходной полосе (рис. 5), а также ФЧХ в полосе пропускания (рис. 6).
Рис. 2. Спектрограмма скользящего тона с нелинейными искажениями |
Рис. 3.Тон 1 кГц и нелинейные искажения |
Рис. 4. АЧХ фильтра передискретизации в полосе пропускания |
Рис. 5. АЧХ фильтра передискретизации в переходной полосе |
Рис. 6. ФЧХ фильтра передискретизации |
Входные файлы подавались на SRC с наилучшей поддерживаемой разрядностью (32 бит int, 32 бит float, 24 бит), в такой же разрядности записывались и результаты. Построение графиков велось с помощью модифицированной версии программы RightMark Audio Analyzer (RMAA), а также специально разработанных программ анализа. Сгенерированные графики доступны для сравнения на сайте http://src.infinitewave.ca
Какие же параметры алгоритмов можно оценить по приведенным графикам? Рассмотрим это на примере результатов SRC, встроенного в программу Sony Vegas 7.
На спектрограмме скользящего тона можно увидеть искажения, добавляемые к тону в процессе преобразования. До отметки в 5 секунд тон находится в слышимой области, поэтому уровень гармоник и наложений спектра в левой части спектрограммы показывает, насколько искажаются звуковые сигналы различных частот в слышимом диапазоне.
После отметки в 5,5 секунд тон уходит выше 22 кГц и не может быть представлен в формате 44,1 кГц, поэтому в идеале он должен быть подавлен НЧ-фильтром. Данная спектрограмма показывает, что фильтрация недостаточно эффективно подавила ультразвуковой тон, и он отразился в слышимую часть спектра (эффект наложения спектров или алиасинг).
Общий фон на спектрограмме практически черный. Это показывает, что у данного алгоритма SRC шумы квантования очень малы.
На спектре синусоиды 1 кГц можно более подробно рассмотреть структуру нелинейных искажений и шумов квантования для данной частоты тестового тона при двух различных уровнях сигнала.
По нему видно, что шумов квантования в данном случае практически нет, а нелинейные искажения присутствуют с относительным уровнем спектральных пиков примерно -110 дБ (их суммарный уровень может быть примерно -100 дБ), что согласуется с рис. 2 (столбец в районе 1,2 сек).
График АЧХ фильтра в полосе пропускания показывает ослабление сигналов в звуковом диапазоне при передискретизации.
В данном случае АЧХ ровная, и ее спад начинается после 18 кГц, достигая величины -1 дБ на 20 кГц.
График АЧХ фильтра в переходной полосе показывает ослабление компонент сигнала вблизи частоты Найквиста. В идеале фильтр должен пропускать сигналы ниже этой частоты и подавлять сигналы выше нее. В реальности фильтры не могут иметь бесконечно крутого среза и обычно пропускают некоторые частоты выше частоты Найквиста. При прореживании они будут отражены от частоты Найквиста в диапазон ниже частоты Найквиста (как показано на рис. 2). Если эта частотная полоса с неполным подавлением достаточно узка, то отраженные частоты будут лежать вблизи частоты Найквиста, то есть выше слышимого диапазона.
В данном случае спад фильтра после частоты Найквиста очень пологий, что может привести к наложению спектров, если энергия сигнала выше 22 кГц будет значительной (см. рис. 2). С другой стороны, плавность спада АЧХ обеспечивает хорошие характеристики фильтра во временной области — малое количество «звона».
Отметим, что при передискретизации «звон» фильтров концентрируется вблизи частоты Найквиста, так как именно там проходит изгиб АЧХ. В данном случае — это частоты вблизи 20…24 кГц. Хотя они и находятся в ультразвуковой части диапазона, существуют некоторые свидетельства, что излишний звон фильтров передискретизации негативно влияет на общее звучание, размывая стереопанораму и ухудшая восприятие баса.
График ФЧХ фильтра показывает сдвиг фа зы в градусах, вносимый фильтром передискретизации на различных частотах. Большинство фильтров, используемых в SRC, имеют линейную ФЧХ (горизонтальная линия). Однако встречаются и другие типы: некоторые алгоритмы имеют минимально-фазовые фильтры, обладающие нелинейной фазой, но зато устраняющие упреждающий звон во временной области. Можно выделить алгоритм iZotope 64-bit SRC, позволяющий управлять балансом упреждающего и постзвона, линеаризуя при этом ФЧХ в звуковом диапазоне.
Рис. 7. Импульсные отклики фильтров передискретизации. Вверху — минимально-фазовый фильтр с пологим срезом, внизу — фильтр с линейной ФЧХ и крутым срезом |
Как видно из графика, данный фильтр обладает нелинейной ФЧХ, но похож на минимально-фазовый. Это видно и по графику импульсного отклика фильтра (рис. 7, вверху).
Типичные же фильтры передискретизации имеют линейную ФЧХ (то есть звон поровну распределен до и после главного импульса) и достаточно крутой срез (рис. 7, внизу).
Большое значение в алгоритмах передискретизации имеет возможность настройки параметров. Многие протестированные алгоритмы имеют регулятор «качества», который чаще всего влияет на крутизну среза фильтра. Также важными представляются подстройка частоты среза фильтра и выбор типа ФЧХ.
На данный момент в тестировании участвуют порядка 30 различных программ и приборов. Большинство из них обеспечивают достаточно хорошее качество преобразования — графики показывают очень низкие уровни искажений. Показатели качества почти не коррелируют с ценой продукта — в каждом ценовом диапазоне есть продукты с удачными и неудачными вариантами SRC. Вероятно, не всегда по приведенным результатам измерений можно судить о субъективном качестве. Для субъективной оценки звучания планируется расширить тестирование, добавив передискретизацию реальных звуковых фрагментов.
Алексей Лукин
Журнал «Звукорежиссер» 2007 #3
Можно провести очень простой и не менее наглядный эксперимент. Откройте файл, например с параметрами 96 КГц (file1.wav) в izotope RX Advanced и сделайте его ресемплинг с настройками:
Затем ресемплируйте полученный результат обратно в 96 КГц с настройками:
Далее нужно сохранить результат в другой файл (file2.wav).
Затем нужно вычесть этот результирующий файл из исходного в любом аудиоредакторе, в котором можно смикшировать два аудиофайла. Например это легко сделать в Sound Forge. Результат можно сохранить и посмотреть его спектрограмму в том-же izotope. Если все сделано правильно, нижняя часть спектра вплоть до 22-х с лишним килогерц полностью математически вычтется из спектра исходного файла. К сожалению даже лучшие алгоритмы могут работать настолько "идеально" только в случае ресемплинга, строго кратного 2-м и только в определенных условиях, но для большинства случаев вполне достаточно и этого.