WebSound.ru Home
    Главная | Комментарии | Архив выпусков | Форум и чат | AudioTag.info | Музоблог | reTracked | Авторский блог  



  Поиск:

Поиск по WebSound.Ru:
Поиск в Интернете:
Powered by




  Партнеры, реклама:




Audio watermarking
TrustedAudio.com



 

Восстановление звука на PC программными способами

Автор: Frown (Антон Уткин)
frown@photomania.net, 2:5031/1.36, http://frown.tsx.org

Все права в отношении данного документа принадлежат автору. Воспроизведение данного текста или его части разрешается только с письменного разрешения автора.

Данная статья нацелена на "продвинутую" аудиторию энтузиастов в области звука и музыки, посему, читатель, предполагается, что:

А) Ты в курсе, что такое цифровая обработка звука.
Б) Ты в совершенстве владеешь стандартной ОС Windows9x, и все ссылки на программы или их интерфейс не потребуют от меня подробных объяснений.
В) Ты позволишь автору некоторые вольности в терминологии - всё же, очистка звука - довольно специфичное занятие; я надеюсь, его специфика обуславливает как раз ту аудиторию, которая некоторые эпистолярные вольности позволить может.

Альфа. Программы 

Основные программные решения для PC в области обработки и очистки звука:

1) DART Pro (http://www.dartpro.com/)
2) Steinberg Clean / VST plugins (http://www.steinberg.de/)
3) SoundForge w/plugins (http://www.sonicfoundry.com/)
4) CoolEdit / CoolEdit Pro (http://www.syntrillium.com/)

По порядку.

DART Pro

Польский программный продукт Digital Audio Restoration Technology - признанная вершина рынка продуктов по очистке звука на PC. Стоит хотя бы упомянуть, что это единственный серьёзный коммерческий программный продукт, нацеленный конкретно на реставрацию аудио - все остальные, за исключением Steinberg Clean, больше редакторы, нежели реставраторы.

Краткий обзор возможностей:

  • в последних версиях - 32битный движок
  • некрасивый, но очень утилитарный интерфейс
  • очистка звука по образцу шума
  • распознавание и сбор данных об участках шума
  • "умная" очистка сэмпла по noise gate
  • спектральный анализ
  • очистка от щелчков

Интерфейс - самая слабая сторона программы. Но не стоит от неё отказываться - это единственное достойное решение по очистке звука на PC. Включаемый в объём поставки help-файл более чем достаточен для понимания основных возможностей.

Steinberg Clean

Программный продукт немцев Steinberg, нацеленный на "домашнее" использование - "быстрая" реставрация старых записей на стандартном очистительном движке Steinberg с последующей записью на CD - Clean это реставратор и CD-burner "в одном флаконе".

Я предпочитаю использовать VST/wl варианты "очистных приспособлений" Steinberg. Последние ориентированны скорее на realtime-обработку, в отличие от всех остальных.

SoundForge Noise Reduction

Довольно простой NR-движок, схожий по структуре со встроенным в CoolEdit Pro. Забирается та часть сэмпла, которая представляет собою собственно шум, а затем вычитается из всего остального звука. Метод создаёт разного рода свист и звон (артефакты) в результирующем сэмпле, порекомендовать тут можно только одно - использовать максимально возможное количество шума и максимально возможное (в принципе, любое позволительно) спектральное окно обработки (FFT Size).

CoolEdit Pro

Как и в SoundForge, здесь представлено несколько модулей - избавление от фона, шума, щелчков, и перегрузки (overloading). Один из самых "чистых" алгоритмов Noise Reduction, оставляющий результирующий звук ярким, добавляющий, вместе с тем, наибольшее количество "артефактов".

Бета. Постановка задачи 

На данном этапе важно понять, что мы ожидаем от очистки звука. К примеру, совершенно не стоит чистить синтезированные басы а-ля Roland TB/MC-303, большую часть перкуссионных звуков, сэмплы, взятые из библиотек инструментов. Почему ? Потому, что гораздо эффективнее в данном случае будет либо воспользоваться синтезом звука, либо попытаться обратиться к существующим библиотекам 16-битных сэмплов.

Я бы разделил материал, однозначно подлежащий очистке, на несколько групп:

  • Уже сведённые композиции, пересведение которых невозможно ввиду определённых причин (смерть одного из участников ансамбля/вокалиста, распад группы, отсутствие исходной подорожечной записи, etc).
  • Редкий / оригинальный вокал, не поддающийся синтезу.
  • Редкие сэмплы с большим количеством гармоник и искусственного шума - самая сложная категория в смысле попыток повторения их путём аддитивного/субтрактивного синтеза - проще очистить.
  • Некоторые редкие этнические инструменты (например, однажды мне довелось сначала сэмплить, а потом и чистить настоящую перуанскую флейту. Как известно, духовые в принципе довольно шумные инструменты, но здесь необходимость работ по очистке определялась во многом и банальной редкостью инструмента).
  • Сэмплы, которые можно перезаписать, но которые потребуют для перезаписи дополнительных материальных затрат. Если результат некритичен, можно попробовать их очистить.

Я ещё раз призываю всех, кто собирается заниматься реставрацией звука, внимательно подумать - а стоит ли ? А если стоит, то правильно поставить задачу, и не ожидать неких сверхъестественных результатов.

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

Гамма. Подготовка к восстановлению 

В принципе, подготовка сводится к стандартным операциям по поднятию "качества" несущей волны - передискретизации на более высокий уровень сэмплинга (эта операция называется апсэмплинг), и изменению битности звука.

Для начала, естественно, стоит загрузить звуковую волну и последовательно поменять битность до максимально допустимой внутри данной программы (16, 20, 24 или 32 бита), а затем перецифровать на максимально возможный уровень дискретизации. Тут уже всё очень индивидуально, но я могу посоветовать выбрать либо 44.1 кгц, либо 48 кгц - смотря что позволяет тебе твоя аппаратная часть.

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

Кроме того, следует выровнять точку нуль-пересечения фазы волны (DC Bias Adjust). Только аккуратно, чтобы часть волны не вылетела за амплитудную границу.

Бывают случаи, когда при сэмплинге произошёл перегруз канала либо в пиковых местах, либо по всей протяжённости сэмпла. Если перегруз был предусмотрен - скажем, некая перегруженная гитара, звук которой подавался с усилителя сразу на вход звуковой карты, перегрузом канала можно пренебречь, но даже в таком случает я бы рекомендовал перегружать выходы, а вход оставить на 5-10 % недогруженным. Если перегруз уже произошёл, и имеющийся сэмпл перецифровать нельзя (однажды мне довелось восстанавливать авторскую запись с пиковыми перегрузками на обеих каналах, второй копии которой просто не существовало - пришлось изрядно попотеть), я могу порекомендовать только три способа избавиться от интермодуляции - а) FFT-фильтрацию с верхним порогом в (уровень_сэмплинга)/2, б) Clip Restoration из CoolEdit Pro и в) заключительный эквалайзинг.

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

