Информация: Уважаемые посетители! В течение нескольких месяцев на форуме существовала проблема с регистрацией новых пользователей, о которой администрации стало известно недавно. Если вы ранее пытались зарегистрироваться на форуме, но не получили на ваш e-mail письмо с ссылкой для подтверждения регистрации, просим вас зарегистрироваться повторно. Приносим извинения за доставленные неудобства. Если вы все еще испытываете проблемы с регистрацией на форуме, обратитесь за помощью на e-mail: mr.angelo@railroadsim.net

Аватара пользователя
A1iv
 
Сообщения: 401
Зарегистрирован: 27.10.2011, 03:30
Откуда: РФ, Тверская обл.
Играю в: RailWorks
Имя: Алексей
Блог: Просмотр блога (10)
Поиск в блогах

Озвучивание станций и др. сообщений в сценариях Railworks

Постоянная ссылка A1iv 23.08.2014, 19:21

Порядок озвучивания станций в сценариях Railworks


Сценарии - это то, что оживляет симулятор и делает его интересным, либо не интересным. Каким бы ни был хорош симулятор графически, именно скриптовые составляющие делают его конечным продуктом, добавляют функциональность и строят сюжет.
Сегодня, для читателей моего блога :hi: , расскажу как cделать озвучивание станций, любых других сообщений в пути, или просто включение музыки/радио в сценариях Railworks. Авось интересней будет. Делается это, разумеется, с помощью скрипта. В процессе будет также затронута тема озвучивания своих текстовых сообщений и тема обработки звука.

Предисловие. Что можно озвучить?

Единственная, известная мне команда скрипта для озвучивания в сценариях, призвана озвучивать станции в кабине и салоне электрички. Но ее можно использовать и для появления любых других звуков в пути - разговоров лок. бригады, переговоров с диспетчером, звуков САУТ, предупреждений, включение музыки, радио, и др. . Пример звуков:

www.youtube.com Видео от : www.youtube.com


Шаг 1 Получение звуков

Звуки САУТ и переговоры с диспетчером можно найти или попросить. А вот названия станций для маршрута и, к примеру, само голосовое задание для машиниста - точно придется делать самому.
Для озвучивания станций или задания от диспетчера можно воспользоваться синтезатором речи. Есть программы синтезатора речи, как с мужскими, так и с женскими голосами. Я же, не долго думая, воспользовался онлайн переводчиком - в нем уже встроен синтезатор речи. Выбрал яндекс переводчик, там речь по-четче, чем в остальных.
-----
Отдельно стоит сказать о подготовке слова перед озвучкой. Синтезатор речи - это робот, и всегда будет озвучивать сообщения механически. А речь человека имеет тональность, эмоции за счет ударений и других знаков. Поэтому, вооружившись всеми знаками препинания русского языка, заглавными буквами, а также мягким и твердым знаком, нужно построить сообщение роботу так, чтобы произношение слышалось как произнесенное человеком, с эмоциями. Хотя в данном описанном случае (звук САУТ) важна скорее четкость речи, дикция.
Подставляя в сообщение различные знаки препинания русского языка, нужно добиться результата.

Пример обработанного сообщения для звука САУТ "Внимание! Впереди станция!":
Внимание! Впереди, стАнция!

В других случаях используются:
дефис и заглавные буквы - для показа ударения,
точка-запятая-двоеточие-точка с запятой - для выдерживания пауз в речи,
восклицательный-вопросительный и оба - для показа тональности речи.
-----
Теперь нужно сохранить звук названия станции из интернета. Это можно сделать с помощью программ из браузера, которые читают и сохраняют аудио файлы. У меня flashgot не хочет их видеть, поэтому можно записать видео с экрана (с помощью программ camstudio или bandicam), с качеством звука не более 128 кбит/с, и в последствии из него вынуть звук.
Вынуть звук из видео можно во многих программах, я использую что-то типа freemake audio converter, freemake video converter и format factory для любых операций, хотя для этого есть специальные программы типа Аудио экстракторов.
Качество получаемого аудио файла в формате mp3 например, достаточно не более 128 кбит/с, а оптимально - даже 96 кбит/с. Подойдет и 64 для простых звуков. Зачем высокое качество для просто речи?
Звук получен, теперь нужно его обработать.

