RSS
AI 트렌드

KOMOS: 한국어 음성 품질을 예측하는 MOS 모델과 UTMOS 비교

작성자
듀오랩스 대표·7분 읽기

UTMOS v1에 고품질 한국어 음성을 넣으면 사람이 매긴 점수가 올라가도 예측 점수는 좁은 구간에 머문다고 합니다. 한국어 MOS 예측 모델 KOMOS를 공개한 개발자가 프로젝트를 시작한 이유로 든 관찰입니다. 점수가 전체적으로 조금 낮게 나오는 정도라면 큰 문제가 아닙니다. 문제는 품질이 좋은 음성들끼리 순서가 구별되지 않는다는 쪽입니다.

MOS 예측 점수를 언어와 무관한 척도로 보는 오해

MOS(Mean Opinion Score)는 사람이 음성을 듣고 1~5점으로 매긴 점수의 평균입니다. 청취 평가는 비싸고 느려서, 이 점수를 모델로 대신 맞히는 MOS 예측기가 TTS 연구에서 흔히 쓰입니다. 그 대표격이 UTMOS입니다. 도쿄대 사루와타리 연구실이 VoiceMOS Challenge 2022에 낸 시스템이고, 자기지도학습(SSL) 모델을 미세 조정한 강한 학습기와 SSL 특징 위의 단순 회귀기를 앙상블한 구조입니다.

예측 점수를 체온계처럼 어디에 대도 같은 눈금을 주는 도구로 생각하기 쉽습니다. 실제로는 그렇지 않습니다. 예측기가 배운 것은 특정 청취 실험에서 특정 청취자들이 특정 음성에 매긴 점수의 분포입니다. VoiceMOS Challenge 2022의 학습 데이터는 지난 Blizzard Challenge와 Voice Conversion Challenge의 음성이었고, 주로 영어였습니다. 한국어 음성은 그 분포 밖에 있습니다.

저는 여기서 평균이 어긋나는 것보다 구간이 눌리는 것이 더 나쁘다고 봅니다. 예측 점수가 일정하게 0.3점 낮게 나온다면 모델끼리 비교하는 데는 지장이 없습니다. 반면 4점대 음성들이 전부 비슷한 값으로 모이면, 상위권 TTS 모델 두 개를 비교할 때 점수 차이가 잡음과 구별되지 않습니다. 실무에서 MOS 예측기가 가장 자주 하는 일이 바로 이 상위권 비교입니다.

5,000개 점수로 만든 한국어 데이터셋

KOMOS는 이 문제를 한국어 원어민의 평가를 다시 모아서 풀었습니다. 공개된 내용을 정리하면 다음과 같습니다.

항목 값
발화 1,000개 (실제 녹음, TTS 합성, 품질 저하 음성)
말투 낭독체와 자발화
평가자 한국어 원어민 29명
평가 점수 5,000개
기반 모델 Whisper-medium 인코더, 전체 파라미터 미세 조정

나눠 보면 발화 하나에 점수가 평균 5개, 평가자 한 명이 평균 170개 남짓을 매긴 셈입니다. 발화 수는 큰 편이 아니지만 실제 녹음과 품질 저하 음성을 섞어 넣은 점은 중요하다고 봅니다. 좋은 음성만 있으면 모델이 점수의 위쪽 끝을 배울 기준이 없고, 나쁜 음성만 있으면 반대가 됩니다.

점수를 평균 내지 않고 청취자를 배우는 구조

KOMOS에서 가장 눈여겨볼 부분은 Listener-conditioned prediction입니다. 보통은 한 발화에 붙은 점수 다섯 개를 평균 내서 정답으로 삼습니다. KOMOS는 평균을 내지 않고 어느 청취자가 매긴 점수인지까지 입력으로 받아 학습합니다.

