가이드

C++ 텍스트 음성 변환: 게임과 앱을 위한 자연스러운 목소리

C++에는 표준 음성 합성 라이브러리가 없습니다. 보통은 Windows, macOS, Linux마다 다른 운영체제 음성 API, 로봇처럼 들리는 eSpeak NG 같은 오래된 포먼트 합성기, 또는 C++에서 호출하는 신경망 엔진 중에서 고릅니다. 마지막 방법은 모든 플랫폼에서 똑같이 자연스러운 목소리를 냅니다.

SuperClonica에는 31개 언어의 자연스러운 목소리가 있어 온라인에서 무료로 들어 볼 수 있고, 명령줄과 Docker HTTP 서버를 갖춘 무료 엔진, 170개가 넘는 카탈로그 목소리가 있습니다. 이 가이드에서는 C++에서 쓰는 두 가지 방법, 즉 대사를 미리 만드는 방법과 실행 중 로컬 서버를 쓰는 방법을 소개합니다.

C++에서의 음성 선택지

대부분의 게임은 고정 대화에는 미리 만든 파일을, 플레이어가 쓴 텍스트에만 서버를 씁니다.

  • 운영체제 API: Windows의 SAPI, Apple의 AVSpeechSynthesizer, Linux의 Speech Dispatcher. 코드 경로가 세 갈래로 나뉩니다.
  • eSpeak NG: 작고 내장하기 쉽지만 확연히 로봇 같습니다.
  • 미리 만든 파일: 게임이나 앱의 대사를 한 번 만들어 WAV나 OGG로 포함.
  • 로컬 HTTP 서버: 프로그램이 텍스트를 보내고 WAV를 받음.

무료로 온라인에서 목소리 고르기

아무 목소리 페이지에서 30~100자 대사를 입력하고 언어를 고른 뒤 생성 버튼을 누르세요. 몇 초면 게임이나 앱에 어울리는지 알 수 있고 계정은 필요 없습니다.

대사를 미리 만들기

같은 텍스트, 목소리, seed는 항상 같은 파일을 내므로, 만든 대사는 버전 관리에 두고 필요할 때 다시 만들 수 있습니다.

  • 엔진 설치: python -m pip install superclonica-cpu.
  • 빌드 스크립트나 도구에서 명령줄을 호출하세요: std::system("superclonica --text \"Welcome, traveler.\" --voice M2 --lang en --output welcome.wav");
  • 파일 이름이 형식을 정합니다: WAV, MP3, OGG, FLAC.
  • SDL_mixer, SFML, raylib, miniaudio 등 이미 쓰는 오디오 라이브러리로 불러오세요.

실행 중 음성 서버

실행 중에만 생기는 텍스트라면 서버를 한 번 띄우세요: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. 그다음 libcurl로 JSON을 보내고 응답을 파일로 쓰세요(curl/curl.h를 포함하고 libcurl과 링크): std::string body = R"({"text": "Welcome, traveler.", "voice": "M2", "lang": "en"})"; CURL* c = curl_easy_init(); curl_slist* h = curl_slist_append(nullptr, "Content-Type: application/json"); curl_easy_setopt(c, CURLOPT_URL, "http://localhost:8000/synthesize"); curl_easy_setopt(c, CURLOPT_HTTPHEADER, h); curl_easy_setopt(c, CURLOPT_POSTFIELDS, body.c_str()); FILE* f = std::fopen("welcome.wav", "wb"); curl_easy_setopt(c, CURLOPT_WRITEDATA, f); curl_easy_perform(c); std::fclose(f); curl_slist_free_all(h); curl_easy_cleanup(c); 응답은 16비트 모노 WAV이며 X-Sample-Rate와 X-Duration-Seconds 헤더가 내용을 알려 줍니다. 플레이어의 컴퓨터가 아닌 곳에서 돌린다면 SUPERCLONICA_API_KEY를 설정하고 서버를 사설 네트워크에 두세요.

출시에 쓸 수 있는 목소리

출시하는 게임이나 앱에는 OpenRAIL-M 라이선스로 무료인 기본 목소리 10개(M1~M5, F1~F5)나, 동의한 성우의 녹음으로 SuperClonica 스튜디오에서 학습한 내 목소리를 쓰세요. 엔진과 Docker 이미지는 Apache 2.0입니다. 카탈로그의 팬 메이드 캐릭터 목소리는 팬 프로젝트용이지 상업 출시용이 아닙니다.