텍스트 음성 읽기
Ren'Py는 음성 합성기로 텍스트와 기타 인터페이스 요소를 읽어 주는 자동 읽기 모드를 지원합니다. 시각 장애가 있는 사용자도 Ren'Py 게임을 이용할 수 있도록 하는 기능입니다.
v 키를 누르면 자동 읽기 모드를 켜거나 끌 수 있습니다. Shift+A를 눌러 여는 접근성 메뉴에서도 자동 읽기 모드를 선택할 수 있습니다.
자동 읽기 모드에서는 키보드 탐색 방식이 바뀌어 위아래 방향키로 화면에 있는 포커스 가능한 모든 디스플레이어블을 차례로 이동합니다.
디스플레이어블에 포커스가 있으면 Ren'Py가 그 디스플레이어블의 텍스트를 소리 내어 읽습니다. 포커스된 디스플레이어블이 없으면 화면에 있는 포커스 불가능한 텍스트를 읽습니다. 여기에는 일반적으로 대사와 게임을 구성하는 다른 텍스트가 포함됩니다.
음성 합성
Ren'Py는 운영 체제의 음성 합성 서비스를 사용합니다. 음성 합성 속도와 목소리를 바꾸려면 해당 플랫폼의 음성 설정을 조정하세요.
- Windows
Windows에서는 Microsoft Speech API를 사용합니다. “음성 인식(Speech Recognition)” 제어판의 “텍스트 음성 변환(Text to Speech)” 탭에서 음성 합성 설정을 변경할 수 있습니다.
- Mac OS X
Mac OS X에서는
say명령을 사용합니다. “받아쓰기 및 말하기(Dictation & Speech)” 제어판의 “텍스트 음성 변환(Text to Speech)” 탭에서 음성 합성 설정을 변경할 수 있습니다.- Linux
Linux에서는
espeak명령을 사용합니다. 자동 읽기 모드를 사용하려면 먼저 패키지 관리자로 Espeak를 설치해야 할 수 있습니다.- Android, iOS, Chrome OS
이 플랫폼들에서는 내장 텍스트 음성 변환 서비스를 사용합니다.
- 웹
최신 브라우저가 지원하는 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"
사용 가능한 목소리는 플랫폼마다 다릅니다.
다른 모드
자동 읽기와 관련된 모드가 두 가지 더 있습니다.
- 클립보드
Shift+C를 누르면 클립보드 모드를 켜거나 끌 수 있습니다. 이 모드에서는 TTS로 읽는 대신 텍스트를 클립보드에 복사합니다. 클립보드 내용을 사용자에게 전달하는 스크린 리더나 기타 보조 기술과 함께 사용할 수 있습니다.
클립보드를 읽을 수 있는 번역 소프트웨어와 함께 사용할 때도 유용합니다.
- 디버그
Shift+Alt+V를 누르면 디버그 모드를 켜거나 끌 수 있습니다. 개발에 도움이 되도록 읽어 줄 텍스트를 화면에 표시합니다.
제작자가 고려할 사항
Ren'Py의 자동 읽기는 디스플레이어블에서 텍스트를 추출하여 플레이어에게 읽어 주는 방식으로 작동합니다. 텍스트는 여러 곳에서 추출합니다.
- Text 디스플레이어블
Ren'Py는 Text 디스플레이어블에서 텍스트를 추출하여 플레이어에게 읽어 줄 수 있도록 합니다.
- 대체 텍스트
대체 텍스트는 디스플레이어블의
alt스타일 속성으로 지정합니다.Action및BarValue클래스의 인스턴스에서도 제공할 수 있습니다. 명시적으로 지정한 대체 텍스트가 Action이나 BarValue에서 제공한 텍스트보다 우선하며, 이 둘은 모두 Text 디스플레이어블에서 추출한 텍스트보다 우선합니다.대체 텍스트는 Ren'Py의 문자열 번역 기능으로 번역됩니다. 대체 텍스트는 디스플레이어블과 그 자식에서 추출한 텍스트보다 우선하지만, 자식 텍스트는 "[text]" 문자열 치환으로 사용할 수 있습니다. 다른 문자열 치환은 허용되지 않습니다.
예를 들면 다음과 같습니다.
screen information(message, planet, badness): text message: color color_from_badness(badness) alt "전달할 정보: [text]. 나쁨 정도는 " + str(badness) text "메시지_발신지_{color=#f00}[planet!u]{/color}": alt "메시지 발신지는 " + planet
위 예제에서
badness와planet변수는 "[badness]" 같은 표현으로 직접 치환할 수 없습니다. 직접 문자열을 연결하면 해결할 수 있습니다.Character에 who_alt와 what_alt 매개변수를 전달하면 각각 캐릭터 이름과 본문의 alt 스타일 속성이 설정됩니다. 예를 들어 평소에는 생각을 이탤릭체로 나타내지만 자동 읽기에서는 생각임을 명시적으로 알려 주는 Character를 다음과 같이 정의할 수 있습니다.
define thought = Character(None, what_italic=True, what_alt="나는 생각한다. [text]")
스크린의 디스플레이어블에는
group_alt속성을 지정할 수 있습니다. 이 속성은 그룹 접두 문구를 지정합니다. 같은 접두 문구를 가진 디스플레이어블에 처음 포커스가 갈 때 읽으며, 다른 접두 문구를 가진 디스플레이어블에 포커스가 가기 전까지는 다시 읽지 않습니다.디스플레이어블에는
extra_alt속성도 지정할 수 있습니다. 포커스된 상태에서 '?' 키를 누르면 이 내용을 읽습니다. 여러 컨트롤이 어떻게 작동하는지 자세히 안내할 때 사용하는 기능입니다.- 설명 텍스트
설명 텍스트는 자동 읽기가 활성화되었을 때 서술자가 표시하고 읽는 텍스트입니다. 자동 읽기가 비활성화되어 있으면 표시되지 않습니다. 자동 읽기 텍스트에는 캐릭터와 비슷하게 정의된
alt변수를 사용합니다.- alt = ...
자동 읽기가 활성화되면 서술자를 통해 텍스트를 읽는 캐릭터 유사 객체입니다.
예를 들면 다음과 같습니다.
e "꽉 잡아요, 많이 흔들릴 거예요!" alt "그러고 나서 태양이 폭발했다..." # A complex and exciting cut scene. show event sun_exploding pause 10
설명 텍스트를 제어하는 변수도 있습니다.
- define config.descriptive_text_character = None
None이 아니면 서술자 대신 설명 텍스트를 표시하는 데 사용할 캐릭터 객체여야 합니다.
- 텍스트 태그
자동 읽기에 유용한 텍스트 태그가 두 가지 있습니다.
alt태그는 화면에 보이지 않고 소리로만 읽을 대체 텍스트를 제공하며,noalt태그는 화면에만 보이고 읽지 않을 텍스트를 제공합니다. 예를 들면 다음과 같습니다.p "제 이름은 {noalt}Cholmondeley{/noalt}{alt}첨리{/alt}입니다."
config.tts_substitutions 변수로 읽을 텍스트의 단어를 치환하여 발음을 더 세밀하게 조정할 수 있습니다. config.tts_voice 변수로는 플랫폼에서 제공하는 목소리 중 텍스트를 읽을 목소리를 선택할 수 있습니다.
Shift+Alt+V를 누르면 자동 읽기 디버그 모드를 활성화할 수 있습니다. 개발을 위해 읽어 줄 텍스트를 화면에 표시합니다.
Python
자동 읽기 시스템은 다음 함수를 제공합니다.
- renpy.alt(s, translate=True, force=False)
s를 읽기 대기열에 넣습니다. translate가 true이면 읽기 전에 문자열을 번역합니다. force가 true이면 자동 읽기가 비활성화되어 있어도 문자열을 읽습니다.
접근성 지원을 위한 함수이며 게임플레이 용도로 사용해서는 안 됩니다.