> Как снять перевод со звуковой дорожки фильма? (А с DVD?)
 VxWorks Member is Offline
 Posted: 05-10-2006, 02:10 (post 1, #660325)

Daysleeper
Forum moderator
Group: Privileged
Posts: 21927
Warn:0%-----
Как снять перевод со звуковой дорожки фильма? (А с DVD?)
Клавдиенко Евгений

Данная статья впервые была опубликована у 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" и настраиваем параметры вот так:

user posted image

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":

user posted image

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

user posted image

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

user posted image

Теперь, в MasterSection набираем и настраиваем фильтры:

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

Настраивается он так:

user posted image

3. В третий слот выбираем Leveller (из встроенного набора фильтров WaveLab).

Как настроить:

Volume Left выставляем в 0:

user posted image

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

user posted image

Stereo Link и Volume Right пока оставьте как есть, дай Бог они и не понадобятся.

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

В четвёртый слот выбираем фильтр NoiseGate. Подойдёт практически любой фильтр подобного рода, я пользуюсь DirectX-фильтром от Sonic Foundry:

user posted image

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

Всё, нажимаем в MasterSection большую зелёную кнопку "Apply", ждём несколько минут, и получаем в новом окне файл с извлечённым переводом.

user posted image

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

user posted image

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

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

PM
Top Bottom
 VxWorks Member is Offline
 Posted: 05-10-2006, 02:11 (post 2, #660328)

Daysleeper
Forum moderator
Group: Privileged
Posts: 21927
Warn:0%-----
3. Подгонка звуковых потоков

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

Сначала вам необходимо исследовать исходный материал на предмет причин несоответствия каналов. Вот список основных причин:

1. Каналы смещены друг относительно друг друга;
2. Каналы имеют различные уровни громкости;
3. Каналы имеют различные спектральные характеристики;
4. Каналы имеют в своём составе различные сигналы;

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

A. Смещение каналов

Каким образом каналы могут быть смещены друг относительно друга? Это хорошо видно на следующей иллюстрации:

user posted image

Для правильной работы метода, описанного в предыдущем разделе, нам необходимо совместить каналы с точностью до сэмпла. Как это сделать? Можно, например, использовать DirectX-фильтр SampleSide, который бесплатно распространяет компания AnalogX. Я делаю это "вручную", удаляя небольшие фрагменты в начале одного из каналов. Подгонку нужно произвести очень тщательно, с точностью до сэмпла, иначе нужного результата вы не получите.

Б. Разные уровни громкости

Далее, каналы могут иметь различные уровни громкости:

user posted image

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

Как с этим бороться? Нам поможет тот же Leveller, который уже выбран в третий слот MasterSection:

user posted image

Переключите "Stereo Link" в значение "Off", запустите файл на воспроизведение, и регулируйте уровень одного из каналов (правого или левого, в зависимости от того, в сторону которого канала имеется перекос уровня), на слух пытаясь добиться того, чтобы громкость оригинальной звуковой дорожки стала как можно меньше.

В. Различный спектральный состав каналов

Далее, если каналы имеют различные спектральные характеристики, можно попробовать отфильтровать оба канала перед их обработкой, выделив только тот диапазон частот, который нас интересует, а именно - диапазон голоса переводчика. Для этого в первый слот (помните, мы оставили его пустым?), выберем любой графический эквалайзер (я, например, использую для этого DirectX эквалайзер от Sonic Foundry), и настроим его на средние частоты, примерно от 300 до 1500 кГц:

user posted image

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

Г. Различный сигнальный состав

Откуда берутся такие дорожки? В основном - с DVD. Дело в том, что современные программные средства обычно не дают возможности извлечь из 6-канальной дорожки ровно и только один канал. Как правило, в результате декодирования AC3 вы получите сумму из нескольких каналов, смешанных с разными соотношениями.

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

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


4. Извлечение перевода с DVD

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

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

Но, сначала, перечислю типы дисков, которые изначально непригодны для извлечения перевода:

1. Диски с дубляжом, а не синхронным переводом (т.е. большинство так называемых "лицензионных" DVD, или R5);
2. Диски, на которых нет оригинальной и/или русской звуковой дорожки;
3. Диски, на которых оригинальная и/или русская дорожка записана в формате DTS (в этой статье рассматриваются только звуковые потоки AC3).

Существует много разных способов извлечь звуковые потоки с DVD-диска. Я использую для этой цели программу DVD2AVI. Запустите её, и в меню "File" выберите пункт "Open" (можно перед этим рипнуть DVD на жесткий диск компьютера, а можно открывать и прямо с привода DVD-ROM, если диск не зашифрованный, не "многоугольный" и т.п.).

Выберите первый файл сегмента, содержащего фильм (вы его сразу увидите, он больше всех по размеру и количеству файлов. На иллюстрации это сегмент ¹3):

user posted image

Остальные файлы этого сегмента DVD2AVI "подхватит" автоматически:

user posted image

Поскольку основной нашей задачей является извлечь звук, я не буду подробно останавливаться на многочисленных настройках DVD2AVI, к тому же все они замечательно описаны в мануалах по кодированию DivX (см., например, здесь). Единственное, что нам обязательно нужно настроить здесь - это каким именно способом будут сохраняться звуковые дорожки. В меню "Audio/Dolby Digital" включите режим "Demux All Tracks":

user posted image

Всё, теперь можно сохранять звуковые потоки. Для этого, в меню "File" выберите "Save Project" (не "Save AVI"!). При сохранении проекта DVD2AVI выгружает все звуковые дорожки AC3 в отдельные файлы рядом с файлом проекта.

Итак, мы получили несколько (два, три, четыре) файлов с расширением .AC3. Каким образом определить, какая из них оригинальная, а какая с переводом? Для этого я обычно использую программу IfoEdit :

user posted image

На приведённой иллюстрации видно, что в сегменте ¹3 первый поток - русский, второй - испанский (т.е. оригинальный).

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

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

Запустите его, откройте первый нужный AC3-файл (кнопкой "Source File"), нажмите кнопку "Options", и настройте всё точно так, как показано на иллюстрации:

user posted image

При декодировании очень важно правильно настроить параметры. Отключите буквально всё: двухпроходность, нормализацию, ресамплинг, бустер и т.д. Выделив в дополнительном окне (справа) только центральный канал, отключите его DRC (Dynamical Range Control), и выставьте коррекцию уровня (gain) в ноль. Для выходных каналов то же самое - выбрать только центральный канал и отключить его DRC. "Downmix Type" выставить в Stereo (ну или в Mono, у нас так и так получается один канал).

Нажмите кнопку "Start", и можно перекурить. Полуторачасовая дорожка декодируется (на P4/1700) примерно 5-7 минут, и занимает на диске 500-700 мб. (Если декодер вываливается, можно попробовать заменить DLL на MMX-версии, как советует сама программа (см. в разделе Download на сайте), либо поиграть с параметром "Delay" (выставить чётное значение, либо вообще уменьшить до нуля, иногда помогает).

Повторите всё в точности для второй дорожки.

В итоге, вы получили два моно-файла (WAV), которые далее нужно обработать так, как описано в предыдущих разделах этой статьи. Сразу предупреждаю - в отличие от MPEG4 диска, потоки, декодированные с DVD, как правило требуют подгонки и по смещению, и по уровню каналов, и заключительной подчистки мелких посторонних шумов.

По моей статистике, результативность этой методики составляет примерно 80-85 процентов (DVD, с которых не удавалось снять перевод,- это диски, на которых записаны русские дорожки, взятые с других источников - кинотеатр, лента и т.п., а не исходные дорожки с наложенным переводом). Кроме того, следует отметить, что перевод, полученный с DVD, как правило, значительно "чище" перевода, полученного с MPEG4-диска.

Е.Клавдиенко

Если у вас возникают какие-либо вопросы - обращайтесь за дополнительной помощью в форум.
PM
Top Bottom
Topic Options