Ответы на вопросы читателей ProSound.iXBT.com

Алексей Лукин, главный разработчик алгоритмов iZotope RX

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

Алексей, расскажи кратко о версии RX 3. Насколько значительным получились нововведения в этой версии?
Самым заметным нововведением RX 3 можно назвать обновленный пользовательский интерфейс, позволяющий загружать сразу несколько файлов. Пока идет обработка одного файла, можно открыть другие и работать над ними. В расширенной версии RX 3 Advanced появилось два новых модуля обработки, ориентированных на работу с диалогами: DeReverb для подавления реверберации и Dialogue Denoiser для быстрого автоматического подавления шума с нулевой задержкой. Некоторые возможности RX перешли из расширенной версии в стандартную: преобразование частоты дискретизации (SRC) и разрядности (MBIT+), загрузка (хостинг) сторонних плагинов. Практически в каждом из модулей обработки или улучшены алгоритмы, или появились новые возможности. Функциональность приложения постепенно приближается к звуковым редакторам общего назначения: появились функции записи, протаскивания (scrubbing), измерения пиковых уровней и громкости (Waveform statistics), экспорт истории операций. Значительные усилия при разработке RX 3 были затрачены на ускорение обработки длинных файлов с использованием многоядерных процессоров.

Откуда разработчики черпают свои идеи, если не секрет? Пожелания пользователей учитываются?
Идеи разработчикам iZotope приходят из разных источников. Это и общение с пользователями на выставках, и работа с бета-тестировщиками, и обзоры новинок от конкурентов, и собственные задумки. Обычно в идеях недостатка нет. Сложнее – с ресурсами для их реализации и планированием: что делать в первую очередь, а что оставить на потом. При разработке RX 3 по просьбам пользователей были добавлены такие возможности, как инверсия выделения, ручное выделение гармоник по номерам и статистика уровней сигнала. Также нам приходило много пожеланий относительно денойзера для диалогов с хорошей автоматизацией. В итоге получился Dialogue Denoiser.

Дает ли RX 3 преимущество использование 64-битной архитектуры последних процессоров?
RX поставляется как в 32-битной, так и в 64-битной версии. Особой разницы по быстродействию между ними нет. Главное преимущество 64-битной версии – в возможности использования большего объема оперативной памяти. При одновременной обработке нескольких файлов необходимый объем памяти растет пропорционально количеству файлов. Кроме того, на выбор версии может повлиять желание загрузки сторонних плагинов: 32-битное приложение RX загружает только 32-битные плагины, а 64-битное – только 64-битные.

Насколько увеличилось быстродействие ресурсоемких эффектов по сравнению с RX 2?
Большинство обработок в RX 3 выполняются быстрее, чем в RX 2. Особенно разница заметна в приложении: обработка длинных файлов в нем более эффективно распараллеливается между ядрами процессоров. Ускорение обычно составляет 1.5–2 раза, но сильно зависит от конкретного алгоритма и процессора.

Нет ли планов полностью заменить редактор типа Adobe Audition в основных функциях редактирования? Не планируется ли мастер-рэк из эффектов с сохранением набранных настроек нескольких эффектов?
Сравниться по возможностям с полнофункциональным звуковым редактором было бы замечательно! Мы постепенно движемся в эту сторону, но приоритет все же отдаем функциям реставрации. Эффект-рэк у нас в планах есть, но не для ближайшей версии.

Есть ли инструкция по всем инструментам пакета iZotope RX на русском? Если нет, то будет?
Официальной инструкции на русском не существует. К сожалению, английские руководства по продуктам iZotope пока не переводятся ни на какие языки. В планах iZotope есть создание локализованных версий продуктов, но хватит ли на это сил – большой вопрос. Ведь грамотный перевод сотен страниц технического текста – непростая задача. Добавлю, что руководства пишутся не мной, иначе бы русская версия, конечно, была.
Для некоторых программ iZotope можно найти неофициальные переводы, сделанные пользователями. Я видел перевод руководства “Mastering with iZotope Ozone” от Олега Ершова. Недавно Олег также показывал мне почти готовый перевод “Audio Repair with RX 3” – руководства по реставрации. В нем рассматривается большинство возможностей RX.

