Godot TTS: 게임 대사와 실행 중 음성
Godot 게임은 혼자나 작은 팀이 만드는 경우가 많고, 성우 녹음은 예산에 잘 들어가지 않습니다. 음성 합성은 대사를 쓴 날 바로 목소리를 붙여 줍니다. 프로토타입, 임시 대사, 튜토리얼, 그리고 일부러 합성 음성을 유지하는 게임에도요.
무료 SuperClonica 엔진은 일반 CPU에서 오프라인으로 텍스트를 읽습니다. 이 가이드에서는 Godot에서 쓰는 두 가지 방법(미리 만든 WAV 파일과 GDScript에서 실행 중 음성)과 출시에 쓸 수 있는 목소리를 소개합니다.
Godot 게임에 목소리를 입히는 두 가지 방법
플레이어 컴퓨터에서는 음성 서버가 돌지 않으므로, 출시하는 싱글플레이 게임에는 파일을 포함하세요.
- 미리 만든 파일: 개발 중에 모든 대사를 읽혀 WAV를 프로젝트에 넣습니다. 다른 소리처럼 게임과 함께 내보내집니다.
- 실행 중 음성: 게임이 텍스트를 SuperClonica 서버로 보내고 받은 음성을 재생합니다. 에디터 도구, 프로토타입, 자체 서버가 있는 온라인 게임에 맞습니다.
- 어느 쪽이든 일반 CPU에서 돌아가며 글자 수에 따른 요금이 없습니다.
- 모델은 31개 언어를 말하며, 중국어는 아직 지원하지 않습니다.
목소리를 무료로 고르기
아무 목소리 페이지에서 캐릭터 대사를 30~100자로 입력하고 언어를 고른 뒤 생성 버튼을 누르세요. 몇 초 만에 목소리가 맞는지 들을 수 있습니다. 계정은 필요 없습니다.
대사를 미리 만들기
같은 텍스트, 목소리, seed는 항상 같은 오디오를 내므로 바뀐 대사만 다시 만들고, 저장소에는 오디오가 아니라 스크립트를 넣으세요.
- 엔진 설치: python -m pip install superclonica-cpu.
- 대사는 ID, 언어, 텍스트가 있는 표로 관리하세요.
- 짧은 스크립트가 표를 돕니다: superclonica --text "마을에 온 걸 환영해!" --voice npc.json --lang ko --output voice/npc_greeting_01.wav.
- 프로젝트의 새 WAV 파일은 Godot가 알아서 가져옵니다. AudioStreamPlayer로 재생하세요.
GDScript에서 실행 중에 말하기
아무 CPU에서나 서버 실행: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. Godot 4.4 이상에서는 내장 HTTPRequest 노드와 AudioStreamWAV.load_from_buffer로 파일을 저장하지 않고 응답을 재생합니다: var http := HTTPRequest.new(); add_child(http); http.request_completed.connect(_on_voice); http.request("http://localhost:8000/synthesize", ["Content-Type: application/json"], HTTPClient.METHOD_POST, JSON.stringify({"text": "다시 온 걸 환영해!", "voice": "F1", "lang": "ko"})). 같은 스크립트에: func _on_voice(result, code, headers, body): $Voice.stream = AudioStreamWAV.load_from_buffer(body); $Voice.play(). 짧은 문장은 CPU에서 약 0.5초 걸립니다. 반복되는 대사의 스트림은 캐시하세요. 내보낸 게임에 API 키를 넣지 마세요. 플레이어가 꺼낼 수 있습니다. 음성 서버는 내 게임 서버가 호출하게 하세요.
출시에 쓸 수 있는 목소리
프로토타입에는 카탈로그의 어떤 목소리든 괜찮습니다. 출시하는 게임에는 권리가 있는 목소리를 쓰세요. 모델 기본 목소리 10종 M1~M5·F1~F5, 동의한 배우의 5~10초 분량 깨끗한 녹음으로 NVIDIA 그래픽 카드가 있는 컴퓨터에서 SuperClonica 스튜디오로 학습한 내 목소리, 또는 거래소에서 주문한 목소리입니다. 팬이 만든 캐릭터 목소리는 패러디와 팬 게임용이며 상업용 게임에는 맞지 않습니다.