Kokoro는 계속 화제가 됩니다 — Hacker News 1위를 찍고, 오픈 텍스트 음성 변환 리더보드 상위권을 차지했으며, 크리에이터들은 “일반 CPU에서 돌아가는 8 200만 파라미터 모델이 유료 음성 API를 정말 대체할 수 있냐”를 계속 묻습니다. 그래서 저희가 직접 설치해 노트북에서 돌려봤고, 아래에서 바로 재생할 수 있는 샘플도 만들었습니다. 이 글은 실사용 기반의 분해 리뷰입니다: Kokoro가 무엇인지, 실제로 얼마나 그럴듯하게 들리는지, 시간을 잡아먹은 2가지 설치 함정, 그리고 언제 호스팅 도구를 선택하는 게 더 나은지를 다룹니다. 출처: github.com/hexgrad/kokoro (Apache-2.0).
Kokoro는 무엇이며, 누가 만들었나요?
Kokoro는 hexgrad가 Kokoro-82M으로 공개한 오픈 웨이트 텍스트 음성 변환 모델입니다. 핵심은 이름 그대로입니다: 8 200만 파라미터 — 2026년 기준으로는 아주 작고, 휴대폰에서도 돌릴 수 있을 정도지만 — 자연스럽고 표현력 있는 내레이션을 만들어냅니다. StyleTTS 2 계열을 기반으로 하며, 관대한 Apache-2.0 라이선스로 공개되어 상업적으로도 진짜 “무료”에 가깝습니다.
2026-07-11 기준 메인 저장소 hexgrad/kokoro는 약 GitHub 스타 7,900개입니다. 저희는 커뮤니티 ONNX 런타임인 thewh1teagle/kokoro-onnx(약 2,600 스타, MIT)로 실행했는데, PyTorch 설치 없이 CPU에서 돌리기 가장 쉬운 방법입니다.
실제 웨이트 파일을 살펴보니 9개 언어/악센트 그룹에 걸친 기본 내장 음성 54개가 들어 있었습니다 — 미국/영국 영어, 스페인어, 프랑스어, 힌디어, 이탈리아어, 일본어, 브라질 포르투갈어, 중국어(표준어)까지요. 이 중 미국 영어 음성이 확실히 가장 다듬어져 있습니다.
직접 돌려봤습니다 (Apple M3 Pro, CPU만)
GPU도, 클라우드도 없이 — M3 Pro와 18 GB RAM을 장착한 MacBook Pro 한 대로만 테스트했습니다. 솔직한 실사용 과정을 그대로 공유합니다.
설치와 웨이트
Python 패키지는 몇 초면 설치됩니다: pip install kokoro-onnx soundfile. 하지만 여기서 첫 번째 함정이 있습니다 — pip 패키지에는 코드만 들어 있고, 모델은 포함되지 않습니다. kokoro-onnx GitHub 릴리스 페이지에서 파일 2개를 직접 내려받아야 합니다: kokoro-v1.0.onnx(310 MB)와 voices-v1.0.bin(27 MB). 퀵스타트가 이 부분을 대충 넘어가서, 웨이트를 받기 전에는 첫 실행이 파일 누락 오류로 실패합니다.
espeak-ng 경로 버그 (진짜 시간을 잡아먹은 문제)
Kokoro는 espeak-ng로 텍스트를 음소(phoneme)로 변환합니다. 첫 합성에서 바로 이 오류가 떴습니다:
Error processing file '/Users/runner/work/espeakng-loader/.../espeak-ng-data/phontab': No such file or directory/Users/runner/work/ 경로는 빼박입니다. pip의 espeakng-loader 휠이 CI에서 컴파일된 libespeak-ng를 번들로 담아오는데, 그 안에 내 컴퓨터에는 존재하지 않는 데이터 경로가 하드코딩돼 있습니다. 더 짜증나는 점은 ESPEAK_DATA_PATH 환경 변수를 설정해도 아무 소용이 없다는 것인데, kokoro-onnx가 이 변수를 읽지 않고 — 번들 로더에서 경로를 그대로 가져오기 때문입니다.
저희에게 효과가 있었던 해결책: 시스템에 espeak-ng를 제대로 설치한 다음, Kokoro의 EspeakConfig로 해당 경로를 명시적으로 지정하는 것입니다:
brew install espeak-ng # macOS; apt install espeak-ng on Linux
from kokoro_onnx import Kokoro, EspeakConfig
cfg = EspeakConfig(
lib_path="/opt/homebrew/lib/libespeak-ng.dylib",
data_path="/opt/homebrew/share/espeak-ng-data",
)
k = Kokoro("kokoro-v1.0.onnx", "voices-v1.0.bin", espeak_config=cfg)이후에는 생성이 바로 됩니다. 혹시 여러분도 똑같이 phontab: No such file 오류로 고생했다면, 이게 해결책입니다.
속도 (실측, 워밍업 이후)
CPU만으로도 모델 로드는 약 1.7 초면 끝났고, 합성은 체감상 충분히 실시간보다 빠릅니다. 22초 분량의 내레이션 문단을 3.5 초에 렌더링했는데 — 실시간 계수(real-time factor)가 약 0.16×로, 재생 속도 대비 대략 6배 빠릅니다. 짧은 한두 문장은 1~2초 안에 돌아옵니다. 이 정도로 작은 모델을 노트북에서 돌린 결과치라고 생각하면, 실제 프로덕션에서도 쓸 만한 처리량입니다. 아래는 그 문단 렌더링의 실제 파형입니다:

