음성

Ren'Py는 대사와 함께 음성을 재생할 수 있습니다. 재생할 파일명을 지정하는 voice 문을 사용합니다.

voice "line0001.ogg"
"Ren'Py에 오신 걸 환영해요"

일반적으로 재생 중인 음성은 다음 상호작용 시작 시 중지됩니다. voice sustain 문을 사용하면 상호작용을 넘어 재생을 유지할 수 있습니다.

voice "line0001.ogg"
"Ren'Py에 오신 걸 환영해요..."

voice sustain
"... 여러분의 디지털 스토리텔링 엔진이에요."

config.voice_filename_format 변수로 음성 파일명의 형식을 바꾸어 디렉터리와 확장자를 생략할 수 있습니다.

음성 태그

Ren'Py의 음성 태그 시스템으로 특정 캐릭터의 음성만 음소거하거나 해제할 수 있습니다. 각 Character()에 voice_tag 인수를 지정하고, 플레이어가 음성 설정을 전환하도록 SetVoiceMute()나 ToggleVoiceMute() 액션을 사용합니다.

예를 들면 다음과 같습니다.

define e = Character("에일린", voice_tag="eileen")
define l = Character("루시", voice_tag="lucy")

screen voice_toggle:
    vbox:
        textbutton "에일린 음성 끄기" action ToggleVoiceMute("eileen")
        textbutton "루시 음성 끄기" action ToggleVoiceMute("lucy")

label start:
    show screen voice_toggle

    voice "e01.ogg"
    e "캐릭터의 음성을 켜고 끌 수 있어요."

    voice "l01.ogg"
    l "좋아! 이제 드디어 널 조용히 시킬 수 있겠네!"

    voice "l02.ogg"
    l "잠깐... 그럼 내 목소리도 끌 수 있다는 거잖아! 진짜?"

자동 음성 재생

Ren'Py는 재생할 음성 파일을 자동으로 결정할 수 있으므로 각 대사 앞에 voice 문을 넣지 않아도 됩니다.

각 대사의 식별자와 일치하는 음성 파일을 만들면 됩니다. 식별자를 확인하려면 먼저 런처에서 대사 추출(Extract Dialogue), 탭으로 구분한 스프레드시트(Tab-delimited Spreadsheet (dialogue.tab)), 계속(Continue)을 선택하여 대사를 스프레드시트로 내보냅니다. 생성된 dialogue.tab은 스프레드시트 프로그램에서 열 수 있습니다.

첫 번째 열은 사용할 식별자이며 나머지 열에는 대사 관련 정보가 있습니다.

자동으로 음성을 재생하려면 config.auto_voice를 {id}가 포함된 문자열로 설정합니다. 대사가 실행되면 {id}를 대사 식별자로 바꾸어 파일명을 만들고, 파일이 있으면 재생합니다.

예를 들어 다음 설정에서:

config.auto_voice = "voice/{id}.ogg"

대사 식별자가 demo_minigame_03fc91ef이면 해당 대사를 표시할 때 Ren'Py가 voice/demo_minigame_03fc91ef.ogg 파일을 찾고 있으면 재생합니다.

다국어 음성

여러 언어로 더빙할 때 이미지와 파일 번역으로 Ren'Py 번역 시스템을 활용할 수 있습니다. 원래 언어가 영어이고 프랑스어 더빙을 제공하는 게임에 다음 대사가 있다고 가정하겠습니다.

voice "omelette.ogg"
e "전 치즈를 넣은 스크램블드에그를 좋아해요..."

영어 버전을 game/omelette.ogg, 프랑스어 번역을 game/tl/french/omelette.ogg에 두면 게임에서 프랑스어가 활성화되었을 때 프랑스어 버전을 사용합니다.

번역 파일의 game/tl/<language>/ 이하 경로가 원본 파일의 game/ 이하 경로와 같으면 자동 음성 재생에서도 같은 방식으로 동작합니다.

음성 함수

_get_voice_info()

현재 say 문에서 재생 중인 음성 정보를 반환합니다. say 문 실행 중에만 호출할 수 있습니다.

반환된 객체에는 다음 필드가 있습니다.

VoiceInfo.filename

재생할 음성 파일명입니다. 재생할 파일이 없으면 None입니다.

VoiceInfo.auto_filename

자동 음성 재생을 위해 Ren'Py가 찾은 파일명입니다. 찾지 못하면 None입니다.

VoiceInfo.tag

말하는 Character에 지정한 voice_tag 매개변수입니다.

VoiceInfo.sustain

이 상호작용에서 파일 재생을 시작했으면 False, 이전 상호작용에서 이어 재생 중이면 True입니다.

voice(filename, tag=None)

voice 채널에서 filename을 재생합니다. voice 문에 대응합니다.

filename

재생할 파일명입니다. config.voice_filename_format과 함께 사용하여 실제 재생할 파일명을 만듭니다.

tag

None이 아니면 재생할 음성 태그를 나타내는 문자열이어야 합니다. None이면 다음 상호작용을 발생시키는 Character의 voice_tag가 기본값입니다.

음성 태그는 말하는 캐릭터를 지정하여 사용자가 특정 캐릭터의 음성을 음소거하거나 해제할 수 있게 합니다.

voice_can_replay()

현재 음성을 다시 재생할 수 있으면 참을 반환합니다.

voice_replay()

가능하면 현재 음성을 다시 재생합니다.

voice_sustain(ignored='', **kwargs)

voice sustain 문에 대응하는 함수입니다.

음성 액션

PlayCharacterVoice(voice_tag, sample, selected=False)

voice_tag의 캐릭터가 말하는 것처럼 voice 채널에서 sample을 재생합니다. 음량은 설정하지만 파일에 대한 다른 음성 관련 처리는 하지 않습니다. 메뉴에서 사용자가 캐릭터 음량을 정하도록 돕는 용도입니다.

voice_tag

말하는 캐릭터의 음성 태그입니다. 사용할 음량을 결정합니다.

sample

소리 파일의 전체 경로입니다.

selected

True이면 샘플 재생 중 이 액션을 사용하는 버튼을 선택 상태로 표시합니다.

SetCharacterVolume(voice_tag, volume=None)

각 캐릭터의 음량을 조절할 수 있게 합니다. volume이 None이면 voice_tag의 값을 제어하는 BarValue를 반환합니다. 그 밖의 경우 volume으로 설정합니다.

volume은 0.0에서 1.0 사이의 숫자이며 voice 채널 믹서 음량에 대한 비율로 해석합니다.

SetVoiceMute(voice_tag, mute)

mute가 참이면 지정한 voice_tag로 재생하는 음성을 음소거합니다. mute가 거짓이면 voice_tag의 음소거를 해제합니다.

ToggleVoiceMute(voice_tag, invert=False)

voice_tag의 음소거 여부를 전환합니다. 해당 음성 태그가 음소거 상태이면 선택됩니다. 단, invert가 참이면 음소거가 해제된 상태에서 선택됩니다.

VoiceReplay()

가장 최근에 재생한 음성을 다시 재생합니다.