Регулярно занимаюсь спектральным редактированием. Меня волнуют артефакты, которые остаются при вырезании части спектра с дефектом. Как их лучше всего минимизировать?
В RX есть множество способов удаления артефактов. Самый первый совет – аккуратно делать выделение нужной (точнее, ненужной) части спектра. Если короткие щелчки занимают весь спектр, их выделяют на осциллограмме волны широкополосно, т.е. только по времени. Если какие-то звуки занимают только часть частотного диапазона, то пользуются спектрограммой и выделением по времени и частоте («прямоугольник»). Для отдельных тонов и их гармоник можно пользоваться более тонкими инструментами: волшебной палочкой и пр.

Когда выделение сделано, нужно правильно выбрать модуль и режим обработки. Выбор правильного модуля в RX – это отдельная большая тема, и для заинтересованных читателей я подготовил схему (нажмите для увеличения). Дам несколько советов именно по спектральному редактированию.

Если удаляемый объект – это короткий щелчок, в пределах нескольких миллисекунд, то его можно удалить с помощью ручной интерполяции в модуле декликера. Если щелчок более длинный, то качественных результатов обычно можно добиться в модуле спектрального ремонта (Spectral Repair). Если щелчок имеет длину порядка 10 мс, то рекомендуется число полос (Num. bands) в модуле выбирать небольшим. Это повысит точность обработки по времени. Если выделенный объект более длинный (30–50 мс и более), то число полос можно оставить по умолчанию – это позволит более аккуратно проанализировать тональные компоненты сигнала.

Рекомендованная последовательность операций при реставрации сигнала в iZotope RX

При открытии модуля Spectral Repair первым делом встает вопрос о выборе режима работы. Режимов имеется четыре: Attenuate (аттенюация), Replace (замещение), Pattern (шаблон) и Partials+Noise (гармоники+шум).

  • Режим аттенюации (Attenuate) уменьшает амплитуду выделенного фрагмента так, чтобы он слился с окружением. Окружение можно выбирать как горизонтальным (Horizontal), так и вертикальным (Vertical), и даже двумерным (2D), т.е. вертикальным и горизонтальным сразу. Если выделенное событие короткое и широкополосное (т.е. выделение преимущественно вертикальное), то обычно выбирают горизонтальную интерполяцию. И наоборот: для длинных горизонтальных выделений выбирают вертикальную интерполяцию. Режим аттенюации хорош, если помеха не полностью перекрыла собой полезный сигнал, и помеху не требуется полностью удалить, а достаточно лишь уменьшить ее по амплитуде до слияния с фоном.
  • Режим замещения (Replace) выкидывает содержимое выделения и пытается синтезировать сигнал для его замещения. При этом используется «горизонтальный» тип интерполяции: события слева и справа от выделения соединяются друг с другом. Режим замещения полезен, когда участок сигнала полностью испорчен и его лучше синтезировать заново.
  • Режим шаблона (Pattern) пытается подставить на место выделения другой фрагмент сигнала со схожими характеристиками окружения. Если в записи есть повторения (например, петля ударных инструментов), то вместо синтеза зачастую лучше попытаться найти похожий участок неповрежденного сигнала и скопировать его. Режим шаблона позволяет облегчить поиск этого похожего фрагмента.
  • Режим «гармоники+шум» (Partial+Noise) похож на режим замещения (Replace), но использует более сложный алгоритм синтеза. Он подходит для случаев, когда левая и правая сторона выделения плохо соединяются по горизонтали: например, если изменилась высота тона инструмента или имеется вибрато. Режим «гармоники+шум» пытается связать гармоники слева и справа от выделения с учетом изменения их высоты и возможного вибрато.

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

