Клавдиенко Евгений
Данная статья впервые была опубликована у Glanz. Публикуется с разрешения автора.
Предисловие
Как снять перевод со звуковой дорожки фильма? (А с DVD?)
Этот вопрос постоянно задаётся в различных форумах, и, как правило, на него везде дают совершенно одинаковый ответ: никак. На первый взгляд, это утверждение вполне логично: если оригинальный звук уже смешан с переводом, то извлечь его обратно, по логике вещей, не легче, чем, например, отделить сахар от воды, если он уже насыпан в стакан.
Но не всё так безнадёжно. Осмелюсь утверждать, что в ряде случаев выделить перевод из смикшированной звуковой дорожки можно (но не всегда!), о чём и пойдёт речь в этой статье.
Что вам нужно для этого (что нужно для продолжения чтения этой статьи)?
1. Обладать базовыми знаниями в области цифровой обработки сигналов;
2. Уметь пользоваться каким-либо из достаточно развитых пакетов для обработки звука CoolEdit, Sound Forge, WaveLab и т.п. В этой статье все примеры и иллюстрации приведены с использованием WaveLab. Если вы используете другой пакет, вам придётся подбирать аналогичные операции и фильтры в том пакете, которым пользуетесь вы);
3. Отдавать себе отчёт в том, что чудес не бывает, и конечный результат никто не гарантирует, а его качество будет напрямую зависеть не от аккуратного выполнения приведённых инструкций, а в основном от творческого подхода, умения мыслить и применять новые техники для его достижения.
Иными словами, основная идея этой статьи полностью изложена в разделе под номером 1, а все остальные разделы всего лишь иллюстрируют, как эту идею можно использовать на практике.
1. Общий принцип
На самом деле, звуковая дорожка с наложенным переводом представляет собой не более чем смесь двух сигналов: оригинального звука и голоса переводчика (обозначим её как S+V). Если у вас имеется оригинальная звуковая дорожка без наложенного перевода (то есть просто S), то извлечение чистого голоса переводчика - представляет из себя задачу для первого класса:
V = (S+V) - S<br><br> То есть, нам нужно просто вычесть из одного сигнала другой. Если вы имеете представление о цифровой обработке сигналов, то вы должны знать, что это делается суммированием двух сигналов, фаза одного из которых инвертирована.
Реальность же, однако, такова, что для того, чтобы эта арифметика начала работать, сигналы S в звуковой дорожке с переводом и в звуковой дорожке без перевода должны совпадать посэмплово. Это резко ограничивает круг материала, подходящего для нашей задачи.
Во-первых, отпадают случаи, когда имеется оригинальный звук без перевода, снятый с DVD, и звук с переводом, снятый с другого источника (видеокассета, Video-CD, телеэфир и т.п.). Даже если вам удастся более или менее синхронизировать эти две дорожки, синхронизировать их посэмплово (т.е. с точностью до байта) вряд ли представляется возможным.
Во-вторых, отпадают случаи, когда имеется две звуковых дорожки (со звуком и без звука), различающиеся по спектральным характеристикам (такое часто бывает, например, при преобразовании 6-канального звука с DVD).
Однако, этот способ прекрасно работает в том случае, если у вас имеется оригинальная звуковая дорожка и эта же дорожка с наложенным переводом. Например, вы когда-то накладывали перевод на, попавший к вам неведомыми путями, фильм, оригинальный звук оставили, а перевод потёрли (рассчитывая, что dvdspecial.ru будет жить вечно). Ну, или попался фильм с двумя звуковыми потоками - с переводом и без него (таких дисков много, например, у Digital Force).
2. Извлечение перевода с MPEG-4 диска с двумя потоками
Первым делом, нам нужно извлечь из обоих звуковых потоков AVI-файла два одноимённых канала и декодировать их для обработки в звуковом редакторе. Не перепутайте! Очень важно, чтобы это были именно одноимённые каналы (два левых или два правых). Я в примерах беру два левых канала.
Сделать это можно сотней разных способов, это уж кто как привык. Я это обычно делаю при помощи VirtualDubMod:
1. Загружаем AVI в VirtualDubMod;
2. В меню "Streams" выбираем "Stream List";
3. Выбираем из списка вторую дорожку и нажимаем на кнопку "Disable";
4. Кликаем на первую дорожку правой клавишей мыши и выбираем "Full Processing Mode";
5. Там же, выбираем "Conversion" и настраиваем параметры вот так:

