무료 오픈소스 TTS인 Ming 3.0으로 제 목소리를 한국어로 클론하면, 유료인 ElevenLabs와 Gemini보다 얼마나 저를 닮고 얼마나 정확하게 읽을까요? 같은 13초 참조 녹음과 같은 23문장으로 세 모델을 비교해 보니, 제 목소리와 말투를 가장 닮은 건 Ming 3.0이었고 듣기 좋고 발음이 안정적인 건 ElevenLabs였습니다. 영어 단어가 섞인 문장은 세 모델 모두 어색했습니다.
Ming 3.0은 Runpod의 RTX 4000 Ada 한 장에 띄웠고, ElevenLabs v4와 Gemini 3.8 Flash TTS는 API로 불렀습니다. 2026년 10월 22일에 문장마다 3번씩, 모델마다 69개를 만들었습니다.
이 글은
Endplan 영상의 측정 내용을 정리한 것입니다. 소리로 판단한 부분에는 영상에서 그 소리를 직접 들을 수 있는 시점 링크를 붙였습니다.
같은 목소리, 같은 23문장으로 맞춘 비교 조건
문장은 제가 평소 영상에서 쓰는 말투로 23개를 만들었습니다. 기본 3개, 숫자 5개, 영어 단어 4개, 약어 2개, 발음 4개, 말버릇 2개, 웃음·한숨 2개, 약 40초짜리 긴 글 1개입니다. 가격, 날짜, 모델 이름, 약어를 일부러 많이 넣었는데요. 제 영상 대본이 거의 다 그렇기 때문이죠.
참조 녹음 길이가 다른 건 각 서비스의 권장 조건을 따랐기 때문입니다. 비교 전에 모든 결과를 24kHz mono로 바꾸고 음량을 -21 LUFS로 맞췄습니다.
Ming 3.0은 한국어를 참조 녹음으로만 읽는다
Ming 3.0의 기본 목소리와 텍스트로 목소리 만들기는 중국어와 영어 전용입니다. 한국어로 쓰려면 task="MULTILINGUAL", language_id="ko"에 내 목소리 녹음과 그 녹음의 받아쓰기를 함께 넣어서, 그 목소리를 따라 하게 하는 방식만 됩니다.
모델은 0.5B로 작아서 VRAM 24GB 안팎의 카드 한 장이면 충분했습니다. Ming이 고정한 torch 2.6.0 + CUDA 12.4 환경을 가상환경에 따로 만들어 썼고, 모델 로딩은 3.1초였습니다. torch 2.6.0이 Blackwell GPU를 지원하지 않아서 RTX PRO 계열은 피했습니다.
기본 설정에서는 문장을 몇 조각으로 나누고, 조각마다 참조 녹음을 앞에 붙여 만듭니다. 같은 문장이라도 seed마다 결과가 달라서, 마음에 들지 않으면 seed를 바꿔 다시 만들면 됩니다.
한글 문장은 셋 다 거의 틀리지 않았다
만든 음성을 받아쓰기 모델(ElevenLabs Scribe v2, Whisper large-v3)로 다시 글로 바꾸고 원래 문장과 비교했습니다. 영어나 숫자가 들어간 12문장은 CER 계산에서 뺐습니다. 받아쓰기가 "ElevenLabs"를 "일레븐랩스"로, "세 개"를 "3개"로 적는 표기 차이가 오류로 잡히기 때문입니다.
숫자만 보면 셋 다 거의 정확했는데요. 두 받아쓰기 모델이 모두 잡은 실제 오류는 Gemini에만 있었습니다. "아, 그러니까 이게요, 생각했던 거랑 좀 달랐어요."에서 "아"나 "이게요"를 3번 모두 빼먹었습니다(
영상 2:49에서 듣기). 제 대본에는 이런 말버릇이 많아서, 이대로는 쓰기 어려웠죠.
영어 단어가 섞인 문장은 귀로 들었을 때 세 모델 모두 어색했습니다. "Runpod Serverless에서 cold start가 얼마나 걸리는지 봤어요."를 들어 보면, ElevenLabs는 한국어로 말하다가 영어 단어만 지나치게 원어민처럼 읽었고 Ming과 Gemini는 영어 단어 발음이 부자연스러웠습니다(
영상 3:11에서 듣기). 2차 청취에서는 영어 문장 두 개(E01, E03)를 세 모델 모두 "못 씀"으로 표시했습니다. 숫자는 Ming이 가끔 이상하게 읽었는데, "VRAM은 48GB, 모델 크기는 0.5B예요" 같은 문장이었습니다(
영상 3:42에서 듣기).
듣기 좋은 것과 나 같은 것은 달랐다
블라인드 청취는 제가 직접 두 번 했습니다. 문장마다 1회차 결과 3개를 모델 이름을 가리고 순서를 섞어 들었습니다.
1차에서는 기준을 "제일 좋은 것"으로 뒀더니 Gemini가 가장 많이 뽑혔습니다. ElevenLabs는 6번만 뽑혔지만 "못 씀"이 하나도 없었는데요. 다른 모델이 흔들린 긴 글, 감탄 문장, 한숨 문장에서 ElevenLabs가 뽑혔습니다.
그런데 들을수록 ElevenLabs는 연기하는 톤이었습니다(
영상 4:49에서 듣기). 듣기는 좋지만 저는 평소에 그렇게 말하지 않거든요. 목소리 높이를 재 보니 3문장 기준으로 제 실제 목소리는 93Hz, Ming 98Hz, Gemini 94Hz였고 ElevenLabs만 129Hz였습니다. 반음으로 대여섯 개 높은 셈입니다.
ElevenLabs의 Stability 값을 올리거나 제 녹음 중 가장 차분한 구간으로 다시 클론해도 높이는 거의 그대로였습니다. 문장 앞에
[calm, low-pitched narration] 지시를 붙이고 나서야 23문장 전체 기준 145Hz에서 131Hz로 내려갔습니다(
영상 6:22에서 듣기). 그래도 제 목소리보다 높았고, 23문장 중 5Hz 넘게 내려간 문장은 14개뿐이었습니다.
보이스 클론에서 중요한 건 듣기 좋은 목소리보다 내 목소리와 닮은 정도라서, 2차는 기준을 "가장 나 같은 것"으로 바꿨습니다. 클론에 쓰지 않은 제 실제 녹음 3개를 페이지 맨 위에 두고, 목소리와 말투, 말하는 속도까지 비교했습니다. ElevenLabs는 지시를 붙인 버전으로 바꿨습니다.
결과는 Ming 17번, Gemini 4번, ElevenLabs 0번이었습니다(
영상 6:55, 실제 녹음 다음에 세 모델). 기준을 바꾸니 순위가 뒤집혔죠. 다만 1차와 2차 사이에 기준과 ElevenLabs 버전이 함께 바뀌어서, ElevenLabs의 "못 씀"이 0에서 7로 늘어난 원인을 하나로 나눌 수는 없습니다.
목소리 닮음 점수도 Ming이 가장 높았다
기계로도 재 봤습니다. WavLM-base-plus-sv로 각 결과와 제 실제 녹음 3개 사이의 유사도를 구했는데, 이 실제 녹음은 클론에 쓴 녹음과 다른 날 녹음한 것입니다. 클론에 쓴 녹음과 비교하면 점수가 부풀려지기 때문이죠.
바닥 0은 다른 사람 목소리(Gemini 기본 목소리 Charon, 0.738), 천장 100은 클론에 쓴 제 녹음(0.979)입니다. 귀로 고른 2차 결과와 같은 순서가 나왔습니다. 이 점수는 목소리의 결만 보고 말투와 억양은 보지 않아서, 블라인드 청취와 함께 봐야 합니다.
속도는 ElevenLabs, 비용은 셋 다 몇십 센트
Ming은 Pod 안에서 synthesize() 호출 시간만 쟀고, API 두 개는 Mac에서 요청부터 응답까지 쟀습니다. 측정 위치가 달라서 같은 조건의 속도 비교는 아닙니다.
Ming 비용은 Pod를 켜 둔 1,466초에 당시 RTX 4000 Ada 가격 $0.28/h를 곱한 값입니다. 모델은 무료지만 GPU 값은 냅니다. ElevenLabs는 사용한 크레딧 1,617을 Creator 요금제(월 $22, 121,000 크레딧)로 환산했습니다. Gemini는 출력 오디오 토큰 기준입니다.
그래서 무엇을 쓸까
내 목소리를 내 말투 그대로 따라 하게 하려면 Ming 3.0을 쓰겠습니다. 무료이고, 귀로 들어도 기계로 재도 제 목소리와 가장 비슷했습니다. 숫자와 영어 단어가 섞인 문장은 결과를 듣고 seed를 바꿔 다시 만드는 편이 낫습니다.
제 목소리를 닮되 매끈하게 잘 읽는 내레이션이 필요하다면 ElevenLabs를 고르겠습니다. 발음과 톤이 가장 안정적이었고, 1차 청취에서 못 쓸 결과가 하나도 없었습니다. 목소리가 높게 나온다면 지시 태그를 붙이고 높은 문장만 다시 만드는 식으로 쓰는 게 현실적입니다.
이 결론은 제 목소리 하나와 제 귀 하나로 낸 것입니다. 다른 목소리나 다른 청취자에서는 순위가 바뀔 수 있습니다.
Runpod에서 같은 설정으로 Ming 3.0 돌려 보기
설치부터 23문장 생성까지
OMG Runpod Media 레시피 audio/01에 정리했습니다. 글의 근거를 나중에도 확인할 수 있도록 병합 커밋에 고정한 링크입니다.
scripts/setup_pod.sh: Ming 코드와 모델을 실험 때 버전으로 고정해 설치하고, 모델 파일 해시와 체크포인트를 확인합니다.scripts/clone_ko.py: 내 목소리 녹음과 받아쓰기를 넣고 한 문장 또는 23문장을 만듭니다.inputs/sentences.tsv: 이 글에서 쓴 23문장입니다.evidence/results-summary.json: Ming 69개의 개별 측정값과 세 모델 비교 숫자입니다.
cd /workspace
git clone https://github.com/wlsdml1114/omg-runpod-media.git
cd omg-runpod-media/recipes/audio/01-ming3-tts-korean-voice-clone
bash scripts/setup_pod.sh
2026년 11월 3일에는 새 RTX 3090 Pod에서 이 레시피를 처음부터 그대로 다시 돌려 봤습니다. 69개가 실패 없이 나왔고, 문장당 생성 시간 중앙값은 6.1초, 한글 11문장의 Whisper CER은 1.22%로 처음 실험과 같았습니다. Pod는 15분 정도 켜 두었고 약 $0.13이 들었습니다.
참조 녹음은 본인 목소리이거나 녹음 주인에게 허락받은 목소리만 쓰세요. 다 쓰고 나면 Pod를 terminate했는지 콘솔에서 확인하세요.