음성
Ren'Py는 대사와 함께 음성을 재생할 수 있습니다. 재생할 파일명을 지정하는 voice 문을 사용합니다.
voice "line0001.ogg"
"Ren'Py에 오신 걸 환영해요"
일반적으로 재생 중인 음성은 다음 상호작용 시작 시 중지됩니다. voice sustain 문을 사용하면 상호작용을 넘어 재생을 유지할 수 있습니다.
voice "line0001.ogg"
"Ren'Py에 오신 걸 환영해요..."
voice sustain
"... 여러분의 디지털 스토리텔링 엔진이에요."
config.voice_filename_format 변수로 음성 파일명의 형식을 바꾸어 디렉터리와 확장자를 생략할 수 있습니다.
자동 음성 재생
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()
가장 최근에 재생한 음성을 다시 재생합니다.