Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sbornik_statey_po_teorii_zvuka.pdf
Скачиваний:
198
Добавлен:
22.05.2015
Размер:
4.96 Mб
Скачать

Одно замечание. Резкое (неплавное) изменение характера колебаний - то место, где из тишины появляется тон - содержит все возможные частоты сразу, то есть на сонограмме это выглядело бы яркой вертикальной линией. Слышится это место как легкий звонкий щелчок.

Этот участок, содержащий все частоты, мы и будем пытаться фильтровать, для наглядности. Задача будет такая: оставить все частоты до примерно 600 Гц, и убрать все более высокие. В идеале мы не должны затронуть ни сам тон, ни тишину перед ним, вместе с тем сгладить переход, сделать рывок не таким резким - то есть убрать из него все высокие частоты, которые дают резкие скачки амплитуды. Пример очень искусственен, но хорошо показывает особенности разных фильтров.

Так получилось, что я буду в основном ругать фильтры. Будет гораздо лучше, если вы поймете, что любой частотный фильтр, сильно изменяющий частотную картину - это прежде всего страшно, а уж потом - полезно. В цифровой фильтрации очень важно знать меру - слишком сильна свобода выбора как угодно жесткого фильтра, что не всегда полезно. Я даже несколько сгущаю краски - на самом деле, всё не так плохо, как могло показаться, и если я говорю 'ужасные последствия' - это еще не значит, что уши завянут сразу же, нет. Просто в обработке звука любая потеря - это всё же потеря, которая когда-нибудь скажется, и поэтому - будем стараться терять как можно меньше.

И заодно - простая истина: цифровые фильтры всегда лучше аналоговых. В крайнем случае - они их моделируют, в лучшем случае - предлагают такие возможности, которые просто нельзя получить в аналоговой схеме.

FFT фильтр

IIR фильтры

FIR фильтры

FFT фильтр

Самый простой в использовании, гибкий, понятный, наглядный, мощный... и опасный из всего семейства, смертельный для звука инструмент в неумелых руках.

Идея фильтра проста. Разложить сигнал на частотные составляющие, умножить отдельные частоты на требуемое изменение частотного распределения, синтезировать сигнал обратно. Чаще всего в реализациях этого типа фильтра применяется сглаживающее окно и работа с перекрывающимися FFT блоками.

Идея фильтра заманчива своей простотой. Но проблемы есть, и они огромны. Основная проблема - блок FFT обработки представляет собой одно целое. Определенная частота - результат FFT - при обратном синтезе пронизывает весь блок, и её нельзя просто так, без последствий, выкинуть или усилить... От слов - к делу:

Исходный сигнал

Фильтрация с FFT = 8192

Фильтрация с FFT = 1024

Как видно, результат - как минимум странный. Обратите внимание на следующие искажения:

Пре-эхо. В месте щелчка частоты больше 600 Гц в FFT разложении отвечали не за полезный сигнал, а за то, чтобы синтезировать резкий переход. Этих частот не стало. Резкого перехода - тоже.

Изменение амплитуды тона 440 Гц (с FFT = 1024). Причина - хоть и использовалась оконная сглаживающая функция, частота 440 Гц не попала в FFT сетку с шагом ~43 Гц, которая получилась от размера разложения 1024. Вывод - частоты выше 600 Гц тоже пошли на представление частоты 440 Гц. Их не стало - амплитуда уменьшилась. На самом деле не только амплитуда уменьшилась, а еще и форма колебаний изменилась - но этого на рисунке не рассмотреть. Без наличия всех частот полноценный синтез исходной частоты, которая прошла мимо FFT сетки, невозможен.

В здоровом блоке (с FFT = 8192) очень сильно изменилась амплитуда колебаний рядом с переходом. Обратите внимание на ошибочный рост амплитуды уже после установления тона. В большие FFT блоки особенно нельзя сильно вмешиваться - размах блока таков, что что там характеризует одна определенная частота - только богу известно. Вспомните так называемый спектральный шум...

В общем, в пределах одного FFT блока возможны серьезные искажения временных и амплитудных параметров. Из этого вывод: нужно делать блок как можно меньше.

Минусы этого подхода: При уменьшении сетки частот ощутимо затрагиваются уже все частоты - и фильтрованные, и нет. Это происходит из-за того, что частот, не попадающих в FFT сетку, становится больше. Это плохо. При уменьшении FFT уменьшается разрешение по частотам - это тоже плохо. Если мы, например, хотим работать с басом и нам есть разница между 100 и 110 Гц - мы вынуждены использовать блоки с размером как минимум 4096, что уже достаточно для появления неприятных эффектов.

Не рекомендуется делать блоки меньше 1024 - разрешение по частоте настолько падает, что смысл применения именно этого фильтра вообще теряется. Зато из-за малого разрешения по частоте появляется некая шершавость обработки, особенно на стыках блоков - будут появляться артефакты.

Для разнообразия - еще одна картинка. Убираем на этот раз все частоты меньше 600 Гц - то есть наш основной тон должен уйти.

FFT = 1024

Мы выделили сам щелчок. Видно, что даже с таким маленьким размером FFT имеет место эхо с двух сторон. Оно сильно возрастает при переходе на большие размеры FFT.