Например, если подавляется скрип гитарной струны, то в область окружения часто попадает следующий аккорд гитары, который идет сразу после скрипа. Чтобы этого не произошло, можно воспользоваться регулятором Before/after weighting для смещения области окружения влево, преимущественно до скрипа. Тогда интерполяция будет строиться на материале предыдущего аккорда.

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

Какие преимущества iZotope RX3 имеет перед другими инструментами спектрального редактирования? Что рекомендуется попробовать в первую очередь?
Я считаю, что главным преимуществом является гибкость настроек: 4 различных режима интерполяции, настройки размера области окружения. Также можно отметить множество инструментов для выделения областей на спектре: кисть, лассо, волшебная палочка. В версии RX 3 добавлен инструмент ручного выделения гармоник по их номерам, а также улучшена аккуратность работы волшебной палочки. Ну и, наконец, спектрограмма в RX – наиболее удобная из всех, что я видел. Она автоматически подстраивает размер FFT в процессе работы, чтобы показать максимум деталей.

Вопрос по Adobe Audition: какие обработки авторства iZotope там сейчас используются? Есть ли лицензированные алгоритмы iZotope в других программах?
В Audition используется алгоритм iZotope Radius для высококачественного изменения хронометража и высоты тона, а также многополосный компрессор, аналогичный компрессору из Озона, но с более удобным интерфейсом. Мы также принимали участие в написании некоторых более мелких модулей обработки, вроде Tube-modeled compressor.
Алгоритмы iZotope присутствуют и во многих других программах. Полного списка у меня нет, но могу сказать, что традиционной популярностью пользуются наши алгоритмы конвертации форматов: 64-bit SRC и MBIT+. Они включены в редакторы Sound Forge, soundBlade, Wave Editor, Sample Manager и в некоторые плееры, напр. Audirvana, Fidelia. Уже упомянутый алгоритм Radius лицензирован для использования в Pro Tools (режим X-Form), Pyramix, Audition и Sonar. Множество алгоритмов iZotope используется в компьютерных играх от Microsoft, Ubisoft, Harmonics. Например, игра Rock Band 3 использует наш алгоритм коррекции высоты тона в реальном времени.

Есть ли ещё технологический запас у математических методов, применённых в iZotope RX?
Мы стараемся реализовывать алгоритмы с качеством, близким к максимальному. Когда алгоритм получается медленным, мы позволяем пользователю выбрать уровень качества. Поэтому именно технологического запаса, в моем понимании, нет. Однако мы всегда работаем над улучшением алгоритмов за счет новых идей. И в этом смысле – пути развития еще далеко не исчерпаны.

Не планируется ли заменить Short-time FFT и связанные с этим трудоемкие методы осреднения каким-нибудь ещё более сложным методом разложения на отдельные функции, который бы дал более равномерное распределение элементов по логарифмической шкале? Почему нельзя внедрить логарифмическое БПФ?
Пока что у нас нет цели отказаться от обычного FFT. Дело в том, что у iZotope есть алгоритмы использования FFT многими способами, позволяющие при необходимости приблизить логарифмическое разрешение по частоте. Это так называемые многомасштабные (multiresolution) FFT. Они позволяют не только получить распределение частот, близкое к логарифмическому, но и подстроить сетку частот под особенности сигнала. Традиционное FFT с линейным распределением частот используется в этих алгоритмах как составной блок. Благодаря нему удается достичь хорошего соотношения качества и быстродействия.

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

AMD анонсировала SDK, где есть звуковая обработка – TrueAudio. В связи с этим вопрос по вашим планам. У меня лично пока что скептическое отношение. Но люди говорят, что там все хорошо продумано и можно чуть ли не в реальном времени обрабатывать звук без задержки.
Задержка при обработке звука необязательно связана с недостатком вычислительной мощности. Во многих случаях она происходит от необходимости заглядывания вперед по времени. Например, лимитер должен понизить усиление до прихода пика. Или эквалайзер с линейной фазой должен включать задержку, необходимую для этого типа фильтрации.