Разумеется, совершенно недопустимо изменять динамику звука до начала очистки, используя компрессоры, лимитеры, etc. - уровень шума будет "прыгать", и интеллектуальные алгоритмы очистки звука в том же DART могут не совсем верно его вычислить для общей протяжённости сэмпла, что, естественно, скажется на качестве звучания восстановленного звука.

Дельта. Два способа 

На сегодняшний день большая часть работ по очистке звука сводится к избавлению сэмпла от hiss и noise - "шипения", высокочастотного шума. Запиши музыку с компакт-диска на кассету, и, сравнив записи, в кассетном варианте, кроме отсутствия части частот ты услышишь ещё и этот самый пресловутый hiss - равномерное шипение. Noise - более широкий термин, обозначающий, по сути, то же.

Roughly speaking, метода существует два. Первый - пороговый - noise gate, попросту фильтрация. Я в данном случае, не доверяя гейтам, лезу в FFT Filtering в CoolEdit, гляжу на спектрограмму сэмпла, уясняю, какие частоты можно отфильтровать, и фильтрую их. Для начала - все верхние, которые забиты не звуковыми формантами, а именно шумом.

Второй метод заключается в том, чтобы программа сканировала образец шума, а затем по алгоритму вычла бы этот шум из волны. Я пользуюсь двумя программами для этого - DART Pro и CoolEdit. Из всех четырёх DART обрезает максимум верхов, зато добавляет минимум артефактов; самый чистый звук получается у CoolEdit Pro, но вместе с тем в нём самое большое количество артефактного "звона". Я предлагаю применить здесь казуистику - просто пробовать, какая из программ лучше очистит данный сэмпл. На каких-то волнах даже при большом количестве шума CoolEdit давал чистейший звук без звона, а DART безбожно резал высокие частоты, на других - DART давал чуть ли не идеальное качество, а CoolEdit ужасно звенел.

