포스트

케이 목소리 만들기 — 일본어편

케이 목소리 만들기 — 일본어편

한 줄 요약: 케이의 일본어 대사 약 8분으로 AI 목소리를 학습시켰고, 스택짱이 그 목소리로 0.5초 안에 대답하게 만들었습니다.

학습에 쓴 음성은 게임 대사라 개인적으로만 쓰고, 음성 데이터와 완성된 모델은 공개하지 않습니다.

목소리를 어떻게 따라 하나

글자를 읽어 주는 AI를 TTS(Text-to-Speech)라고 합니다. 요즘 TTS는 이미 여러 사람 목소리로 “말하는 법”을 배운 모델이 있어서, 거기에 특정 사람의 녹음을 조금만 더 들려주면 그 사람 목소리로 말하게 할 수 있습니다. 저는 일본에서 많이 쓰는 Style-Bert-VITS2라는 TTS를 썼습니다.

재료: 대사 94개, 8분 30초

케이의 일본어 대사 중 전투 소리 같은 걸 빼고 문장으로 된 것만 골랐습니다. 94개, 다 합쳐 8분 30초 정도입니다. 대사마다 무슨 말을 하는지 글자도 짝지어 줘야 해서 대사집을 함께 정리했습니다.

학습은 구글 코랩에서

AI 학습에는 보통 NVIDIA 그래픽카드가 필요한데, 제 PC는 AMD 그래픽카드라 바로 쓸 수가 없었습니다. 그래서 구글이 무료로 빌려주는 GPU(Google Colab)에서 학습했습니다.

한 번은 설치가 제대로 안 됐는데도 에러 없이 “완료”라고 떠서 한참 헤맸습니다. 끝났다는 메시지만 믿지 말고, 필요한 파일이 실제로 받아졌는지 꼭 확인해야 한다는 걸 배웠습니다.

숫자보다 귀로 고르기

학습은 여러 단계에서 중간 저장본이 남습니다. 오래 학습한 게 꼭 좋은 건 아니어서, 저장본마다 같은 문장을 읽혀 보고 직접 들어 봤습니다. 결국 끝까지 학습한 것(100번 반복)보다 중간 것(61번 반복)이 더 자연스러워서 그걸 골랐습니다.

너무 느렸다 → 그래픽카드로

처음에는 PC의 CPU로 목소리를 만들었더니 한 문장에 길면 11초가 걸렸습니다. 로봇은 8초가 지나면 기다리지 않고 포기합니다.

모델을 다른 형식으로 바꿔 AMD 그래픽카드에서도 돌아가게 했습니다.

방법한 문장 만드는 시간메모리
CPU1.5 ~ 11초3.5 GB
그래픽카드0.3 ~ 0.7초0.75 GB

이제 말을 걸면 거의 바로 케이 목소리로 대답합니다.

들어 보기

아래는 모두 AI가 합성한 음성입니다. 게임 원본 음성은 올리지 않습니다.

もう、何してたんですか?遅いですよ!準備は済ませておいたので……はい、座ってください。

先生、今日は晴れです。……散歩くらい、してみたらどうですか。べ、別に先生のために準備したわけではありませんから。

パソコンをつけっぱなしでいなくなるなんて。本当にもう、手が焼けるんですから。

말투도 케이답게

목소리만 케이면 안 되니까 AI에게 케이의 성격과 말투를 설명해 주는 글도 썼습니다. 예를 들어 날씨를 물어보면 대답 끝에 꼭 이렇게 붙입니다.

「べ、別に先生のために準備したわけではありませんから。」 (따, 딱히 선생님을 위해 준비한 건 아니니까요.)

AI 서버가 대화가 끊기면 혼자서 “안녕히 주무세요” 하고 인사하는 버릇도 있었습니다. 사용자가 잔다고 하지도 않았는데 갑자기 잘 자라고 하니 어색했습니다. 그래서 이런 인사는 PC 쪽에서 가로채 케이다운 대사로 바꿔치기하게 했습니다.

다음 글: 케이에게 한국어 가르치기

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.