Skip to content

greenkms/elite-voice

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ED scoring events

Предназначение:

Программа является обработчиком событий журнала пилота игры Elite: Dangerous. Она автоматически отслеживает изменения в последнем файле журнала и обрабатывает события в нем, в соответствии с файлом конфигурации (config\config.xml)

Что может делать программа, реагируя на события:
  1. Проигрывать звуковые файлы с синхронном и асинхронном режимах. Останавливать проигрывание в асинхронном режиме.
  2. Проговаривать текст из игры и фразы, определенные пользователем.
  3. Изменять голос произношения, его громкость и скорость.
  4. В соответствии с параметрами события, принимать то или другое решение.
  5. Случайным образом принимать то или другое решение.

Установка программы:

  1. Разворачиваем архив из https://yadi.sk/d/_eCcY7lRy883R в папку на компьютере.
  2. Качаем и устанавливаем синтезаторы голосов http://www.programs74.ru/rhvoice.html (устанавливаем саму программу, языки русский и английский и, затем, сами русские/английские голоса).
  3. Копируем содержимое папки appdata в %APPDATA% на компьютере (обычно это С:\Users\<USER>\AppData\Roaming\). Это позволит немного поиграться с синтезируемой речью. Более подробную информацию можно найти тут: https://github.com/Olga-Yakovleva/RHVoice/wiki/Configuration-file-%28Russian%29
  4. Запускаем программу EliteVoice.exe. Обработка началась. (Программу, без зазрения совести, можно запускать/останавливать в любой момент)

Синтаксис конфигурации (config\config.xml):

Элемент Атрибуты Описание
Configuration Корневой элемент конфигурации
Init Секция инициализации программы
Replace match - регулярное выражение для замены текста
replace - заменяющая строка
source - регулярное выражение определения параметра события
target - имя параметра события, которому будет присвоено результат замены
ignorecase[true|false] - регистронезависимая замена
Глобальная замена/добавления параметра события и/или замена произносимого текста
Event name - имя события Секция события в игре. Все дочерние команды выполняются при возникновении данного события.
Play name - имя проигрывателя
file - имя звукового файла
volume[0..100] - уровень громкости
async[true|false] - асинхронное воспроизведение
Проиграть звуковой файл
Stop name - имя проигрывателя
fade - время затухания в миллисекундах
Остановить проигрыватель звукового файла. Если параметр name отсутствует, то останавливаются все проигрыватели.
TextToSpeech voice - имя голоса озвучки
volume[0..100] - уровень громкости
rate[-10..10] - скорость произношения
Установить параметры произношения текста для дочерних элементов или глобально.
Text select - название параметра события Произнести текст из параметра события или взять его из содержимого элемента.
Pause value - время остановки в миллисекундах Приостановить выполнение команд на value миллисекунд.
Randomize Выбрать одну из дочерних команд случайным образом.
Block priority[1..] - приоритет выбора блока, чем выше, тем больше вероятность Блок команд, для элемента Randomize
Switch select - название параметра события Выбор параметра для условия выбора в дочерних элементах Case/Default
Case match|imatch - соответствует регулярному выражению
equal|iequal - полное соответствие
Проверка условия значения параметра, заданного элементом Switch. Префикс i у атрибута означает, что сравнение будет регистронезависимым.
Default Условие по умолчанию в блоке Switch. Обязательно должен быть последним элементом.
Примеры:

Выполнить блок команд, при возникновении события SupercruiseEntry (вход суперкруиз):

	<Event name="SupercruiseEntry">
	...
	</Event>

Установить глобально голос "Anna" с самым быстрым произношением и половиной громкости. Сказать фразу. Переключить на голос "Irina" и среднюю скорость. Сказать фразу. И снова голосом "Anna" сказать фразу. Паузы между произношениями будут составлять 500 миллисекунд.

	<TextToSpeech voice="Anna" volume="50" rate="10"/>
	<Text>Привет люди! Говорит Анна.</Text>
	<Pause value="500"/>
	<TextToSpeech voice="Irina" rate="0">
		<Text>Ирина вмешивается в процесс</Text>
	</TextToSpeech>
	<Pause value="500"/>
	<Text>А теперь снова будет говорить Анна.</Text>

Произнести случайным образом одну из 3х фраз. Вероятность произношения первой фразы - 20%, второй - 50%, третьей - 30%

	<Randomize>
		<Block priority="2">
			<Text>Первая фраза</Text>
		</Block>
		<Block priority="5">
			<Text>Вторая фраза</Text>
		</Block>
		<Block priority="3">
			<Text>Третья фраза</Text>
		</Block>
	</Randomize>

Проиграть звуковой файл на громкости 20%. После его завершения произнести фразу.

	<Play file="sound\music.mp3" volume="20"/>
	<Text>Музыка кончилась</Text>

Начать проигрывание звукового файла на громкости 50%. Через 10 секунд произнести фразу и в течении 5 секунд остановить проигрывание.

	<Play name="player1" file="sound\music.mp3" volume="50" async="true"/>
	<Pause value="10000"/>
	<Text>Сейчас музыка начнет заканчиваться</Text>
	<Stop name="player1" fade="5000"/>

Проверить от кого пришло сообщение в игре и соответственно выбрать, значение какого параметра использовать для произношения сообщения.

	<Switch select="Channel">
		<Case imatch="(player|wing)">
			<Text select="Message"/>
		</Case>
		<Default>
			<Text select="Message_Localised"/>
		</Default>
	</Switch>

Секция инициализации. Глобально заменять "мама" на "папа". Заменять "Euryale" на "Эвриала", если источником является параметр "StarSystem".

  <Init>
    <Replace match="мама" replace="папа"/>
    <Replace source="StarSystem" match="Euryale" replace="Эвриала"/>
    ...
  </Init>

Замечания:

  1. Чтобы понять, что RHVoice с вашими голосами подключился, можно посмотреть в дебаг выводе, какие голоса подключены в системе. У меня лично такие:

    Found voices:
    Anna
    Alan
    Aleksandr
    Aleksandr+Alan
    Microsoft Anna - English (United States)
    CLB
    Elena
    Elena+CLB
    Irina
    SLT

  2. В дебаг выводе можно увидеть, какие события обрабатываются, а какие нет. И соответственно написать/изменить из обработчики.

  3. Об ошибках сообщайте мне в discord (ник haps) или на github

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%