DC offset

15th Февраль 2010 | Метки:

Недавно, редактируя звуки для своей новой поделки, столкнулся с такой напастью как DC offset. Штука крайне неприятная, потому как вносит искажения, которые сразу можно и не заметить: ну щелкнуло где-то и щелкнуло, а потом на сонограмме кошмар и ужас, да и динамическая обработка дурить начинает.

Напомню, если кто не знает, что DC offset (Direct current offset) — это отклонение всего сигнала от нулевой зоны. На слух определяется как щелчок в начале и конце семпла. В моем случае визуально это выглядело следующим образом:

DC offset

DC offset

Казалось бы ситуация вполне себе обычная. Но мне с ходу вспомнился только один способ борьбы с этой химерой — галочка Remove DC Offset в семплере FL Studio.

Устранение DC offset в FL Studio

Устранение DC offset в FL Studio

Конечно, не очень удобно загонять семпл в ФЛ, а потом рендерить. Тем более, что, как оказалось позже, работает этот способ не во всех случаях: иногда отклонение остается. Небольшое, но заметное. К тому же сама перегонка семпла через ФЛ чревата искажениями.

Тогда я обратился к Wavosaur. В нем есть готовый эффект DC remover (Process/DC remover). Но в моем случае и он оказался бессилен, т.к. лишь уменьшил смещение. Поэтому дальнейшие поиски были продолжены в любимом Adobe Audition 1.5, справка по которому сказала, что DC offset убирается с помощью эффекта Amplify/Fade с пресетом Center Wave:

Adobe Audition Amplify/Fade

Adobe Audition Amplify/Fade

Замечательно. Пробуем и смотрим:

Результат работы Amplify/Fade

Результат работы Amplify/Fade

Работает. Уводит в ноль. Но ведь и сигнал искажает. А это нам не совсем нужно, т.е. совсем не нужно. Что же делать?

Немного пораскинув мозгами, я пришел к выводу, что этот DC offset очень напоминает сигнал с низкой частотой. А чем режут частоты? Правильно, фильтрами!

Не покидая Audition, берем первый попавшийся фильтр (я предпочитаю FFT Filter) и вырезаем низкие частоты:

Adobe Audition FFT Filter

Adobe Audition FFT Filter

Вырезал я все до 60 Гц полностью и частично диапазон от 60 до 100 Гц. В моем случае это не критично, так как сам семпл имеет довольно узкий спектр. Смотрим результат:

Результат работы FFT Filter

Результат работы FFT Filter

Voila! Получилось!

Я понимаю, что у меня случай получился слегка нетипичный (40% отклонения это очень много), но самый что ни наесть практический. Однако один вопрос у меня, все же, остался открытым: может кто из читателей подскажет как исправлять DC offset без вырезания нижних частот? Ведь возможны случаи, когда низ нужно сохранить.

  1. 16th Февраль 2010 в 00:29

    В Sound Forge алгоритм DC Offset ровно выправляет отклонение.

  2. Galova
    16th Февраль 2010 в 01:27

    Знал об этом всю жизнь ибо сразу же догадался что к чему

  3. Hambartsumyan
    16th Февраль 2010 в 09:10

    в Аудасити должно это якобы выравниваться применением эффекта Normalise (там есть отдельно кликабельный пункт «удалить отклонение центра сигнала от нуля», т.е. привязать центр к нулю). насколько помогает, не знаю, к сожалению. пока не приходилось пробовать.:)

    • 16th Февраль 2010 в 13:12

      Ну, вообще-то, нормализацией называют изменение амплитуды сигнала, а тут у нас изменение постоянного тока (честно говоря, я не знаю как корректно перевести на русский Direct Current в контексте работы с аудио)

      • Hambartsumyan
        16th Февраль 2010 в 14:03

        про изменение амплитуды сигнала – это правильно. я это и не имел в виду. просто они автоматическую возможность remove any DC offset в эффект «Normalise» запихали.
        тут есть небольшое видео:
        http://www.sonovert.com/audio-conversion/73-removing-dc-offset-in-audacity-video-tutorial.html
        извините, что я так по-русски коряво объясняюсь:)

        • 16th Февраль 2010 в 14:45

          Да нормально вы по-русски объясняетесь :)

          Спасибо за видео. И как это я в Аудасити сам не полез? Надо будет проверить его на своем семпле.

  4. Fike
    16th Февраль 2010 в 12:11

    DC offset обычно лежит значительно ниже герца, останутся кое-какие неровности по краям «квадрата», но обычно можно срезать ниже всего полезного звука. Щелчки убираются любым ремувером (я для этого тот же аудишен использую).

    • 16th Февраль 2010 в 13:14

      Ну, получается, что все так и сделал. Странно, что стандартные DC remover’ы не работают по этому алгоритму.

  5. Galova
    16th Февраль 2010 в 19:29

    ну дык! Вроде и ежу понятно что это самое смещение можно считать модуляцией волной бесконечно низкой частоты. Ежели оную выпилить, то…. понятно в общем

    • 16th Февраль 2010 в 20:02

      Именно так. Просто сбивает с толку тот факт, что «стандартные» средства борьбы со смещением пытаются манипулировать амплитудной, а не частотной областью сигнала.

  6. RcF1lt
    16th Февраль 2010 в 23:31

    Во фрутике есть замут – Center вроде называется, так вот он для этих целей как б)

  7. RcF1lt
    17th Февраль 2010 в 23:24

    Ну это само собой)) Но есть еще в виде эффекта (входит в состав стандартных), вешается в шину – более универсальная вещь.

  8. 24th Февраль 2010 в 19:27

    кхм… Повар, а ты уверен, что автору это нужно? Что-то мне подсказывает, что он бы и тебя мог многому поучить.
    (Простите, не сдержался) ;)

  9. 2nd Март 2010 в 21:40

    Женя, DC-оффсет убирается любым подручным ФВЧ. А всё потому что постоянное смещение – это самая низкая из возможных частота (с бесконечным периодом). Поэтому любой ФВЧ её срежет. Хотя, конечно, детектировать смещение и просто скомпенсировать его гораздо правильнее, ибо тогда никакие другие частоты больше не пострадают (в отличие от даже самого крутого фильтра).

  10. 2nd Март 2010 в 22:21

    тьфу.. ну да. HP я имел в виду :)

  11. Tesla
    14th Апрель 2010 в 01:17

    На самом деле DC-remover это и есть ФВЧ, только с очень низкой (единицы или доли герца) частотой среза. Отсюда и видимые артефакты в виде «плавающей» линии – они заметны глазом, но акустическая энергия их ничтожна. То же самое мы увидим и после FFT Filter, только при намного большем приближении. Несмотря на субъективное впечатление от картинки, искажения, вносимые FFT Filter, формально больше, чем после Remove DC offset.

    • 14th Апрель 2010 в 06:28

      Спорить не буду, т.к. не знаю где какие алгоритмы применяются. Но ведь вполне реально устранить DC-offset и без фильтра. Я вот, кстати, до сих пор не встречал ни одного ремувера с возможностью вручную указать смещение. Ведь тогда можно было бы не полагаться на интеллект эффекта, а подобрать параметры «на глаз». И запрограммировать это — пара пустяков.

      С искажениями, вносимыми FFT-фильтром, согласен категорически.

  12. Alex_HS
    19th Май 2010 в 11:10

    Я обычно использую для этих целей Waves Q1 в режиме Hi-Pass c частотой среза в 30Гц. Убирает офсет начисто (до нуля), гораздо лучше, чем специализированные функции в редакторах.