Эпсилон. Наводки.

Всё просто. Оборудование, электроприборы, прочее - работает на частоте тока в 50 гц. Физику ведь учили ? Учили ! Тогда ставь FFT Filter, и на прямой опускай тоненькую ложбинку где-то на уровне 50 гц - её мы и отрежем.

Наводки, как правило, касаются только тех случаев, когда сигнал идёт, скажем, с гитарного усилителя.

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

Дзета. Стерео и дорожки. Щелчки и винил 

Если очищаемая запись - стереоволна, либо же законченная композиция, не поддающаяся пересведению, я предложу для начала избавиться от слышимых щелчков и треска - как правило, всё это присутствует на записях, снятых с винила или старых магнитофонов. В DART даже есть специальный раздел - Vinyl restoration. Суть процесса сводится к "засечению" резких атак сигнала, и дальнейшего их сглаживания, и, чтобы избежать удаления ложных щелчков - обыкновенных пиков, следует просто-напросто пробовать играться с параметрами.

Стоит, к примеру, запустить DART Pro, загрузить прилагаемый к нему с незапамятных времён кусочек марша Мендельсона - mendel.wav, и попробовать очистить его. Кстати, в документации к DART есть целый Tutorial-раздел, посвящённый работе с этим файлом. Там, например, даётся интересный способ удаления части щелчков из волны - просто перевернуть волну задом наперёд, и прогнать через алгоритм. Суть метода, я думаю, в том, что у определённого количества щелчков атака и спад амплитуды симметричны, в этом случае простые пики амплитуды за щелчки приняты не будут. И опять же - часть щелчков может быть с постепенным нарастанием, но резким спадом амплитуды, и при реверсе они быстро будут засечены и отсеяны.

Эта. Фильтрация 

Всё, вроде бы, готово к зачистке. Приступим.

Для начала тебе следует просто-напросто заглянуть в спектр. Я это делаю в CoolEdit: View -> Spectral View. Если раньше со спектром ты не слишком много работал, то тебе стоит позагружать различные сэмплы и просто на них посмотреть в спектральном представлении, послушать их. Вкратце, суть сводится к тому, что в спектрограмме слева направо читается время, а снизу вверх - частотные полосы, от низких к верхним. Собственно, сам звук по интенсивности проходит степени от жёлтого (максимум) через оранжевый и красный к синему (минимум). Соответственно, большая часть того, что мы будем слышать, представлена жёлтым и красным. Если сэмпл чистый, то синего цвета по краям спектрального контура будет мало (загрузи любой патч от звуковой карты), а если нет (возьми тот же сэмпл, и пару раз подряд переведи его в 8 бит и обратно в 16, тут же из-за квантования появится шум), то будет виден сине-розовый туман - это и есть шум, и его надо отсеять.

Стоит определиться, что за сэмпл мы чистим. Самые высокочастотные - перкуссионные сэмплы тарелок и рабочих, пиковые моменты акустических гитар, некоторые высокочастотные пэды. Пиковые моменты будет видно, как яркие вертикальные полосы. Тарелки я вообще не рекомендую чистить - они по сути своей - фильтрованный шум K Проще синтезировать/найти другие.