Precision = 16-bit (все xxx-Dub-ы лажаются в этом месте, выставляя по умолчанию 8-bit);
Channels = Left (нам нужен только один канал);
6. Сохраняем звуковую дорожку (выбираем первую дорожку в списке и нажимаем на кнопку Save WAV);
7. Делаем второй проход:
7.1. На этот раз "Disable" для первой дорожки, а для второй - "Enable";
7.2. Full Processing Mode
7.3. Conversion, и всё настраиваем точно так же, как и в прошлый раз.
7.4. Cохраняем звуковую дорожку (кнопка Save WAV), под другим именем.
В итоге у нас получилось два одноканальных (моно) WAV-файла, скажем, "1.WAV" и "2.WAV"
Теперь начинается самое интересное и самое сложное. Я в примере использую Steinberg WaveLab, так что если вы привыкли к какому-нибудь другому редактору, вам придётся на ходу подбирать аналогичные действия и фильтры из него.
Запускаем WaveLab. Прежде чем открывать наши файлы, проверьте настройки, на закладке "File" должен быть включен параметр "Allow opening dual-mono files":

Именно так, мы откроем два одноканальных (моно) файла, как один двухканальный. В меню "File" выбирайте "Open" и выделите оба наших файла, удерживая Shift или Ctrl:

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

Теперь, в MasterSection набираем и настраиваем фильтры:
1. Первый слот оставьте пустым (я потом объясню, зачем);
2. Во второй слот выбираем фазоинвертор. Смысл этой операции - инвертировать фазу одного из каналов. Фильтров, выполняющих эту задачу, навалом, причём ввиду простоты реализации операции она входит во многие более сложные фильтры как одна из операций. Я для этого использую, например, VST-фильтр Flipper. Простой, бесплатный и со своей задачей справляется.
Настраивается он так:

3. В третий слот выбираем Leveller (из встроенного набора фильтров WaveLab).
Как настроить:
Volume Left выставляем в 0:

Mix To Mono выставляем в "On" (то есть включаем суммирование каналов):

Stereo Link и Volume Right пока оставьте как есть, дай Бог они и не понадобятся.
Теперь запустите воспроизведение. Если вам повезло, и попалась подходящая звуковая дорожка, то вы услышите только голос переводчика (если нет, читайте следующий раздел), ну и, кроме того, значительно тише, какие-то посторонние звуки (всхлипы, похрипывания и т.п.). Это ничто иное, как дефекты кодирования. Нам останется только убрать все лишние низкоуровневые шумы в паузах.
В четвёртый слот выбираем фильтр NoiseGate. Подойдёт практически любой фильтр подобного рода, я пользуюсь DirectX-фильтром от Sonic Foundry:

Пороговый уровень подбирается таким образом, чтобы минимально пострадал голос переводчика, но, в то же время, было срезано максимальное количество посторонних шумов. С этой же целью целесообразно уменьшить значение параметра Release Time.
Всё, нажимаем в MasterSection большую зелёную кнопку "Apply", ждём несколько минут, и получаем в новом окне файл с извлечённым переводом.

Последнее, что нам предстоит сделать - это "проехаться по нему напильником", т.е. подчистить посторонние шумы, которые частенько остаются после NoiseGate. Иногда их даже видно невооружённым глазом:

Сделать это можно только "вручную", детально просмотрев и прослушав весь файл и "ручками" вычищая все лишние звуки, никаких "автоматизированных" процедур на этот счёт человечество пока не придумало.
Разумеется, вероятность получения описанным способом идеально чистого перевода весьма мала, но результат вполне можно послушать при просмотре фильма с первозонного DVD или с кем-нибудь поделиться для наложения на MPEG-4 фильм (размер зазипованного "очищенного" перевода - 10-30 Мб, тогда как "неочищенной" звуковой дорожки - 90 мб и более).