Уже вполне можно спросить - а зачем он вообще такой нужен? Дело в том, что и этот фильтр бывает нужен, безопасен, более того - незаменим. Но вы должны абсолютно точно понимать, что вы делаете. Например, вполне безопасны такие операции:

Работа в области низких частот (ориентировочно - до 1 кГц). Даже сильные изменения АЧХ не принесут очень плохих последствий.

Фильтры для вырезания определенных частот (например, 50 Гц) в ноль. Узкие участки воздействия почти не дают побочных эффектов, так как задевают лишь несколько частот разложения.

Легкий эквалайзер. И вообще любая легкая обработка. Не забывайте только, что вы так или иначе разглаживаете сигнал во времени в пределах FFT блока. Сильнее ли, слабее - но это происходит, и тем сильнее, чем сильнее ваше вмешательство. Обширные по частоте уровни вмешательства с более 3-5 дБ воздействием - опасны.

Чего ни в коем случае не нужно делать:

Всегда ставить максимальный размер FFT. Нужный размер определяется интуитивно, в зависимости от того, что вы делаете. :-)

Использовать Triangluar или Hamming оконную функцию. Рекомендация - Blackman или BlackmanHarris.

Использовать FFT фильтр как эквалайзер. Для изменения тональной окраски всегда найдутся менее вредные операции.

Использовать этот фильтр на одних данных несколько раз, слегка изменяя время начала обработки. Комбинируйте все операции в одну!

Использовать его как жесткий обрезающий фильтр высоких частот. Почти всегда есть варианты лучше (один хороший вариант - вообще этого не делать :).

Для чего он нужен:

Для экстремальной фильтрации - когда результат обработки как факт более важен, чем возможные неприятности.

Для фильтрации определенных узких частот.

Если важно сохранить фазовую информацию. FFT отличается большим уважением к фазе сигналов. Помните, однако, что нам самим для восприятия фаза не очень важна.

Для многого другого - если вы понимаете, что делаете.

В любом случае: проверяйте и тщательно анализируйте результат. На что обращать внимание - в основном, смотрите на временные параметры - например, на фронты резких колебаний.

IIR фильтры

От Infinite Impulse Response - что-то вроде 'бесконечная отдача импульса'. В теории, влияние этих фильтров не прекращается никогда, лишь затихая во времени. На практике оно, конечно, прекращается, но всё равно - эти фильтры оставляют наибольший шлейф последствий. Не обязательно плохих, просто - изменения сигнала идут всегда, вне зависимости от того, есть что фильтровать или нечего в данный конкретный момент фильтрации. Это проще будет посмотреть на примерах.

На IIR фильтрах в программах обычно построены такие функции, как:

'Научные' фильтры. Chebushev, Butterworth, Bessel, т.д. - это и есть собственно IIR фильтры. В таких диалогах обычно имеется контроль над всеми параметрами.

Параграфические фильтры - где задаются отдельные пики воздействия в виде {частота, ширина воздействия, усиление/ослабление в дБ}, а также иногда фильтрация по краям диапазона (highshelf и low-shelf). Обычно здесь применяются фильтры второго порядка Butterworth или Bessel (см. ниже).

Параметрические фильтры типа low-pass, high-pass, band-pass - где указываются области частот и ослабления нежелательных сигналов. Порядок фильтра обычно устанавливается автоматически - и это может привести к очень неприятным последствиям.

А вообще - лучше посмотреть в справке к конкретной программе, какие именно фильтры используются в той или иной обработке. Возможно, что программа, которую вы используете, применяет другие фильтры для реализации диалогов фильтрации того типа, как я описал. Прежде всего, хотелось бы вас послать к любой серьезной книжкой по цифровой обработке звука - вопросы IIR фильтров там освещаются очень подробно. Я же предлагаю вам выжатое описание

эффектов фильтрации и советы в стиле кухонного рецепта по практическому использованию (или не использованию) этих фильтров...

Начнем с того, что эти фильтры также опасны. Не так сильно, однако, как FFT, но всё же. Один IIR фильтр - это фильтр, который воздействует на какой-то диапазон частот: или только частоты ниже определенной границы, или только выше, либо между двумя заданными частотами. У IIR фильтра есть такой параметр, как порядок. Чем он больше, тем сильнее граница по частоте между тем, на что влияет фильтр, и тем, на что он не влияет. Иногда можно задавать параметр напрямую (CoolEdit - научные фильтры), иногда он автоматическим образом зависит от желаемой резкости перехода (SoundForge, parametric EQ). Вместе с тем, чем выше порядок фильтра, тем сильнее проявляются искажения фазы, которые резко нарастают вблизи границ фильтрации. Разные типы фильтров (Chebushev, Bessel, ...) обладают разными свойствами на границах перехода, но в этом обзоре - только общие тенденции.

К примерам. Напоминаю - убираем все частоты выше 600 Гц.

Исходный сигнал

После фильтра порядка 2 (Butterworth)

После фильтра порядка 6 (Butterworth)

После фильтра порядка 12 (Butterworth)

Видно, что фильтр 2-го порядка справился так себе: во первых, относительно слабо убрал высокие частоты - переход остался довольно резким, а во вторых затронул и 440 Гц. Его частотная характеристика слишком плавная для точной фильтрации. Фильтры более высокого порядка справились лучше, но сигнал заметно уплыл вправо, появилась задержка. Это - не что иное, как

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]