저희가 생성한 샘플 (무편집)
아래 모든 클립은 위에서 설명한 M3 Pro CPU에서 Kokoro로 저희가 직접 생성한 것입니다 — 모델의 원본 출력 그대로, 정리도 없고 후처리도 없습니다. 재생해 보고 품질을 직접 판단해 보세요.
VisionStory가 kokoro-onnx로 Kokoro-82M을 사용해 생성, 2026-07-11. 포인트가 보이죠: 이건 깔끔한 음성 트랙 — 하지만 ‘음성’일 뿐입니다. 얼굴도, 입 모양도, 화면 속 진행자도 없습니다. 그 공백이 바로 다음 섹션의 핵심입니다.
솔직한 결론: 강점과 현실적인 한계
정말 인상적이었던 점:
- 바이트당 품질이 놀랍습니다. 8 200만 파라미터치고 미국 영어 음성은 자연스럽고 표현력이 좋습니다 — 짧은 클립이라면 대부분의 청자는 유료 TTS라고 해도 크게 의심하지 않을 정도입니다.
- CPU에서 진짜 빠르게 돌아갑니다. GPU 없이 노트북에서 실시간의 6배 속도로 나온다는 게 핵심인데, 실제로도 그렇습니다.
- 진짜 무료이고 상업 사용에도 유리합니다. 문자당 과금이 없는 Apache-2.0. 대량 보이스오버라면 비용 구조 면에서 따라오기 어렵습니다.
아쉬운 점 — 그리고 이건 현실입니다:
- 음성 클론이 없습니다. 54개의 고정 프리셋 음성만 제공합니다. 내 목소리나 고객의 목소리를 클론할 수 없으니 — 이게 목적이라면 Kokoro는 답이 아닙니다.
- 영어 품질은 espeak-ng에 좌우됩니다. 즉, 위의 패키징 버그뿐 아니라 가끔 사람 이름, 브랜드, 약어를 잘못 발음하기도 합니다.
- 긴 텍스트는 수동으로 쪼개야 합니다. 호출당 음소 길이 제한이 있어서 긴 스크립트는 직접 분할하고 오디오를 이어 붙여야 합니다.
- 비영어 음성은 편차가 큽니다 — 대표격인 미국 영어 세트보다 변동성이 확실히 큽니다.
- 그냥 WAV만 출력합니다. 단어 타임스탬프도, 비짐(viseme)도 — 입싱크를 바로 구동할 정보가 기본으로는 없습니다.
- 음성만 있습니다. 얼굴도, 비디오도 없습니다. 말하는 진행자를 만들려면 Kokoro를 별도의 립싱크/아바타 시스템과 결합하고 타이밍까지 직접 맞춰야 합니다.
셀프 호스팅 Kokoro vs 호스팅 도구: 무엇을 선택해야 할까요?
Kokoro와 호스팅 아바타 도구는 문제의 서로 다른 절반을 해결합니다. Kokoro는 음성을 제공하고, VisionStory 같은 도구는 말하는 진행자를 제공합니다 — 음성, 얼굴, 립싱크까지 한 번에요. 솔직한 트레이드오프는 이렇습니다.
| Kokoro (self-host) | VisionStory (hosted) | |
|---|---|---|
| 비용 | 무료(본인 하드웨어) | 구독 / 크레딧 |
| 설정 | pip + 330 MB 웨이트 + espeak-ng 수정 | 없음 — 브라우저에서 실행 |
| 결과물 | 음성 트랙만(WAV) | 말하는 아바타 비디오(음성 + 얼굴 + 립싱크) |
| 음성 클론 | 불가 — 54개 프리셋 | 가능 — 내 목소리 클론 |
| 클립당 속도 | CPU에서 실시간 대비 ~0.16×(수 초) | 수 초, 호스팅 — 로컬 연산 없음 |
| 상업적 사용 | 가능(Apache-2.0) | 가능(플랜별) |
| 유지보수 | espeak, 의존성, 분할 처리 직접 관리 | 없음 |
| 추천 상황 | 무료 음성 트랙만 필요하고 코딩이 가능할 때 | 완성된 말하는 비디오가 빠르게 필요할 때 |
Kokoro를 선택하세요 — 무료 보이스오버만 필요하고, Python이 편하며, 얼굴과 립싱크는 별도로 처리할 수 있을 때(혹은 아예 얼굴이 필요 없을 때). 호스팅 도구를 선택하세요 — 립싱크되는 진행자에 음성이 붙어야 하거나, 특정 인물의 목소리를 클론해야 할 때. Kokoro는 둘 다 할 수 없습니다.
Kokoro가 알려준 것
Kokoro를 돌려보며 얻은 진짜 교훈은 음성이 상품화되고 있다는 점입니다. 이제 노트북에서 82 MB 모델 하나로, 실제 업무에 쓸 만큼 좋은 보이스오버를 무료로 만들 수 있습니다. 제품의 유일한 장점이 “우리는 텍스트 음성 변환을 한다”였다면, 그 해자는 이미 사라졌습니다.
어려우면서도 아직 완전히 해결되지 않은 부분은 음성 이후의 모든 것입니다. 오디오 트랙을 그럴듯한 ‘말하는 얼굴’로 바꾸는 것 — 정확한 립싱크, 표정, 머리 움직임, 그리고 전체 타이밍이 모두 자연스럽게 맞물려야 합니다. 그게 바로 저희가 집중하는 레이어입니다. 그래서 저희의 결론은 “Kokoro를 쓰지 마세요”가 아닙니다 — Kokoro는 충분히 좋은 음성 엔진입니다. 다만 음성만으로는 비디오의 절반일 뿐입니다. 나머지 절반이 필요하다면, VisionStory는 사진과 스크립트를 한 번에 립싱크된 말하는 진행자로 만들어 주고, 특정 목소리를 맞춰야 한다면 클론도 가능합니다.