Шаг 2 Обработка звука (в программе Wavosaur)

Для обработки звука есть несколько программ. Я пользуюсь Wavosaur (хотя планирую перейти и на audacity позже).
Если не хотите заморачиваться на обработке, то просто выделите все (ctrl+a), пройдитесь фильтром высоких частот около 1200 Гц, сохраните результат и переходите к след. шагу.

Для обычных звуков,- подвижного состава, вырезанных из видеороликов или взятых напрямую с помощью программ типа flashgot,- понадобится пройтись по ним хорошим фильтром шумоподавления. В wavosaur можно подключать различные VST плагины, в т.ч. для шумоподавления. Но в моем случае, для названий станций, звук достаточно чистый - от голосового синтезатора речи, поэтому шумов тут и так минимум.
Для имитации голоса из громкоговорителя, нужно на звук наложить высокочастотный фильтр Чебышев, с частотой 1200 Гц приблизительно, плюс-минус небольшое значение. Все подбирается на слух, плюс смотря на график частот. К каждому звуку индивидуальный подход, особенно когда это будут звуки не от синтезатора речи, а полученные из видео звуки ПС.
Кроме того, понадобится еще звук радиопомех. Его нужно заполучить и наложить отдельной дорожкой, не забыв по нему тоже пройтись высокочастотным фильтром. А потом свести все это к 1,2 дорожкам в зависимости от цели (см. шаг 3).
Поскольку в файле присутствует речь, и она нужна плавная, мягкая, не контрастная, но в тоже время акцентированная, не помешает пройтись по ней "нормализацией" где-нибудь на -4-5 дБ; и усечь по -3дБ после прибавления громкости возможно.
Теперь прибавить громкости звучания, пока на слух. В последствии, для первого файла придется проверять громкость звучания уже в симуляторе, зато потом по этому экземпляру можно выравнивать громкость остальных звуков. Достаточно запомнить на сколько дБ прибавлять громкость файлов, озвученных голосовым синтезатором речи. Вообще, нормальную громкость файлов, выравнивание громкости файлов, делать лучше в простой программе mp3gain или другой.

Также нужно подкорректировать темп и обрезать файл. Темп я так и не нашел как корректировать в программе wavosaur. (Это серьезный минус этой программы, если этой функции нету.)

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

Шаг 3 Два типа wav звука (моно, стерео) для разных целей

Окончательной подготовкой по звукам будет выбор цели для которой он предназначен и выбор формата. Формат симулятором поддерживается wav или dav.
Особенность вызова SysCall ( "ScenarioManager:PlayDialogueSound","sosnogorsk.wav"); заключается в том, что он предназначен для двух целей: озвучивание названий станций, озвучивание любых других звуков и музыки. Для озвучивания станций нужен моно файл, для других звуков и музыки - стерео. Хотя я использую стерео для всего.
Как работает вызов с моно wav файлом? Впереди поезда на расстоянии метров 100-200 создается временный объект. Это он проигрывает звук. Для нормального проигрывания нужно заранее рассчитать на каком расстоянии от платформы поставить маркер, с какой скоростью должен двигаться поезд и какую отсрочку у Триггера сделать, чтобы поезд подъехал ко звуку вовремя. Иначе звук будет тихим.

Для стерео wav файла ничего не нужно. Он звучит как фоновая музыка, отовсюду.

Шаг 4 Расставление "звуков" в редакторе сценариев

