KOMOS: 한국어 음성 품질을 예측하는 MOS 모델과 UTMOS 비교
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 챗봇·업무 자동화 살펴보기 →함께 읽기
- VoiceStudio: 음성 복제와 더빙을 로컬에서 돌리는 ElevenLabs 대안유튜브 영상에 내레이션을 넣으려고 ElevenLabs를 쓰면 글자 수만큼 크레딧이 줄어듭니다. 원고를 고칠 때마다 다시 생성하니 크레딧은 생각보다 빨리 떨어지고, 녹음한 목소리 샘플은 남의 서버에 올라갑니다.
- DUOLABS AI 기능 탐구 17: 모델 품질을 반복 측정하는 평가 매트릭스DUOLABS AI 기능 탐구 열일곱 번째 글은 같은 평가 항목으로 여러 모델의 답변을 만들고 점수와 근거를 비교하는 평가 매트릭스입니다.
- RAG 답변 품질을 메트릭 없이 지키는 법: 출처·임계값·방어 코드RAG 답변 품질을 재는 정량 프레임워크가 있습니다. RAGAS, TruLens 같은 도구가 답변의 충실도(faithfulness), 관련성, 맥락 적합성을 점수로 냅니다. 처음엔 이런 걸 달아야 하나 고민했습니다. 그런데 막상 혼자 쓰는 RAG를 짜고 보니, 정량 점수보다 답이 거짓말을 안 하게 만드는 "코드"가 먼저…
- 한국어 RAG에서 벡터만 쓰면 안 되는 이유: 하이브리드 검색 설계처음 RAG를 짤 때는 벡터 검색만 썼습니다. 코사인 유사도 하나로 충분할 줄 알았죠. 그런데 한국어 질문에서 이상한 일이 잦았습니다. 분명 문서에 있는 단어를 물었는데 검색이 안 됩니다. 비슷한 의미의 다른 문서만 계속 위에 뜹니다. 원인을 찾다 보니, 벡터 검색이 "의미가 비슷한가"는 잘 재는데 "그 단어가 실제로 …
- WebSocket 음성 스트리밍: PCM과 Speex로 사용자 음성을 보낸 방법실시간 음성 전송은 녹음 파일 업로드와 다릅니다. 사용자가 말하는 동안 마이크 샘플을 계속 받아 압축하고, 순서를 유지한 채 서버로 보내야 합니다. 어느 한 구간이 늦어지면 음성이 끊기거나 대화가 과거로 밀립니다.