Как только определишься, какие частоты можно отсечь, запускай FFT Filter, выставляй LowPass Filter и верхнюю границу подгоняй под нужное значение, затем запускай фильтр.

Часть шума ты убрал, совсем не затронув качества сэмпла. Данная методика хорошо работает на сэмплах с пороговой частотой в 10-14 кгц, и просто замечательно - с басовыми сэмплами, которые редко вылезают за 2-3 кгц.

Если очень небольшая часть высоких частот стоит обособлено, стоит ими пожертвовать - далее ты сможешь их вернуть назад. Ну, почти вернуть.

Тэта. Вычитание или подавление? 

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

В первом случае, даже если тишины в длинном сэмпле нет, стоит приглядеться к особо тихим моментам. Может быть, есть место, где звучат только басы ? Тогда следует задуматься, что шум-то выше басов, можно скопировать эту часть в отдельное окно, басы отфильтровать, а оставшийся шум снять, как образец (snapshot/noise profile).

Если шума всё-же нет, следует грузить DART Pro и выбирать DeHiss - последнее средство перед мультиполосной фильтрацией.

Во втором случае всё несколько проще - следует выделить шум, снять с него образец, а затем выделить всю волну и вычесть из неё шум.

В DART Pro по этому поводу есть отличный раздел в руководстве, впрочем, если возникнет интерес, я в деталях разберу процесс субтрактивной очистки именно в DART Pro. В CoolEdit этот процесс несколько сложнее и нагляднее.

В делается это примерно так. Запускаешь Noise Reduction. FFT Size - чем больше, тем лучше - это размер окна перебора спектра. Смело ставь 24000. Snapshots in profile ставь в 500, Precision factor - любое нечётное число от 19 до 49. Если поставить точность до 9, качество будет низким, от 9 до 19 - минимум, от 19 до 49 - оптимум, после 49 время обработки увеличится совершенно диспропорционально ничтожному выигрышу в качестве.

Если теперь Load Profile всё ещё пригашено, значит, ты выделил слишком мало шума. Либо закрой (Close) окно (не нажми по ошибке OK) и выдели больше шума, либо, если его попросту нет, выдели кусок шума и скопируй его подряд несколько раз, затем выдели целиком и опять вернись в Noise Reduction. Как только Load Profile загорится, щёлкай его.

Обработалось ? Не нажимай OK, а щёлкни Close. Теперь выдели саму волну. Теперь ещё раз Noise Reduction, и теперь уже сразу OK. Всё, обработка пошла.

Если после обработки сэмпл звенит, то обработку можно по Edit -> Undo отменить. Ещё раз снимать шум с сэмпла не стоит - он, кажется, сохраняется в течение всей сессии, а вот стоит поиграться с ползунком под спектрограммой шума в окне Noise Reduction - он влияет на степень обработки сэмпла.

Всё, субтрактивная очистка окончена.

Иота. Многополосная фильтрация 

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

Вернёмся к спектру. Заметил, что сами частоты сэмпла представляют из себя некий контур, который в принципе может быть описан, как Attack - Decay - Sustain - Release ? Так вот, сейчас мы сделаем очень нехорошую вещь - мы попробуем обрезать всё лишнее точно по контуру.

Правило одно - резать надо сверху вниз и слева направо, иначе будут щелчки. Выделяешь область звука, с которой можно вырезать либо прямоугольник, либо прямоугольник с нижней скошенной стороной. Соответственно выбираешь и тип фильтра - либо постоянный, либо морфящийся (от таких-то до таких-то частот), выделяешь нужную тебе область и применяешь к ней FFT-фильтр. И так, пока не "обведёшь" весь сэмпл. Работа довольно утомительная, но приносит она порой результаты просто удивительные.

Очистил ? Не щёлкает ? Звучит ? Всё, очистка закончена.

Каппа. Sono luminus 