По идее, звуки должны срабатывать в любое время по вызову из сценария (после прихода очереди срабатывания Триггер инструкции сценария в расписании) или после прохождения поездом спец. маркера на путях. Но вызов SysCall ( "ScenarioManager:PlayDialogueSound","sosnogorsk.wav"); , который здесь будет применяться, ставит свои условия, т.к. предназначен для проигрывания не любых, а звуков названия станций прежде всего. Для его срабатывания нужна станция или остановочный пункт. Других вызовов для проигрывания звуков в сценариях мне пока не известно, поэтому приходится подстраиваться под него.
Итак, срабатывание задуманных звуков можно сделать, и в любом месте на путях. Возможно реализовать озвучивание станций, или же звуки САУТ типа "впереди мост!", "впереди станция!", "впереди путепровод!", и др. звуки.
Звуковые сообщения вызова SysCall ( "ScenarioManager:PlayDialogueSound","sosnogorsk.wav"); срабатывают ТОЛЬКО после прохождения поездом маркера станции или остановочного пункта. Это маркеры "конечный пункт" и "остановиться у". Я выберу маркер типа "конечный пункт" и поставлю его прямо перед станцией, которую хочу озвучить. Маркер ставится по направлению движения поезда, никакой длины остановочного пункта.
По умолчанию, маркер будет называться "(S) пункт 1". Название вполне подходящее: S - sound, пункт - местечко на путях. Только изменить "1" на "платформа 1", перед которой он установлен. :haha:

Изображение

За условной станцией в расписании должна следовать Триггер инструкция (см. рис. справа - расписание движения поезда). Триггер - это переключатель, он вызывает действие скрипта, соответственно вызывает звук. Триггер нужно назвать по английски в его маленьком поле. Там же можно написать сообщение, которое появится на экране, там же можно указать отсрочку срабатывания в секундах, чтобы оглашение станции произошло когда поезд уже остановился. А можно оставить так, чтобы оглашение станции произошло когда электричка только подъезжает к ней.
По умолчанию, звук сработает после проезда маркера последним вагоном поезда + отсрочка в секундах (если есть). Пример очередности в расписании представлен на рисунке выше. Указана остановка в псевдо-остановочном пункте (S) пункт платформа 1, за ней Триггер, который сработает после проезда последним вагоном поезда этой остановки и вызовет звук (скрипт).

Шаг 5 Скрипт

Для начала нужно создать папку Ru в папке вашего сценария и сложить туда все звуки. Иначе не сработает. Расположение сценария ориентировочно, для маршрута тест-трек, у меня например, такое: L:\Steam\steamapps\common\railworks\Content\Routes\00000008-0000-0000-0000-000000000000\Scenarios\17eae5c2-86c1-4dc8-97d9-d29729c9f009\ . Вычислить свой сценарий можно, например, по названию. Если назвать его латиницей, то в xml файле сценария можно найти (нажать ctrl+f) это название.

Далее нужно создать скрипт сценария в кодировке ANSI (насколько помню) и, сохранив его как ScenarioScript.lua, положить в папку сценария. Можно создавать и в обычном блокноте, но рекомендую notepad++ с включением подсветки синтаксиса lua.

Скрипт для сценария, где расписание поезда в нем представлено на рисунке выше:

Код: Выделить всё
-- Scenarioscript.lua by A1iv, 2014

-- true/false is
FALSE = 0
TRUE = 1

function OnEvent ( event )
   if event == "s-platforma1" then
      SysCall ( "ScenarioManager:PlayDialogueSound","platforma1.wav");
      return TRUE;
   end
end


Здесь:
"s-platforma1" - название Триггер инструкции, которая этот скрипт и вызвала. Оно должно соответствовать тому, которое указано в расписании поезда.
"ScenarioManager:PlayDialogueSound","platforma1.wav" - вызов звукового файла. Название файла должно соответствовать тому, что положен в папку Ru. Формат указывается формально, не надо писать wav в названии самого файла.

На этом все. Возможны мелкие исправления.
Последний раз редактировалось A1iv 30.08.2014, 23:48, всего редактировалось 18 раз(а).

Save Donbass people from Kiev agression. Ушел на TSW.
0 комментариев 46248 просмотров

Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot], Yahoo [Bot]