Самоозвучивание

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, строка будет произнесена, даже если самоозвучивание отключено.

Это предназначено для целей доступности и не должно использоваться для игровых целей.