Самоозвучивание
Ren'Py поддерживает режим самоозвучивания, в котором используется синтезатор речи для чтения текста и других элементов интерфейса. Это предназначено для того, чтобы сделать игры на Ren'Py доступными для людей с нарушениями зрения.
Режим самоозвучивания можно переключить нажатием клавиши v. Режимы самоозвучивания
можно выбрать в меню специальных возможностей, которое открывается нажатием Shift+A.
В режиме самоозвучивания навигация с клавиатуры изменяется таким образом, что клавиши со стрелками вверх и вниз перебирают все фокусируемые displayable-объекты на экране.
Когда displayable-объект находится в фокусе, Ren'Py озвучивает текст, связанный с этим объектом. Если ни один displayable-объект не в фокусе, Ren'Py будет читать экранный текст, который не может быть сфокусирован. Обычно это включает диалоги и другой текст, составляющий игру.
Синтез речи
Ren'Py полагается на операционную систему для предоставления услуг по синтезу речи. Чтобы настроить скорость синтеза речи и используемый голос, измените настройки речи вашей платформы.
- Windows
В Windows Ren'Py использует Microsoft Speech API. Настройки синтеза речи можно изменить на вкладке "Text to Speech" панели управления "Speech Recognition".
- Mac OS X
В Mac OS X Ren'Py использует команду
say. Настройки синтеза речи можно изменить на вкладке "Text to Speech" панели управления "Dictation & Speech".- Linux
В Linux Ren'Py использует команду
espeak. Возможно, потребуется установить Espeak с помощью вашего пакетного менеджера, прежде чем режим самоозвучивания заработает.- Android, iOS, Chrome OS
Эти платформы используют встроенные службы преобразования текста в речь.
- Web
Здесь используется Web Speech API, который поддерживается современными браузерами.
Голос по умолчанию можно выбрать для каждой платформы, используя
переменную config.tts_voice. Например:
init python:
if renpy.windows:
config.tts_voice = "Mark"
elif renpy.macintosh:
config.tts_voice = "Alex"
elif renpy.linux:
config.tts_voice = "english_rp"
Доступные голоса зависят от платформы.
Другие режимы
Существуют два других режима, связанных с самоозвучиванием.
- Clipboard (Буфер обмена)
Режим буфера обмена можно переключить нажатием Shift+C. В этом режиме текст копируется в буфер обмена вместо воспроизведения через TTS. Это можно использовать со скринридерами или другими вспомогательными технологиями, которые представят содержимое буфера обмена пользователю.
Это также может быть полезно для программ-переводчиков, которые могут считывать из буфера обмена.
- Debug (Отладка)
Режим отладки можно переключить нажатием Shift+Alt+V. В режиме отладки текст, который должен быть озвучен, отображается на экране, чтобы помочь в разработке.
Задачи для создателя
Самоозвучивание в Ren'Py работает путем извлечения текста из displayable-объектов и зачитывания его игроку. Ren'Py извлекает этот текст из нескольких мест.
- Текстовые displayable-объекты
Ren'Py извлечет текст из displayable-объекта Text и сделает его доступным для чтения игроку.
- Альтернативный текст
Альтернативный текст предоставляется через стилевое свойство displayable-объекта
alt. Он также может быть предоставлен экземплярами классовActionиBarValue. Явно предоставленный альтернативный текст имеет приоритет над текстом, предоставляемым Action или BarValues, и оба имеют приоритет над текстом, извлеченным из текстовых displayable-объектов.Альтернативный текст переводится с помощью механизма строкового перевода Ren'Py. Альтернативный текст имеет приоритет над текстом, извлеченным из displayable-объекта и его дочерних элементов, но такой дочерний текст доступен через строковую подстановку "[text]". Другие строковые подстановки не допускаются.
Например:
screen information(message, planet, badness): text message: color color_from_badness(badness) alt "Information for you : [text]. Badness is " + str(badness) text "ORIGIN_OF_MESSAGE_{color=#f00}[planet!u]{/color}": alt "Origin of message is " + planet
В приведенном выше примере переменные
badnessиplanetне могут быть подставлены напрямую с помощью "[badness]". Конкатенация вручную является решением.Указание параметров who_alt и what_alt для Character устанавливает стилевое свойство alt для имени персонажа и основного текста соответственно. В качестве примера мы определяем Character, который использует курсив для обозначения мыслей в обычном режиме, но явно указывает на мысли через самоозвучивание:
define thought = Character(None, what_italic=True, what_alt="I think, [text]")
В экранах displayable-объектам может быть присвоено свойство
group_alt, которое используется для задания группового префикса, озвучиваемого при первом фокусе на displayable-объекте с таким же префиксом группы, но не будет озвучиваться снова, пока не будет сфокусирован displayable-объект с другим префиксом группы.Displayable-объектам также может быть присвоено свойство
extra_alt, которое озвучивается при нажатии клавиши '?' во время фокуса на displayable-объекте. Это предназначено для более подробной информации о том, как работает группа элементов управления.- Описательный текст
Описательный текст — это текст, который отображается (и озвучивается) рассказчиком, если включено самоозвучивание. Текст не отображается, если самоозвучивание отключено. Текст для самоозвучивания использует переменную
alt, которая определена по аналогии с персонажем.- alt = ...
Объект, подобный персонажу, который использует рассказчика для озвучивания текста, если включено самоозвучивание.
Например:
e "Hang on, this is gonna be a bumpy ride!" alt "And then the sun exploded..." # A complex and exciting cut scene. show event sun_exploding pause 10
Существует переменная, управляющая описательным текстом:
- define config.descriptive_text_character = None
Если не None, это должен быть объект персонажа, который используется для отображения описательного текста вместо рассказчика.
Переменная config.tts_substitutions может быть использована для замены
слов в озвучиваемом тексте для лучшего контроля произношения. Переменная
config.tts_voice может быть использована для выбора голоса для
озвучивания текста из голосов, доступных на платформе.
Режим отладки самоозвучивания можно включить, набрав Shift+Alt+V. Это отобразит на экране текст, который был бы озвучен, для целей разработки.
Python
Следующие функции предоставляются системой самоозвучивания:
- renpy.alt(s, translate=True, force=False)
Эта функция ставит строку s в очередь для произнесения. Если translate равно true, строка будет переведена перед произнесением. Если force равно true, строка будет произнесена, даже если самоозвучивание отключено.
Это предназначено для целей доступности и не должно использоваться для игровых целей.