가이드

Ren’Py 보이스를 AI 음성으로 만들기

보이스는 비주얼 노벨에 생명을 불어넣지만, 수천 줄의 대사에 성우를 쓰는 건 대부분의 1인 개발자에게 불가능합니다. Ren’Py에는 대사마다 음성 파일을 재생하는 기능이 이미 있고, 부족한 건 오디오뿐입니다.

이 가이드는 Ren’Py 문서를 바탕으로 보이스가 작동하는 방식, 파일을 대사에 자동으로 연결하는 법, 그리고 SuperClonica로 캐릭터마다 다른 목소리를 써서 대본 전체를 무료로 오프라인 음성화하는 방법을 설명합니다.

Ren’Py의 보이스 재생 방식

Ren’Py에서는 대사 앞에 voice 문을 두어 음성 파일을 재생합니다. 예: voice "line0001.ogg". 게임 전체라면 자동 보이스가 편합니다. config.auto_voice를 "voice/{id}.ogg"로 설정하면 Ren’Py가 {id}를 각 대사의 식별자로 바꾸고 파일이 있으면 재생합니다. 파일이 없는 대사는 소리 없이 넘어가므로 조금씩 보이스를 추가할 수 있습니다.

모든 대사를 식별자와 함께 뽑기

Ren’Py 런처에서 Extract Dialogue를 고르고 탭 구분 옵션을 선택하세요. 스프레드시트에서 열 수 있는 dialogue.tab이 만들어지며 대사와 식별자가 들어 있습니다. id, voice, text 세 열을 남기세요. 식별자, 캐릭터 목소리, 대사입니다. 음성화할 텍스트에서는 {w}나 {i} 같은 중괄호 텍스트 태그를 지우세요.

대본 전체를 오프라인으로 음성화

python -m pip install superclonica-cpu로 무료 SuperClonica 엔진을 설치하세요. Python에서 import csv, from superclonica import Superclonica and tts = Superclonica(), then for row in csv.DictReader(open("lines.csv", encoding="utf-8")): audio, rate = tts.synthesize(row["text"], voice=row["voice"], lang="ko", seed=7); tts.save("game/voice/" + row["id"] + ".ogg", audio)처럼 작성합니다. voice 열에는 M2, F3 같은 기본 음성이나 카탈로그 음성 파일을 넣을 수 있고, seed를 고정하면 캐릭터 목소리가 모든 장면에서 같게 유지됩니다. 엔진은 일반 CPU에서 오프라인으로 글자 수 제한 없이 동작하며, OGG 파일은 게임 안에서도 용량이 작습니다.

캐릭터, 음소거, 다시 듣기

각 Character에 voice_tag를 주면 플레이어가 SetVoiceMute나 ToggleVoiceMute로 캐릭터별 목소리를 끌 수 있고, VoiceReplay는 마지막 대사를 다시 재생합니다. 어울리는 목소리를 고르세요. 애니메이션, 게임, 내레이터 음성을 각 페이지에서 30~100자로 무료로 들어 보거나, 5~10초의 깨끗한 녹음으로 스튜디오에서 주인공 목소리를 학습시킬 수 있습니다.

셀프 보이싱은 다른 기능

Ren’Py 게임에서 v 키를 누르면 셀프 보이싱이 켜집니다. 운영체제의 음성 합성으로 텍스트와 UI를 읽어 주는 접근성 기능으로, 시각 장애가 있는 플레이어를 위한 것이지 보이스 연기가 아니며, 목소리는 플레이어 시스템에 따라 다릅니다. 미리 녹음한 보이스는 누구에게나 같게 들립니다.