가이드

Pygame 음성 합성: 자연스러운 목소리로

Pygame은 많은 사람이 첫 게임을 만드는 곳이고, 언젠가는 캐릭터가 말을 해야 합니다. pyttsx3는 로봇 같은 시스템 목소리로 말하고, 클라우드 API는 키와 인터넷이 필요한데 학교 컴퓨터나 게임잼 노트북에는 없을 수 있습니다.

SuperClonica 엔진은 Python 패키지라서 Pygame 프로젝트가 직접, 오프라인으로, 31개 언어의 자연스러운 목소리로 텍스트를 음성으로 만들고, 파일 없이 pygame.mixer로 재생할 수 있습니다. 이 가이드에서는 코드, 음성을 만드는 동안 게임을 부드럽게 유지하는 법, 파일로 배포해야 할 때를 소개합니다.

Pygame 게임을 말하게 하는 두 가지 방법

게임 중 음성 합성은 프로토타입, 도구, 소스에서 실행하는 게임에 쓰고, 완성된 게임은 파일로 배포하세요.

  • 게임 중에: 플레이어 이름처럼 어떤 글이든 음성으로 만들어 바로 재생합니다.
  • 미리 만든 파일: 개발 중에 만든 대사를 효과음처럼 pygame.mixer.Sound로 불러옵니다.
  • 두 방법 모두 같은 엔진, 목소리, 언어를 씁니다. 중국어는 아직 지원하지 않습니다.
  • 모두 일반 CPU에서 돌아가며 그래픽카드는 필요 없습니다.

목소리를 무료로 골라 보기

아무 목소리 페이지에서 캐릭터 대사를 30~100자로 입력하고 언어를 고른 뒤 생성 버튼을 누르세요. 몇 초 만에 목소리가 어울리는지 들을 수 있습니다. 계정은 필요 없습니다.

게임 중에 대사 만들기

엔진을 불러오는 데 몇 초가 걸리니 대사마다가 아니라 시작할 때 한 번만 만드세요.

  • 두 패키지를 설치하세요: python -m pip install superclonica-cpu pygame.
  • pygame.init() 전에 믹서를 엔진 형식에 맞추세요: pygame.mixer.init(frequency=44100, size=-16, channels=1).
  • 엔진은 tts = Superclonica()로 한 번만 만들고, 대사를 만들어 재생하세요: audio, rate = tts.synthesize("어서 오게, 용사여! 마을이 자네를 기다리고 있네.", "M2", "ko"); sound = pygame.mixer.Sound(array=(audio * 32767).astype(np.int16)); sound.play().
  • 엔진은 44.1 kHz 부동소수점 샘플을 돌려주며, 16비트 정수로 바꾸기만 하면 pygame에서 쓸 수 있습니다.

게임을 부드럽게 유지하기

짧은 대사는 데스크톱 CPU에서 약 0.5초가 걸리고, 멈춘 프레임은 눈에 띕니다. 대사는 백그라운드 스레드에서 만들고 완성된 Sound를 큐에 넣어 메인 루프가 재생하게 하거나, 스테이지 대사를 로딩 화면 동안 만들어 두세요. 텍스트에서 Sound로 가는 사전을 두면 반복되는 대사는 한 번만 만듭니다.

게임을 배포할 때

게임 중 음성 합성에는 플레이어 컴퓨터에 엔진, 약 385 MB 모델, Python이 필요합니다. 소스로 실행하는 게임잼 작품에는 괜찮지만 다운로드 배포에는 무겁습니다. 출시작은 tts.save('line.ogg', audio)로 모든 대사를 미리 만들어 OGG 파일로 함께 배포하세요. 모델의 기본 목소리 10개(M1~M5, F1~F5)나 동의한 화자로 학습한 내 목소리를 쓰고, 팬이 만든 캐릭터 목소리는 팬 게임과 패러디에만 쓰세요.