Итак, сэмпл ты очистил. Скажем так, частью частот ты, вероятно, пожертвовал. Как их вернуть ?

Достроить !

Тут есть два способа.

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

Второй - более "умный" подход. Основан он на предположении о том, что любые гармоники имеют "зеркальное отражение" октавой, а то и двумя, выше. Можно просто скопировать и сдвинуть эти гармоники на октаву или кратное ей расстояние вверх.

Я знаю три pluginа, которые это делают. Первые два именуются, собственно, по разному названию алгоритма - Aural Activator из пакета DSP/FX, и Harmonics Enhancer из пакета Hyperprism. Оба снабжены достаточной документацией и интуитивно понятны.

Я остановил свой выбор на третьем - Steinberg Spectralizer (для WaveLab). Плагин наглядно показывает, как он отсекает на анализ верхние частоты, как он из умножает, и как подмешивает а в исходную волну. Если не очень усердствовать, можно достичь неплохих результатов безо всякого звона, но с яркими верхами. А в режиме Solo можно послушать, что же именно подмешивается в исходную волну.

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

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

Этим способом я пользовался, когда делал ремикс на призраковскую "Горизонтальную Женщину", чтобы сохранить оригинальное звучание перкуссий, вместе с тем их подкрасив (посмотреть на всё это безобразие можно будет на приближающемуся к логическому завершению минимьюзикдиске). И ничего вроде получилось.

Лямбда. Полуфинал 

Вобщем-то, всё. Основные способы я рассказал, многого можно добиться рекомбинацией и использованием такого мощнейшего и удобнейшего, а главное, бесплатного оборудования, как собственная голова %)

Ми. Финал 

Что почитать ?

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

Затем - что-то на сайте Бориса Тарасова (http://trackers.elkatel.ru/), более продвинутая информация, в том числе и по оборудованию - на сайте Евгения Петрова (http://www.orc.ru/~peratron). Из англоязычного - на петровском сайте масса ссылок.

Если захотелось книжечек, то добро пожаловать в ближайшую научную библиотеку. Запомните ключевые фамилии авторов - Го(у)лд, Рабинер, Оппенгейм, Чандлер. Все они писали книги, где один из них - автор, другие - соавторы. Все эти книги издавались "Миром" или "Советским радио" в 60-х и 70-х, там буквально библейская информация по всему, что касается звука и его обработки. Все книги называются "Цифровая обработка сигналов" или около того, все книги без серьёзных познаний в математике читать просто не следует - хотя обещаю, самое серьёзное чтение по звуку из того, что ты вообще физически можешь найти.

Что посмотреть ? Проект Массачусетского Университета (http://www.mit.edu/) под названием Csound - о нём проще поглядеть, чем рассказывать. Любая поисковая машина выдаст сотню ссылок на официальный сайт. По сути, это язык программирования для звука, что-то вроде Си. Штука сложная, абсолютно некрасивая (текстовый интерфейс), но чудовищно мощная, ей можно сделать то, чего тебе и не снилось в обыкновенных редакторах. Опять же, лезть в это без простейших навыков в структурном программировании не стоит.

Омега. Суперфинал 

Данная статья не претендует на законченность или правильность. Если ты нашёл в ней какую-то неточность, сообщи об этом мне, я буду раз узнать о том, что я ошибся, и поправиться. Если ты хочешь, чтобы я подробнее раскрыл какую-то отдельную тему, связывайся, пожалуйста, с Борисом Тарасовым, он что-нибудь придумает.

И уж совсем не стоит просить меня в нелёгком деле помочь тебе с очисткой звука - поверь, своих проблем хватает. Вопросы задавать тоже стоит Борису Тарасову, или в конференции FIDO7.SOUND, PVT.SOUND.PRO, RU.STRACK и SU.MUSIC.CREATION - я на них подписан и регулярно их просматриваю. Если я всё-же буду по каким-то причинам тебе нужен - пожалуйста, 2:5031/1.36 или frown@photomania.net