UTMOS MOS 점수를 활용한 CPU TTS 벤치마크: Kokoro, Supertonic, Inflect-Nano, 그리고 Kyutai의
요약
Kokoro, Supertonic, Inflect-Nano, Pocket TTS 등 소형 TTS 모델들을 대상으로 CPU 환경에서의 성능과 UTMOS 점수를 비교 분석한 벤치마크 결과입니다. 모델별 아키텍처에 따른 RTF 스케일링 특성과 UTMOS 지표의 한계점을 심도 있게 다룹니다.
핵심 포인트
- Pocket TTS의 스트리밍 LM 아키텍처는 텍스트 길이에 관계없이 일정한 RTF를 유지함
- UTMOS 지표는 소형 모델의 기계적인 음성을 자연스러운 음성과 구분하는 데 한계가 있음
- 효율적인 대화형 시스템 구축을 위해 RTF 스케일링 양상 파악이 중요함
- 객관적 지표 외에 인간 청취 테스트나 NISQA 병행 권장
소형 TTS 모델을 평가하는 분들에게 도움이 될 수 있도록 객관적인 MOS 점수를 포함한 CPU TTS 벤치마크 결과를 공유합니다. Kyutai의 Pocket TTS는 업계의 다른 모델들과 아키텍처(Architecture)가 다르며, 아직 이 모델과의 직접적인 비교 데이터를 본 적이 없기에 추가하게 되었습니다.
모델:
- Kokoro 82M (PyTorch 및 ONNX Runtime, StyleTTS2에서 영감을 받음)
- Supertonic 3 (2단계 및 5단계 flow-matching steps 적용, Vector Estimator 백본)
- Inflect-Nano-v1 (4.6M 파라미터 FastSpeech 스타일, 스펙트럼의 매우 작은 축에 속함)
- Pocket TTS (~100M 파라미터, Kyutai의 Mimi 신경 오디오 코덱(neural audio codec) 기반 스트리밍 LM)
설정: Intel Xeon 8272CL, 4 코어, 15.6GB RAM. 환경 수준에서 CUDA 비활성화. ONNX 세션은 CPUExecutionProvider로 고정. 6개의 구성(Config), 6개의 텍스트 길이(12~1712자), 워밍업(warmup) 단계를 제외하고 셀당 5회의 시간 측정 반복 수행. 총 180회 실행. 저장된 모든 WAV 파일은 객관적 MOS를 위해 UTMOS(utmos22_strong)로 점수를 매겼습니다.
종합 결과:
| Config | Mean RTF | UTMOS |
|---|---|---|
| Supertonic 3 (2-step) | 0.121 | 1.53 |
| Inflect-Nano-v1 | 0.145 | 3.48 |
| Supertonic 3 (5-step) | 0.240 | 4.32 |
| Kokoro 82M (ONNX) | 0.641 | 4.44 |
| Kokoro 82M (PyTorch) | 0.665 | 4.46 |
| Pocket TTS | 0.714 | 4.10 |
실제로 흥미롭다고 생각되는 발견 사항:
-
스트리밍 LM(Streaming LM) 아키텍처는 평탄한 RTF 스케일링(scaling)을 생성합니다. Pocket TTS의 RTF는 전체 텍스트 길이 범위에 걸쳐 0.69에서 0.76 사이입니다. 오디오 토큰을 일정한 속도로 자기회귀적(autoregressively)으로 방출하기 때문에, 비용은 출력 길이에 따라 선형적으로 증가하며 분할 상환할 고정 오버헤드(fixed overhead)가 없습니다. 짧은 입력에서는 0.49, 긴 입력에서는 0.83으로 상승하는 Kokoro PyTorch나, 호출당 높은 고정 오버헤드로 인해 반대 양상(짧은 입력에서 0.36, 중간 입력에서 0.20으로 하락)을 보이는 Supertonic과 비교해 보십시오. 대화형 시스템을 위해 최악의 경우의 지연 시간(latency)을 예산으로 잡는다면, 평탄한 수치는 매우 가치가 있습니다.
-
UTMOS는 소형 보코더(vocoder)에서 알려진 실패 모드(failure mode)가 있습니다. Inflect-Nano-v1은 3.48점을 기록하여 중간 정도의 순위를 보였습니다. 귀로 직접 들어보면 윙윙거리는 소리가 나고 로봇 같습니다. 이는 문서화된 문제로, UTMOS는 HiFi-GAN 출력이 운율적 자연스러움(prosodic naturalness)이 부족하더라도 깨끗하다는 이유로 높은 점수를 주는 경향이 있습니다.
Pocket TTS는 유사한 점수(4.10)를 기록했지만, 실제로 자연스럽게 들립니다. 핵심은 UTMOS가 잘못되었다는 것이 아니라, 단일 품질 수치만으로는 소형 모델에서 "깨끗하지만 기계적인" 소리와 "깨끗하고 자연스러운" 소리를 구분할 수 없다는 점입니다. 인간의 청취 테스트나 NISQA와 같은 자연스러움 특화 지표(naturalness-specific metric)를 병행하는 것이 가치가 있습니다.
-
Inflect-Nano는 문서화되지 않은 약 15초의 출력 제한이 있습니다. 모델 설정에서 max_frames = 1400으로 설정되어 있어, 입력 텍스트의 길이에 관계없이 합성이 약 14.93초에서 제한됩니다. 이로 인해 긴 문장/단락/확장 입력에 대한 RTF(Real-Time Factor) 및 처리량(throughput)이 비교 대상 모델들보다 적은 작업을 수행하게 되어 수치가 부풀려져 나타납니다. 해당 모델에 대한 실제 비교는 아주 짧은/짧은/중간 길이의 입력에 대해서만 이루어져야 합니다.
-
Kokoro의 ONNX 대 PyTorch 결과가 이전 실행 결과와 반대로 나타났습니다. 이전에 AMD EPYC에서 이 벤치마크의 이전 버전을 실행했을 때는 PyTorch가 종합적으로 ONNX를 앞섰습니다. 하지만 이번 Xeon에서는 ONNX가 더 빠릅니다 (0.641 대 0.665). 동일한 코드지만 실리콘(silicon)이 다릅니다. CPU 추론(inference) 시 AMD와 Intel의 커널 최적화 차이가 순위를 뒤집을 만큼 실제로 존재한다는 것이 입증되었습니다. 만약 누군가 ARM 환경에서 이를 재현했다면 매우 궁금할 것 같습니다.
벤치마크 축에 부합하지 않는 기능으로서의 Zero-shot 음성 복제(voice cloning):
Pocket TTS는 CPU에서 약 5초의 참조 오디오를 사용하여 Zero-shot 방식으로 음성을 복제할 수 있습니다. 이 분야의 다른 어떤 모델도 이를 수행하지 못합니다. 속도/품질 비교의 공정성을 위해 프리셋 음성(preset voice)으로 고정했으므로, 복제 능력은 수치에 반영되지 않았습니다. 이것이 RTF 및 MOS 기반 비교의 실제 한계입니다. 즉, 단 하나의 모델만이 가진 고유한 능력을 포착할 수 없습니다. v2에서는 화자 유사도(speaker-similarity)에 대한 별도의 평가를 고려해 볼 만합니다.
한계점:
- 단일 하드웨어 플랫폼
- 영어 전용
- UTMOS는 하나의 MOS 예측기일 뿐입니다. NISQA나 청취 패널을 활용한다면 품질 주장이 더 강화될 것입니다.
- 음성 복제 품질은 평가되지 않았습니다.
- 배치 추론(batched inference) 테스트를 수행하지 않았습니다.
공개 사항: 벤치마크 하네스(harness)는 제가 지정한 프롬프트를 바탕으로 AI 엔지니어링 에이전트(Neo)가 작성했습니다. 저는 방법론을 선택하고, 출력을 검증하며, 오디오를 검토했습니다.
코드를 어떻게 가중치를 둘 것인지와 관련이 있기 때문에 언급합니다. 모든 코드, 원본 CSV 파일 (180행), MOS CSV (36행), 그리고 WAV 샘플은 아래 댓글에 언급된 리포지토리(repo)에 있습니다 👇
프로토콜에 대한 피드백을 환영하며, 특히 MOS 방법론과 적절한 음성 복제 (voice-cloning) 평가가 어떤 모습이어야 하는지에 대한 의견을 부탁드립니다.
/u/gvij 가 r/MachineLearning 에 제출함
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기