Если же говорить о вычислительной мощности, то, конечно, новинка от AMD выглядит перспективной. Однако она позиционируется, в первую очередь, для разработчиков игр, позволяя в реальном времени обсчитывать на GPU наиболее распространенные эффекты: реверберацию, 3D стерео, микширование источников звука. Для наших целей функциональность этого SDK будет узковата, да и не хотелось бы зависеть от наличия у пользователя нужной видеокарты.

В программах iZotope для оптимизации вычислений используются библиотеки Intel IPP на PC и vDSP на Mac. Они обладают широким набором функций и не привязаны к конкретному типу железа, драйверу или операционной системе. Иногда мы пишем небольшие фрагменты кода на ассемблере или встроенном ассемблере (intrinsics).

Также в версии RX 3 для распараллеливания вычислений стали более активно использоваться многоядерные процессоры.
 
Есть ли в RX механизм, определяющий задержку и сдвиг фазы сигнала между двумя звуковыми дорожками, записанными одновременно с одного источника (например, двумя микрофонами с разных позиций).
Да, инструмент называется азимут-коррекцией (Azimuth correction) и находится в модуле канальных операций (Channel Ops). Он пока что работает не с отдельными файлами, а с левым и правым каналами стереофайла: выравнивает задержку правого канала относительно левого с точностью порядка 1/100 отсчета. Инструмент хорошо работает в том случае, если каналы уже примерно выравнены друг относительно друга и формы волны в левом и правом каналах близки. Для его применения к паре разных дорожек нужно создать стереофайл, где одна дорожка будет в правом канале, а другая в левом.

Можно ли автоматизировать выявление и подавление низкочастотных примесей, типа 50 Гц, фона (и его гармоник) и рокота?
Низкочастотный фон можно определять с помощью кнопки Learn в модуле Hum. Она автоматически устанавливает нужную частоту режекторных фильтров. Можно также воспользоваться денойзером, в т. ч. в режиме Adaptive, когда свойства фона меняются во времени. Более полная автоматизация сейчас вряд ли возможна: для наилучших результатов нужно вручную показать программе, что именно требуется удалять.

Хочу отметить, что, несмотря на название модуля Hum Removal, во многих случаях с подавлением гула и фона лучше справляется модуль денойзера. Это связано с тем, что Hum Removal – это просто набор режекторных фильтров, которые подавляют на определенных частотах как фон, так и полезный сигнал. Поскольку фильтры острые, то при попадании на их частоту полезного сигнала они будут заметно звенеть и искажать сигнал. Поэтому, когда фон сильно пересекается по частотам с полезным сигналом или содержит множество гармоник, рекомендуется использовать денойзер. Отличие денойзера в том, что он различает сигнал и фон не только по частоте, как Hum Removal, но и по уровню. Сигнал, находящийся на близких частотах, но превышающий фон по уровню, искажаться не будет.

Можно ли выявлять в треке непостоянство ритма (скорости вращения пластинки) и корректировать?
Нет, автоматически корректировать wow&flutter в RX сейчас невозможно. Это одно из направлений дальнейших разработок. Однако в RX 3 Advanced можно вручную нарисовать кривую изменения скорости и применить ее (модуль Time&Pitch, вкладка Pitch Contour).

Во второй версии RX грузишь плагин Gain, он сканирует трек – и видишь в плагине уровень относительно 0 dB! В третьей версии просто ползунок. Зачем потеряли такой нужный функционал плагина Gain?
Было решено разбить эту функциональность на две части:
1. Закладка Normalize в модуле Gain – для нормализации,
2. Окно Waveform Statistics (Alt+D) – для измерения уровней.

Благодарим Алексея Лукина за потраченное время и за интересные ответы!