이유는 평가자마다 기준이 다르기 때문입니다. 같은 음성에 늘 한 점씩 짜게 주는 사람이 있고 후하게 주는 사람이 있습니다. 발화 하나에 점수가 다섯 개뿐이면, 어떤 평가자 다섯 명이 배정됐느냐에 따라 평균이 흔들립니다. 그 흔들림을 정답으로 학습하면 모델은 음성의 품질이 아니라 평가자 배정의 우연까지 외우게 됩니다. 청취자를 조건으로 주면 그 성향을 따로 떼어 낼 수 있습니다.

다만 공개 글만으로는 추론할 때 어떤 청취자 기준으로 점수를 내는지 알 수 없습니다. 모든 청취자의 예측을 평균 내는지, 평균 청취자에 해당하는 값을 쓰는지는 논문을 확인해야 합니다.

SRCC 0.900이 말해 주는 것과 말해 주지 않는 것

학습에 쓰지 않은 한국어 발화 100개로 사람의 평가와 비교한 결과입니다.

모델 SRCC LCC
UTMOS v1 0.703 0.798
UTMOS v2 0.767 0.858
KOMOS 0.900 0.950

두 지표는 보는 것이 다릅니다. SRCC(스피어만 순위 상관)는 순서만 봅니다. 사람이 A를 B보다 좋게 들었을 때 모델도 A를 위에 두는지를 잽니다. LCC(피어슨 선형 상관)는 점수 값이 직선 관계로 따라가는지를 봅니다. 앞에서 말한 「상위권이 구별되지 않는」 문제는 순서의 문제라 SRCC에 먼저 드러납니다. UTMOS v1과 KOMOS의 차이가 LCC보다 SRCC에서 더 크게 벌어진 것은 그 관찰과 맞아떨어집니다.

말해 주지 않는 것도 있습니다. 먼저 이 비교는 홈그라운드 경기입니다. KOMOS는 같은 방식으로 모은 한국어 데이터로 학습했고, UTMOS는 이 데이터를 본 적이 없습니다. KOMOS가 이기는 것은 당연한 결과에 가깝고, 의미 있는 질문은 얼마나 이기느냐입니다. 다음으로 테스트 발화 100개를 평가한 사람들이 학습 데이터를 평가한 29명과 같은지가 공개 글에 나와 있지 않습니다. 같다면 0.900은 그 29명의 취향을 잘 맞힌다는 뜻이고, 다른 청취자 집단에서도 같은 숫자가 나온다는 보장은 아닙니다. 저는 이 부분이 실제로 쓸 때 가장 궁금한 지점이라고 생각합니다.

써 볼 만한 곳은 TTS 비교와 학습 데이터 선별

KOMOS는 파이썬에서 몇 줄로 씁니다.

from komos import KOMOS

model = KOMOS.from_pretrained("upskyy/komos").eval()
score = model.score("audio.wav")

입력 음성 하나에 1~5점 척도의 품질 점수를 돌려줍니다. 개발자가 제시한 용도는 한국어 TTS 모델 간 비교, 음성 학습 데이터 선별, 음성 생성 파이프라인의 품질 모니터링입니다.

저라면 데이터 선별에 먼저 써 보겠습니다. 크롤링하거나 녹음한 음성 수만 개에서 잡음이 낀 것을 걸러 내는 일은 절대 점수보다 순서가 중요하고, 몇 개 잘못 걸러도 비용이 작습니다. 반대로 TTS 모델 비교에서 KOMOS 점수만으로 결론을 내리는 것은 아직 이르다고 봅니다. 앞 절의 청취자 집단 문제가 풀리기 전까지는, 최종 판단에 소규모라도 사람의 청취 평가를 함께 두는 쪽이 안전합니다.

참고: GitHub · Hugging Face · arXiv · UTMOS 논문

우리 서비스에 적용할 계획이 있으신가요?

AI 챗봇·업무 자동화 살펴보기 →

마지막 수정:

공유하실 때는 출처(Duolabs)와 원문 주소를 표시해 주세요.